happy-dom 5.3.4 → 6.0.1

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/nodes/comment/Comment.d.ts +1 -1
  32. package/lib/nodes/document/Document.d.ts +18 -15
  33. package/lib/nodes/document/Document.js +36 -33
  34. package/lib/nodes/document/Document.js.map +1 -1
  35. package/lib/nodes/document/IDocument.d.ts +7 -0
  36. package/lib/nodes/document-fragment/DocumentFragment.d.ts +1 -1
  37. package/lib/nodes/document-type/DocumentType.d.ts +1 -1
  38. package/lib/nodes/element/DOMRectListFactory.d.ts +23 -0
  39. package/lib/nodes/element/DOMRectListFactory.js +33 -0
  40. package/lib/nodes/element/DOMRectListFactory.js.map +1 -0
  41. package/lib/nodes/element/Element.d.ts +6 -5
  42. package/lib/nodes/element/Element.js +9 -11
  43. package/lib/nodes/element/Element.js.map +1 -1
  44. package/lib/nodes/element/IDOMRectList.d.ts +11 -0
  45. package/lib/nodes/element/IDOMRectList.js +3 -0
  46. package/lib/nodes/element/IDOMRectList.js.map +1 -0
  47. package/lib/nodes/element/IElement.d.ts +5 -4
  48. package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts +31 -0
  49. package/lib/nodes/html-dialog-element/HTMLDialogElement.js +51 -0
  50. package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -0
  51. package/lib/nodes/html-dialog-element/IHTMLDialogElement.d.ts +25 -0
  52. package/lib/nodes/html-dialog-element/IHTMLDialogElement.js +3 -0
  53. package/lib/nodes/html-dialog-element/IHTMLDialogElement.js.map +1 -0
  54. package/lib/nodes/html-element/DatasetUtility.js +3 -1
  55. package/lib/nodes/html-element/DatasetUtility.js.map +1 -1
  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/nodes/document/Document.ts +47 -39
  112. package/src/nodes/document/IDocument.ts +8 -0
  113. package/src/nodes/element/DOMRectListFactory.ts +33 -0
  114. package/src/nodes/element/Element.ts +10 -11
  115. package/src/nodes/element/IDOMRectList.ts +11 -0
  116. package/src/nodes/element/IElement.ts +5 -4
  117. package/src/nodes/html-dialog-element/HTMLDialogElement.ts +47 -0
  118. package/src/nodes/html-dialog-element/IHTMLDialogElement.ts +29 -0
  119. package/src/nodes/html-element/DatasetUtility.ts +3 -1
  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
