@xiuchang-midscene/shared 2.0.2 → 2.0.3

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.
Files changed (166) hide show
  1. package/dist/es/oss/index.mjs +1 -1
  2. package/dist/lib/oss/index.js +1 -1
  3. package/package.json +1 -1
  4. package/src/oss/index.ts +1 -1
  5. package/dist/es/baseDB.mjs.bak +0 -109
  6. package/dist/es/build/copy-static.mjs.bak +0 -31
  7. package/dist/es/build/rspack-config.mjs.bak +0 -4
  8. package/dist/es/cli/cli-runner.mjs.bak +0 -140
  9. package/dist/es/cli/index.mjs.bak +0 -2
  10. package/dist/es/common.mjs.bak +0 -37
  11. package/dist/es/constants/example-code.mjs.bak +0 -223
  12. package/dist/es/constants/index.mjs.bak +0 -23
  13. package/dist/es/env/basic.mjs.bak +0 -6
  14. package/dist/es/env/constants.mjs.bak +0 -70
  15. package/dist/es/env/global-config-manager.mjs.bak +0 -94
  16. package/dist/es/env/helper.mjs.bak +0 -43
  17. package/dist/es/env/index.mjs.bak +0 -5
  18. package/dist/es/env/init-debug.mjs.bak +0 -18
  19. package/dist/es/env/model-config-manager.mjs.bak +0 -79
  20. package/dist/es/env/parse-model-config.mjs.bak +0 -132
  21. package/dist/es/env/types.mjs.bak +0 -220
  22. package/dist/es/env/utils.mjs.bak +0 -26
  23. package/dist/es/extractor/constants.mjs.bak +0 -2
  24. package/dist/es/extractor/debug.mjs.bak +0 -6
  25. package/dist/es/extractor/dom-util.mjs.bak +0 -92
  26. package/dist/es/extractor/index.mjs.bak +0 -5
  27. package/dist/es/extractor/locator.mjs.bak +0 -250
  28. package/dist/es/extractor/tree.mjs.bak +0 -78
  29. package/dist/es/extractor/util.mjs.bak +0 -245
  30. package/dist/es/extractor/web-extractor.mjs.bak +0 -303
  31. package/dist/es/img/box-select.mjs.bak +0 -824
  32. package/dist/es/img/canvas-fallback.mjs.bak +0 -238
  33. package/dist/es/img/get-photon.mjs.bak +0 -45
  34. package/dist/es/img/get-sharp.mjs.bak +0 -11
  35. package/dist/es/img/index.mjs.bak +0 -4
  36. package/dist/es/img/info.mjs.bak +0 -29
  37. package/dist/es/img/transform.mjs.bak +0 -295
  38. package/dist/es/index.mjs.bak +0 -4
  39. package/dist/es/logger.mjs.bak +0 -64
  40. package/dist/es/mcp/base-server.mjs.bak +0 -281
  41. package/dist/es/mcp/base-tools.mjs.bak +0 -91
  42. package/dist/es/mcp/chrome-path.mjs.bak +0 -35
  43. package/dist/es/mcp/index.mjs.bak +0 -7
  44. package/dist/es/mcp/inject-report-html-plugin.mjs.bak +0 -53
  45. package/dist/es/mcp/launcher-helper.mjs.bak +0 -52
  46. package/dist/es/mcp/tool-generator.mjs.bak +0 -297
  47. package/dist/es/mcp/types.mjs.bak +0 -3
  48. package/dist/es/node/fs.mjs.bak +0 -44
  49. package/dist/es/node/index.mjs.bak +0 -2
  50. package/dist/es/node/port.mjs.bak +0 -24
  51. package/dist/es/oss/demo.mjs.bak +0 -30
  52. package/dist/es/oss/index.mjs.bak +0 -90
  53. package/dist/es/polyfills/async-hooks.mjs.bak +0 -2
  54. package/dist/es/polyfills/index.mjs.bak +0 -1
  55. package/dist/es/types/index.mjs.bak +0 -3
  56. package/dist/es/us-keyboard-layout.mjs.bak +0 -1414
  57. package/dist/es/utils.mjs.bak +0 -72
  58. package/dist/es/zod-schema-utils.mjs.bak +0 -54
  59. package/dist/lib/baseDB.js.bak +0 -149
  60. package/dist/lib/build/copy-static.js.bak +0 -79
  61. package/dist/lib/build/rspack-config.js.bak +0 -38
  62. package/dist/lib/cli/cli-runner.js.bak +0 -196
  63. package/dist/lib/cli/index.js.bak +0 -48
  64. package/dist/lib/common.js.bak +0 -93
  65. package/dist/lib/constants/example-code.js.bak +0 -260
  66. package/dist/lib/constants/index.js.bak +0 -96
  67. package/dist/lib/env/basic.js.bak +0 -40
  68. package/dist/lib/env/constants.js.bak +0 -113
  69. package/dist/lib/env/global-config-manager.js.bak +0 -128
  70. package/dist/lib/env/helper.js.bak +0 -80
  71. package/dist/lib/env/index.js.bak +0 -90
  72. package/dist/lib/env/init-debug.js.bak +0 -52
  73. package/dist/lib/env/model-config-manager.js.bak +0 -113
  74. package/dist/lib/env/parse-model-config.js.bak +0 -178
  75. package/dist/lib/env/types.js.bak +0 -554
  76. package/dist/lib/env/utils.js.bak +0 -72
  77. package/dist/lib/extractor/constants.js.bak +0 -42
  78. package/dist/lib/extractor/debug.js.bak +0 -12
  79. package/dist/lib/extractor/dom-util.js.bak +0 -153
  80. package/dist/lib/extractor/index.js.bak +0 -81
  81. package/dist/lib/extractor/locator.js.bak +0 -296
  82. package/dist/lib/extractor/tree.js.bak +0 -124
  83. package/dist/lib/extractor/util.js.bak +0 -336
  84. package/dist/lib/extractor/web-extractor.js.bak +0 -349
  85. package/dist/lib/img/box-select.js.bak +0 -875
  86. package/dist/lib/img/canvas-fallback.js.bak +0 -305
  87. package/dist/lib/img/get-photon.js.bak +0 -82
  88. package/dist/lib/img/get-sharp.js.bak +0 -45
  89. package/dist/lib/img/index.js.bak +0 -95
  90. package/dist/lib/img/info.js.bak +0 -83
  91. package/dist/lib/img/transform.js.bak +0 -387
  92. package/dist/lib/index.js.bak +0 -47
  93. package/dist/lib/logger.js.bak +0 -114
  94. package/dist/lib/mcp/base-server.js.bak +0 -331
  95. package/dist/lib/mcp/base-tools.js.bak +0 -125
  96. package/dist/lib/mcp/chrome-path.js.bak +0 -72
  97. package/dist/lib/mcp/index.js.bak +0 -100
  98. package/dist/lib/mcp/inject-report-html-plugin.js.bak +0 -98
  99. package/dist/lib/mcp/launcher-helper.js.bak +0 -86
  100. package/dist/lib/mcp/tool-generator.js.bak +0 -334
  101. package/dist/lib/mcp/types.js.bak +0 -40
  102. package/dist/lib/node/fs.js.bak +0 -97
  103. package/dist/lib/node/index.js.bak +0 -65
  104. package/dist/lib/node/port.js.bak +0 -61
  105. package/dist/lib/oss/demo.js.bak +0 -36
  106. package/dist/lib/oss/index.js.bak +0 -138
  107. package/dist/lib/polyfills/async-hooks.js.bak +0 -36
  108. package/dist/lib/polyfills/index.js.bak +0 -58
  109. package/dist/lib/types/index.js.bak +0 -37
  110. package/dist/lib/us-keyboard-layout.js.bak +0 -1457
  111. package/dist/lib/utils.js.bak +0 -148
  112. package/dist/lib/zod-schema-utils.js.bak +0 -97
  113. package/dist/types/baseDB.d.ts.bak +0 -25
  114. package/dist/types/build/copy-static.d.ts.bak +0 -31
  115. package/dist/types/build/rspack-config.d.ts.bak +0 -8
  116. package/dist/types/cli/cli-runner.d.ts.bak +0 -14
  117. package/dist/types/cli/index.d.ts.bak +0 -2
  118. package/dist/types/common.d.ts.bak +0 -12
  119. package/dist/types/constants/example-code.d.ts.bak +0 -2
  120. package/dist/types/constants/index.d.ts.bak +0 -21
  121. package/dist/types/env/basic.d.ts.bak +0 -6
  122. package/dist/types/env/constants.d.ts.bak +0 -40
  123. package/dist/types/env/global-config-manager.d.ts.bak +0 -32
  124. package/dist/types/env/helper.d.ts.bak +0 -4
  125. package/dist/types/env/index.d.ts.bak +0 -4
  126. package/dist/types/env/init-debug.d.ts.bak +0 -1
  127. package/dist/types/env/model-config-manager.d.ts.bak +0 -25
  128. package/dist/types/env/parse-model-config.d.ts.bak +0 -31
  129. package/dist/types/env/types.d.ts.bak +0 -318
  130. package/dist/types/env/utils.d.ts.bak +0 -38
  131. package/dist/types/extractor/constants.d.ts.bak +0 -1
  132. package/dist/types/extractor/debug.d.ts.bak +0 -1
  133. package/dist/types/extractor/dom-util.d.ts.bak +0 -56
  134. package/dist/types/extractor/index.d.ts.bak +0 -32
  135. package/dist/types/extractor/locator.d.ts.bak +0 -9
  136. package/dist/types/extractor/tree.d.ts.bak +0 -6
  137. package/dist/types/extractor/util.d.ts.bak +0 -47
  138. package/dist/types/extractor/web-extractor.d.ts.bak +0 -19
  139. package/dist/types/img/box-select.d.ts.bak +0 -26
  140. package/dist/types/img/canvas-fallback.d.ts.bak +0 -105
  141. package/dist/types/img/get-photon.d.ts.bak +0 -19
  142. package/dist/types/img/get-sharp.d.ts.bak +0 -3
  143. package/dist/types/img/index.d.ts.bak +0 -3
  144. package/dist/types/img/info.d.ts.bak +0 -29
  145. package/dist/types/img/transform.d.ts.bak +0 -107
  146. package/dist/types/index.d.ts.bak +0 -4
  147. package/dist/types/logger.d.ts.bak +0 -5
  148. package/dist/types/mcp/base-server.d.ts.bak +0 -93
  149. package/dist/types/mcp/base-tools.d.ts.bak +0 -79
  150. package/dist/types/mcp/chrome-path.d.ts.bak +0 -2
  151. package/dist/types/mcp/index.d.ts.bak +0 -7
  152. package/dist/types/mcp/inject-report-html-plugin.d.ts.bak +0 -18
  153. package/dist/types/mcp/launcher-helper.d.ts.bak +0 -94
  154. package/dist/types/mcp/tool-generator.d.ts.bak +0 -10
  155. package/dist/types/mcp/types.d.ts.bak +0 -103
  156. package/dist/types/node/fs.d.ts.bak +0 -15
  157. package/dist/types/node/index.d.ts.bak +0 -2
  158. package/dist/types/node/port.d.ts.bak +0 -8
  159. package/dist/types/oss/demo.d.ts.bak +0 -1
  160. package/dist/types/oss/index.d.ts.bak +0 -34
  161. package/dist/types/polyfills/async-hooks.d.ts.bak +0 -6
  162. package/dist/types/polyfills/index.d.ts.bak +0 -4
  163. package/dist/types/types/index.d.ts.bak +0 -34
  164. package/dist/types/us-keyboard-layout.d.ts.bak +0 -32
  165. package/dist/types/utils.d.ts.bak +0 -34
  166. package/dist/types/zod-schema-utils.d.ts.bak +0 -23
