happy-dom 5.3.3 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of happy-dom might be problematic. Click here for more details.
- package/.eslintrc.js +2 -2
- package/lib/base64/Base64.d.ts +23 -0
- package/lib/base64/Base64.js +89 -0
- package/lib/base64/Base64.js.map +1 -0
- package/lib/config/ElementTag.d.ts +2 -1
- package/lib/config/ElementTag.js +2 -1
- package/lib/config/ElementTag.js.map +1 -1
- package/lib/config/NonImplemenetedElementClasses.js +0 -1
- package/lib/config/NonImplemenetedElementClasses.js.map +1 -1
- package/lib/dom-implementation/DOMImplementation.d.ts +7 -1
- package/lib/dom-implementation/DOMImplementation.js +10 -2
- package/lib/dom-implementation/DOMImplementation.js.map +1 -1
- package/lib/dom-parser/DOMParser.d.ts +9 -4
- package/lib/dom-parser/DOMParser.js +13 -2
- package/lib/dom-parser/DOMParser.js.map +1 -1
- package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
- package/lib/exception/DOMExceptionNameEnum.js +4 -0
- package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
- package/lib/fetch/Request.d.ts +8 -0
- package/lib/fetch/Request.js +15 -6
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/Response.d.ts +5 -0
- package/lib/fetch/Response.js +12 -6
- package/lib/fetch/Response.js.map +1 -1
- package/lib/file/FileReader.d.ts +7 -2
- package/lib/file/FileReader.js +9 -3
- package/lib/file/FileReader.js.map +1 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/location/URL.js +1 -1
- package/lib/location/URL.js.map +1 -1
- package/lib/nodes/comment/Comment.d.ts +1 -1
- package/lib/nodes/document/Document.d.ts +18 -15
- package/lib/nodes/document/Document.js +36 -33
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/IDocument.d.ts +7 -0
- package/lib/nodes/document-fragment/DocumentFragment.d.ts +1 -1
- package/lib/nodes/document-type/DocumentType.d.ts +1 -1
- package/lib/nodes/element/DOMRectListFactory.d.ts +23 -0
- package/lib/nodes/element/DOMRectListFactory.js +33 -0
- package/lib/nodes/element/DOMRectListFactory.js.map +1 -0
- package/lib/nodes/element/Element.d.ts +6 -5
- package/lib/nodes/element/Element.js +9 -11
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/IDOMRectList.d.ts +11 -0
- package/lib/nodes/element/IDOMRectList.js +3 -0
- package/lib/nodes/element/IDOMRectList.js.map +1 -0
- package/lib/nodes/element/IElement.d.ts +5 -4
- package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts +31 -0
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js +51 -0
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -0
- package/lib/nodes/html-dialog-element/IHTMLDialogElement.d.ts +25 -0
- package/lib/nodes/html-dialog-element/IHTMLDialogElement.js +3 -0
- package/lib/nodes/html-dialog-element/IHTMLDialogElement.js.map +1 -0
- package/lib/nodes/html-template-element/HTMLTemplateElement.d.ts +1 -10
- package/lib/nodes/html-template-element/HTMLTemplateElement.js +2 -15
- package/lib/nodes/html-template-element/HTMLTemplateElement.js.map +1 -1
- package/lib/nodes/node/INode.d.ts +8 -6
- package/lib/nodes/node/Node.d.ts +20 -17
- package/lib/nodes/node/Node.js +19 -15
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeTypeEnum.d.ts +10 -0
- package/lib/nodes/node/NodeTypeEnum.js +14 -0
- package/lib/nodes/node/NodeTypeEnum.js.map +1 -0
- package/lib/nodes/node/NodeUtility.d.ts +59 -0
- package/lib/nodes/node/NodeUtility.js +123 -0
- package/lib/nodes/node/NodeUtility.js.map +1 -0
- package/lib/nodes/text/IText.d.ts +9 -0
- package/lib/nodes/text/Text.d.ts +10 -1
- package/lib/nodes/text/Text.js +24 -0
- package/lib/nodes/text/Text.js.map +1 -1
- package/lib/range/IRangeBoundaryPoint.d.ts +8 -0
- package/lib/range/IRangeBoundaryPoint.js +3 -0
- package/lib/range/IRangeBoundaryPoint.js.map +1 -0
- package/lib/range/Range.d.ts +249 -0
- package/lib/range/Range.js +820 -0
- package/lib/range/Range.js.map +1 -0
- package/lib/range/RangeHowEnum.d.ts +7 -0
- package/lib/range/RangeHowEnum.js +11 -0
- package/lib/range/RangeHowEnum.js.map +1 -0
- package/lib/range/RangeUtility.d.ts +46 -0
- package/lib/range/RangeUtility.js +92 -0
- package/lib/range/RangeUtility.js.map +1 -0
- package/lib/selection/Selection.d.ts +167 -44
- package/lib/selection/Selection.js +369 -58
- package/lib/selection/Selection.js.map +1 -1
- package/lib/selection/SelectionDirectionEnum.d.ts +6 -0
- package/lib/selection/SelectionDirectionEnum.js +10 -0
- package/lib/selection/SelectionDirectionEnum.js.map +1 -0
- package/lib/window/IWindow.d.ts +22 -0
- package/lib/window/Window.d.ts +25 -9
- package/lib/window/Window.js +85 -35
- package/lib/window/Window.js.map +1 -1
- package/lib/xml-parser/XMLParser.d.ts +2 -2
- package/lib/xml-parser/XMLParser.js +5 -3
- package/lib/xml-parser/XMLParser.js.map +1 -1
- package/lib/xml-serializer/XMLSerializer.js +4 -1
- package/lib/xml-serializer/XMLSerializer.js.map +1 -1
- package/package.json +2 -2
- package/src/base64/Base64.ts +97 -0
- package/src/config/ElementTag.ts +2 -1
- package/src/config/NonImplemenetedElementClasses.ts +0 -1
- package/src/dom-implementation/DOMImplementation.ts +13 -2
- package/src/dom-parser/DOMParser.ts +20 -7
- package/src/exception/DOMExceptionNameEnum.ts +5 -1
- package/src/fetch/Request.ts +16 -6
- package/src/fetch/Response.ts +13 -6
- package/src/file/FileReader.ts +14 -4
- package/src/index.ts +7 -1
- package/src/location/URL.ts +1 -1
- package/src/nodes/document/Document.ts +47 -39
- package/src/nodes/document/IDocument.ts +8 -0
- package/src/nodes/element/DOMRectListFactory.ts +33 -0
- package/src/nodes/element/Element.ts +10 -11
- package/src/nodes/element/IDOMRectList.ts +11 -0
- package/src/nodes/element/IElement.ts +5 -4
- package/src/nodes/html-dialog-element/HTMLDialogElement.ts +47 -0
- package/src/nodes/html-dialog-element/IHTMLDialogElement.ts +29 -0
- package/src/nodes/html-template-element/HTMLTemplateElement.ts +3 -21
- package/src/nodes/node/INode.ts +8 -6
- package/src/nodes/node/Node.ts +24 -19
- package/src/nodes/node/NodeTypeEnum.ts +11 -0
- package/src/nodes/node/NodeUtility.ts +139 -0
- package/src/nodes/text/IText.ts +10 -0
- package/src/nodes/text/Text.ts +33 -0
- package/src/range/IRangeBoundaryPoint.ts +9 -0
- package/src/range/Range.ts +1057 -0
- package/src/range/RangeHowEnum.ts +8 -0
- package/src/range/RangeUtility.ts +114 -0
- package/src/selection/Selection.ts +444 -60
- package/src/selection/SelectionDirectionEnum.ts +7 -0
- package/src/window/IWindow.ts +24 -0
- package/src/window/Window.ts +104 -32
- package/src/xml-parser/XMLParser.ts +15 -7
- package/src/xml-serializer/XMLSerializer.ts +6 -1
- package/lib/nodes/element/Range.d.ts +0 -167
- package/lib/nodes/element/Range.js +0 -215
- package/lib/nodes/element/Range.js.map +0 -1
- package/lib/window/WindowBase64.d.ts +0 -19
- package/lib/window/WindowBase64.js +0 -88
- package/lib/window/WindowBase64.js.map +0 -1
- package/src/nodes/element/Range.ts +0 -237
- package/src/window/WindowBase64.ts +0 -95
@@ -1,125 +1,436 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const Event_1 = __importDefault(require("../event/Event"));
|
7
|
+
const DOMException_1 = __importDefault(require("../exception/DOMException"));
|
8
|
+
const DOMExceptionNameEnum_1 = __importDefault(require("../exception/DOMExceptionNameEnum"));
|
9
|
+
const NodeTypeEnum_1 = __importDefault(require("../nodes/node/NodeTypeEnum"));
|
10
|
+
const NodeUtility_1 = __importDefault(require("../nodes/node/NodeUtility"));
|
11
|
+
const Range_1 = __importDefault(require("../range/Range"));
|
12
|
+
const RangeUtility_1 = __importDefault(require("../range/RangeUtility"));
|
13
|
+
const SelectionDirectionEnum_1 = __importDefault(require("./SelectionDirectionEnum"));
|
3
14
|
/**
|
4
15
|
* Selection.
|
5
16
|
*
|
17
|
+
* Based on logic from:
|
18
|
+
* https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/selection/Selection-impl.js
|
19
|
+
*
|
6
20
|
* Reference:
|
7
21
|
* https://developer.mozilla.org/en-US/docs/Web/API/Selection.
|
8
22
|
*/
|
9
23
|
class Selection {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
this.
|
17
|
-
this.
|
18
|
-
this.
|
19
|
-
this.
|
20
|
-
this.rangeCount = 0;
|
21
|
-
this.type = 'None';
|
24
|
+
/**
|
25
|
+
* Constructor.
|
26
|
+
*
|
27
|
+
* @param ownerDocument Owner document.
|
28
|
+
*/
|
29
|
+
constructor(ownerDocument) {
|
30
|
+
this._ownerDocument = null;
|
31
|
+
this._range = null;
|
32
|
+
this._direction = SelectionDirectionEnum_1.default.directionless;
|
33
|
+
this._ownerDocument = ownerDocument;
|
22
34
|
}
|
23
35
|
/**
|
24
|
-
*
|
36
|
+
* Returns range count.
|
25
37
|
*
|
26
|
-
* @
|
38
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-rangecount
|
39
|
+
* @returns Range count.
|
27
40
|
*/
|
28
|
-
|
29
|
-
|
41
|
+
get rangeCount() {
|
42
|
+
return this._range ? 1 : 0;
|
30
43
|
}
|
31
44
|
/**
|
32
|
-
*
|
45
|
+
* Returns collapsed state.
|
33
46
|
*
|
34
|
-
* @
|
35
|
-
* @
|
47
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-iscollapsed
|
48
|
+
* @returns "true" if collapsed.
|
36
49
|
*/
|
37
|
-
|
38
|
-
|
50
|
+
get isCollapsed() {
|
51
|
+
return this._range === null || this._range.collapsed;
|
39
52
|
}
|
40
53
|
/**
|
41
|
-
*
|
54
|
+
* Returns type.
|
55
|
+
*
|
56
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-type
|
57
|
+
* @returns Type.
|
42
58
|
*/
|
43
|
-
|
44
|
-
|
59
|
+
get type() {
|
60
|
+
if (!this._range) {
|
61
|
+
return 'None';
|
62
|
+
}
|
63
|
+
else if (this._range.collapsed) {
|
64
|
+
return 'Caret';
|
65
|
+
}
|
66
|
+
return 'Range';
|
45
67
|
}
|
46
68
|
/**
|
47
|
-
*
|
69
|
+
* Returns anchor node.
|
70
|
+
*
|
71
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-anchornode
|
72
|
+
* @returns Node.
|
48
73
|
*/
|
49
|
-
|
50
|
-
|
74
|
+
get anchorNode() {
|
75
|
+
if (!this._range) {
|
76
|
+
return null;
|
77
|
+
}
|
78
|
+
return this._direction === SelectionDirectionEnum_1.default.forwards
|
79
|
+
? this._range.startContainer
|
80
|
+
: this._range.endContainer;
|
51
81
|
}
|
52
82
|
/**
|
53
|
-
*
|
83
|
+
* Returns anchor offset.
|
54
84
|
*
|
55
|
-
* @
|
56
|
-
* @
|
57
|
-
* @returns Always returns "true" for now.
|
85
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-anchoroffset
|
86
|
+
* @returns Node.
|
58
87
|
*/
|
59
|
-
|
60
|
-
|
88
|
+
get anchorOffset() {
|
89
|
+
if (!this._range) {
|
90
|
+
return null;
|
91
|
+
}
|
92
|
+
return this._direction === SelectionDirectionEnum_1.default.forwards
|
93
|
+
? this._range.startOffset
|
94
|
+
: this._range.endOffset;
|
61
95
|
}
|
62
96
|
/**
|
63
|
-
*
|
97
|
+
* Returns anchor node.
|
98
|
+
*
|
99
|
+
* @deprecated
|
100
|
+
* @alias anchorNode
|
101
|
+
* @returns Node.
|
64
102
|
*/
|
65
|
-
|
66
|
-
|
103
|
+
get baseNode() {
|
104
|
+
return this.anchorNode;
|
67
105
|
}
|
68
106
|
/**
|
69
|
-
*
|
107
|
+
* Returns anchor offset.
|
70
108
|
*
|
71
|
-
* @
|
72
|
-
* @
|
109
|
+
* @deprecated
|
110
|
+
* @alias anchorOffset
|
111
|
+
* @returns Node.
|
73
112
|
*/
|
74
|
-
|
75
|
-
|
113
|
+
get baseOffset() {
|
114
|
+
return this.anchorOffset;
|
76
115
|
}
|
77
116
|
/**
|
78
|
-
*
|
117
|
+
* Returns focus node.
|
118
|
+
*
|
119
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-focusnode
|
120
|
+
* @returns Node.
|
121
|
+
*/
|
122
|
+
get focusNode() {
|
123
|
+
return this.anchorNode;
|
124
|
+
}
|
125
|
+
/**
|
126
|
+
* Returns focus offset.
|
79
127
|
*
|
80
|
-
* @
|
128
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-focusoffset
|
129
|
+
* @returns Node.
|
81
130
|
*/
|
82
|
-
|
83
|
-
|
131
|
+
get focusOffset() {
|
132
|
+
return this.anchorOffset;
|
133
|
+
}
|
134
|
+
/**
|
135
|
+
* Returns focus node.
|
136
|
+
*
|
137
|
+
* @deprecated
|
138
|
+
* @alias focusNode
|
139
|
+
* @returns Node.
|
140
|
+
*/
|
141
|
+
get extentNode() {
|
142
|
+
return this.focusNode;
|
143
|
+
}
|
144
|
+
/**
|
145
|
+
* Returns focus offset.
|
146
|
+
*
|
147
|
+
* @deprecated
|
148
|
+
* @alias focusOffset
|
149
|
+
* @returns Node.
|
150
|
+
*/
|
151
|
+
get extentOffset() {
|
152
|
+
return this.focusOffset;
|
153
|
+
}
|
154
|
+
/**
|
155
|
+
* Adds a range.
|
156
|
+
*
|
157
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-addrange
|
158
|
+
* @param newRange Range.
|
159
|
+
*/
|
160
|
+
addRange(newRange) {
|
161
|
+
if (!newRange) {
|
162
|
+
throw new Error('Failed to execute addRange on Selection. Parameter 1 is not of type Range.');
|
163
|
+
}
|
164
|
+
if (!this._range && newRange._ownerDocument === this._ownerDocument) {
|
165
|
+
this._associateRange(newRange);
|
166
|
+
}
|
167
|
+
}
|
168
|
+
/**
|
169
|
+
* Returns Range.
|
170
|
+
*
|
171
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-getrangeat
|
172
|
+
* @param index Index.
|
173
|
+
* @returns Range.
|
174
|
+
*/
|
175
|
+
getRangeAt(index) {
|
176
|
+
if (!this._range || index !== 0) {
|
177
|
+
throw new DOMException_1.default('Invalid range index.', DOMExceptionNameEnum_1.default.indexSizeError);
|
178
|
+
}
|
179
|
+
return this._range;
|
84
180
|
}
|
85
181
|
/**
|
86
182
|
* Removes a range from a selection.
|
87
183
|
*
|
88
|
-
* @
|
184
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-removerange
|
185
|
+
* @param range Range.
|
89
186
|
*/
|
90
|
-
removeRange(
|
91
|
-
|
187
|
+
removeRange(range) {
|
188
|
+
if (this._range !== range) {
|
189
|
+
throw new DOMException_1.default('Invalid range.', DOMExceptionNameEnum_1.default.notFoundError);
|
190
|
+
}
|
191
|
+
this._associateRange(null);
|
92
192
|
}
|
93
193
|
/**
|
94
194
|
* Removes all ranges.
|
95
195
|
*/
|
96
196
|
removeAllRanges() {
|
97
|
-
|
197
|
+
this._associateRange(null);
|
198
|
+
}
|
199
|
+
/**
|
200
|
+
* Removes all ranges.
|
201
|
+
*
|
202
|
+
* @alias removeAllRanges()
|
203
|
+
*/
|
204
|
+
empty() {
|
205
|
+
this.removeAllRanges();
|
206
|
+
}
|
207
|
+
/**
|
208
|
+
* Collapses the current selection to a single point.
|
209
|
+
*
|
210
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-collapse
|
211
|
+
* @param node Node.
|
212
|
+
* @param offset Offset.
|
213
|
+
*/
|
214
|
+
collapse(node, offset) {
|
215
|
+
if (node === null) {
|
216
|
+
this.removeAllRanges();
|
217
|
+
return;
|
218
|
+
}
|
219
|
+
if (node.nodeType === NodeTypeEnum_1.default.documentTypeNode) {
|
220
|
+
throw new DOMException_1.default("DocumentType Node can't be used as boundary point.", DOMExceptionNameEnum_1.default.invalidNodeTypeError);
|
221
|
+
}
|
222
|
+
if (offset > NodeUtility_1.default.getNodeLength(node)) {
|
223
|
+
throw new DOMException_1.default('Invalid range index.', DOMExceptionNameEnum_1.default.indexSizeError);
|
224
|
+
}
|
225
|
+
if (node.ownerDocument !== this._ownerDocument) {
|
226
|
+
return;
|
227
|
+
}
|
228
|
+
const newRange = new Range_1.default();
|
229
|
+
newRange._start.node = node;
|
230
|
+
newRange._start.offset = offset;
|
231
|
+
newRange._end.node = node;
|
232
|
+
newRange._end.offset = offset;
|
233
|
+
this._associateRange(newRange);
|
234
|
+
}
|
235
|
+
/**
|
236
|
+
* Collapses the current selection to a single point.
|
237
|
+
*
|
238
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-setposition
|
239
|
+
* @alias collapse()
|
240
|
+
* @param node Node.
|
241
|
+
* @param offset Offset.
|
242
|
+
*/
|
243
|
+
setPosition(node, offset) {
|
244
|
+
this.collapse(node, offset);
|
245
|
+
}
|
246
|
+
/**
|
247
|
+
* Collapses the selection to the end.
|
248
|
+
*
|
249
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-collapsetoend
|
250
|
+
*/
|
251
|
+
collapseToEnd() {
|
252
|
+
if (this._range === null) {
|
253
|
+
throw new DOMException_1.default('There is no selection to collapse.', DOMExceptionNameEnum_1.default.invalidStateError);
|
254
|
+
}
|
255
|
+
const { node, offset } = this._range._end;
|
256
|
+
const newRange = new Range_1.default();
|
257
|
+
newRange._start.node = node;
|
258
|
+
newRange._start.offset = offset;
|
259
|
+
newRange._end.node = node;
|
260
|
+
newRange._end.offset = offset;
|
261
|
+
this._associateRange(newRange);
|
262
|
+
}
|
263
|
+
/**
|
264
|
+
* Collapses the selection to the start.
|
265
|
+
*
|
266
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-collapsetostart
|
267
|
+
*/
|
268
|
+
collapseToStart() {
|
269
|
+
if (!this._range) {
|
270
|
+
throw new DOMException_1.default('There is no selection to collapse.', DOMExceptionNameEnum_1.default.invalidStateError);
|
271
|
+
}
|
272
|
+
const { node, offset } = this._range._start;
|
273
|
+
const newRange = new Range_1.default();
|
274
|
+
newRange._start.node = node;
|
275
|
+
newRange._start.offset = offset;
|
276
|
+
newRange._end.node = node;
|
277
|
+
newRange._end.offset = offset;
|
278
|
+
this._associateRange(newRange);
|
279
|
+
}
|
280
|
+
/**
|
281
|
+
* Indicates whether a specified node is part of the selection.
|
282
|
+
*
|
283
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-containsnode
|
284
|
+
* @param node Node.
|
285
|
+
* @param [allowPartialContainment] Set to "true" to allow partial containment.
|
286
|
+
* @returns Always returns "true" for now.
|
287
|
+
*/
|
288
|
+
containsNode(node, allowPartialContainment = false) {
|
289
|
+
if (!this._range || node.ownerDocument !== this._ownerDocument) {
|
290
|
+
return false;
|
291
|
+
}
|
292
|
+
const { _start, _end } = this._range;
|
293
|
+
const startIsBeforeNode = RangeUtility_1.default.compareBoundaryPointsPosition(_start, { node, offset: 0 }) === -1;
|
294
|
+
const endIsAfterNode = RangeUtility_1.default.compareBoundaryPointsPosition(_end, {
|
295
|
+
node,
|
296
|
+
offset: NodeUtility_1.default.getNodeLength(node)
|
297
|
+
}) === 1;
|
298
|
+
return allowPartialContainment
|
299
|
+
? startIsBeforeNode || endIsAfterNode
|
300
|
+
: startIsBeforeNode && endIsAfterNode;
|
301
|
+
}
|
302
|
+
/**
|
303
|
+
* Deletes the selected text from the document's DOM.
|
304
|
+
*
|
305
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-deletefromdocument
|
306
|
+
*/
|
307
|
+
deleteFromDocument() {
|
308
|
+
if (this._range) {
|
309
|
+
this._range.deleteContents();
|
310
|
+
}
|
311
|
+
}
|
312
|
+
/**
|
313
|
+
* Moves the focus of the selection to a specified point.
|
314
|
+
*
|
315
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-extend
|
316
|
+
* @param node Node.
|
317
|
+
* @param offset Offset.
|
318
|
+
*/
|
319
|
+
extend(node, offset) {
|
320
|
+
if (node.ownerDocument !== this._ownerDocument) {
|
321
|
+
return;
|
322
|
+
}
|
323
|
+
if (!this._range) {
|
324
|
+
throw new DOMException_1.default('There is no selection to extend.', DOMExceptionNameEnum_1.default.invalidStateError);
|
325
|
+
}
|
326
|
+
const anchorNode = this.anchorNode;
|
327
|
+
const anchorOffset = this.anchorOffset;
|
328
|
+
const newRange = new Range_1.default();
|
329
|
+
newRange._start.node = node;
|
330
|
+
newRange._start.offset = 0;
|
331
|
+
newRange._end.node = node;
|
332
|
+
newRange._end.offset = 0;
|
333
|
+
if (node.ownerDocument !== this._range._ownerDocument) {
|
334
|
+
newRange._start.offset = offset;
|
335
|
+
newRange._end.offset = offset;
|
336
|
+
}
|
337
|
+
else if (RangeUtility_1.default.compareBoundaryPointsPosition({ node: anchorNode, offset: anchorOffset }, { node, offset }) <= 0) {
|
338
|
+
newRange._start.node = anchorNode;
|
339
|
+
newRange._start.offset = anchorOffset;
|
340
|
+
newRange._end.node = node;
|
341
|
+
newRange._end.offset = offset;
|
342
|
+
}
|
343
|
+
else {
|
344
|
+
newRange._start.node = node;
|
345
|
+
newRange._start.offset = offset;
|
346
|
+
newRange._end.node = anchorNode;
|
347
|
+
newRange._end.offset = anchorOffset;
|
348
|
+
}
|
349
|
+
this._associateRange(newRange);
|
350
|
+
this._direction =
|
351
|
+
RangeUtility_1.default.compareBoundaryPointsPosition({ node, offset }, { node: anchorNode, offset: anchorOffset }) === -1
|
352
|
+
? SelectionDirectionEnum_1.default.backwards
|
353
|
+
: SelectionDirectionEnum_1.default.forwards;
|
98
354
|
}
|
99
355
|
/**
|
100
356
|
* Selects all children.
|
101
357
|
*
|
358
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-selectallchildren
|
359
|
+
* @param node
|
102
360
|
* @param _parentNode Parent node.
|
103
361
|
*/
|
104
|
-
selectAllChildren(
|
105
|
-
|
362
|
+
selectAllChildren(node) {
|
363
|
+
if (node.nodeType === NodeTypeEnum_1.default.documentTypeNode) {
|
364
|
+
throw new DOMException_1.default("DocumentType Node can't be used as boundary point.", DOMExceptionNameEnum_1.default.invalidNodeTypeError);
|
365
|
+
}
|
366
|
+
if (node.ownerDocument !== this._ownerDocument) {
|
367
|
+
return;
|
368
|
+
}
|
369
|
+
const length = node.childNodes.length;
|
370
|
+
const newRange = new Range_1.default();
|
371
|
+
newRange._start.node = node;
|
372
|
+
newRange._start.offset = 0;
|
373
|
+
newRange._end.node = node;
|
374
|
+
newRange._end.offset = length;
|
375
|
+
this._associateRange(newRange);
|
106
376
|
}
|
107
377
|
/**
|
108
378
|
* Sets the selection to be a range including all or parts of two specified DOM nodes, and any content located between them.
|
109
379
|
*
|
110
|
-
* @
|
111
|
-
* @param
|
112
|
-
* @param
|
113
|
-
* @param
|
380
|
+
* @see https://w3c.github.io/selection-api/#dom-selection-setbaseandextent
|
381
|
+
* @param anchorNode Anchor node.
|
382
|
+
* @param anchorOffset Anchor offset.
|
383
|
+
* @param focusNode Focus node.
|
384
|
+
* @param focusOffset Focus offset.
|
114
385
|
*/
|
115
|
-
setBaseAndExtent(
|
116
|
-
|
386
|
+
setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset) {
|
387
|
+
if (anchorOffset > NodeUtility_1.default.getNodeLength(anchorNode) ||
|
388
|
+
focusOffset > NodeUtility_1.default.getNodeLength(focusNode)) {
|
389
|
+
throw new DOMException_1.default('Invalid anchor or focus offset.', DOMExceptionNameEnum_1.default.indexSizeError);
|
390
|
+
}
|
391
|
+
if (anchorNode.ownerDocument !== this._ownerDocument ||
|
392
|
+
focusNode.ownerDocument !== this._ownerDocument) {
|
393
|
+
return;
|
394
|
+
}
|
395
|
+
const anchor = { node: anchorNode, offset: anchorOffset };
|
396
|
+
const focus = { node: focusNode, offset: focusOffset };
|
397
|
+
const newRange = new Range_1.default();
|
398
|
+
if (RangeUtility_1.default.compareBoundaryPointsPosition(anchor, focus) === -1) {
|
399
|
+
newRange._start = anchor;
|
400
|
+
newRange._end = focus;
|
401
|
+
}
|
402
|
+
else {
|
403
|
+
newRange._start = focus;
|
404
|
+
newRange._end = anchor;
|
405
|
+
}
|
406
|
+
this._associateRange(newRange);
|
407
|
+
this._direction =
|
408
|
+
RangeUtility_1.default.compareBoundaryPointsPosition(focus, anchor) === -1
|
409
|
+
? SelectionDirectionEnum_1.default.backwards
|
410
|
+
: SelectionDirectionEnum_1.default.forwards;
|
117
411
|
}
|
118
412
|
/**
|
119
413
|
* Returns string currently being represented by the selection object.
|
414
|
+
*
|
415
|
+
* @returns Selection as string.
|
120
416
|
*/
|
121
417
|
toString() {
|
122
|
-
return '';
|
418
|
+
return this._range ? this._range.toString() : '';
|
419
|
+
}
|
420
|
+
/**
|
421
|
+
* Sets the current range.
|
422
|
+
*
|
423
|
+
* @param range Range.
|
424
|
+
*/
|
425
|
+
_associateRange(range) {
|
426
|
+
const oldRange = this._range;
|
427
|
+
this._range = range;
|
428
|
+
this._direction =
|
429
|
+
range === null ? SelectionDirectionEnum_1.default.directionless : SelectionDirectionEnum_1.default.forwards;
|
430
|
+
if (oldRange !== this._range) {
|
431
|
+
// https://w3c.github.io/selection-api/#selectionchange-event
|
432
|
+
this._ownerDocument.dispatchEvent(new Event_1.default('selectionchange'));
|
433
|
+
}
|
123
434
|
}
|
124
435
|
}
|
125
436
|
exports.default = Selection;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Selection.js","sourceRoot":"","sources":["../../src/selection/Selection.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Selection.js","sourceRoot":"","sources":["../../src/selection/Selection.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
var SelectionDirectionEnum;
|
4
|
+
(function (SelectionDirectionEnum) {
|
5
|
+
SelectionDirectionEnum[SelectionDirectionEnum["forwards"] = 1] = "forwards";
|
6
|
+
SelectionDirectionEnum[SelectionDirectionEnum["backwards"] = -1] = "backwards";
|
7
|
+
SelectionDirectionEnum[SelectionDirectionEnum["directionless"] = 0] = "directionless";
|
8
|
+
})(SelectionDirectionEnum || (SelectionDirectionEnum = {}));
|
9
|
+
exports.default = SelectionDirectionEnum;
|
10
|
+
//# sourceMappingURL=SelectionDirectionEnum.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SelectionDirectionEnum.js","sourceRoot":"","sources":["../../src/selection/SelectionDirectionEnum.ts"],"names":[],"mappings":";;AAAA,IAAK,sBAIJ;AAJD,WAAK,sBAAsB;IAC1B,2EAAY,CAAA;IACZ,8EAAc,CAAA;IACd,qFAAiB,CAAA;AAClB,CAAC,EAJI,sBAAsB,KAAtB,sBAAsB,QAI1B;AAED,kBAAe,sBAAsB,CAAC"}
|
package/lib/window/IWindow.d.ts
CHANGED
@@ -25,6 +25,7 @@ import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement';
|
|
25
25
|
import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
|
26
26
|
import SVGElement from '../nodes/svg-element/SVGElement';
|
27
27
|
import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement';
|
28
|
+
import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement';
|
28
29
|
import HTMLImageElement from '../nodes/html-image-element/HTMLImageElement';
|
29
30
|
import Image from '../nodes/html-image-element/Image';
|
30
31
|
import DocumentFragment from '../nodes/document-fragment/DocumentFragment';
|
@@ -80,6 +81,7 @@ import IRequest from '../fetch/IRequest';
|
|
80
81
|
import IHeaders from '../fetch/IHeaders';
|
81
82
|
import IRequestInit from '../fetch/IRequestInit';
|
82
83
|
import IResponse from '../fetch/IResponse';
|
84
|
+
import Range from '../range/Range';
|
83
85
|
import MediaQueryList from '../match-media/MediaQueryList';
|
84
86
|
import DOMRect from '../nodes/element/DOMRect';
|
85
87
|
import Window from './Window';
|
@@ -109,6 +111,7 @@ export default interface IWindow extends IEventTarget, NodeJS.Global {
|
|
109
111
|
readonly HTMLLabelElement: typeof HTMLLabelElement;
|
110
112
|
readonly HTMLMetaElement: typeof HTMLMetaElement;
|
111
113
|
readonly HTMLBaseElement: typeof HTMLBaseElement;
|
114
|
+
readonly HTMLDialogElement: typeof HTMLDialogElement;
|
112
115
|
readonly SVGSVGElement: typeof SVGSVGElement;
|
113
116
|
readonly SVGElement: typeof SVGElement;
|
114
117
|
readonly Image: typeof Image;
|
@@ -177,6 +180,7 @@ export default interface IWindow extends IEventTarget, NodeJS.Global {
|
|
177
180
|
readonly Response: {
|
178
181
|
new (body?: unknown | null, init?: IResponseInit): IResponse;
|
179
182
|
};
|
183
|
+
readonly Range: typeof Range;
|
180
184
|
readonly DOMRect: typeof DOMRect;
|
181
185
|
onload: (event: Event) => void;
|
182
186
|
onerror: (event: ErrorEvent) => void;
|
@@ -295,4 +299,22 @@ export default interface IWindow extends IEventTarget, NodeJS.Global {
|
|
295
299
|
* @returns Promise.
|
296
300
|
*/
|
297
301
|
fetch(url: string, init?: IRequestInit): Promise<IResponse>;
|
302
|
+
/**
|
303
|
+
* Creates a Base64-encoded ASCII string from a binary string (i.e., a string in which each character in the string is treated as a byte of binary data).
|
304
|
+
*
|
305
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/btoa
|
306
|
+
* @param data Binay data.
|
307
|
+
* @returns Base64-encoded string.
|
308
|
+
*/
|
309
|
+
btoa(data: unknown): string;
|
310
|
+
/**
|
311
|
+
* Decodes a string of data which has been encoded using Base64 encoding.
|
312
|
+
*
|
313
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/atob
|
314
|
+
* @see https://infra.spec.whatwg.org/#forgiving-base64-encode.
|
315
|
+
* @see Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
|
316
|
+
* @param data Binay string.
|
317
|
+
* @returns An ASCII string containing decoded data from encodedData.
|
318
|
+
*/
|
319
|
+
atob(data: unknown): string;
|
298
320
|
}
|