@godscene/shared 1.7.11
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.
- package/README.md +9 -0
- package/dist/es/baseDB.mjs +109 -0
- package/dist/es/cli/cli-args.mjs +95 -0
- package/dist/es/cli/cli-error.mjs +24 -0
- package/dist/es/cli/cli-runner.mjs +122 -0
- package/dist/es/cli/index.mjs +4 -0
- package/dist/es/common.mjs +37 -0
- package/dist/es/constants/example-code.mjs +227 -0
- package/dist/es/constants/index.mjs +124 -0
- package/dist/es/env/basic.mjs +6 -0
- package/dist/es/env/constants.mjs +110 -0
- package/dist/es/env/global-config-manager.mjs +94 -0
- package/dist/es/env/helper.mjs +43 -0
- package/dist/es/env/index.mjs +5 -0
- package/dist/es/env/init-debug.mjs +18 -0
- package/dist/es/env/model-config-manager.mjs +79 -0
- package/dist/es/env/parse-model-config.mjs +165 -0
- package/dist/es/env/types.mjs +232 -0
- package/dist/es/env/utils.mjs +18 -0
- package/dist/es/extractor/constants.mjs +2 -0
- package/dist/es/extractor/cs_postmessage.mjs +61 -0
- package/dist/es/extractor/customLocator.mjs +641 -0
- package/dist/es/extractor/debug.mjs +6 -0
- package/dist/es/extractor/dom-util.mjs +96 -0
- package/dist/es/extractor/index.mjs +5 -0
- package/dist/es/extractor/locator.mjs +250 -0
- package/dist/es/extractor/tree.mjs +78 -0
- package/dist/es/extractor/util.mjs +245 -0
- package/dist/es/extractor/web-extractor.mjs +393 -0
- package/dist/es/img/box-select.mjs +824 -0
- package/dist/es/img/canvas-fallback.mjs +238 -0
- package/dist/es/img/get-photon.mjs +45 -0
- package/dist/es/img/get-sharp.mjs +11 -0
- package/dist/es/img/index.mjs +4 -0
- package/dist/es/img/info.mjs +35 -0
- package/dist/es/img/transform.mjs +275 -0
- package/dist/es/index.mjs +2 -0
- package/dist/es/key-alias-utils.mjs +19 -0
- package/dist/es/logger.mjs +64 -0
- package/dist/es/mcp/base-server.mjs +282 -0
- package/dist/es/mcp/base-tools.mjs +159 -0
- package/dist/es/mcp/chrome-path.mjs +35 -0
- package/dist/es/mcp/cli-report-session.mjs +78 -0
- package/dist/es/mcp/error-formatter.mjs +19 -0
- package/dist/es/mcp/index.mjs +9 -0
- package/dist/es/mcp/init-arg-utils.mjs +38 -0
- package/dist/es/mcp/inject-report-html-plugin.mjs +53 -0
- package/dist/es/mcp/launcher-helper.mjs +52 -0
- package/dist/es/mcp/tool-generator.mjs +419 -0
- package/dist/es/mcp/types.mjs +3 -0
- package/dist/es/node/fs.mjs +44 -0
- package/dist/es/node/index.mjs +2 -0
- package/dist/es/node/port.mjs +24 -0
- package/dist/es/polyfills/async-hooks.mjs +2 -0
- package/dist/es/polyfills/index.mjs +1 -0
- package/dist/es/types/index.mjs +3 -0
- package/dist/es/us-keyboard-layout.mjs +1414 -0
- package/dist/es/us-keyboard-layout.mjs.LICENSE.txt +5 -0
- package/dist/es/utils.mjs +72 -0
- package/dist/es/zod-schema-utils.mjs +54 -0
- package/dist/lib/baseDB.js +149 -0
- package/dist/lib/cli/cli-args.js +138 -0
- package/dist/lib/cli/cli-error.js +61 -0
- package/dist/lib/cli/cli-runner.js +181 -0
- package/dist/lib/cli/index.js +53 -0
- package/dist/lib/common.js +93 -0
- package/dist/lib/constants/example-code.js +264 -0
- package/dist/lib/constants/index.js +221 -0
- package/dist/lib/env/basic.js +40 -0
- package/dist/lib/env/constants.js +153 -0
- package/dist/lib/env/global-config-manager.js +128 -0
- package/dist/lib/env/helper.js +80 -0
- package/dist/lib/env/index.js +90 -0
- package/dist/lib/env/init-debug.js +52 -0
- package/dist/lib/env/model-config-manager.js +113 -0
- package/dist/lib/env/parse-model-config.js +211 -0
- package/dist/lib/env/types.js +572 -0
- package/dist/lib/env/utils.js +61 -0
- package/dist/lib/extractor/constants.js +42 -0
- package/dist/lib/extractor/cs_postmessage.js +98 -0
- package/dist/lib/extractor/customLocator.js +693 -0
- package/dist/lib/extractor/debug.js +12 -0
- package/dist/lib/extractor/dom-util.js +157 -0
- package/dist/lib/extractor/index.js +87 -0
- package/dist/lib/extractor/locator.js +296 -0
- package/dist/lib/extractor/tree.js +124 -0
- package/dist/lib/extractor/util.js +336 -0
- package/dist/lib/extractor/web-extractor.js +442 -0
- package/dist/lib/img/box-select.js +875 -0
- package/dist/lib/img/canvas-fallback.js +305 -0
- package/dist/lib/img/get-photon.js +82 -0
- package/dist/lib/img/get-sharp.js +45 -0
- package/dist/lib/img/index.js +95 -0
- package/dist/lib/img/info.js +92 -0
- package/dist/lib/img/transform.js +364 -0
- package/dist/lib/index.js +36 -0
- package/dist/lib/key-alias-utils.js +62 -0
- package/dist/lib/logger.js +114 -0
- package/dist/lib/mcp/base-server.js +332 -0
- package/dist/lib/mcp/base-tools.js +193 -0
- package/dist/lib/mcp/chrome-path.js +72 -0
- package/dist/lib/mcp/cli-report-session.js +121 -0
- package/dist/lib/mcp/error-formatter.js +53 -0
- package/dist/lib/mcp/index.js +114 -0
- package/dist/lib/mcp/init-arg-utils.js +78 -0
- package/dist/lib/mcp/inject-report-html-plugin.js +98 -0
- package/dist/lib/mcp/launcher-helper.js +86 -0
- package/dist/lib/mcp/tool-generator.js +456 -0
- package/dist/lib/mcp/types.js +40 -0
- package/dist/lib/node/fs.js +97 -0
- package/dist/lib/node/index.js +65 -0
- package/dist/lib/node/port.js +61 -0
- package/dist/lib/polyfills/async-hooks.js +36 -0
- package/dist/lib/polyfills/index.js +58 -0
- package/dist/lib/types/index.js +37 -0
- package/dist/lib/us-keyboard-layout.js +1457 -0
- package/dist/lib/us-keyboard-layout.js.LICENSE.txt +5 -0
- package/dist/lib/utils.js +148 -0
- package/dist/lib/zod-schema-utils.js +97 -0
- package/dist/types/baseDB.d.ts +25 -0
- package/dist/types/cli/cli-args.d.ts +8 -0
- package/dist/types/cli/cli-error.d.ts +5 -0
- package/dist/types/cli/cli-runner.d.ts +19 -0
- package/dist/types/cli/index.d.ts +4 -0
- package/dist/types/common.d.ts +12 -0
- package/dist/types/constants/example-code.d.ts +2 -0
- package/dist/types/constants/index.d.ts +61 -0
- package/dist/types/env/basic.d.ts +6 -0
- package/dist/types/env/constants.d.ts +50 -0
- package/dist/types/env/global-config-manager.d.ts +32 -0
- package/dist/types/env/helper.d.ts +4 -0
- package/dist/types/env/index.d.ts +4 -0
- package/dist/types/env/init-debug.d.ts +1 -0
- package/dist/types/env/model-config-manager.d.ts +25 -0
- package/dist/types/env/parse-model-config.d.ts +31 -0
- package/dist/types/env/types.d.ts +339 -0
- package/dist/types/env/utils.d.ts +7 -0
- package/dist/types/extractor/constants.d.ts +1 -0
- package/dist/types/extractor/cs_postmessage.d.ts +2 -0
- package/dist/types/extractor/customLocator.d.ts +69 -0
- package/dist/types/extractor/debug.d.ts +1 -0
- package/dist/types/extractor/dom-util.d.ts +57 -0
- package/dist/types/extractor/index.d.ts +33 -0
- package/dist/types/extractor/locator.d.ts +9 -0
- package/dist/types/extractor/tree.d.ts +6 -0
- package/dist/types/extractor/util.d.ts +47 -0
- package/dist/types/extractor/web-extractor.d.ts +24 -0
- package/dist/types/img/box-select.d.ts +26 -0
- package/dist/types/img/canvas-fallback.d.ts +105 -0
- package/dist/types/img/get-photon.d.ts +19 -0
- package/dist/types/img/get-sharp.d.ts +3 -0
- package/dist/types/img/index.d.ts +3 -0
- package/dist/types/img/info.d.ts +34 -0
- package/dist/types/img/transform.d.ts +98 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/key-alias-utils.d.ts +9 -0
- package/dist/types/logger.d.ts +5 -0
- package/dist/types/mcp/base-server.d.ts +93 -0
- package/dist/types/mcp/base-tools.d.ts +148 -0
- package/dist/types/mcp/chrome-path.d.ts +2 -0
- package/dist/types/mcp/cli-report-session.d.ts +12 -0
- package/dist/types/mcp/error-formatter.d.ts +12 -0
- package/dist/types/mcp/index.d.ts +9 -0
- package/dist/types/mcp/init-arg-utils.d.ts +13 -0
- package/dist/types/mcp/inject-report-html-plugin.d.ts +18 -0
- package/dist/types/mcp/launcher-helper.d.ts +94 -0
- package/dist/types/mcp/tool-generator.d.ts +10 -0
- package/dist/types/mcp/types.d.ts +113 -0
- package/dist/types/node/fs.d.ts +15 -0
- package/dist/types/node/index.d.ts +2 -0
- package/dist/types/node/port.d.ts +8 -0
- package/dist/types/polyfills/async-hooks.d.ts +6 -0
- package/dist/types/polyfills/index.d.ts +4 -0
- package/dist/types/types/index.d.ts +36 -0
- package/dist/types/us-keyboard-layout.d.ts +32 -0
- package/dist/types/utils.d.ts +34 -0
- package/dist/types/zod-schema-utils.d.ts +23 -0
- package/package.json +125 -0
- package/src/baseDB.ts +158 -0
- package/src/cli/cli-args.ts +173 -0
- package/src/cli/cli-error.ts +24 -0
- package/src/cli/cli-runner.ts +230 -0
- package/src/cli/index.ts +4 -0
- package/src/common.ts +67 -0
- package/src/constants/example-code.ts +227 -0
- package/src/constants/index.ts +139 -0
- package/src/env/basic.ts +12 -0
- package/src/env/constants.ts +303 -0
- package/src/env/global-config-manager.ts +191 -0
- package/src/env/helper.ts +58 -0
- package/src/env/index.ts +4 -0
- package/src/env/init-debug.ts +34 -0
- package/src/env/model-config-manager.ts +149 -0
- package/src/env/parse-model-config.ts +357 -0
- package/src/env/types.ts +583 -0
- package/src/env/utils.ts +39 -0
- package/src/extractor/constants.ts +5 -0
- package/src/extractor/cs_postmessage.ts +136 -0
- package/src/extractor/customLocator.ts +1245 -0
- package/src/extractor/debug.ts +10 -0
- package/src/extractor/dom-util.ts +231 -0
- package/src/extractor/index.ts +50 -0
- package/src/extractor/locator.ts +469 -0
- package/src/extractor/tree.ts +179 -0
- package/src/extractor/util.ts +482 -0
- package/src/extractor/web-extractor.ts +617 -0
- package/src/img/box-select.ts +588 -0
- package/src/img/canvas-fallback.ts +393 -0
- package/src/img/get-photon.ts +108 -0
- package/src/img/get-sharp.ts +18 -0
- package/src/img/index.ts +27 -0
- package/src/img/info.ts +102 -0
- package/src/img/transform.ts +553 -0
- package/src/index.ts +1 -0
- package/src/key-alias-utils.ts +23 -0
- package/src/logger.ts +96 -0
- package/src/mcp/base-server.ts +500 -0
- package/src/mcp/base-tools.ts +391 -0
- package/src/mcp/chrome-path.ts +48 -0
- package/src/mcp/cli-report-session.ts +130 -0
- package/src/mcp/error-formatter.ts +52 -0
- package/src/mcp/index.ts +9 -0
- package/src/mcp/init-arg-utils.ts +105 -0
- package/src/mcp/inject-report-html-plugin.ts +119 -0
- package/src/mcp/launcher-helper.ts +200 -0
- package/src/mcp/tool-generator.ts +658 -0
- package/src/mcp/types.ts +131 -0
- package/src/node/fs.ts +84 -0
- package/src/node/index.ts +2 -0
- package/src/node/port.ts +37 -0
- package/src/polyfills/async-hooks.ts +6 -0
- package/src/polyfills/index.ts +4 -0
- package/src/types/index.ts +54 -0
- package/src/us-keyboard-layout.ts +723 -0
- package/src/utils.ts +149 -0
- package/src/zod-schema-utils.ts +133 -0
|
@@ -0,0 +1,336 @@
|
|
|
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 ("u" > 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 ("u" > typeof window) window.midsceneNodeHashCache = new Map();
|
|
250
|
+
}
|
|
251
|
+
function getNodeCacheMap() {
|
|
252
|
+
if ("u" < 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 ("u" > 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 ("u" > typeof window) window.midsceneGenerateHash = midsceneGenerateHash;
|
|
281
|
+
}
|
|
282
|
+
function setMidsceneVisibleRectOnWindow() {
|
|
283
|
+
if ("u" > typeof window) window.midsceneVisibleRect = elementRect;
|
|
284
|
+
}
|
|
285
|
+
function setExtractTextWithPositionOnWindow() {
|
|
286
|
+
if ("u" > 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
|
+
});
|