@@ -1,336 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- setDebugMode: ()=>setDebugMode,
28
- getNodeAttributes: ()=>getNodeAttributes,
29
- getNodeFromCacheList: ()=>getNodeFromCacheList,
30
- hasOverflowY: ()=>hasOverflowY,
31
- setExtractTextWithPositionOnWindow: ()=>setExtractTextWithPositionOnWindow,
32
- setGenerateHashOnWindow: ()=>setGenerateHashOnWindow,
33
- getTopDocument: ()=>getTopDocument,
34
- overlappedRect: ()=>overlappedRect,
35
- isElementPartiallyInViewport: ()=>isElementPartiallyInViewport,
36
- getPseudoElementContent: ()=>getPseudoElementContent,
37
- midsceneGenerateHash: ()=>midsceneGenerateHash,
38
- getDebugMode: ()=>getDebugMode,
39
- logger: ()=>logger,
40
- elementRect: ()=>elementRect,
41
- setMidsceneVisibleRectOnWindow: ()=>setMidsceneVisibleRectOnWindow,
42
- getRect: ()=>getRect,
43
- generateId: ()=>generateId,
44
- setNodeToCacheList: ()=>setNodeToCacheList,
45
- validTextNodeContent: ()=>validTextNodeContent,
46
- setNodeHashCacheListOnWindow: ()=>setNodeHashCacheListOnWindow
47
- });
48
- const external_utils_js_namespaceObject = require("../utils.js");
49
- const external_web_extractor_js_namespaceObject = require("./web-extractor.js");
50
- const MAX_VALUE_LENGTH = 300;
51
- let debugMode = false;
52
- function setDebugMode(mode) {
53
- debugMode = mode;
54
- }
55
- function getDebugMode() {
56
- return debugMode;
57
- }
58
- function logger(..._msg) {
59
- if (!debugMode) return;
60
- console.log(..._msg);
61
- }
62
- function isElementPartiallyInViewport(rect, currentWindow, currentDocument, visibleAreaRatio = 2 / 3) {
63
- const elementHeight = rect.height;
64
- const elementWidth = rect.width;
65
- const viewportRect = {
66
- left: 0,
67
- top: 0,
68
- width: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,
69
- height: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,
70
- right: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,
71
- bottom: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,
72
- x: 0,
73
- y: 0,
74
- zoom: 1
75
- };
76
- const overlapRect = overlappedRect(rect, viewportRect);
77
- if (!overlapRect) return false;
78
- const visibleArea = overlapRect.width * overlapRect.height;
79
- const totalArea = elementHeight * elementWidth;
80
- return visibleArea / totalArea >= visibleAreaRatio;
81
- }
82
- function getPseudoElementContent(element, currentWindow) {
83
- if (!(element instanceof currentWindow.HTMLElement)) return {
84
- before: '',
85
- after: ''
86
- };
87
- const beforeContent = currentWindow.getComputedStyle(element, '::before').getPropertyValue('content');
88
- const afterContent = currentWindow.getComputedStyle(element, '::after').getPropertyValue('content');
89
- return {
90
- before: 'none' === beforeContent ? '' : beforeContent.replace(/"/g, ''),
91
- after: 'none' === afterContent ? '' : afterContent.replace(/"/g, '')
92
- };
93
- }
94
- function hasOverflowY(element, currentWindow) {
95
- const style = currentWindow.getComputedStyle(element);
96
- return 'scroll' === style.overflowY || 'auto' === style.overflowY || 'hidden' === style.overflowY;
97
- }
98
- function overlappedRect(rect1, rect2) {
99
- const left = Math.max(rect1.left, rect2.left);
100
- const top = Math.max(rect1.top, rect2.top);
101
- const right = Math.min(rect1.right, rect2.right);
102
- const bottom = Math.min(rect1.bottom, rect2.bottom);
103
- if (left < right && top < bottom) return {
104
- left,
105
- top,
106
- right,
107
- bottom,
108
- width: right - left,
109
- height: bottom - top,
110
- x: left,
111
- y: top,
112
- zoom: 1
113
- };
114
- return null;
115
- }
116
- function getRect(el, baseZoom, currentWindow) {
117
- let originalRect;
118
- let newZoom = 1;
119
- const hasGetBoundingClientRect = el instanceof Element;
120
- if (hasGetBoundingClientRect) {
121
- originalRect = el.getBoundingClientRect();
122
- if (el instanceof currentWindow.HTMLElement && !('currentCSSZoom' in el)) newZoom = Number.parseFloat(currentWindow.getComputedStyle(el).zoom) || 1;
123
- } else {
124
- const range = currentWindow.document.createRange();
125
- range.selectNodeContents(el);
126
- originalRect = range.getBoundingClientRect();
127
- }
128
- const zoom = newZoom * baseZoom;
129
- return {
130
- width: originalRect.width * zoom,
131
- height: originalRect.height * zoom,
132
- left: originalRect.left * zoom,
133
- top: originalRect.top * zoom,
134
- right: originalRect.right * zoom,
135
- bottom: originalRect.bottom * zoom,
136
- x: originalRect.x * zoom,
137
- y: originalRect.y * zoom,
138
- zoom
139
- };
140
- }
141
- const isElementCovered = (el, rect, currentWindow)=>{
142
- const x = rect.left + rect.width / 2;
143
- const y = rect.top + rect.height / 2;
144
- const topElement = currentWindow.document.elementFromPoint(x, y);
145
- if (!topElement) return false;
146
- if (topElement === el) return false;
147
- if (el?.contains(topElement)) return false;
148
- if (topElement?.contains(el)) return false;
149
- const rectOfTopElement = getRect(topElement, 1, currentWindow);
150
- const overlapRect = overlappedRect(rect, rectOfTopElement);
151
- if (!overlapRect) return false;
152
- logger(el, 'Element is covered by another element', {
153
- topElement,
154
- el,
155
- rect,
156
- x,
157
- y
158
- });
159
- return true;
160
- };
161
- function elementRect(el, currentWindow, currentDocument, baseZoom = 1) {
162
- if (!el) {
163
- logger(el, 'Element is not in the DOM hierarchy');
164
- return false;
165
- }
166
- if (!(el instanceof currentWindow.HTMLElement) && el.nodeType !== Node.TEXT_NODE && 'svg' !== el.nodeName.toLowerCase()) {
167
- logger(el, 'Element is not in the DOM hierarchy');
168
- return false;
169
- }
170
- if (el instanceof currentWindow.HTMLElement) {
171
- const style = currentWindow.getComputedStyle(el);
172
- if ('none' === style.display || 'hidden' === style.visibility || '0' === style.opacity && 'INPUT' !== el.tagName) {
173
- logger(el, 'Element is hidden');
174
- return false;
175
- }
176
- }
177
- const rect = getRect(el, baseZoom, currentWindow);
178
- if (0 === rect.width && 0 === rect.height) {
179
- logger(el, 'Element has no size');
180
- return false;
181
- }
182
- if (1 === baseZoom && isElementCovered(el, rect, currentWindow)) return false;
183
- const isVisible = isElementPartiallyInViewport(rect, currentWindow, currentDocument);
184
- let parent = el;
185
- const parentUntilNonStatic = (currentNode)=>{
186
- let parent = currentNode?.parentElement;
187
- while(parent){
188
- const style = currentWindow.getComputedStyle(parent);
189
- if ('static' !== style.position) return parent;
190
- parent = parent.parentElement;
191
- }
192
- return null;
193
- };
194
- while(parent && parent !== currentDocument.body){
195
- if (!(parent instanceof currentWindow.HTMLElement)) {
196
- parent = parent.parentElement;
197
- continue;
198
- }
199
- const parentStyle = currentWindow.getComputedStyle(parent);
200
- if ('hidden' === parentStyle.overflow) {
201
- const parentRect = getRect(parent, 1, currentWindow);
202
- const tolerance = 10;
203
- if (rect.right < parentRect.left - tolerance || rect.left > parentRect.right + tolerance || rect.bottom < parentRect.top - tolerance || rect.top > parentRect.bottom + tolerance) {
204
- logger(el, 'element is partially or totally hidden by an ancestor', {
205
- rect,
206
- parentRect
207
- });
208
- return false;
209
- }
210
- }
211
- if ('fixed' === parentStyle.position || 'sticky' === parentStyle.position) break;
212
- parent = 'absolute' === parentStyle.position ? parentUntilNonStatic(parent) : parent.parentElement;
213
- }
214
- return {
215
- left: Math.round(rect.left),
216
- top: Math.round(rect.top),
217
- width: Math.round(rect.width),
218
- height: Math.round(rect.height),
219
- zoom: rect.zoom,
220
- isVisible
221
- };
222
- }
223
- function validTextNodeContent(node) {
224
- if (!node) return false;
225
- if (node.nodeType !== Node.ELEMENT_NODE && node.nodeType !== Node.TEXT_NODE && '#text' !== node.nodeName) return false;
226
- const content = node.textContent || node.innerText;
227
- if (content && !/^\s*$/.test(content)) return content.trim();
228
- return false;
229
- }
230
- function getNodeAttributes(node, currentWindow) {
231
- if (!node || !(node instanceof currentWindow.HTMLElement) || !node.attributes) return {};
232
- const attributesList = Array.from(node.attributes).map((attr)=>{
233
- if ('class' === attr.name) return [
234
- attr.name,
235
- `.${attr.value.split(' ').join('.')}`
236
- ];
237
- let value = attr.value;
238
- if (value.startsWith('data:image')) value = 'image';
239
- if (value.length > MAX_VALUE_LENGTH) value = `${value.slice(0, MAX_VALUE_LENGTH)}...`;
240
- return [
241
- attr.name,
242
- value
243
- ];
244
- });
245
- return Object.fromEntries(attributesList);
246
- }
247
- const NODE_CACHE_MAX_SIZE = 2000;
248
- function setNodeHashCacheListOnWindow() {
249
- if ('undefined' != typeof window) window.midsceneNodeHashCache = new Map();
250
- }
251
- function getNodeCacheMap() {
252
- if ('undefined' == typeof window) return;
253
- return window.midsceneNodeHashCache;
254
- }
255
- function setNodeToCacheList(node, id) {
256
- const cache = getNodeCacheMap();
257
- if (!cache) return;
258
- if (cache.has(id)) return;
259
- if (cache.size >= NODE_CACHE_MAX_SIZE) {
260
- const firstKey = cache.keys().next().value;
261
- if (void 0 !== firstKey) cache.delete(firstKey);
262
- }
263
- cache.set(id, node);
264
- }
265
- function getNodeFromCacheList(id) {
266
- return getNodeCacheMap()?.get(id);
267
- }
268
- function midsceneGenerateHash(node, content, rect) {
269
- const slicedHash = (0, external_utils_js_namespaceObject.generateHashId)(rect, content);
270
- if (node) {
271
- if ('undefined' != typeof window && !getNodeCacheMap()) setNodeHashCacheListOnWindow();
272
- setNodeToCacheList(node, slicedHash);
273
- }
274
- return slicedHash;
275
- }
276
- function generateId(numberId) {
277
- return `${numberId}`;
278
- }
279
- function setGenerateHashOnWindow() {
280
- if ('undefined' != typeof window) window.midsceneGenerateHash = midsceneGenerateHash;
281
- }
282
- function setMidsceneVisibleRectOnWindow() {
283
- if ('undefined' != typeof window) window.midsceneVisibleRect = elementRect;
284
- }
285
- function setExtractTextWithPositionOnWindow() {
286
- if ('undefined' != typeof window) window.extractTextWithPosition = external_web_extractor_js_namespaceObject.extractTextWithPosition;
287
- }
288
- function getTopDocument() {
289
- const container = document.body || document;
290
- return container;
291
- }
292
- exports.elementRect = __webpack_exports__.elementRect;
293
- exports.generateId = __webpack_exports__.generateId;
294
- exports.getDebugMode = __webpack_exports__.getDebugMode;
295
- exports.getNodeAttributes = __webpack_exports__.getNodeAttributes;
296
- exports.getNodeFromCacheList = __webpack_exports__.getNodeFromCacheList;
297
- exports.getPseudoElementContent = __webpack_exports__.getPseudoElementContent;
298
- exports.getRect = __webpack_exports__.getRect;
299
- exports.getTopDocument = __webpack_exports__.getTopDocument;
300
- exports.hasOverflowY = __webpack_exports__.hasOverflowY;
301
- exports.isElementPartiallyInViewport = __webpack_exports__.isElementPartiallyInViewport;
302
- exports.logger = __webpack_exports__.logger;
303
- exports.midsceneGenerateHash = __webpack_exports__.midsceneGenerateHash;
304
- exports.overlappedRect = __webpack_exports__.overlappedRect;
305
- exports.setDebugMode = __webpack_exports__.setDebugMode;
306
- exports.setExtractTextWithPositionOnWindow = __webpack_exports__.setExtractTextWithPositionOnWindow;
307
- exports.setGenerateHashOnWindow = __webpack_exports__.setGenerateHashOnWindow;
308
- exports.setMidsceneVisibleRectOnWindow = __webpack_exports__.setMidsceneVisibleRectOnWindow;
309
- exports.setNodeHashCacheListOnWindow = __webpack_exports__.setNodeHashCacheListOnWindow;
310
- exports.setNodeToCacheList = __webpack_exports__.setNodeToCacheList;
311
- exports.validTextNodeContent = __webpack_exports__.validTextNodeContent;
312
- for(var __rspack_i in __webpack_exports__)if (-1 === [
313
- "elementRect",
314
- "generateId",
315
- "getDebugMode",
316
- "getNodeAttributes",
317
- "getNodeFromCacheList",
318
- "getPseudoElementContent",
319
- "getRect",
320
- "getTopDocument",
321
- "hasOverflowY",
322
- "isElementPartiallyInViewport",
323
- "logger",
324
- "midsceneGenerateHash",
325
- "overlappedRect",
326
- "setDebugMode",
327
- "setExtractTextWithPositionOnWindow",
328
- "setGenerateHashOnWindow",
329
- "setMidsceneVisibleRectOnWindow",
330
- "setNodeHashCacheListOnWindow",
331
- "setNodeToCacheList",
332
- "validTextNodeContent"
333
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
334
- Object.defineProperty(exports, '__esModule', {
335
- value: true
336
- });
@@ -1,349 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- mergeElementAndChildrenRects: ()=>mergeElementAndChildrenRects,
28
- extractTreeNode: ()=>extractTreeNode,
29
- extractTreeNodeAsString: ()=>extractTreeNodeAsString,
30
- collectElementInfo: ()=>collectElementInfo,
31
- extractTextWithPosition: ()=>extractTextWithPosition
32
- });
33
- const index_js_namespaceObject = require("../constants/index.js");
34
- const external_dom_util_js_namespaceObject = require("./dom-util.js");
35
- const external_tree_js_namespaceObject = require("./tree.js");
36
- const external_util_js_namespaceObject = require("./util.js");
37
- let indexId = 0;
38
- function tagNameOfNode(node) {
39
- let tagName = '';
40
- if (node instanceof HTMLElement) tagName = node.tagName?.toLowerCase();
41
- else {
42
- const parentElement = node.parentElement;
43
- if (parentElement && parentElement instanceof HTMLElement) tagName = parentElement.tagName?.toLowerCase();
44
- }
45
- return tagName ? `<${tagName}>` : '';
46
- }
47
- function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1, basePoint = {
48
- left: 0,
49
- top: 0
50
- }, isContainer = false) {
51
- const rect = (0, external_util_js_namespaceObject.elementRect)(node, currentWindow, currentDocument, baseZoom);
52
- if (!rect) return null;
53
- if (rect.width < index_js_namespaceObject.CONTAINER_MINI_WIDTH || rect.height < index_js_namespaceObject.CONTAINER_MINI_HEIGHT) return null;
54
- if (0 !== basePoint.left || 0 !== basePoint.top) {
55
- rect.left += basePoint.left;
56
- rect.top += basePoint.top;
57
- }
58
- if (rect.height >= window.innerHeight && rect.width >= window.innerWidth) return null;
59
- if ((0, external_dom_util_js_namespaceObject.isFormElement)(node)) {
60
- const attributes = (0, external_util_js_namespaceObject.getNodeAttributes)(node, currentWindow);
61
- let valueContent = attributes.value || attributes.placeholder || node.textContent || '';
62
- const nodeHashId = (0, external_util_js_namespaceObject.midsceneGenerateHash)(node, valueContent, rect);
63
- const tagName = node.tagName.toLowerCase();
64
- if ('select' === node.tagName.toLowerCase()) {
65
- const selectedOption = node.options[node.selectedIndex];
66
- valueContent = selectedOption?.textContent || '';
67
- }
68
- if (('input' === node.tagName.toLowerCase() || 'textarea' === node.tagName.toLowerCase()) && node.value) valueContent = node.value;
69
- const elementInfo = {
70
- id: nodeHashId,
71
- nodeHashId,
72
- nodeType: index_js_namespaceObject.NodeType.FORM_ITEM,
73
- indexId: indexId++,
74
- attributes: {
75
- ...attributes,
76
- htmlTagName: `<${tagName}>`,
77
- nodeType: index_js_namespaceObject.NodeType.FORM_ITEM
78
- },
79
- content: valueContent.trim(),
80
- rect,
81
- center: [
82
- Math.round(rect.left + rect.width / 2),
83
- Math.round(rect.top + rect.height / 2)
84
- ],
85
- zoom: rect.zoom,
86
- isVisible: rect.isVisible
87
- };
88
- return elementInfo;
89
- }
90
- if ((0, external_dom_util_js_namespaceObject.isButtonElement)(node)) {
91
- const rect = mergeElementAndChildrenRects(node, currentWindow, currentDocument, baseZoom);
92
- if (!rect) return null;
93
- const attributes = (0, external_util_js_namespaceObject.getNodeAttributes)(node, currentWindow);
94
- const pseudo = (0, external_util_js_namespaceObject.getPseudoElementContent)(node, currentWindow);
95
- const content = node.innerText || pseudo.before || pseudo.after || '';
96
- const nodeHashId = (0, external_util_js_namespaceObject.midsceneGenerateHash)(node, content, rect);
97
- const elementInfo = {
98
- id: nodeHashId,
99
- indexId: indexId++,
100
- nodeHashId,
101
- nodeType: index_js_namespaceObject.NodeType.BUTTON,
102
- attributes: {
103
- ...attributes,
104
- htmlTagName: tagNameOfNode(node),
105
- nodeType: index_js_namespaceObject.NodeType.BUTTON
106
- },
107
- content,
108
- rect,
109
- center: [
110
- Math.round(rect.left + rect.width / 2),
111
- Math.round(rect.top + rect.height / 2)
112
- ],
113
- zoom: rect.zoom,
114
- isVisible: rect.isVisible
115
- };
116
- return elementInfo;
117
- }
118
- if ((0, external_dom_util_js_namespaceObject.isImgElement)(node)) {
119
- const attributes = (0, external_util_js_namespaceObject.getNodeAttributes)(node, currentWindow);
120
- const nodeHashId = (0, external_util_js_namespaceObject.midsceneGenerateHash)(node, '', rect);
121
- const elementInfo = {
122
- id: nodeHashId,
123
- indexId: indexId++,
124
- nodeHashId,
125
- attributes: {
126
- ...attributes,
127
- ...node.nodeName?.toLowerCase() === 'svg' ? {
128
- svgContent: 'true'
129
- } : {},
130
- nodeType: index_js_namespaceObject.NodeType.IMG,
131
- htmlTagName: tagNameOfNode(node)
132
- },
133
- nodeType: index_js_namespaceObject.NodeType.IMG,
134
- content: '',
135
- rect,
136
- center: [
137
- Math.round(rect.left + rect.width / 2),
138
- Math.round(rect.top + rect.height / 2)
139
- ],
140
- zoom: rect.zoom,
141
- isVisible: rect.isVisible
142
- };
143
- return elementInfo;
144
- }
145
- if ((0, external_dom_util_js_namespaceObject.isTextElement)(node)) {
146
- const text = node.textContent?.trim().replace(/\n+/g, ' ');
147
- if (!text) return null;
148
- const attributes = (0, external_util_js_namespaceObject.getNodeAttributes)(node, currentWindow);
149
- const attributeKeys = Object.keys(attributes);
150
- if (!text.trim() && 0 === attributeKeys.length) return null;
151
- const nodeHashId = (0, external_util_js_namespaceObject.midsceneGenerateHash)(node, text, rect);
152
- const elementInfo = {
153
- id: nodeHashId,
154
- indexId: indexId++,
155
- nodeHashId,
156
- nodeType: index_js_namespaceObject.NodeType.TEXT,
157
- attributes: {
158
- ...attributes,
159
- nodeType: index_js_namespaceObject.NodeType.TEXT,
160
- htmlTagName: tagNameOfNode(node)
161
- },
162
- center: [
163
- Math.round(rect.left + rect.width / 2),
164
- Math.round(rect.top + rect.height / 2)
165
- ],
166
- content: text,
167
- rect,
168
- zoom: rect.zoom,
169
- isVisible: rect.isVisible
170
- };
171
- return elementInfo;
172
- }
173
- if ((0, external_dom_util_js_namespaceObject.isAElement)(node)) {
174
- const attributes = (0, external_util_js_namespaceObject.getNodeAttributes)(node, currentWindow);
175
- const pseudo = (0, external_util_js_namespaceObject.getPseudoElementContent)(node, currentWindow);
176
- const content = node.innerText || pseudo.before || pseudo.after || '';
177
- const nodeHashId = (0, external_util_js_namespaceObject.midsceneGenerateHash)(node, content, rect);
178
- const elementInfo = {
179
- id: nodeHashId,
180
- indexId: indexId++,
181
- nodeHashId,
182
- nodeType: index_js_namespaceObject.NodeType.A,
183
- attributes: {
184
- ...attributes,
185
- htmlTagName: tagNameOfNode(node),
186
- nodeType: index_js_namespaceObject.NodeType.A
187
- },
188
- content,
189
- rect,
190
- center: [
191
- Math.round(rect.left + rect.width / 2),
192
- Math.round(rect.top + rect.height / 2)
193
- ],
194
- zoom: rect.zoom,
195
- isVisible: rect.isVisible
196
- };
197
- return elementInfo;
198
- }
199
- if ((0, external_dom_util_js_namespaceObject.isContainerElement)(node) || isContainer) {
200
- const attributes = (0, external_util_js_namespaceObject.getNodeAttributes)(node, currentWindow);
201
- const nodeHashId = (0, external_util_js_namespaceObject.midsceneGenerateHash)(node, '', rect);
202
- const elementInfo = {
203
- id: nodeHashId,
204
- nodeHashId,
205
- indexId: indexId++,
206
- nodeType: index_js_namespaceObject.NodeType.CONTAINER,
207
- attributes: {
208
- ...attributes,
209
- nodeType: index_js_namespaceObject.NodeType.CONTAINER,
210
- htmlTagName: tagNameOfNode(node)
211
- },
212
- content: '',
213
- rect,
214
- center: [
215
- Math.round(rect.left + rect.width / 2),
216
- Math.round(rect.top + rect.height / 2)
217
- ],
218
- zoom: rect.zoom,
219
- isVisible: rect.isVisible
220
- };
221
- return elementInfo;
222
- }
223
- return null;
224
- }
225
- function extractTextWithPosition(initNode, debugMode = false) {
226
- const elementNode = extractTreeNode(initNode, debugMode);
227
- const elementInfoArray = [];
228
- function dfsTopChildren(node) {
229
- if (node.node) elementInfoArray.push(node.node);
230
- for(let i = 0; i < node.children.length; i++)dfsTopChildren(node.children[i]);
231
- }
232
- dfsTopChildren({
233
- children: elementNode.children,
234
- node: elementNode.node
235
- });
236
- return elementInfoArray;
237
- }
238
- function extractTreeNodeAsString(initNode, visibleOnly = false, debugMode = false) {
239
- const elementNode = extractTreeNode(initNode, debugMode);
240
- return (0, external_tree_js_namespaceObject.descriptionOfTree)(elementNode, void 0, false, visibleOnly);
241
- }
242
- function extractTreeNode(initNode, debugMode = false) {
243
- (0, external_util_js_namespaceObject.setDebugMode)(debugMode);
244
- indexId = 0;
245
- const topDocument = (0, external_util_js_namespaceObject.getTopDocument)();
246
- const startNode = initNode || topDocument;
247
- const topChildren = [];
248
- function dfs(node, currentWindow, currentDocument, baseZoom = 1, basePoint = {
249
- left: 0,
250
- top: 0
251
- }) {
252
- if (!node) return null;
253
- if (node.nodeType && 10 === node.nodeType) return null;
254
- const elementInfo = collectElementInfo(node, currentWindow, currentDocument, baseZoom, basePoint);
255
- if (node instanceof currentWindow.HTMLIFrameElement) {
256
- if (node.contentWindow && node.contentWindow) return null;
257
- }
258
- const nodeInfo = {
259
- node: elementInfo,
260
- children: []
261
- };
262
- if (elementInfo?.nodeType === index_js_namespaceObject.NodeType.BUTTON || elementInfo?.nodeType === index_js_namespaceObject.NodeType.IMG || elementInfo?.nodeType === index_js_namespaceObject.NodeType.TEXT || elementInfo?.nodeType === index_js_namespaceObject.NodeType.FORM_ITEM || elementInfo?.nodeType === index_js_namespaceObject.NodeType.CONTAINER) return nodeInfo;
263
- const rect = (0, external_util_js_namespaceObject.getRect)(node, baseZoom, currentWindow);
264
- for(let i = 0; i < node.childNodes.length; i++){
265
- (0, external_util_js_namespaceObject.logger)('will dfs', node.childNodes[i]);
266
- const childNodeInfo = dfs(node.childNodes[i], currentWindow, currentDocument, rect.zoom, basePoint);
267
- if (Array.isArray(childNodeInfo)) nodeInfo.children.push(...childNodeInfo);
268
- else if (childNodeInfo) nodeInfo.children.push(childNodeInfo);
269
- }
270
- if (null === nodeInfo.node) {
271
- if (0 === nodeInfo.children.length) return null;
272
- return nodeInfo.children;
273
- }
274
- return nodeInfo;
275
- }
276
- const rootNodeInfo = dfs(startNode, window, document, 1, {
277
- left: 0,
278
- top: 0
279
- });
280
- if (Array.isArray(rootNodeInfo)) topChildren.push(...rootNodeInfo);
281
- else if (rootNodeInfo) topChildren.push(rootNodeInfo);
282
- if (startNode === topDocument) {
283
- const iframes = document.querySelectorAll('iframe');
284
- for(let i = 0; i < iframes.length; i++){
285
- const iframe = iframes[i];
286
- if (iframe.contentDocument && iframe.contentWindow) {
287
- const iframeInfo = collectElementInfo(iframe, window, document, 1);
288
- if (iframeInfo) {
289
- const iframeChildren = dfs(iframe.contentDocument.body, iframe.contentWindow, iframe.contentDocument, 1, {
290
- left: iframeInfo.rect.left,
291
- top: iframeInfo.rect.top
292
- });
293
- if (Array.isArray(iframeChildren)) topChildren.push(...iframeChildren);
294
- else if (iframeChildren) topChildren.push(iframeChildren);
295
- }
296
- }
297
- }
298
- }
299
- return {
300
- node: null,
301
- children: topChildren
302
- };
303
- }
304
- function mergeElementAndChildrenRects(node, currentWindow, currentDocument, baseZoom = 1) {
305
- const selfRect = (0, external_util_js_namespaceObject.elementRect)(node, currentWindow, currentDocument, baseZoom);
306
- if (!selfRect) return null;
307
- let minLeft = selfRect.left;
308
- let minTop = selfRect.top;
309
- let maxRight = selfRect.left + selfRect.width;
310
- let maxBottom = selfRect.top + selfRect.height;
311
- function traverse(child) {
312
- for(let i = 0; i < child.childNodes.length; i++){
313
- const sub = child.childNodes[i];
314
- if (1 === sub.nodeType) {
315
- const rect = (0, external_util_js_namespaceObject.elementRect)(sub, currentWindow, currentDocument, baseZoom);
316
- if (rect) {
317
- minLeft = Math.min(minLeft, rect.left);
318
- minTop = Math.min(minTop, rect.top);
319
- maxRight = Math.max(maxRight, rect.left + rect.width);
320
- maxBottom = Math.max(maxBottom, rect.top + rect.height);
321
- }
322
- traverse(sub);
323
- }
324
- }
325
- }
326
- traverse(node);
327
- return {
328
- ...selfRect,
329
- left: minLeft,
330
- top: minTop,
331
- width: maxRight - minLeft,
332
- height: maxBottom - minTop
333
- };
334
- }
335
- exports.collectElementInfo = __webpack_exports__.collectElementInfo;
336
- exports.extractTextWithPosition = __webpack_exports__.extractTextWithPosition;
337
- exports.extractTreeNode = __webpack_exports__.extractTreeNode;
338
- exports.extractTreeNodeAsString = __webpack_exports__.extractTreeNodeAsString;
339
- exports.mergeElementAndChildrenRects = __webpack_exports__.mergeElementAndChildrenRects;
340
- for(var __rspack_i in __webpack_exports__)if (-1 === [
341
- "collectElementInfo",
342
- "extractTextWithPosition",
343
- "extractTreeNode",
344
- "extractTreeNodeAsString",
345
- "mergeElementAndChildrenRects"
346
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
347
- Object.defineProperty(exports, '__esModule', {
348
- value: true
349
- });