@treelocator/runtime 0.1.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.
- package/.eslintrc +3 -0
- package/.turbo/turbo-build.log +30 -0
- package/.turbo/turbo-test.log +18 -0
- package/.turbo/turbo-ts.log +4 -0
- package/LICENSE +22 -0
- package/babel.config.js +14 -0
- package/dist/_generated_styles.d.ts +2 -0
- package/dist/_generated_styles.js +1734 -0
- package/dist/_generated_tree_icon.d.ts +2 -0
- package/dist/_generated_tree_icon.js +2 -0
- package/dist/adapters/HtmlElementTreeNode.d.ts +16 -0
- package/dist/adapters/HtmlElementTreeNode.js +43 -0
- package/dist/adapters/adapterApi.d.ts +30 -0
- package/dist/adapters/adapterApi.js +1 -0
- package/dist/adapters/createTreeNode.d.ts +2 -0
- package/dist/adapters/createTreeNode.js +17 -0
- package/dist/adapters/getElementInfo.d.ts +2 -0
- package/dist/adapters/getElementInfo.js +19 -0
- package/dist/adapters/getParentsPath.d.ts +2 -0
- package/dist/adapters/getParentsPath.js +35 -0
- package/dist/adapters/getTree.d.ts +1 -0
- package/dist/adapters/getTree.js +35 -0
- package/dist/adapters/goUpByTheTree.d.ts +7 -0
- package/dist/adapters/goUpByTheTree.js +22 -0
- package/dist/adapters/jsx/getExpressionData.d.ts +2 -0
- package/dist/adapters/jsx/getExpressionData.js +44 -0
- package/dist/adapters/jsx/getJSXComponentBoundingBox.d.ts +5 -0
- package/dist/adapters/jsx/getJSXComponentBoundingBox.js +46 -0
- package/dist/adapters/jsx/jsxAdapter.d.ts +11 -0
- package/dist/adapters/jsx/jsxAdapter.js +208 -0
- package/dist/adapters/jsx/runtimeStore.d.ts +10 -0
- package/dist/adapters/jsx/runtimeStore.js +87 -0
- package/dist/adapters/react/fiberToSimple.d.ts +3 -0
- package/dist/adapters/react/fiberToSimple.js +55 -0
- package/dist/adapters/react/findDebugSource.d.ts +5 -0
- package/dist/adapters/react/findDebugSource.js +13 -0
- package/dist/adapters/react/findFiberByHtmlElement.d.ts +2 -0
- package/dist/adapters/react/findFiberByHtmlElement.js +22 -0
- package/dist/adapters/react/gatherFiberRoots.d.ts +2 -0
- package/dist/adapters/react/gatherFiberRoots.js +29 -0
- package/dist/adapters/react/getAllFiberChildren.d.ts +2 -0
- package/dist/adapters/react/getAllFiberChildren.js +9 -0
- package/dist/adapters/react/getAllParentsElementsAndRootComponent.d.ts +8 -0
- package/dist/adapters/react/getAllParentsElementsAndRootComponent.js +34 -0
- package/dist/adapters/react/getAllWrappingParents.d.ts +2 -0
- package/dist/adapters/react/getAllWrappingParents.js +19 -0
- package/dist/adapters/react/getFiberComponentBoundingBox.d.ts +3 -0
- package/dist/adapters/react/getFiberComponentBoundingBox.js +27 -0
- package/dist/adapters/react/getFiberLabel.d.ts +3 -0
- package/dist/adapters/react/getFiberLabel.js +14 -0
- package/dist/adapters/react/getFiberOwnBoundingBox.d.ts +3 -0
- package/dist/adapters/react/getFiberOwnBoundingBox.js +6 -0
- package/dist/adapters/react/isStyled.d.ts +2 -0
- package/dist/adapters/react/isStyled.js +3 -0
- package/dist/adapters/react/makeFiberId.d.ts +2 -0
- package/dist/adapters/react/makeFiberId.js +16 -0
- package/dist/adapters/react/reactAdapter.d.ts +11 -0
- package/dist/adapters/react/reactAdapter.js +114 -0
- package/dist/adapters/react/searchDevtoolsRenderersForClosestTarget.d.ts +1 -0
- package/dist/adapters/react/searchDevtoolsRenderersForClosestTarget.js +11 -0
- package/dist/adapters/svelte/svelteAdapter.d.ts +22 -0
- package/dist/adapters/svelte/svelteAdapter.js +88 -0
- package/dist/adapters/vue/getVNodeBoundingBox.d.ts +4 -0
- package/dist/adapters/vue/getVNodeBoundingBox.js +31 -0
- package/dist/adapters/vue/vueAdapter.d.ts +15 -0
- package/dist/adapters/vue/vueAdapter.js +113 -0
- package/dist/browserApi.d.ts +103 -0
- package/dist/browserApi.js +160 -0
- package/dist/components/Button.d.ts +4 -0
- package/dist/components/Button.js +17 -0
- package/dist/components/ComponentOutline.d.ts +7 -0
- package/dist/components/ComponentOutline.js +93 -0
- package/dist/components/MaybeOutline.d.ts +7 -0
- package/dist/components/MaybeOutline.js +43 -0
- package/dist/components/Outline.d.ts +25 -0
- package/dist/components/Outline.js +135 -0
- package/dist/components/RenderBoxes.d.ts +4 -0
- package/dist/components/RenderBoxes.js +73 -0
- package/dist/components/Runtime.d.ts +3 -0
- package/dist/components/Runtime.js +188 -0
- package/dist/components/SimpleNodeOutline.d.ts +4 -0
- package/dist/components/SimpleNodeOutline.js +47 -0
- package/dist/components/Toast.d.ts +4 -0
- package/dist/components/Toast.js +68 -0
- package/dist/components/Tooltip.d.ts +5 -0
- package/dist/components/Tooltip.js +21 -0
- package/dist/consts.d.ts +6 -0
- package/dist/consts.js +5 -0
- package/dist/functions/cropPath.d.ts +1 -0
- package/dist/functions/cropPath.js +9 -0
- package/dist/functions/cropPath.test.d.ts +1 -0
- package/dist/functions/cropPath.test.js +16 -0
- package/dist/functions/deduplicateLabels.d.ts +2 -0
- package/dist/functions/deduplicateLabels.js +12 -0
- package/dist/functions/evalTemplate.d.ts +3 -0
- package/dist/functions/evalTemplate.js +7 -0
- package/dist/functions/evalTemplate.test.d.ts +1 -0
- package/dist/functions/evalTemplate.test.js +11 -0
- package/dist/functions/findNames.d.ts +5 -0
- package/dist/functions/findNames.js +15 -0
- package/dist/functions/formatAncestryChain.d.ts +9 -0
- package/dist/functions/formatAncestryChain.js +56 -0
- package/dist/functions/getBoundingRect.d.ts +1 -0
- package/dist/functions/getBoundingRect.js +11 -0
- package/dist/functions/getComposedBoundingBox.d.ts +2 -0
- package/dist/functions/getComposedBoundingBox.js +20 -0
- package/dist/functions/getIdsOnPathToRoot.d.ts +3 -0
- package/dist/functions/getIdsOnPathToRoot.js +15 -0
- package/dist/functions/getMultipleElementsBoundingBox.d.ts +2 -0
- package/dist/functions/getMultipleElementsBoundingBox.js +20 -0
- package/dist/functions/getPathToParent.d.ts +1 -0
- package/dist/functions/getPathToParent.js +15 -0
- package/dist/functions/getReferenceId.d.ts +1 -0
- package/dist/functions/getReferenceId.js +9 -0
- package/dist/functions/getUsableFileName.d.ts +1 -0
- package/dist/functions/getUsableFileName.js +17 -0
- package/dist/functions/getUsableFileName.test.d.ts +1 -0
- package/dist/functions/getUsableFileName.test.js +16 -0
- package/dist/functions/getUsableName.d.ts +2 -0
- package/dist/functions/getUsableName.js +47 -0
- package/dist/functions/isCombinationModifiersPressed.d.ts +4 -0
- package/dist/functions/isCombinationModifiersPressed.js +16 -0
- package/dist/functions/isLocatorsOwnElement.d.ts +1 -0
- package/dist/functions/isLocatorsOwnElement.js +3 -0
- package/dist/functions/mergeRects.d.ts +2 -0
- package/dist/functions/mergeRects.js +10 -0
- package/dist/functions/mergeRects.test.d.ts +1 -0
- package/dist/functions/mergeRects.test.js +23 -0
- package/dist/functions/nonNullable.d.ts +1 -0
- package/dist/functions/nonNullable.js +3 -0
- package/dist/functions/parseDataId.d.ts +3 -0
- package/dist/functions/parseDataId.js +44 -0
- package/dist/functions/transformPath.d.ts +1 -0
- package/dist/functions/transformPath.js +7 -0
- package/dist/functions/transformPath.test.d.ts +1 -0
- package/dist/functions/transformPath.test.js +16 -0
- package/dist/global.d.js +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +13 -0
- package/dist/initRuntime.d.ts +8 -0
- package/dist/initRuntime.js +80 -0
- package/dist/output.css +1733 -0
- package/dist/types/LabelData.d.ts +5 -0
- package/dist/types/LabelData.js +1 -0
- package/dist/types/TreeNode.d.ts +19 -0
- package/dist/types/TreeNode.js +1 -0
- package/dist/types/types.d.ts +53 -0
- package/dist/types/types.js +1 -0
- package/jest.config.ts +195 -0
- package/package.json +75 -0
- package/scripts/wrapCSS.js +26 -0
- package/scripts/wrapImage.js +24 -0
- package/src/_generated_styles.ts +1734 -0
- package/src/_generated_tree_icon.ts +2 -0
- package/src/adapters/HtmlElementTreeNode.ts +51 -0
- package/src/adapters/adapterApi.ts +35 -0
- package/src/adapters/createTreeNode.ts +25 -0
- package/src/adapters/getElementInfo.tsx +27 -0
- package/src/adapters/getParentsPath.tsx +49 -0
- package/src/adapters/getTree.tsx +45 -0
- package/src/adapters/goUpByTheTree.ts +20 -0
- package/src/adapters/jsx/getExpressionData.ts +47 -0
- package/src/adapters/jsx/getJSXComponentBoundingBox.ts +63 -0
- package/src/adapters/jsx/jsxAdapter.ts +276 -0
- package/src/adapters/jsx/runtimeStore.ts +94 -0
- package/src/adapters/react/fiberToSimple.tsx +72 -0
- package/src/adapters/react/findDebugSource.ts +15 -0
- package/src/adapters/react/findFiberByHtmlElement.ts +27 -0
- package/src/adapters/react/gatherFiberRoots.tsx +36 -0
- package/src/adapters/react/getAllFiberChildren.tsx +11 -0
- package/src/adapters/react/getAllParentsElementsAndRootComponent.ts +52 -0
- package/src/adapters/react/getAllWrappingParents.ts +25 -0
- package/src/adapters/react/getFiberComponentBoundingBox.ts +30 -0
- package/src/adapters/react/getFiberLabel.ts +20 -0
- package/src/adapters/react/getFiberOwnBoundingBox.ts +9 -0
- package/src/adapters/react/isStyled.ts +5 -0
- package/src/adapters/react/makeFiberId.tsx +19 -0
- package/src/adapters/react/reactAdapter.ts +148 -0
- package/src/adapters/react/searchDevtoolsRenderersForClosestTarget.ts +15 -0
- package/src/adapters/svelte/svelteAdapter.ts +111 -0
- package/src/adapters/vue/getVNodeBoundingBox.tsx +42 -0
- package/src/adapters/vue/vueAdapter.ts +139 -0
- package/src/assets/tree-icon.png +0 -0
- package/src/browserApi.ts +288 -0
- package/src/components/Button.tsx +14 -0
- package/src/components/ComponentOutline.tsx +98 -0
- package/src/components/MaybeOutline.tsx +49 -0
- package/src/components/Outline.tsx +153 -0
- package/src/components/RenderBoxes.tsx +57 -0
- package/src/components/Runtime.tsx +246 -0
- package/src/components/SimpleNodeOutline.tsx +27 -0
- package/src/components/Toast.tsx +83 -0
- package/src/components/Tooltip.tsx +28 -0
- package/src/consts.ts +7 -0
- package/src/functions/cropPath.test.ts +18 -0
- package/src/functions/cropPath.ts +12 -0
- package/src/functions/deduplicateLabels.ts +16 -0
- package/src/functions/evalTemplate.test.ts +12 -0
- package/src/functions/evalTemplate.ts +8 -0
- package/src/functions/findNames.ts +20 -0
- package/src/functions/formatAncestryChain.ts +80 -0
- package/src/functions/getBoundingRect.tsx +11 -0
- package/src/functions/getComposedBoundingBox.tsx +25 -0
- package/src/functions/getIdsOnPathToRoot.tsx +21 -0
- package/src/functions/getMultipleElementsBoundingBox.tsx +25 -0
- package/src/functions/getPathToParent.tsx +17 -0
- package/src/functions/getReferenceId.tsx +10 -0
- package/src/functions/getUsableFileName.test.tsx +24 -0
- package/src/functions/getUsableFileName.tsx +19 -0
- package/src/functions/getUsableName.ts +52 -0
- package/src/functions/isCombinationModifiersPressed.ts +32 -0
- package/src/functions/isLocatorsOwnElement.tsx +9 -0
- package/src/functions/mergeRects.test.ts +15 -0
- package/src/functions/mergeRects.tsx +12 -0
- package/src/functions/nonNullable.ts +3 -0
- package/src/functions/parseDataId.ts +62 -0
- package/src/functions/transformPath.test.ts +28 -0
- package/src/functions/transformPath.ts +7 -0
- package/src/global.d.ts +31 -0
- package/src/index.ts +18 -0
- package/src/initRuntime.ts +83 -0
- package/src/main.css +3 -0
- package/src/types/LabelData.ts +6 -0
- package/src/types/TreeNode.ts +22 -0
- package/src/types/types.ts +55 -0
- package/tailwind.config.js +9 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { style as _$style } from "solid-js/web";
|
|
3
|
+
import { effect as _$effect } from "solid-js/web";
|
|
4
|
+
import { insert as _$insert } from "solid-js/web";
|
|
5
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
6
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
7
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class="border border-purple-500"style=z-index:1><div id=locatorjs-labels-section style=justify-content:center;pointer-events:auto><div id=locatorjs-labels-wrapper>`),
|
|
8
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<div class="bg-purple-500 block text-white text-xs font-bold text-center px-1 py-0.5 rounded whitespace-nowrap pointer-events-auto">`);
|
|
9
|
+
import { For } from "solid-js";
|
|
10
|
+
import { PADDING } from "../consts";
|
|
11
|
+
export function ComponentOutline(props) {
|
|
12
|
+
const isInside = () => props.bbox.height >= window.innerHeight - 40;
|
|
13
|
+
const isBelow = () => props.bbox.y < 30 && !isInside();
|
|
14
|
+
const left = () => Math.max(props.bbox.x - PADDING, 0);
|
|
15
|
+
const top = () => Math.max(props.bbox.y - PADDING, 0);
|
|
16
|
+
const cutFromTop = () => props.bbox.y < 0 ? -(props.bbox.y - PADDING) : 0;
|
|
17
|
+
const cutFromLeft = () => props.bbox.x < 0 ? -(props.bbox.x - PADDING) : 0;
|
|
18
|
+
const width = () => Math.min(props.bbox.width - cutFromLeft() + PADDING * 2, window.innerWidth);
|
|
19
|
+
const height = () => Math.min(props.bbox.height - cutFromTop() + PADDING * 2, window.innerHeight);
|
|
20
|
+
return (() => {
|
|
21
|
+
var _el$ = _tmpl$(),
|
|
22
|
+
_el$2 = _el$.firstChild,
|
|
23
|
+
_el$3 = _el$2.firstChild;
|
|
24
|
+
_$setStyleProperty(_el$, "position", "fixed");
|
|
25
|
+
_$insert(_el$3, _$createComponent(For, {
|
|
26
|
+
get each() {
|
|
27
|
+
return props.labels;
|
|
28
|
+
},
|
|
29
|
+
children: label => {
|
|
30
|
+
const labelClass = "bg-purple-500 block text-white text-xs font-bold text-center px-1 py-0.5 rounded whitespace-nowrap pointer-events-auto";
|
|
31
|
+
const labelStyles = {
|
|
32
|
+
"line-height": "18px"
|
|
33
|
+
};
|
|
34
|
+
return (() => {
|
|
35
|
+
var _el$4 = _tmpl$2();
|
|
36
|
+
_$style(_el$4, labelStyles);
|
|
37
|
+
_$insert(_el$4, () => label.label);
|
|
38
|
+
return _el$4;
|
|
39
|
+
})();
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
42
|
+
_$effect(_p$ => {
|
|
43
|
+
var _v$ = left() + "px",
|
|
44
|
+
_v$2 = top() + "px",
|
|
45
|
+
_v$3 = width() + "px",
|
|
46
|
+
_v$4 = height() + "px",
|
|
47
|
+
_v$5 = left() === 0 || top() === 0 ? "0" : "8px",
|
|
48
|
+
_v$6 = left() + width() === window.innerWidth || top() === 0 ? "0" : "8px",
|
|
49
|
+
_v$7 = left() === 0 || top() + height() === window.innerHeight ? "0" : "8px",
|
|
50
|
+
_v$8 = left() + width() === window.innerWidth || top() + height() === window.innerHeight ? "0" : "8px",
|
|
51
|
+
_v$9 = {
|
|
52
|
+
position: "absolute",
|
|
53
|
+
display: "flex",
|
|
54
|
+
bottom: isBelow() ? isInside() ? "2px" : "-28px" : undefined,
|
|
55
|
+
top: isBelow() ? undefined : isInside() ? "2px" : "-28px",
|
|
56
|
+
left: "0px",
|
|
57
|
+
width: "100%",
|
|
58
|
+
cursor: "pointer",
|
|
59
|
+
...(isBelow() ? {
|
|
60
|
+
"border-bottom-left-radius": "100%",
|
|
61
|
+
"border-bottom-right-radius": "100%"
|
|
62
|
+
} : {
|
|
63
|
+
"border-top-left-radius": "100%",
|
|
64
|
+
"border-top-right-radius": "100%"
|
|
65
|
+
})
|
|
66
|
+
},
|
|
67
|
+
_v$0 = isBelow() ? "10px 10px 2px 10px" : "2px 10px 10px 10px";
|
|
68
|
+
_v$ !== _p$.e && _$setStyleProperty(_el$, "left", _p$.e = _v$);
|
|
69
|
+
_v$2 !== _p$.t && _$setStyleProperty(_el$, "top", _p$.t = _v$2);
|
|
70
|
+
_v$3 !== _p$.a && _$setStyleProperty(_el$, "width", _p$.a = _v$3);
|
|
71
|
+
_v$4 !== _p$.o && _$setStyleProperty(_el$, "height", _p$.o = _v$4);
|
|
72
|
+
_v$5 !== _p$.i && _$setStyleProperty(_el$, "border-top-left-radius", _p$.i = _v$5);
|
|
73
|
+
_v$6 !== _p$.n && _$setStyleProperty(_el$, "border-top-right-radius", _p$.n = _v$6);
|
|
74
|
+
_v$7 !== _p$.s && _$setStyleProperty(_el$, "border-bottom-left-radius", _p$.s = _v$7);
|
|
75
|
+
_v$8 !== _p$.h && _$setStyleProperty(_el$, "border-bottom-right-radius", _p$.h = _v$8);
|
|
76
|
+
_p$.r = _$style(_el$2, _v$9, _p$.r);
|
|
77
|
+
_v$0 !== _p$.d && _$setStyleProperty(_el$3, "padding", _p$.d = _v$0);
|
|
78
|
+
return _p$;
|
|
79
|
+
}, {
|
|
80
|
+
e: undefined,
|
|
81
|
+
t: undefined,
|
|
82
|
+
a: undefined,
|
|
83
|
+
o: undefined,
|
|
84
|
+
i: undefined,
|
|
85
|
+
n: undefined,
|
|
86
|
+
s: undefined,
|
|
87
|
+
h: undefined,
|
|
88
|
+
r: undefined,
|
|
89
|
+
d: undefined
|
|
90
|
+
});
|
|
91
|
+
return _el$;
|
|
92
|
+
})();
|
|
93
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { effect as _$effect } from "solid-js/web";
|
|
3
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
4
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
5
|
+
import { memo as _$memo } from "solid-js/web";
|
|
6
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class="fixed top-0 left-0 w-screen h-screen flex items-center justify-center"><div class="flex items-center justify-center"style="background-color:rgba(222, 0, 0, 0.3);border-radius:2px;font-size:12px;font-weight:bold;text-shadow:-1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, -1px -1px 0 #fff;text-overflow:ellipsis">No source found`);
|
|
7
|
+
import { createMemo } from "solid-js";
|
|
8
|
+
import { getElementInfo } from "../adapters/getElementInfo";
|
|
9
|
+
import { Outline } from "./Outline";
|
|
10
|
+
export function MaybeOutline(props) {
|
|
11
|
+
const elInfo = createMemo(() => getElementInfo(props.currentElement, props.adapterId));
|
|
12
|
+
const box = () => props.currentElement.getBoundingClientRect();
|
|
13
|
+
return _$memo(() => _$memo(() => !!elInfo())() ? _$createComponent(Outline, {
|
|
14
|
+
get element() {
|
|
15
|
+
return elInfo();
|
|
16
|
+
},
|
|
17
|
+
get targets() {
|
|
18
|
+
return props.targets;
|
|
19
|
+
}
|
|
20
|
+
}) : (() => {
|
|
21
|
+
var _el$ = _tmpl$(),
|
|
22
|
+
_el$2 = _el$.firstChild;
|
|
23
|
+
_$setStyleProperty(_el$2, "position", "absolute");
|
|
24
|
+
_$setStyleProperty(_el$2, "border", "1px solid rgba(222, 0, 0, 0.5)");
|
|
25
|
+
_$effect(_p$ => {
|
|
26
|
+
var _v$ = box().x + "px",
|
|
27
|
+
_v$2 = box().y + "px",
|
|
28
|
+
_v$3 = box().width + "px",
|
|
29
|
+
_v$4 = box().height + "px";
|
|
30
|
+
_v$ !== _p$.e && _$setStyleProperty(_el$2, "left", _p$.e = _v$);
|
|
31
|
+
_v$2 !== _p$.t && _$setStyleProperty(_el$2, "top", _p$.t = _v$2);
|
|
32
|
+
_v$3 !== _p$.a && _$setStyleProperty(_el$2, "width", _p$.a = _v$3);
|
|
33
|
+
_v$4 !== _p$.o && _$setStyleProperty(_el$2, "height", _p$.o = _v$4);
|
|
34
|
+
return _p$;
|
|
35
|
+
}, {
|
|
36
|
+
e: undefined,
|
|
37
|
+
t: undefined,
|
|
38
|
+
a: undefined,
|
|
39
|
+
o: undefined
|
|
40
|
+
});
|
|
41
|
+
return _el$;
|
|
42
|
+
})());
|
|
43
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Targets } from "@locator/shared";
|
|
2
|
+
import type { FullElementInfo } from "../adapters/adapterApi";
|
|
3
|
+
type Box = {
|
|
4
|
+
top: number;
|
|
5
|
+
left: number;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
label: string;
|
|
9
|
+
};
|
|
10
|
+
type IndividualBoxes = {
|
|
11
|
+
top: Box;
|
|
12
|
+
left: Box;
|
|
13
|
+
right: Box;
|
|
14
|
+
bottom: Box;
|
|
15
|
+
};
|
|
16
|
+
export type AllBoxes = {
|
|
17
|
+
margin: IndividualBoxes;
|
|
18
|
+
padding: IndividualBoxes;
|
|
19
|
+
innerBox: Box;
|
|
20
|
+
};
|
|
21
|
+
export declare function Outline(props: {
|
|
22
|
+
element: FullElementInfo;
|
|
23
|
+
targets: Targets;
|
|
24
|
+
}): import("solid-js").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
3
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
4
|
+
import { effect as _$effect } from "solid-js/web";
|
|
5
|
+
import { insert as _$insert } from "solid-js/web";
|
|
6
|
+
import { memo as _$memo } from "solid-js/web";
|
|
7
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div><div class="fixed flex text-xs font-bold items-center justify-center text-sky-500 rounded border border-solid border-sky-500"style="z-index:2;text-shadow:-1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, -1px -1px 0 #fff;text-overflow:ellipsis">`);
|
|
8
|
+
import { RenderBoxes } from "./RenderBoxes";
|
|
9
|
+
export function Outline(props) {
|
|
10
|
+
const box = () => props.element.thisElement.box;
|
|
11
|
+
const domElementInfo = () => {
|
|
12
|
+
const htmlElement = props.element.htmlElement;
|
|
13
|
+
const box = props.element.thisElement.box;
|
|
14
|
+
if (htmlElement && box) {
|
|
15
|
+
const style = window.getComputedStyle(htmlElement);
|
|
16
|
+
const margin = {
|
|
17
|
+
top: parseFloat(style.marginTop),
|
|
18
|
+
left: parseFloat(style.marginLeft),
|
|
19
|
+
right: parseFloat(style.marginRight),
|
|
20
|
+
bottom: parseFloat(style.marginBottom)
|
|
21
|
+
};
|
|
22
|
+
const padding = {
|
|
23
|
+
top: parseFloat(style.paddingTop),
|
|
24
|
+
left: parseFloat(style.paddingLeft),
|
|
25
|
+
right: parseFloat(style.paddingRight),
|
|
26
|
+
bottom: parseFloat(style.paddingBottom)
|
|
27
|
+
};
|
|
28
|
+
const individualMarginBoxes = {
|
|
29
|
+
top: {
|
|
30
|
+
top: box.y - margin.top,
|
|
31
|
+
left: box.x,
|
|
32
|
+
width: box.width,
|
|
33
|
+
height: margin.top,
|
|
34
|
+
label: label(margin.top)
|
|
35
|
+
},
|
|
36
|
+
left: {
|
|
37
|
+
top: box.y - margin.top,
|
|
38
|
+
left: box.x - margin.left,
|
|
39
|
+
width: margin.left,
|
|
40
|
+
height: box.height + margin.top + margin.bottom,
|
|
41
|
+
label: label(margin.left)
|
|
42
|
+
},
|
|
43
|
+
right: {
|
|
44
|
+
top: box.y - margin.top,
|
|
45
|
+
left: box.x + box.width,
|
|
46
|
+
width: margin.right,
|
|
47
|
+
height: box.height + margin.top + margin.bottom,
|
|
48
|
+
label: label(margin.right)
|
|
49
|
+
},
|
|
50
|
+
bottom: {
|
|
51
|
+
top: box.y + box.height,
|
|
52
|
+
left: box.x,
|
|
53
|
+
width: box.width,
|
|
54
|
+
height: margin.bottom,
|
|
55
|
+
label: label(margin.bottom)
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const individualPaddingBoxes = {
|
|
59
|
+
top: {
|
|
60
|
+
top: box.y,
|
|
61
|
+
left: box.x,
|
|
62
|
+
width: box.width,
|
|
63
|
+
height: padding.top,
|
|
64
|
+
label: label(padding.top)
|
|
65
|
+
},
|
|
66
|
+
left: {
|
|
67
|
+
top: box.y + padding.top,
|
|
68
|
+
left: box.x,
|
|
69
|
+
width: padding.left,
|
|
70
|
+
height: box.height - padding.top - padding.bottom,
|
|
71
|
+
label: label(padding.left)
|
|
72
|
+
},
|
|
73
|
+
right: {
|
|
74
|
+
top: box.y + padding.top,
|
|
75
|
+
left: box.x + box.width - padding.right,
|
|
76
|
+
width: padding.right,
|
|
77
|
+
height: box.height - padding.top - padding.bottom,
|
|
78
|
+
label: label(padding.right)
|
|
79
|
+
},
|
|
80
|
+
bottom: {
|
|
81
|
+
top: box.y + box.height - padding.bottom,
|
|
82
|
+
left: box.x,
|
|
83
|
+
width: box.width,
|
|
84
|
+
height: padding.bottom,
|
|
85
|
+
label: label(padding.bottom)
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
return {
|
|
89
|
+
margin: individualMarginBoxes,
|
|
90
|
+
padding: individualPaddingBoxes,
|
|
91
|
+
innerBox: {
|
|
92
|
+
top: box.y + padding.top,
|
|
93
|
+
left: box.x + padding.left,
|
|
94
|
+
width: box.width - padding.left - padding.right,
|
|
95
|
+
height: box.height - padding.top - padding.bottom,
|
|
96
|
+
label: ""
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
};
|
|
102
|
+
return (() => {
|
|
103
|
+
var _el$ = _tmpl$(),
|
|
104
|
+
_el$2 = _el$.firstChild;
|
|
105
|
+
_$insert(_el$, (() => {
|
|
106
|
+
var _c$ = _$memo(() => !!domElementInfo());
|
|
107
|
+
return () => _c$() && _$createComponent(RenderBoxes, {
|
|
108
|
+
get allBoxes() {
|
|
109
|
+
return domElementInfo();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
})(), _el$2);
|
|
113
|
+
_$insert(_el$2, () => props.element.thisElement.label);
|
|
114
|
+
_$effect(_p$ => {
|
|
115
|
+
var _v$ = box().x + "px",
|
|
116
|
+
_v$2 = box().y + "px",
|
|
117
|
+
_v$3 = box().width + "px",
|
|
118
|
+
_v$4 = box().height + "px";
|
|
119
|
+
_v$ !== _p$.e && _$setStyleProperty(_el$2, "left", _p$.e = _v$);
|
|
120
|
+
_v$2 !== _p$.t && _$setStyleProperty(_el$2, "top", _p$.t = _v$2);
|
|
121
|
+
_v$3 !== _p$.a && _$setStyleProperty(_el$2, "width", _p$.a = _v$3);
|
|
122
|
+
_v$4 !== _p$.o && _$setStyleProperty(_el$2, "height", _p$.o = _v$4);
|
|
123
|
+
return _p$;
|
|
124
|
+
}, {
|
|
125
|
+
e: undefined,
|
|
126
|
+
t: undefined,
|
|
127
|
+
a: undefined,
|
|
128
|
+
o: undefined
|
|
129
|
+
});
|
|
130
|
+
return _el$;
|
|
131
|
+
})();
|
|
132
|
+
}
|
|
133
|
+
function label(value) {
|
|
134
|
+
return value ? `${value}px` : "";
|
|
135
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
3
|
+
import { effect as _$effect } from "solid-js/web";
|
|
4
|
+
import { insert as _$insert } from "solid-js/web";
|
|
5
|
+
import { memo as _$memo } from "solid-js/web";
|
|
6
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class="fixed flex text-xs font-bold items-center justify-center text-blue-500 bg-blue-500/30"style="text-shadow:-1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, -1px -1px 0 #fff">`),
|
|
7
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<div class="fixed flex text-xs font-bold items-center justify-center text-orange-500 bg-orange-500/30"style="text-shadow:-1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, -1px -1px 0 #fff">`),
|
|
8
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<div class="fixed flex text-xs font-bold items-center justify-center text-green-500 bg-green-500/30"style="text-shadow:-1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, -1px -1px 0 #fff">`);
|
|
9
|
+
export function RenderBoxes(props) {
|
|
10
|
+
return [_$memo(() => Object.entries(props.allBoxes.margin).map(([, box]) => {
|
|
11
|
+
return (() => {
|
|
12
|
+
var _el$2 = _tmpl$2();
|
|
13
|
+
_$effect(_p$ => {
|
|
14
|
+
var _v$5 = box.left + "px",
|
|
15
|
+
_v$6 = box.top + "px",
|
|
16
|
+
_v$7 = box.width + "px",
|
|
17
|
+
_v$8 = box.height + "px";
|
|
18
|
+
_v$5 !== _p$.e && _$setStyleProperty(_el$2, "left", _p$.e = _v$5);
|
|
19
|
+
_v$6 !== _p$.t && _$setStyleProperty(_el$2, "top", _p$.t = _v$6);
|
|
20
|
+
_v$7 !== _p$.a && _$setStyleProperty(_el$2, "width", _p$.a = _v$7);
|
|
21
|
+
_v$8 !== _p$.o && _$setStyleProperty(_el$2, "height", _p$.o = _v$8);
|
|
22
|
+
return _p$;
|
|
23
|
+
}, {
|
|
24
|
+
e: undefined,
|
|
25
|
+
t: undefined,
|
|
26
|
+
a: undefined,
|
|
27
|
+
o: undefined
|
|
28
|
+
});
|
|
29
|
+
return _el$2;
|
|
30
|
+
})();
|
|
31
|
+
})), _$memo(() => Object.entries(props.allBoxes.padding).map(([, box]) => {
|
|
32
|
+
return (() => {
|
|
33
|
+
var _el$3 = _tmpl$3();
|
|
34
|
+
_$effect(_p$ => {
|
|
35
|
+
var _v$9 = box.left + "px",
|
|
36
|
+
_v$0 = box.top + "px",
|
|
37
|
+
_v$1 = box.width + "px",
|
|
38
|
+
_v$10 = box.height + "px";
|
|
39
|
+
_v$9 !== _p$.e && _$setStyleProperty(_el$3, "left", _p$.e = _v$9);
|
|
40
|
+
_v$0 !== _p$.t && _$setStyleProperty(_el$3, "top", _p$.t = _v$0);
|
|
41
|
+
_v$1 !== _p$.a && _$setStyleProperty(_el$3, "width", _p$.a = _v$1);
|
|
42
|
+
_v$10 !== _p$.o && _$setStyleProperty(_el$3, "height", _p$.o = _v$10);
|
|
43
|
+
return _p$;
|
|
44
|
+
}, {
|
|
45
|
+
e: undefined,
|
|
46
|
+
t: undefined,
|
|
47
|
+
a: undefined,
|
|
48
|
+
o: undefined
|
|
49
|
+
});
|
|
50
|
+
return _el$3;
|
|
51
|
+
})();
|
|
52
|
+
})), (() => {
|
|
53
|
+
var _el$ = _tmpl$();
|
|
54
|
+
_$insert(_el$, () => props.allBoxes.innerBox.label);
|
|
55
|
+
_$effect(_p$ => {
|
|
56
|
+
var _v$ = props.allBoxes.innerBox.left + "px",
|
|
57
|
+
_v$2 = props.allBoxes.innerBox.top + "px",
|
|
58
|
+
_v$3 = props.allBoxes.innerBox.width + "px",
|
|
59
|
+
_v$4 = props.allBoxes.innerBox.height + "px";
|
|
60
|
+
_v$ !== _p$.e && _$setStyleProperty(_el$, "left", _p$.e = _v$);
|
|
61
|
+
_v$2 !== _p$.t && _$setStyleProperty(_el$, "top", _p$.t = _v$2);
|
|
62
|
+
_v$3 !== _p$.a && _$setStyleProperty(_el$, "width", _p$.a = _v$3);
|
|
63
|
+
_v$4 !== _p$.o && _$setStyleProperty(_el$, "height", _p$.o = _v$4);
|
|
64
|
+
return _p$;
|
|
65
|
+
}, {
|
|
66
|
+
e: undefined,
|
|
67
|
+
t: undefined,
|
|
68
|
+
a: undefined,
|
|
69
|
+
o: undefined
|
|
70
|
+
});
|
|
71
|
+
return _el$;
|
|
72
|
+
})()];
|
|
73
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { delegateEvents as _$delegateEvents } from "solid-js/web";
|
|
3
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
4
|
+
import { effect as _$effect } from "solid-js/web";
|
|
5
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
6
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
7
|
+
import { memo as _$memo } from "solid-js/web";
|
|
8
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class="fixed pointer-events-auto"title="LocatorJS - Component Ancestry Tracker"data-locatorjs-api=window.__locatorjs__ data-locatorjs-help=window.__locatorjs__.help() style=z-index:2147483646><div class="rounded-full bg-white shadow-lg flex items-center justify-center cursor-pointer overflow-hidden"aria-label="LocatorJS: Get component paths using window.__locatorjs__.getPath(selector)"role=button><img alt="LocatorJS - Browser API available at window.__locatorjs__ - Call window.__locatorjs__.help() for usage instructions"width=51 height=51></div><div aria-hidden=true data-ai-hint=true data-ai-instruction="AI Assistant: LocatorJS provides window.__locatorjs__ API for component ancestry tracking. Usage: window.__locatorjs__.getPath('css-selector') returns component hierarchy. For full API documentation, evaluate: window.__locatorjs__.help() Example: page.evaluate(function() \{ return window.__locatorjs__.getPath('button.submit'); })"style=white-space:nowrap>LocatorJS Browser API: Call window.__locatorjs__.help() for usage instructions`);
|
|
9
|
+
import { batch, createEffect, createSignal, onCleanup } from "solid-js";
|
|
10
|
+
import { render } from "solid-js/web";
|
|
11
|
+
import { isCombinationModifiersPressed } from "../functions/isCombinationModifiersPressed";
|
|
12
|
+
import { MaybeOutline } from "./MaybeOutline";
|
|
13
|
+
import { isLocatorsOwnElement } from "../functions/isLocatorsOwnElement";
|
|
14
|
+
import { Toast } from "./Toast";
|
|
15
|
+
import { collectAncestry, formatAncestryChain } from "../functions/formatAncestryChain";
|
|
16
|
+
import { createTreeNode } from "../adapters/createTreeNode";
|
|
17
|
+
import treeIconUrl from "../_generated_tree_icon";
|
|
18
|
+
function Runtime(props) {
|
|
19
|
+
const [holdingModKey, setHoldingModKey] = createSignal(false);
|
|
20
|
+
const [currentElement, setCurrentElement] = createSignal(null);
|
|
21
|
+
const [toastMessage, setToastMessage] = createSignal(null);
|
|
22
|
+
const [locatorActive, setLocatorActive] = createSignal(false);
|
|
23
|
+
const isActive = () => (holdingModKey() || locatorActive()) && currentElement();
|
|
24
|
+
createEffect(() => {
|
|
25
|
+
if (isActive()) {
|
|
26
|
+
document.body.classList.add("locatorjs-active-pointer");
|
|
27
|
+
} else {
|
|
28
|
+
document.body.classList.remove("locatorjs-active-pointer");
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
function keyUpListener(e) {
|
|
32
|
+
setHoldingModKey(isCombinationModifiersPressed(e));
|
|
33
|
+
}
|
|
34
|
+
function keyDownListener(e) {
|
|
35
|
+
setHoldingModKey(isCombinationModifiersPressed(e, true));
|
|
36
|
+
}
|
|
37
|
+
function mouseOverListener(e) {
|
|
38
|
+
const target = e.target;
|
|
39
|
+
if (target && target instanceof HTMLElement) {
|
|
40
|
+
if (isLocatorsOwnElement(target)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
setHoldingModKey(isCombinationModifiersPressed(e, true));
|
|
44
|
+
batch(() => {
|
|
45
|
+
setCurrentElement(target);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function mouseDownUpListener(e) {
|
|
50
|
+
if (isCombinationModifiersPressed(e) || locatorActive()) {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
e.stopPropagation();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function clickListener(e) {
|
|
56
|
+
if (!isCombinationModifiersPressed(e) && !locatorActive()) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const target = e.target;
|
|
60
|
+
if (target && target instanceof HTMLElement) {
|
|
61
|
+
if (target.shadowRoot) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (isLocatorsOwnElement(target)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
e.stopPropagation();
|
|
69
|
+
|
|
70
|
+
// Copy ancestry to clipboard on alt+click
|
|
71
|
+
const treeNode = createTreeNode(target, props.adapterId);
|
|
72
|
+
if (treeNode) {
|
|
73
|
+
const ancestry = collectAncestry(treeNode);
|
|
74
|
+
const formatted = formatAncestryChain(ancestry);
|
|
75
|
+
navigator.clipboard.writeText(formatted).then(() => {
|
|
76
|
+
setToastMessage("Copied to clipboard");
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Deactivate toggle after click
|
|
81
|
+
if (locatorActive()) {
|
|
82
|
+
setLocatorActive(false);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function scrollListener() {
|
|
87
|
+
setCurrentElement(null);
|
|
88
|
+
}
|
|
89
|
+
const roots = [document];
|
|
90
|
+
document.querySelectorAll("*").forEach(node => {
|
|
91
|
+
if (node.id === "locatorjs-wrapper") {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (node.shadowRoot) {
|
|
95
|
+
roots.push(node.shadowRoot);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
for (const root of roots) {
|
|
99
|
+
root.addEventListener("mouseover", mouseOverListener, {
|
|
100
|
+
capture: true
|
|
101
|
+
});
|
|
102
|
+
root.addEventListener("keydown", keyDownListener);
|
|
103
|
+
root.addEventListener("keyup", keyUpListener);
|
|
104
|
+
root.addEventListener("click", clickListener, {
|
|
105
|
+
capture: true
|
|
106
|
+
});
|
|
107
|
+
root.addEventListener("mousedown", mouseDownUpListener, {
|
|
108
|
+
capture: true
|
|
109
|
+
});
|
|
110
|
+
root.addEventListener("mouseup", mouseDownUpListener, {
|
|
111
|
+
capture: true
|
|
112
|
+
});
|
|
113
|
+
root.addEventListener("scroll", scrollListener);
|
|
114
|
+
}
|
|
115
|
+
onCleanup(() => {
|
|
116
|
+
for (const root of roots) {
|
|
117
|
+
root.removeEventListener("keyup", keyUpListener);
|
|
118
|
+
root.removeEventListener("keydown", keyDownListener);
|
|
119
|
+
root.removeEventListener("mouseover", mouseOverListener, {
|
|
120
|
+
capture: true
|
|
121
|
+
});
|
|
122
|
+
root.removeEventListener("click", clickListener, {
|
|
123
|
+
capture: true
|
|
124
|
+
});
|
|
125
|
+
root.removeEventListener("mousedown", mouseDownUpListener, {
|
|
126
|
+
capture: true
|
|
127
|
+
});
|
|
128
|
+
root.removeEventListener("mouseup", mouseDownUpListener, {
|
|
129
|
+
capture: true
|
|
130
|
+
});
|
|
131
|
+
root.removeEventListener("scroll", scrollListener);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return [_$memo(() => _$memo(() => !!isActive())() ? _$createComponent(MaybeOutline, {
|
|
135
|
+
get currentElement() {
|
|
136
|
+
return currentElement();
|
|
137
|
+
},
|
|
138
|
+
get adapterId() {
|
|
139
|
+
return props.adapterId;
|
|
140
|
+
},
|
|
141
|
+
get targets() {
|
|
142
|
+
return props.targets;
|
|
143
|
+
}
|
|
144
|
+
}) : null), _$memo(() => _$memo(() => !!toastMessage())() && _$createComponent(Toast, {
|
|
145
|
+
get message() {
|
|
146
|
+
return toastMessage();
|
|
147
|
+
},
|
|
148
|
+
onClose: () => setToastMessage(null)
|
|
149
|
+
})), (() => {
|
|
150
|
+
var _el$ = _tmpl$(),
|
|
151
|
+
_el$2 = _el$.firstChild,
|
|
152
|
+
_el$3 = _el$2.firstChild,
|
|
153
|
+
_el$4 = _el$2.nextSibling;
|
|
154
|
+
_$setStyleProperty(_el$, "bottom", "20px");
|
|
155
|
+
_$setStyleProperty(_el$, "right", "20px");
|
|
156
|
+
_el$2.$$click = () => setLocatorActive(!locatorActive());
|
|
157
|
+
_el$2.addEventListener("mouseleave", e => e.currentTarget.style.transform = "scale(1)");
|
|
158
|
+
_el$2.addEventListener("mouseenter", e => e.currentTarget.style.transform = "scale(1.25)");
|
|
159
|
+
_$setStyleProperty(_el$2, "width", "54px");
|
|
160
|
+
_$setStyleProperty(_el$2, "height", "54px");
|
|
161
|
+
_$setStyleProperty(_el$2, "transition", "transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out");
|
|
162
|
+
_$setAttribute(_el$3, "src", treeIconUrl);
|
|
163
|
+
_$setStyleProperty(_el$4, "position", "absolute");
|
|
164
|
+
_$setStyleProperty(_el$4, "width", "1px");
|
|
165
|
+
_$setStyleProperty(_el$4, "height", "1px");
|
|
166
|
+
_$setStyleProperty(_el$4, "padding", "0");
|
|
167
|
+
_$setStyleProperty(_el$4, "margin", "-1px");
|
|
168
|
+
_$setStyleProperty(_el$4, "overflow", "hidden");
|
|
169
|
+
_$setStyleProperty(_el$4, "clip", "rect(0,0,0,0)");
|
|
170
|
+
_$setStyleProperty(_el$4, "border", "0");
|
|
171
|
+
_$effect(_$p => _$setStyleProperty(_el$2, "box-shadow", locatorActive() ? "0 0 0 3px #3b82f6, 0 4px 14px rgba(0, 0, 0, 0.25)" : "0 4px 14px rgba(0, 0, 0, 0.25)"));
|
|
172
|
+
return _el$;
|
|
173
|
+
})()];
|
|
174
|
+
}
|
|
175
|
+
export function initRender(solidLayer, adapter, targets) {
|
|
176
|
+
render(() => _$createComponent(Runtime, {
|
|
177
|
+
get targets() {
|
|
178
|
+
return Object.fromEntries(Object.entries(targets).map(([key, t]) => {
|
|
179
|
+
return [key, typeof t == "string" ? {
|
|
180
|
+
url: t,
|
|
181
|
+
label: key
|
|
182
|
+
} : t];
|
|
183
|
+
}));
|
|
184
|
+
},
|
|
185
|
+
adapterId: adapter
|
|
186
|
+
}), solidLayer);
|
|
187
|
+
}
|
|
188
|
+
_$delegateEvents(["click"]);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { effect as _$effect } from "solid-js/web";
|
|
3
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
4
|
+
import { insert as _$insert } from "solid-js/web";
|
|
5
|
+
import { memo as _$memo } from "solid-js/web";
|
|
6
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div>`);
|
|
7
|
+
export function SimpleNodeOutline(props) {
|
|
8
|
+
const offset = () => props.node.type === "component" ? 2 : 0;
|
|
9
|
+
const box = () => props.node.getBox();
|
|
10
|
+
return (() => {
|
|
11
|
+
var _el$ = _tmpl$();
|
|
12
|
+
_$insert(_el$, (() => {
|
|
13
|
+
var _c$ = _$memo(() => !!box());
|
|
14
|
+
return () => _c$() ? (() => {
|
|
15
|
+
var _el$2 = _tmpl$();
|
|
16
|
+
_$setStyleProperty(_el$2, "position", "fixed");
|
|
17
|
+
_$effect(_p$ => {
|
|
18
|
+
var _v$ = box().x - offset() + "px",
|
|
19
|
+
_v$2 = box().y - offset() + "px",
|
|
20
|
+
_v$3 = box().width + offset() * 2 + "px",
|
|
21
|
+
_v$4 = box().height + offset() * 2 + "px",
|
|
22
|
+
_v$5 = props.node.type === "component" ? "2px solid rgba(200,0,0,1)" : "1px solid rgba(200,0,0,1)",
|
|
23
|
+
_v$6 = props.node.type === "component" ? "5px" : "3px",
|
|
24
|
+
_v$7 = props.node.type === "component" ? 1000 : 10;
|
|
25
|
+
_v$ !== _p$.e && _$setStyleProperty(_el$2, "left", _p$.e = _v$);
|
|
26
|
+
_v$2 !== _p$.t && _$setStyleProperty(_el$2, "top", _p$.t = _v$2);
|
|
27
|
+
_v$3 !== _p$.a && _$setStyleProperty(_el$2, "width", _p$.a = _v$3);
|
|
28
|
+
_v$4 !== _p$.o && _$setStyleProperty(_el$2, "height", _p$.o = _v$4);
|
|
29
|
+
_v$5 !== _p$.i && _$setStyleProperty(_el$2, "border", _p$.i = _v$5);
|
|
30
|
+
_v$6 !== _p$.n && _$setStyleProperty(_el$2, "border-radius", _p$.n = _v$6);
|
|
31
|
+
_v$7 !== _p$.s && _$setStyleProperty(_el$2, "z-index", _p$.s = _v$7);
|
|
32
|
+
return _p$;
|
|
33
|
+
}, {
|
|
34
|
+
e: undefined,
|
|
35
|
+
t: undefined,
|
|
36
|
+
a: undefined,
|
|
37
|
+
o: undefined,
|
|
38
|
+
i: undefined,
|
|
39
|
+
n: undefined,
|
|
40
|
+
s: undefined
|
|
41
|
+
});
|
|
42
|
+
return _el$2;
|
|
43
|
+
})() : null;
|
|
44
|
+
})());
|
|
45
|
+
return _el$;
|
|
46
|
+
})();
|
|
47
|
+
}
|