@@ -1,215 +0,0 @@
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 DocumentFragment_1 = __importDefault(require("../document-fragment/DocumentFragment"));
7
- const DOMRect_1 = __importDefault(require("./DOMRect"));
8
- /**
9
- * Range object.
10
- *
11
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Range
12
- */
13
- class Range {
14
- constructor() {
15
- this._startContainer = null;
16
- this._endContainer = null;
17
- this._startOffset = -1;
18
- this._endOffset = -1;
19
- this._collapsed = false;
20
- }
21
- /**
22
- * Returns collapsed.
23
- *
24
- * @returns "true" if collapsed.
25
- */
26
- get collapsed() {
27
- return this._collapsed;
28
- }
29
- /**
30
- * Returns common ancestor container.
31
- *
32
- * @returns Node.
33
- */
34
- get commonAncestorContainer() {
35
- return null;
36
- }
37
- /**
38
- * Returns end container.
39
- *
40
- * @returns Node.
41
- */
42
- get endContainer() {
43
- return this._endContainer;
44
- }
45
- /**
46
- * Returns start container.
47
- *
48
- * @returns Node.
49
- */
50
- get startContainer() {
51
- return this._startContainer;
52
- }
53
- /**
54
- * Returns end offset.
55
- *
56
- * @returns Offset.
57
- */
58
- get endOffset() {
59
- return this._endOffset;
60
- }
61
- /**
62
- * Returns start offset.
63
- *
64
- * @returns Offset.
65
- */
66
- get startOffset() {
67
- return this._startOffset;
68
- }
69
- /**
70
- * Sets start.
71
- *
72
- * @param startNode Start node.
73
- * @param startOffset Start offset.
74
- */
75
- setStart(startNode, startOffset) {
76
- this._startContainer = startNode;
77
- this._startOffset = startOffset;
78
- }
79
- /**
80
- * Sets end.
81
- *
82
- * @param endNode End node.
83
- * @param endOffset End offset.
84
- */
85
- setEnd(endNode, endOffset) {
86
- this._endContainer = endNode;
87
- this._endOffset = endOffset;
88
- }
89
- /**
90
- * Sets start before.
91
- */
92
- setStartBefore() { }
93
- /**
94
- * Sets start after.
95
- */
96
- setStartAfter() { }
97
- /**
98
- * Sets end before.
99
- */
100
- setEndBefore() { }
101
- /**
102
- * Sets end after.
103
- */
104
- setEndAfter() { }
105
- /**
106
- * Selects a node.
107
- */
108
- selectNode() { }
109
- /**
110
- * Selects node content.
111
- */
112
- selectNodeContents() { }
113
- /**
114
- * Collapses the Range to one of its boundary points.
115
- */
116
- collapse() {
117
- this._collapsed = true;
118
- }
119
- /**
120
- * Removes the contents of a Range from the Document.
121
- */
122
- deleteContents() { }
123
- /**
124
- * Moves contents of a Range from the document tree into a DocumentFragment.
125
- */
126
- extractContents() {
127
- return new DocumentFragment_1.default();
128
- }
129
- /**
130
- * Insert a Node at the start of a Range.
131
- */
132
- insertNode() { }
133
- /**
134
- * Moves content of a Range into a new Node.
135
- */
136
- surroundContents() { }
137
- /**
138
- * Compares the boundary points of the Range with another Range.
139
- *
140
- * @returns "true" when equal.
141
- */
142
- compareBoundaryPoints() {
143
- return false;
144
- }
145
- /**
146
- * Clones the range.
147
- *
148
- * @returns Range.
149
- */
150
- cloneRange() {
151
- return new Range();
152
- }
153
- /**
154
- * Releases the Range from use to improve performance.
155
- */
156
- detach() { }
157
- /**
158
- * Returns the text of the Range.
159
- *
160
- * @returns Text.
161
- */
162
- toString() {
163
- return '';
164
- }
165
- /**
166
- * Returns -1, 0, or 1 indicating whether the point occurs before, inside, or after the Range.
167
- *
168
- * @returns Number.
169
- */
170
- comparePoint() {
171
- return 0;
172
- }
173
- /**
174
- * Returns a DocumentFragment created from a given string of code.
175
- *
176
- * @returns Document fragment.
177
- */
178
- createContextualFragment() {
179
- return new DocumentFragment_1.default();
180
- }
181
- /**
182
- * Returns a DOMRect object which bounds the entire contents of the Range; this would be the union of all the rectangles returned by range.getClientRects().
183
- *
184
- * @returns DOM rect.
185
- */
186
- getBoundingClientRect() {
187
- return new DOMRect_1.default();
188
- }
189
- /**
190
- * Returns a list of DOMRect objects that aggregates the results of Element.getClientRects() for all the elements in the Range.
191
- *
192
- * @returns DOM rect.
193
- */
194
- getClientRects() {
195
- return new DOMRect_1.default();
196
- }
197
- /**
198
- * Returns a boolean indicating whether the given node intersects the Range.
199
- *
200
- * @returns "true" when intersecting.
201
- */
202
- intersectsNode() {
203
- return false;
204
- }
205
- /**
206
- * Returns a boolean indicating whether the given point is in the Range.
207
- *
208
- * @returns "true" when in range.
209
- */
210
- isPointInRange() {
211
- return false;
212
- }
213
- }
214
- exports.default = Range;
215
- //# sourceMappingURL=Range.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Range.js","sourceRoot":"","sources":["../../../src/nodes/element/Range.ts"],"names":[],"mappings":";;;;;AACA,6FAAqE;AACrE,wDAAgC;AAEhC;;;;GAIG;AACH,MAAqB,KAAK;IAA1B;QACS,oBAAe,GAAS,IAAI,CAAC;QAC7B,kBAAa,GAAS,IAAI,CAAC;QAC3B,iBAAY,GAAG,CAAC,CAAC,CAAC;QAClB,eAAU,GAAG,CAAC,CAAC,CAAC;QAChB,eAAU,GAAG,KAAK,CAAC;IA8N5B,CAAC;IA5NA;;;;OAIG;IACH,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,IAAW,uBAAuB;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,IAAW,YAAY;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,IAAW,cAAc;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,IAAW,WAAW;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACI,QAAQ,CAAC,SAAe,EAAE,WAAmB;QACnD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,OAAa,EAAE,SAAiB;QAC7C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,cAAc,KAAU,CAAC;IAEhC;;OAEG;IACI,aAAa,KAAU,CAAC;IAE/B;;OAEG;IACI,YAAY,KAAU,CAAC;IAE9B;;OAEG;IACI,WAAW,KAAU,CAAC;IAE7B;;OAEG;IACI,UAAU,KAAU,CAAC;IAE5B;;OAEG;IACI,kBAAkB,KAAU,CAAC;IAEpC;;OAEG;IACI,QAAQ;QACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,cAAc,KAAU,CAAC;IAEhC;;OAEG;IACI,eAAe;QACrB,OAAO,IAAI,0BAAgB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,UAAU,KAAU,CAAC;IAE5B;;OAEG;IACI,gBAAgB,KAAU,CAAC;IAElC;;;;OAIG;IACI,qBAAqB;QAC3B,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,UAAU;QAChB,OAAO,IAAI,KAAK,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,MAAM,KAAU,CAAC;IAExB;;;;OAIG;IACI,QAAQ;QACd,OAAO,EAAE,CAAC;IACX,CAAC;IAED;;;;OAIG;IACI,YAAY;QAClB,OAAO,CAAC,CAAC;IACV,CAAC;IAED;;;;OAIG;IACI,wBAAwB;QAC9B,OAAO,IAAI,0BAAgB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,qBAAqB;QAC3B,OAAO,IAAI,iBAAO,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,cAAc;QACpB,OAAO,IAAI,iBAAO,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,cAAc;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,cAAc;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAnOD,wBAmOC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Btoa.
3
- *
4
- * Reference:
5
- * https://developer.mozilla.org/en-US/docs/Web/API/btoa.
6
- *
7
- * @param data
8
- */
9
- export declare const btoa: (data: unknown) => string;
10
- /**
11
- * Atob.
12
- *
13
- * Reference:
14
- * https://infra.spec.whatwg.org/#forgiving-base64-encode.
15
- * Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
16
- *
17
- * @param data
18
- */
19
- export declare const atob: (data: unknown) => string;
@@ -1,88 +0,0 @@
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
- exports.atob = exports.btoa = void 0;
7
- const DOMException_1 = __importDefault(require("../exception/DOMException"));
8
- const DOMExceptionNameEnum_1 = __importDefault(require("../exception/DOMExceptionNameEnum"));
9
- const base64list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
10
- /**
11
- * Btoa.
12
- *
13
- * Reference:
14
- * https://developer.mozilla.org/en-US/docs/Web/API/btoa.
15
- *
16
- * @param data
17
- */
18
- const btoa = (data) => {
19
- const str = data.toString();
20
- if (/[^\u0000-\u00ff]/.test(str)) {
21
- throw new DOMException_1.default("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.", DOMExceptionNameEnum_1.default.invalidCharacterError);
22
- }
23
- let t = '';
24
- let p = -6;
25
- let a = 0;
26
- let i = 0;
27
- let v = 0;
28
- let c;
29
- while (i < str.length || p > -6) {
30
- if (p < 0) {
31
- if (i < str.length) {
32
- c = str.charCodeAt(i++);
33
- v += 8;
34
- }
35
- else {
36
- c = 0;
37
- }
38
- a = ((a & 255) << 8) | (c & 255);
39
- p += 8;
40
- }
41
- t += base64list.charAt(v > 0 ? (a >> p) & 63 : 64);
42
- p -= 6;
43
- v -= 6;
44
- }
45
- return t;
46
- };
47
- exports.btoa = btoa;
48
- /**
49
- * Atob.
50
- *
51
- * Reference:
52
- * https://infra.spec.whatwg.org/#forgiving-base64-encode.
53
- * Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
54
- *
55
- * @param data
56
- */
57
- const atob = (data) => {
58
- const str = data.toString();
59
- if (/[^\u0000-\u00ff]/.test(str)) {
60
- throw new DOMException_1.default("Failed to execute 'atob' on 'Window': The string to be decoded contains characters outside of the Latin1 range.", DOMExceptionNameEnum_1.default.invalidCharacterError);
61
- }
62
- if (/[^A-Za-z\d+/=]/.test(str) || str.length % 4 == 1) {
63
- throw new DOMException_1.default("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.", DOMExceptionNameEnum_1.default.invalidCharacterError);
64
- }
65
- let t = '';
66
- let p = -8;
67
- let a = 0;
68
- let c;
69
- let d;
70
- for (let i = 0; i < str.length; i++) {
71
- if ((c = base64list.indexOf(str.charAt(i))) < 0) {
72
- continue;
73
- }
74
- a = (a << 6) | (c & 63);
75
- if ((p += 6) >= 0) {
76
- d = (a >> p) & 255;
77
- if (c !== 64) {
78
- t += String.fromCharCode(d);
79
- }
80
- a &= 63;
81
- p -= 8;
82
- }
83
- }
84
- return t;
85
- };
86
- exports.atob = atob;
87
- exports = { btoa: exports.btoa, atob: exports.atob };
88
- //# sourceMappingURL=WindowBase64.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WindowBase64.js","sourceRoot":"","sources":["../../src/window/WindowBase64.ts"],"names":[],"mappings":"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"}
@@ -1,237 +0,0 @@
1
- import Node from '../node/Node';
2
- import DocumentFragment from '../document-fragment/DocumentFragment';
3
- import DOMRect from './DOMRect';
4
-
5
- /**
6
- * Range object.
7
- *
8
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Range
9
- */
10
- export default class Range {
11
- private _startContainer: Node = null;
12
- private _endContainer: Node = null;
13
- private _startOffset = -1;
14
- private _endOffset = -1;
15
- private _collapsed = false;
16
-
17
- /**
18
- * Returns collapsed.
19
- *
20
- * @returns "true" if collapsed.
21
- */
22
- public get collapsed(): boolean {
23
- return this._collapsed;
24
- }
25
-
26
- /**
27
- * Returns common ancestor container.
28
- *
29
- * @returns Node.
30
- */
31
- public get commonAncestorContainer(): Node {
32
- return null;
33
- }
34
-
35
- /**
36
- * Returns end container.
37
- *
38
- * @returns Node.
39
- */
40
- public get endContainer(): Node {
41
- return this._endContainer;
42
- }
43
-
44
- /**
45
- * Returns start container.
46
- *
47
- * @returns Node.
48
- */
49
- public get startContainer(): Node {
50
- return this._startContainer;
51
- }
52
-
53
- /**
54
- * Returns end offset.
55
- *
56
- * @returns Offset.
57
- */
58
- public get endOffset(): number {
59
- return this._endOffset;
60
- }
61
-
62
- /**
63
- * Returns start offset.
64
- *
65
- * @returns Offset.
66
- */
67
- public get startOffset(): number {
68
- return this._startOffset;
69
- }
70
-
71
- /**
72
- * Sets start.
73
- *
74
- * @param startNode Start node.
75
- * @param startOffset Start offset.
76
- */
77
- public setStart(startNode: Node, startOffset: number): void {
78
- this._startContainer = startNode;
79
- this._startOffset = startOffset;
80
- }
81
-
82
- /**
83
- * Sets end.
84
- *
85
- * @param endNode End node.
86
- * @param endOffset End offset.
87
- */
88
- public setEnd(endNode: Node, endOffset: number): void {
89
- this._endContainer = endNode;
90
- this._endOffset = endOffset;
91
- }
92
-
93
- /**
94
- * Sets start before.
95
- */
96
- public setStartBefore(): void {}
97
-
98
- /**
99
- * Sets start after.
100
- */
101
- public setStartAfter(): void {}
102
-
103
- /**
104
- * Sets end before.
105
- */
106
- public setEndBefore(): void {}
107
-
108
- /**
109
- * Sets end after.
110
- */
111
- public setEndAfter(): void {}
112
-
113
- /**
114
- * Selects a node.
115
- */
116
- public selectNode(): void {}
117
-
118
- /**
119
- * Selects node content.
120
- */
121
- public selectNodeContents(): void {}
122
-
123
- /**
124
- * Collapses the Range to one of its boundary points.
125
- */
126
- public collapse(): void {
127
- this._collapsed = true;
128
- }
129
-
130
- /**
131
- * Removes the contents of a Range from the Document.
132
- */
133
- public deleteContents(): void {}
134
-
135
- /**
136
- * Moves contents of a Range from the document tree into a DocumentFragment.
137
- */
138
- public extractContents(): DocumentFragment {
139
- return new DocumentFragment();
140
- }
141
-
142
- /**
143
- * Insert a Node at the start of a Range.
144
- */
145
- public insertNode(): void {}
146
-
147
- /**
148
- * Moves content of a Range into a new Node.
149
- */
150
- public surroundContents(): void {}
151
-
152
- /**
153
- * Compares the boundary points of the Range with another Range.
154
- *
155
- * @returns "true" when equal.
156
- */
157
- public compareBoundaryPoints(): boolean {
158
- return false;
159
- }
160
-
161
- /**
162
- * Clones the range.
163
- *
164
- * @returns Range.
165
- */
166
- public cloneRange(): Range {
167
- return new Range();
168
- }
169
-
170
- /**
171
- * Releases the Range from use to improve performance.
172
- */
173
- public detach(): void {}
174
-
175
- /**
176
- * Returns the text of the Range.
177
- *
178
- * @returns Text.
179
- */
180
- public toString(): string {
181
- return '';
182
- }
183
-
184
- /**
185
- * Returns -1, 0, or 1 indicating whether the point occurs before, inside, or after the Range.
186
- *
187
- * @returns Number.
188
- */
189
- public comparePoint(): number {
190
- return 0;
191
- }
192
-
193
- /**
194
- * Returns a DocumentFragment created from a given string of code.
195
- *
196
- * @returns Document fragment.
197
- */
198
- public createContextualFragment(): DocumentFragment {
199
- return new DocumentFragment();
200
- }
201
-
202
- /**
203
- * Returns a DOMRect object which bounds the entire contents of the Range; this would be the union of all the rectangles returned by range.getClientRects().
204
- *
205
- * @returns DOM rect.
206
- */
207
- public getBoundingClientRect(): DOMRect {
208
- return new DOMRect();
209
- }
210
-
211
- /**
212
- * Returns a list of DOMRect objects that aggregates the results of Element.getClientRects() for all the elements in the Range.
213
- *
214
- * @returns DOM rect.
215
- */
216
- public getClientRects(): DOMRect {
217
- return new DOMRect();
218
- }
219
-
220
- /**
221
- * Returns a boolean indicating whether the given node intersects the Range.
222
- *
223
- * @returns "true" when intersecting.
224
- */
225
- public intersectsNode(): boolean {
226
- return false;
227
- }
228
-
229
- /**
230
- * Returns a boolean indicating whether the given point is in the Range.
231
- *
232
- * @returns "true" when in range.
233
- */
234
- public isPointInRange(): boolean {
235
- return false;
236
- }
237
- }
@@ -1,95 +0,0 @@
1
- import DOMException from '../exception/DOMException';
2
- import DOMExceptionNameEnum from '../exception/DOMExceptionNameEnum';
3
-
4
- const base64list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
5
-
6
- /**
7
- * Btoa.
8
- *
9
- * Reference:
10
- * https://developer.mozilla.org/en-US/docs/Web/API/btoa.
11
- *
12
- * @param data
13
- */
14
- export const btoa = (data: unknown): string => {
15
- const str = (<string>data).toString();
16
- if (/[^\u0000-\u00ff]/.test(str)) {
17
- throw new DOMException(
18
- "Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.",
19
- DOMExceptionNameEnum.invalidCharacterError
20
- );
21
- }
22
-
23
- let t = '';
24
- let p = -6;
25
- let a = 0;
26
- let i = 0;
27
- let v = 0;
28
- let c;
29
- while (i < str.length || p > -6) {
30
- if (p < 0) {
31
- if (i < str.length) {
32
- c = str.charCodeAt(i++);
33
- v += 8;
34
- } else {
35
- c = 0;
36
- }
37
- a = ((a & 255) << 8) | (c & 255);
38
- p += 8;
39
- }
40
- t += base64list.charAt(v > 0 ? (a >> p) & 63 : 64);
41
- p -= 6;
42
- v -= 6;
43
- }
44
- return t;
45
- };
46
-
47
- /**
48
- * Atob.
49
- *
50
- * Reference:
51
- * https://infra.spec.whatwg.org/#forgiving-base64-encode.
52
- * Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
53
- *
54
- * @param data
55
- */
56
- export const atob = (data: unknown): string => {
57
- const str = (<string>data).toString();
58
-
59
- if (/[^\u0000-\u00ff]/.test(str)) {
60
- throw new DOMException(
61
- "Failed to execute 'atob' on 'Window': The string to be decoded contains characters outside of the Latin1 range.",
62
- DOMExceptionNameEnum.invalidCharacterError
63
- );
64
- }
65
-
66
- if (/[^A-Za-z\d+/=]/.test(str) || str.length % 4 == 1) {
67
- throw new DOMException(
68
- "Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.",
69
- DOMExceptionNameEnum.invalidCharacterError
70
- );
71
- }
72
-
73
- let t = '';
74
- let p = -8;
75
- let a = 0;
76
- let c;
77
- let d;
78
- for (let i = 0; i < str.length; i++) {
79
- if ((c = base64list.indexOf(str.charAt(i))) < 0) {
80
- continue;
81
- }
82
- a = (a << 6) | (c & 63);
83
- if ((p += 6) >= 0) {
84
- d = (a >> p) & 255;
85
- if (c !== 64) {
86
- t += String.fromCharCode(d);
87
- }
88
- a &= 63;
89
- p -= 8;
90
- }
91
- }
92
- return t;
93
- };
94
-
95
- exports = { btoa: btoa, atob: atob };