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.

Files changed (144) hide show
  1. package/.eslintrc.js +2 -2
  2. package/lib/base64/Base64.d.ts +23 -0
  3. package/lib/base64/Base64.js +89 -0
  4. package/lib/base64/Base64.js.map +1 -0
  5. package/lib/config/ElementTag.d.ts +2 -1
  6. package/lib/config/ElementTag.js +2 -1
  7. package/lib/config/ElementTag.js.map +1 -1
  8. package/lib/config/NonImplemenetedElementClasses.js +0 -1
  9. package/lib/config/NonImplemenetedElementClasses.js.map +1 -1
  10. package/lib/dom-implementation/DOMImplementation.d.ts +7 -1
  11. package/lib/dom-implementation/DOMImplementation.js +10 -2
  12. package/lib/dom-implementation/DOMImplementation.js.map +1 -1
  13. package/lib/dom-parser/DOMParser.d.ts +9 -4
  14. package/lib/dom-parser/DOMParser.js +13 -2
  15. package/lib/dom-parser/DOMParser.js.map +1 -1
  16. package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
  17. package/lib/exception/DOMExceptionNameEnum.js +4 -0
  18. package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
  19. package/lib/fetch/Request.d.ts +8 -0
  20. package/lib/fetch/Request.js +15 -6
  21. package/lib/fetch/Request.js.map +1 -1
  22. package/lib/fetch/Response.d.ts +5 -0
  23. package/lib/fetch/Response.js +12 -6
  24. package/lib/fetch/Response.js.map +1 -1
  25. package/lib/file/FileReader.d.ts +7 -2
  26. package/lib/file/FileReader.js +9 -3
  27. package/lib/file/FileReader.js.map +1 -1
  28. package/lib/index.d.ts +4 -1
  29. package/lib/index.js +5 -1
  30. package/lib/index.js.map +1 -1
  31. package/lib/location/URL.js +1 -1
  32. package/lib/location/URL.js.map +1 -1
  33. package/lib/nodes/comment/Comment.d.ts +1 -1
  34. package/lib/nodes/document/Document.d.ts +18 -15
  35. package/lib/nodes/document/Document.js +36 -33
  36. package/lib/nodes/document/Document.js.map +1 -1
  37. package/lib/nodes/document/IDocument.d.ts +7 -0
  38. package/lib/nodes/document-fragment/DocumentFragment.d.ts +1 -1
  39. package/lib/nodes/document-type/DocumentType.d.ts +1 -1
  40. package/lib/nodes/element/DOMRectListFactory.d.ts +23 -0
  41. package/lib/nodes/element/DOMRectListFactory.js +33 -0
  42. package/lib/nodes/element/DOMRectListFactory.js.map +1 -0
  43. package/lib/nodes/element/Element.d.ts +6 -5
  44. package/lib/nodes/element/Element.js +9 -11
  45. package/lib/nodes/element/Element.js.map +1 -1
  46. package/lib/nodes/element/IDOMRectList.d.ts +11 -0
  47. package/lib/nodes/element/IDOMRectList.js +3 -0
  48. package/lib/nodes/element/IDOMRectList.js.map +1 -0
  49. package/lib/nodes/element/IElement.d.ts +5 -4
  50. package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts +31 -0
  51. package/lib/nodes/html-dialog-element/HTMLDialogElement.js +51 -0
  52. package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -0
  53. package/lib/nodes/html-dialog-element/IHTMLDialogElement.d.ts +25 -0
  54. package/lib/nodes/html-dialog-element/IHTMLDialogElement.js +3 -0
  55. package/lib/nodes/html-dialog-element/IHTMLDialogElement.js.map +1 -0
  56. package/lib/nodes/html-template-element/HTMLTemplateElement.d.ts +1 -10
  57. package/lib/nodes/html-template-element/HTMLTemplateElement.js +2 -15
  58. package/lib/nodes/html-template-element/HTMLTemplateElement.js.map +1 -1
  59. package/lib/nodes/node/INode.d.ts +8 -6
  60. package/lib/nodes/node/Node.d.ts +20 -17
  61. package/lib/nodes/node/Node.js +19 -15
  62. package/lib/nodes/node/Node.js.map +1 -1
  63. package/lib/nodes/node/NodeTypeEnum.d.ts +10 -0
  64. package/lib/nodes/node/NodeTypeEnum.js +14 -0
  65. package/lib/nodes/node/NodeTypeEnum.js.map +1 -0
  66. package/lib/nodes/node/NodeUtility.d.ts +59 -0
  67. package/lib/nodes/node/NodeUtility.js +123 -0
  68. package/lib/nodes/node/NodeUtility.js.map +1 -0
  69. package/lib/nodes/text/IText.d.ts +9 -0
  70. package/lib/nodes/text/Text.d.ts +10 -1
  71. package/lib/nodes/text/Text.js +24 -0
  72. package/lib/nodes/text/Text.js.map +1 -1
  73. package/lib/range/IRangeBoundaryPoint.d.ts +8 -0
  74. package/lib/range/IRangeBoundaryPoint.js +3 -0
  75. package/lib/range/IRangeBoundaryPoint.js.map +1 -0
  76. package/lib/range/Range.d.ts +249 -0
  77. package/lib/range/Range.js +820 -0
  78. package/lib/range/Range.js.map +1 -0
  79. package/lib/range/RangeHowEnum.d.ts +7 -0
  80. package/lib/range/RangeHowEnum.js +11 -0
  81. package/lib/range/RangeHowEnum.js.map +1 -0
  82. package/lib/range/RangeUtility.d.ts +46 -0
  83. package/lib/range/RangeUtility.js +92 -0
  84. package/lib/range/RangeUtility.js.map +1 -0
  85. package/lib/selection/Selection.d.ts +167 -44
  86. package/lib/selection/Selection.js +369 -58
  87. package/lib/selection/Selection.js.map +1 -1
  88. package/lib/selection/SelectionDirectionEnum.d.ts +6 -0
  89. package/lib/selection/SelectionDirectionEnum.js +10 -0
  90. package/lib/selection/SelectionDirectionEnum.js.map +1 -0
  91. package/lib/window/IWindow.d.ts +22 -0
  92. package/lib/window/Window.d.ts +25 -9
  93. package/lib/window/Window.js +85 -35
  94. package/lib/window/Window.js.map +1 -1
  95. package/lib/xml-parser/XMLParser.d.ts +2 -2
  96. package/lib/xml-parser/XMLParser.js +5 -3
  97. package/lib/xml-parser/XMLParser.js.map +1 -1
  98. package/lib/xml-serializer/XMLSerializer.js +4 -1
  99. package/lib/xml-serializer/XMLSerializer.js.map +1 -1
  100. package/package.json +2 -2
  101. package/src/base64/Base64.ts +97 -0
  102. package/src/config/ElementTag.ts +2 -1
  103. package/src/config/NonImplemenetedElementClasses.ts +0 -1
  104. package/src/dom-implementation/DOMImplementation.ts +13 -2
  105. package/src/dom-parser/DOMParser.ts +20 -7
  106. package/src/exception/DOMExceptionNameEnum.ts +5 -1
  107. package/src/fetch/Request.ts +16 -6
  108. package/src/fetch/Response.ts +13 -6
  109. package/src/file/FileReader.ts +14 -4
  110. package/src/index.ts +7 -1
  111. package/src/location/URL.ts +1 -1
  112. package/src/nodes/document/Document.ts +47 -39
  113. package/src/nodes/document/IDocument.ts +8 -0
  114. package/src/nodes/element/DOMRectListFactory.ts +33 -0
  115. package/src/nodes/element/Element.ts +10 -11
  116. package/src/nodes/element/IDOMRectList.ts +11 -0
  117. package/src/nodes/element/IElement.ts +5 -4
  118. package/src/nodes/html-dialog-element/HTMLDialogElement.ts +47 -0
  119. package/src/nodes/html-dialog-element/IHTMLDialogElement.ts +29 -0
  120. package/src/nodes/html-template-element/HTMLTemplateElement.ts +3 -21
  121. package/src/nodes/node/INode.ts +8 -6
  122. package/src/nodes/node/Node.ts +24 -19
  123. package/src/nodes/node/NodeTypeEnum.ts +11 -0
  124. package/src/nodes/node/NodeUtility.ts +139 -0
  125. package/src/nodes/text/IText.ts +10 -0
  126. package/src/nodes/text/Text.ts +33 -0
  127. package/src/range/IRangeBoundaryPoint.ts +9 -0
  128. package/src/range/Range.ts +1057 -0
  129. package/src/range/RangeHowEnum.ts +8 -0
  130. package/src/range/RangeUtility.ts +114 -0
  131. package/src/selection/Selection.ts +444 -60
  132. package/src/selection/SelectionDirectionEnum.ts +7 -0
  133. package/src/window/IWindow.ts +24 -0
  134. package/src/window/Window.ts +104 -32
  135. package/src/xml-parser/XMLParser.ts +15 -7
  136. package/src/xml-serializer/XMLSerializer.ts +6 -1
  137. package/lib/nodes/element/Range.d.ts +0 -167
  138. package/lib/nodes/element/Range.js +0 -215
  139. package/lib/nodes/element/Range.js.map +0 -1
  140. package/lib/window/WindowBase64.d.ts +0 -19
  141. package/lib/window/WindowBase64.js +0 -88
  142. package/lib/window/WindowBase64.js.map +0 -1
  143. package/src/nodes/element/Range.ts +0 -237
  144. package/src/window/WindowBase64.ts +0 -95
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Range.js","sourceRoot":"","sources":["../../src/range/Range.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ declare enum RangeHowEnum {
2
+ endToEnd = 2,
3
+ endToStart = 3,
4
+ startToEnd = 1,
5
+ startToStart = 0
6
+ }
7
+ export default RangeHowEnum;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var RangeHowEnum;
4
+ (function (RangeHowEnum) {
5
+ RangeHowEnum[RangeHowEnum["endToEnd"] = 2] = "endToEnd";
6
+ RangeHowEnum[RangeHowEnum["endToStart"] = 3] = "endToStart";
7
+ RangeHowEnum[RangeHowEnum["startToEnd"] = 1] = "startToEnd";
8
+ RangeHowEnum[RangeHowEnum["startToStart"] = 0] = "startToStart";
9
+ })(RangeHowEnum || (RangeHowEnum = {}));
10
+ exports.default = RangeHowEnum;
11
+ //# sourceMappingURL=RangeHowEnum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeHowEnum.js","sourceRoot":"","sources":["../../src/range/RangeHowEnum.ts"],"names":[],"mappings":";;AAAA,IAAK,YAKJ;AALD,WAAK,YAAY;IAChB,uDAAY,CAAA;IACZ,2DAAc,CAAA;IACd,2DAAc,CAAA;IACd,+DAAgB,CAAA;AACjB,CAAC,EALI,YAAY,KAAZ,YAAY,QAKhB;AAED,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,46 @@
1
+ import INode from '../nodes/node/INode';
2
+ import Range from './Range';
3
+ import IRangeBoundaryPoint from './IRangeBoundaryPoint';
4
+ /**
5
+ * Range utility.
6
+ *
7
+ * Based on:
8
+ * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/range/boundary-point.js.
9
+ */
10
+ export default class RangeUtility {
11
+ /**
12
+ * Compares boundary points.
13
+ *
14
+ * Based on logic from:
15
+ * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/range/boundary-point.js
16
+ *
17
+ * @see https://dom.spec.whatwg.org/#concept-range-bp-after
18
+ * @param pointA Point A.
19
+ * @param pointB Point B.
20
+ * @returns A number, -1, 0, or 1, indicating whether the corresponding boundary-point of the Range is respectively before, equal to, or after the corresponding boundary-point of sourceRange.
21
+ */
22
+ static compareBoundaryPointsPosition(pointA: IRangeBoundaryPoint, pointB: IRangeBoundaryPoint): number;
23
+ /**
24
+ * Validates a boundary point.
25
+ *
26
+ * @throws DOMException
27
+ * @param point Boundary point.
28
+ */
29
+ static validateBoundaryPoint(point: IRangeBoundaryPoint): void;
30
+ /**
31
+ * Returns "true" if contained.
32
+ *
33
+ * @param node Node.
34
+ * @param range Range.
35
+ * @returns "true" if contained.
36
+ */
37
+ static isContained(node: INode, range: Range): boolean;
38
+ /**
39
+ * Returns "true" if partially contained.
40
+ *
41
+ * @param node Node.
42
+ * @param range Range.
43
+ * @returns "true" if partially contained.
44
+ */
45
+ static isPartiallyContained(node: INode, range: Range): boolean;
46
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const DOMException_1 = __importDefault(require("../exception/DOMException"));
7
+ const DOMExceptionNameEnum_1 = __importDefault(require("../exception/DOMExceptionNameEnum"));
8
+ const NodeTypeEnum_1 = __importDefault(require("../nodes/node/NodeTypeEnum"));
9
+ const NodeUtility_1 = __importDefault(require("../nodes/node/NodeUtility"));
10
+ /**
11
+ * Range utility.
12
+ *
13
+ * Based on:
14
+ * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/range/boundary-point.js.
15
+ */
16
+ class RangeUtility {
17
+ /**
18
+ * Compares boundary points.
19
+ *
20
+ * Based on logic from:
21
+ * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/range/boundary-point.js
22
+ *
23
+ * @see https://dom.spec.whatwg.org/#concept-range-bp-after
24
+ * @param pointA Point A.
25
+ * @param pointB Point B.
26
+ * @returns A number, -1, 0, or 1, indicating whether the corresponding boundary-point of the Range is respectively before, equal to, or after the corresponding boundary-point of sourceRange.
27
+ */
28
+ static compareBoundaryPointsPosition(pointA, pointB) {
29
+ if (pointA.node === pointB.node) {
30
+ if (pointA.offset === pointB.offset) {
31
+ return 0;
32
+ }
33
+ else if (pointA.offset < pointB.offset) {
34
+ return -1;
35
+ }
36
+ return 1;
37
+ }
38
+ if (NodeUtility_1.default.isFollowing(pointA.node, pointB.node)) {
39
+ return this.compareBoundaryPointsPosition(pointB, pointA) === -1 ? 1 : -1;
40
+ }
41
+ if (NodeUtility_1.default.isInclusiveAncestor(pointA.node, pointB.node)) {
42
+ let child = pointB.node;
43
+ while (child.parentNode !== pointA.node) {
44
+ child = child.parentNode;
45
+ }
46
+ if (child.parentNode.childNodes.indexOf(child) < pointA.offset) {
47
+ return 1;
48
+ }
49
+ }
50
+ return -1;
51
+ }
52
+ /**
53
+ * Validates a boundary point.
54
+ *
55
+ * @throws DOMException
56
+ * @param point Boundary point.
57
+ */
58
+ static validateBoundaryPoint(point) {
59
+ if (point.node.nodeType === NodeTypeEnum_1.default.documentTypeNode) {
60
+ throw new DOMException_1.default(`DocumentType Node can't be used as boundary point.`, DOMExceptionNameEnum_1.default.invalidNodeTypeError);
61
+ }
62
+ if (point.offset > NodeUtility_1.default.getNodeLength(point.node)) {
63
+ throw new DOMException_1.default(`Offset out of bound.`, DOMExceptionNameEnum_1.default.indexSizeError);
64
+ }
65
+ }
66
+ /**
67
+ * Returns "true" if contained.
68
+ *
69
+ * @param node Node.
70
+ * @param range Range.
71
+ * @returns "true" if contained.
72
+ */
73
+ static isContained(node, range) {
74
+ return (this.compareBoundaryPointsPosition({ node, offset: 0 }, { node: range.startContainer, offset: range.startOffset }) === 1 &&
75
+ this.compareBoundaryPointsPosition({ node, offset: NodeUtility_1.default.getNodeLength(node) }, { node: range.endContainer, offset: range.endOffset }) === -1);
76
+ }
77
+ /**
78
+ * Returns "true" if partially contained.
79
+ *
80
+ * @param node Node.
81
+ * @param range Range.
82
+ * @returns "true" if partially contained.
83
+ */
84
+ static isPartiallyContained(node, range) {
85
+ return ((NodeUtility_1.default.isInclusiveAncestor(node, range.startContainer) &&
86
+ !NodeUtility_1.default.isInclusiveAncestor(node, range.endContainer)) ||
87
+ (!NodeUtility_1.default.isInclusiveAncestor(node, range.startContainer) &&
88
+ NodeUtility_1.default.isInclusiveAncestor(node, range.endContainer)));
89
+ }
90
+ }
91
+ exports.default = RangeUtility;
92
+ //# sourceMappingURL=RangeUtility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeUtility.js","sourceRoot":"","sources":["../../src/range/RangeUtility.ts"],"names":[],"mappings":"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"}
@@ -1,95 +1,218 @@
1
+ import IDocument from '../nodes/document/IDocument';
1
2
  import INode from '../nodes/node/INode';
3
+ import Range from '../range/Range';
2
4
  /**
3
5
  * Selection.
4
6
  *
7
+ * Based on logic from:
8
+ * https://github.com/jsdom/jsdom/blob/master/lib/jsdom/living/selection/Selection-impl.js
9
+ *
5
10
  * Reference:
6
11
  * https://developer.mozilla.org/en-US/docs/Web/API/Selection.
7
12
  */
8
13
  export default class Selection {
9
- readonly anchorNode: INode;
10
- readonly anchorOffset: number;
11
- readonly baseNode: INode;
12
- readonly baseOffset: number;
13
- readonly extentNode: INode;
14
- readonly extentOffset: number;
15
- readonly focusNode: INode;
16
- readonly focusOffset: number;
17
- readonly isCollapsed: boolean;
18
- readonly rangeCount: number;
19
- readonly type: string;
14
+ private readonly _ownerDocument;
15
+ private _range;
16
+ private _direction;
20
17
  /**
21
- * Adds a range.
18
+ * Constructor.
22
19
  *
23
- * @param _range Range.
20
+ * @param ownerDocument Owner document.
24
21
  */
25
- addRange(_range: object): void;
22
+ constructor(ownerDocument: IDocument);
26
23
  /**
27
- * Collapses the current selection to a single point.
24
+ * Returns range count.
28
25
  *
29
- * @param _node Node.
30
- * @param _offset Offset.
26
+ * @see https://w3c.github.io/selection-api/#dom-selection-rangecount
27
+ * @returns Range count.
31
28
  */
32
- collapse(_node: INode, _offset?: number): void;
29
+ get rangeCount(): number;
33
30
  /**
34
- * Collapses the selection to the end.
31
+ * Returns collapsed state.
32
+ *
33
+ * @see https://w3c.github.io/selection-api/#dom-selection-iscollapsed
34
+ * @returns "true" if collapsed.
35
35
  */
36
- collapseToEnd(): void;
36
+ get isCollapsed(): boolean;
37
37
  /**
38
- * Collapses the selection to the start.
38
+ * Returns type.
39
+ *
40
+ * @see https://w3c.github.io/selection-api/#dom-selection-type
41
+ * @returns Type.
39
42
  */
40
- collapseToStart(): void;
43
+ get type(): string;
41
44
  /**
42
- * Indicates whether a specified node is part of the selection.
45
+ * Returns anchor node.
43
46
  *
44
- * @param _node Node.
45
- * @param _partialContainer Partial container.
46
- * @returns Always returns "true" for now.
47
+ * @see https://w3c.github.io/selection-api/#dom-selection-anchornode
48
+ * @returns Node.
47
49
  */
48
- containsNode(_node: INode, _partialContainer?: INode): boolean;
50
+ get anchorNode(): INode;
49
51
  /**
50
- * Deletes the selected text from the document's DOM.
52
+ * Returns anchor offset.
53
+ *
54
+ * @see https://w3c.github.io/selection-api/#dom-selection-anchoroffset
55
+ * @returns Node.
51
56
  */
52
- deleteFromDocument(): void;
57
+ get anchorOffset(): number;
53
58
  /**
54
- * Moves the focus of the selection to a specified point.
59
+ * Returns anchor node.
55
60
  *
56
- * @param _node Node.
57
- * @param _offset Offset.
61
+ * @deprecated
62
+ * @alias anchorNode
63
+ * @returns Node.
58
64
  */
59
- extend(_node: INode, _offset?: number): void;
65
+ get baseNode(): INode;
60
66
  /**
61
- * Moves the focus of the selection to a specified point.
67
+ * Returns anchor offset.
68
+ *
69
+ * @deprecated
70
+ * @alias anchorOffset
71
+ * @returns Node.
72
+ */
73
+ get baseOffset(): number;
74
+ /**
75
+ * Returns focus node.
62
76
  *
63
- * @param _index Index.
77
+ * @see https://w3c.github.io/selection-api/#dom-selection-focusnode
78
+ * @returns Node.
64
79
  */
65
- getRangeAt(_index: number): object;
80
+ get focusNode(): INode;
81
+ /**
82
+ * Returns focus offset.
83
+ *
84
+ * @see https://w3c.github.io/selection-api/#dom-selection-focusoffset
85
+ * @returns Node.
86
+ */
87
+ get focusOffset(): number;
88
+ /**
89
+ * Returns focus node.
90
+ *
91
+ * @deprecated
92
+ * @alias focusNode
93
+ * @returns Node.
94
+ */
95
+ get extentNode(): INode;
96
+ /**
97
+ * Returns focus offset.
98
+ *
99
+ * @deprecated
100
+ * @alias focusOffset
101
+ * @returns Node.
102
+ */
103
+ get extentOffset(): number;
104
+ /**
105
+ * Adds a range.
106
+ *
107
+ * @see https://w3c.github.io/selection-api/#dom-selection-addrange
108
+ * @param newRange Range.
109
+ */
110
+ addRange(newRange: Range): void;
111
+ /**
112
+ * Returns Range.
113
+ *
114
+ * @see https://w3c.github.io/selection-api/#dom-selection-getrangeat
115
+ * @param index Index.
116
+ * @returns Range.
117
+ */
118
+ getRangeAt(index: number): Range;
66
119
  /**
67
120
  * Removes a range from a selection.
68
121
  *
69
- * @param _range Range.
122
+ * @see https://w3c.github.io/selection-api/#dom-selection-removerange
123
+ * @param range Range.
70
124
  */
71
- removeRange(_range: object): void;
125
+ removeRange(range: Range): void;
72
126
  /**
73
127
  * Removes all ranges.
74
128
  */
75
129
  removeAllRanges(): void;
130
+ /**
131
+ * Removes all ranges.
132
+ *
133
+ * @alias removeAllRanges()
134
+ */
135
+ empty(): void;
136
+ /**
137
+ * Collapses the current selection to a single point.
138
+ *
139
+ * @see https://w3c.github.io/selection-api/#dom-selection-collapse
140
+ * @param node Node.
141
+ * @param offset Offset.
142
+ */
143
+ collapse(node: INode, offset: number): void;
144
+ /**
145
+ * Collapses the current selection to a single point.
146
+ *
147
+ * @see https://w3c.github.io/selection-api/#dom-selection-setposition
148
+ * @alias collapse()
149
+ * @param node Node.
150
+ * @param offset Offset.
151
+ */
152
+ setPosition(node: INode, offset: number): void;
153
+ /**
154
+ * Collapses the selection to the end.
155
+ *
156
+ * @see https://w3c.github.io/selection-api/#dom-selection-collapsetoend
157
+ */
158
+ collapseToEnd(): void;
159
+ /**
160
+ * Collapses the selection to the start.
161
+ *
162
+ * @see https://w3c.github.io/selection-api/#dom-selection-collapsetostart
163
+ */
164
+ collapseToStart(): void;
165
+ /**
166
+ * Indicates whether a specified node is part of the selection.
167
+ *
168
+ * @see https://w3c.github.io/selection-api/#dom-selection-containsnode
169
+ * @param node Node.
170
+ * @param [allowPartialContainment] Set to "true" to allow partial containment.
171
+ * @returns Always returns "true" for now.
172
+ */
173
+ containsNode(node: INode, allowPartialContainment?: boolean): boolean;
174
+ /**
175
+ * Deletes the selected text from the document's DOM.
176
+ *
177
+ * @see https://w3c.github.io/selection-api/#dom-selection-deletefromdocument
178
+ */
179
+ deleteFromDocument(): void;
180
+ /**
181
+ * Moves the focus of the selection to a specified point.
182
+ *
183
+ * @see https://w3c.github.io/selection-api/#dom-selection-extend
184
+ * @param node Node.
185
+ * @param offset Offset.
186
+ */
187
+ extend(node: INode, offset: number): void;
76
188
  /**
77
189
  * Selects all children.
78
190
  *
191
+ * @see https://w3c.github.io/selection-api/#dom-selection-selectallchildren
192
+ * @param node
79
193
  * @param _parentNode Parent node.
80
194
  */
81
- selectAllChildren(_parentNode: INode): void;
195
+ selectAllChildren(node: INode): void;
82
196
  /**
83
197
  * Sets the selection to be a range including all or parts of two specified DOM nodes, and any content located between them.
84
198
  *
85
- * @param _anchorNode Anchor node.
86
- * @param _anchorOffset Anchor offset.
87
- * @param _focusNode Focus node.
88
- * @param _focusOffset Focus offset.
199
+ * @see https://w3c.github.io/selection-api/#dom-selection-setbaseandextent
200
+ * @param anchorNode Anchor node.
201
+ * @param anchorOffset Anchor offset.
202
+ * @param focusNode Focus node.
203
+ * @param focusOffset Focus offset.
89
204
  */
90
- setBaseAndExtent(_anchorNode: INode, _anchorOffset: number, _focusNode: INode, _focusOffset: number): void;
205
+ setBaseAndExtent(anchorNode: INode, anchorOffset: number, focusNode: INode, focusOffset: number): void;
91
206
  /**
92
207
  * Returns string currently being represented by the selection object.
208
+ *
209
+ * @returns Selection as string.
93
210
  */
94
211
  toString(): string;
212
+ /**
213
+ * Sets the current range.
214
+ *
215
+ * @param range Range.
216
+ */
217
+ protected _associateRange(range: Range): void;
95
218
  }