@base44-preview/vite-plugin 0.2.22-pr.36.69a0b76 → 0.2.22-pr.36.6dec368
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/dist/injections/layer-dropdown/consts.d.ts +5 -1
- package/dist/injections/layer-dropdown/consts.d.ts.map +1 -1
- package/dist/injections/layer-dropdown/consts.js +5 -1
- package/dist/injections/layer-dropdown/consts.js.map +1 -1
- package/dist/injections/layer-dropdown/controller.d.ts +2 -2
- package/dist/injections/layer-dropdown/controller.d.ts.map +1 -1
- package/dist/injections/layer-dropdown/controller.js +37 -34
- package/dist/injections/layer-dropdown/controller.js.map +1 -1
- package/dist/injections/layer-dropdown/dropdown-ui.d.ts +3 -3
- package/dist/injections/layer-dropdown/dropdown-ui.d.ts.map +1 -1
- package/dist/injections/layer-dropdown/dropdown-ui.js +31 -17
- package/dist/injections/layer-dropdown/dropdown-ui.js.map +1 -1
- package/dist/injections/layer-dropdown/types.d.ts +6 -1
- package/dist/injections/layer-dropdown/types.d.ts.map +1 -1
- package/dist/injections/layer-dropdown/utils.d.ts +4 -2
- package/dist/injections/layer-dropdown/utils.d.ts.map +1 -1
- package/dist/injections/layer-dropdown/utils.js +75 -57
- package/dist/injections/layer-dropdown/utils.js.map +1 -1
- package/dist/injections/utils.d.ts +0 -2
- package/dist/injections/utils.d.ts.map +1 -1
- package/dist/injections/utils.js +0 -13
- package/dist/injections/utils.js.map +1 -1
- package/dist/injections/visual-edit-agent.d.ts.map +1 -1
- package/dist/injections/visual-edit-agent.js +8 -7
- package/dist/injections/visual-edit-agent.js.map +1 -1
- package/dist/statics/index.mjs +1 -1
- package/dist/statics/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/injections/layer-dropdown/LAYERS.md +258 -0
- package/src/injections/layer-dropdown/consts.ts +6 -1
- package/src/injections/layer-dropdown/controller.ts +40 -36
- package/src/injections/layer-dropdown/dropdown-ui.ts +35 -28
- package/src/injections/layer-dropdown/types.ts +7 -1
- package/src/injections/layer-dropdown/utils.ts +88 -64
- package/src/injections/utils.ts +0 -16
- package/src/injections/visual-edit-agent.ts +9 -7
|
@@ -6,7 +6,11 @@ export declare const DROPDOWN_ITEM_ACTIVE_BG = "#DBEAFE";
|
|
|
6
6
|
export declare const DROPDOWN_ITEM_ACTIVE_FONT_WEIGHT = "600";
|
|
7
7
|
export declare const DROPDOWN_ITEM_HOVER_BG = "#f1f5f9";
|
|
8
8
|
export declare const DEPTH_INDENT_PX = 10;
|
|
9
|
-
|
|
9
|
+
/** Chevron shown when dropdown is collapsed (click to expand) */
|
|
10
|
+
export declare const CHEVRON_COLLAPSED = " \u25BE";
|
|
11
|
+
/** Chevron shown when dropdown is expanded (click to collapse) */
|
|
12
|
+
export declare const CHEVRON_EXPANDED = " \u25B4";
|
|
13
|
+
export declare const BASE_PADDING_PX = 12;
|
|
10
14
|
export declare const LAYER_DROPDOWN_ATTR = "data-layer-dropdown";
|
|
11
15
|
/** Max instrumented ancestors to show above the selected element */
|
|
12
16
|
export declare const MAX_PARENT_DEPTH = 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/consts.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAa5D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ5D,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AAEtD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/consts.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAa5D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ5D,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AAEtD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAC3C,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,uEAAuE;AACvE,eAAO,MAAM,eAAe,IAAI,CAAC"}
|
|
@@ -27,7 +27,11 @@ export const DROPDOWN_ITEM_ACTIVE_BG = "#DBEAFE";
|
|
|
27
27
|
export const DROPDOWN_ITEM_ACTIVE_FONT_WEIGHT = "600";
|
|
28
28
|
export const DROPDOWN_ITEM_HOVER_BG = "#f1f5f9";
|
|
29
29
|
export const DEPTH_INDENT_PX = 10;
|
|
30
|
-
|
|
30
|
+
/** Chevron shown when dropdown is collapsed (click to expand) */
|
|
31
|
+
export const CHEVRON_COLLAPSED = " \u25BE";
|
|
32
|
+
/** Chevron shown when dropdown is expanded (click to collapse) */
|
|
33
|
+
export const CHEVRON_EXPANDED = " \u25B4";
|
|
34
|
+
export const BASE_PADDING_PX = 12;
|
|
31
35
|
export const LAYER_DROPDOWN_ATTR = "data-layer-dropdown";
|
|
32
36
|
/** Max instrumented ancestors to show above the selected element */
|
|
33
37
|
export const MAX_PARENT_DEPTH = 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/consts.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,MAAM,CAAC,MAAM,yBAAyB,GAA2B;IAC/D,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,SAAS;IAC1B,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,gCAAgC;IAC3C,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,MAAM;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAA2B;IAC/D,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,eAAe,EAAE,aAAa;IAC9B,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AACjD,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEhD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/consts.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,MAAM,CAAC,MAAM,yBAAyB,GAA2B;IAC/D,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,SAAS;IAC1B,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,gCAAgC;IAC3C,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,MAAM;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAA2B;IAC/D,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,eAAe,EAAE,aAAa;IAC9B,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AACjD,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEhD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAC3C,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAEzD,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Controller that encapsulates layer-dropdown integration logic */
|
|
2
|
-
import type {
|
|
3
|
-
export declare function createLayerController(
|
|
2
|
+
import type { LayerControllerConfig, LayerController } from "./types.js";
|
|
3
|
+
export declare function createLayerController(config: LayerControllerConfig): LayerController;
|
|
4
4
|
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/controller.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAUpE,OAAO,KAAK,EAAa,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/controller.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAUpE,OAAO,KAAK,EAAa,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAgGpF"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { getElementSelectorId } from "../utils.js";
|
|
3
3
|
import { buildLayerChain } from "./utils.js";
|
|
4
4
|
import { enhanceLabelWithChevron, showDropdown, closeDropdown, isDropdownOpen, } from "./dropdown-ui.js";
|
|
5
|
-
export function createLayerController(
|
|
5
|
+
export function createLayerController(config) {
|
|
6
6
|
let layerPreviewOverlay = null;
|
|
7
7
|
let escapeHandler = null;
|
|
8
|
-
let
|
|
8
|
+
let dropdownSourceLayer = null;
|
|
9
9
|
const clearLayerPreview = () => {
|
|
10
10
|
if (layerPreviewOverlay && layerPreviewOverlay.parentNode) {
|
|
11
11
|
layerPreviewOverlay.remove();
|
|
@@ -14,33 +14,54 @@ export function createLayerController(deps) {
|
|
|
14
14
|
};
|
|
15
15
|
const showLayerPreview = (layer) => {
|
|
16
16
|
clearLayerPreview();
|
|
17
|
-
if (getElementSelectorId(layer.element) ===
|
|
17
|
+
if (getElementSelectorId(layer.element) === config.getSelectedElementId())
|
|
18
18
|
return;
|
|
19
|
-
layerPreviewOverlay =
|
|
19
|
+
layerPreviewOverlay = config.createPreviewOverlay(layer.element);
|
|
20
20
|
};
|
|
21
|
-
const
|
|
21
|
+
const selectLayer = (layer) => {
|
|
22
22
|
clearLayerPreview();
|
|
23
23
|
closeDropdown();
|
|
24
24
|
if (escapeHandler) {
|
|
25
25
|
document.removeEventListener("keydown", escapeHandler, true);
|
|
26
26
|
escapeHandler = null;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
const firstOverlay =
|
|
28
|
+
dropdownSourceLayer = null;
|
|
29
|
+
const firstOverlay = config.selectElement(layer.element);
|
|
30
30
|
attachToOverlay(firstOverlay, layer.element);
|
|
31
31
|
};
|
|
32
|
-
const
|
|
32
|
+
const restoreSelection = () => {
|
|
33
33
|
if (escapeHandler) {
|
|
34
34
|
document.removeEventListener("keydown", escapeHandler, true);
|
|
35
35
|
escapeHandler = null;
|
|
36
36
|
}
|
|
37
|
-
if (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
if (dropdownSourceLayer) {
|
|
38
|
+
selectLayer(dropdownSourceLayer);
|
|
39
|
+
dropdownSourceLayer = null;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const handleLabelClick = (e, label, element, layers, currentId) => {
|
|
43
|
+
e.stopPropagation();
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
if (isDropdownOpen()) {
|
|
46
|
+
closeDropdown();
|
|
47
|
+
restoreSelection();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
dropdownSourceLayer = {
|
|
51
|
+
element,
|
|
52
|
+
tagName: element.tagName.toLowerCase(),
|
|
53
|
+
selectorId: currentId,
|
|
54
|
+
};
|
|
55
|
+
config.onDeselect();
|
|
56
|
+
escapeHandler = (ev) => {
|
|
57
|
+
if (ev.key === "Escape") {
|
|
58
|
+
ev.stopPropagation();
|
|
59
|
+
closeDropdown();
|
|
60
|
+
restoreSelection();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
document.addEventListener("keydown", escapeHandler, true);
|
|
64
|
+
showDropdown(label, layers, currentId, { onSelect: selectLayer, onHover: showLayerPreview, onHoverEnd: clearLayerPreview });
|
|
44
65
|
}
|
|
45
66
|
};
|
|
46
67
|
const attachToOverlay = (overlay, element) => {
|
|
@@ -55,25 +76,7 @@ export function createLayerController(deps) {
|
|
|
55
76
|
const currentId = getElementSelectorId(element);
|
|
56
77
|
enhanceLabelWithChevron(label);
|
|
57
78
|
label.addEventListener("click", (e) => {
|
|
58
|
-
e
|
|
59
|
-
e.preventDefault();
|
|
60
|
-
if (isDropdownOpen()) {
|
|
61
|
-
closeDropdown();
|
|
62
|
-
reselectDropdownSource();
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
dropdownSourceElement = element;
|
|
66
|
-
deps.onDeselect();
|
|
67
|
-
escapeHandler = (ev) => {
|
|
68
|
-
if (ev.key === "Escape") {
|
|
69
|
-
ev.stopPropagation();
|
|
70
|
-
closeDropdown();
|
|
71
|
-
reselectDropdownSource();
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
document.addEventListener("keydown", escapeHandler, true);
|
|
75
|
-
showDropdown(label, layers, currentId, selectElementFromLayer, showLayerPreview, clearLayerPreview);
|
|
76
|
-
}
|
|
79
|
+
handleLabelClick(e, label, element, layers, currentId);
|
|
77
80
|
});
|
|
78
81
|
};
|
|
79
82
|
const cleanup = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/controller.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,MAAM,UAAU,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/** Dropdown UI component for layer navigation */
|
|
2
|
-
import type { LayerInfo,
|
|
2
|
+
import type { LayerInfo, DropdownCallbacks } from "./types.js";
|
|
3
3
|
/** Create the dropdown DOM element with layer items */
|
|
4
|
-
export declare function createDropdownElement(layers: LayerInfo[], currentSelectorId: string | null,
|
|
4
|
+
export declare function createDropdownElement(layers: LayerInfo[], currentSelectorId: string | null, callbacks: DropdownCallbacks): HTMLDivElement;
|
|
5
5
|
/** Add chevron indicator and pointer-events to the label */
|
|
6
6
|
export declare function enhanceLabelWithChevron(label: HTMLDivElement): void;
|
|
7
7
|
/** Show the dropdown below the label element */
|
|
8
|
-
export declare function showDropdown(label: HTMLDivElement, layers: LayerInfo[], currentSelectorId: string | null,
|
|
8
|
+
export declare function showDropdown(label: HTMLDivElement, layers: LayerInfo[], currentSelectorId: string | null, callbacks: DropdownCallbacks): void;
|
|
9
9
|
/** Close the active dropdown and clean up listeners */
|
|
10
10
|
export declare function closeDropdown(): void;
|
|
11
11
|
/** Check if a dropdown is currently visible */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-ui.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/dropdown-ui.ts"],"names":[],"mappings":"AAAA,iDAAiD;
|
|
1
|
+
{"version":3,"file":"dropdown-ui.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/dropdown-ui.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAgBjD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA+C/D,uDAAuD;AACvD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EAAE,EACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,SAAS,EAAE,iBAAiB,GAC3B,cAAc,CAWhB;AAED,4DAA4D;AAC5D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAUnE;AAgED,gDAAgD;AAChD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,SAAS,EAAE,EACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,SAAS,EAAE,iBAAiB,GAC3B,IAAI,CAgCN;AAED,uDAAuD;AACvD,wBAAgB,aAAa,IAAI,IAAI,CAyBpC;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,IAAI,OAAO,CAExC"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
/** Dropdown UI component for layer navigation */
|
|
2
|
-
import { DROPDOWN_CONTAINER_STYLES, DROPDOWN_ITEM_BASE_STYLES, DROPDOWN_ITEM_ACTIVE_COLOR, DROPDOWN_ITEM_ACTIVE_BG, DROPDOWN_ITEM_ACTIVE_FONT_WEIGHT, DROPDOWN_ITEM_HOVER_BG, DEPTH_INDENT_PX,
|
|
2
|
+
import { DROPDOWN_CONTAINER_STYLES, DROPDOWN_ITEM_BASE_STYLES, DROPDOWN_ITEM_ACTIVE_COLOR, DROPDOWN_ITEM_ACTIVE_BG, DROPDOWN_ITEM_ACTIVE_FONT_WEIGHT, DROPDOWN_ITEM_HOVER_BG, DEPTH_INDENT_PX, BASE_PADDING_PX, CHEVRON_COLLAPSED, CHEVRON_EXPANDED, LAYER_DROPDOWN_ATTR, } from "./consts.js";
|
|
3
3
|
import { applyStyles, getLayerDisplayName } from "./utils.js";
|
|
4
4
|
let activeDropdown = null;
|
|
5
|
+
let activeLabel = null;
|
|
5
6
|
let outsideMousedownHandler = null;
|
|
6
7
|
let activeOnHoverEnd = null;
|
|
7
8
|
let activeKeydownHandler = null;
|
|
8
|
-
function createDropdownItem(layer, isActive, onSelect, onHover, onHoverEnd) {
|
|
9
|
+
function createDropdownItem(layer, isActive, { onSelect, onHover, onHoverEnd }) {
|
|
9
10
|
const item = document.createElement("div");
|
|
10
11
|
item.textContent = getLayerDisplayName(layer);
|
|
11
12
|
applyStyles(item, DROPDOWN_ITEM_BASE_STYLES);
|
|
12
13
|
const depth = layer.depth ?? 0;
|
|
13
14
|
if (depth > 0) {
|
|
14
|
-
item.style.paddingLeft = `${
|
|
15
|
+
item.style.paddingLeft = `${BASE_PADDING_PX + depth * DEPTH_INDENT_PX}px`;
|
|
15
16
|
}
|
|
16
17
|
if (isActive) {
|
|
17
18
|
item.style.color = DROPDOWN_ITEM_ACTIVE_COLOR;
|
|
@@ -38,27 +39,29 @@ function createDropdownItem(layer, isActive, onSelect, onHover, onHoverEnd) {
|
|
|
38
39
|
return item;
|
|
39
40
|
}
|
|
40
41
|
/** Create the dropdown DOM element with layer items */
|
|
41
|
-
export function createDropdownElement(layers, currentSelectorId,
|
|
42
|
+
export function createDropdownElement(layers, currentSelectorId, callbacks) {
|
|
42
43
|
const container = document.createElement("div");
|
|
43
44
|
container.setAttribute(LAYER_DROPDOWN_ATTR, "true");
|
|
44
45
|
applyStyles(container, DROPDOWN_CONTAINER_STYLES);
|
|
45
46
|
layers.forEach((layer) => {
|
|
46
47
|
const isActive = layer.selectorId === currentSelectorId;
|
|
47
|
-
container.appendChild(createDropdownItem(layer, isActive,
|
|
48
|
+
container.appendChild(createDropdownItem(layer, isActive, callbacks));
|
|
48
49
|
});
|
|
49
50
|
return container;
|
|
50
51
|
}
|
|
51
52
|
/** Add chevron indicator and pointer-events to the label */
|
|
52
53
|
export function enhanceLabelWithChevron(label) {
|
|
53
|
-
|
|
54
|
+
const t = label.textContent ?? "";
|
|
55
|
+
if (t.endsWith(CHEVRON_COLLAPSED) || t.endsWith(CHEVRON_EXPANDED))
|
|
54
56
|
return;
|
|
55
|
-
label.textContent =
|
|
57
|
+
label.textContent = t + CHEVRON_COLLAPSED;
|
|
56
58
|
label.style.cursor = "pointer";
|
|
57
59
|
label.style.userSelect = "none";
|
|
60
|
+
label.style.whiteSpace = "nowrap";
|
|
58
61
|
label.style.pointerEvents = "auto";
|
|
59
62
|
label.setAttribute(LAYER_DROPDOWN_ATTR, "true");
|
|
60
63
|
}
|
|
61
|
-
function setupKeyboardNavigation(dropdown, layers, currentSelectorId, onSelect, onHover, onHoverEnd) {
|
|
64
|
+
function setupKeyboardNavigation(dropdown, layers, currentSelectorId, { onSelect, onHover, onHoverEnd }) {
|
|
62
65
|
const items = Array.from(dropdown.children);
|
|
63
66
|
let focusedIndex = layers.findIndex((l) => l.selectorId === currentSelectorId);
|
|
64
67
|
const setFocusedItem = (index) => {
|
|
@@ -113,14 +116,17 @@ function setupOutsideClickHandler(dropdown, label) {
|
|
|
113
116
|
}, 0);
|
|
114
117
|
}
|
|
115
118
|
/** Show the dropdown below the label element */
|
|
116
|
-
export function showDropdown(label, layers, currentSelectorId,
|
|
119
|
+
export function showDropdown(label, layers, currentSelectorId, callbacks) {
|
|
117
120
|
closeDropdown();
|
|
118
|
-
const dropdown = createDropdownElement(layers, currentSelectorId,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
const dropdown = createDropdownElement(layers, currentSelectorId, {
|
|
122
|
+
...callbacks,
|
|
123
|
+
onSelect: (layer) => {
|
|
124
|
+
if (callbacks.onHoverEnd)
|
|
125
|
+
callbacks.onHoverEnd();
|
|
126
|
+
callbacks.onSelect(layer);
|
|
127
|
+
closeDropdown();
|
|
128
|
+
},
|
|
129
|
+
});
|
|
124
130
|
const overlay = label.parentElement;
|
|
125
131
|
if (!overlay)
|
|
126
132
|
return;
|
|
@@ -128,12 +134,20 @@ export function showDropdown(label, layers, currentSelectorId, onSelect, onHover
|
|
|
128
134
|
dropdown.style.left = `${label.offsetLeft}px`;
|
|
129
135
|
overlay.appendChild(dropdown);
|
|
130
136
|
activeDropdown = dropdown;
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
activeLabel = label;
|
|
138
|
+
if (label.textContent?.endsWith(CHEVRON_COLLAPSED.trim())) {
|
|
139
|
+
label.textContent = label.textContent.slice(0, -CHEVRON_COLLAPSED.length) + CHEVRON_EXPANDED;
|
|
140
|
+
}
|
|
141
|
+
activeOnHoverEnd = callbacks.onHoverEnd ?? null;
|
|
142
|
+
setupKeyboardNavigation(dropdown, layers, currentSelectorId, callbacks);
|
|
133
143
|
setupOutsideClickHandler(dropdown, label);
|
|
134
144
|
}
|
|
135
145
|
/** Close the active dropdown and clean up listeners */
|
|
136
146
|
export function closeDropdown() {
|
|
147
|
+
if (activeLabel?.textContent?.includes(CHEVRON_EXPANDED)) {
|
|
148
|
+
activeLabel.textContent = activeLabel.textContent.replace(CHEVRON_EXPANDED, CHEVRON_COLLAPSED);
|
|
149
|
+
}
|
|
150
|
+
activeLabel = null;
|
|
137
151
|
if (activeOnHoverEnd) {
|
|
138
152
|
activeOnHoverEnd();
|
|
139
153
|
activeOnHoverEnd = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-ui.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/dropdown-ui.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACtB,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"dropdown-ui.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/dropdown-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,12 @@ export interface LayerInfo {
|
|
|
8
8
|
export type OnLayerSelect = (layer: LayerInfo) => void;
|
|
9
9
|
export type OnLayerHover = (layer: LayerInfo) => void;
|
|
10
10
|
export type OnLayerHoverEnd = () => void;
|
|
11
|
-
export interface
|
|
11
|
+
export interface DropdownCallbacks {
|
|
12
|
+
onSelect: OnLayerSelect;
|
|
13
|
+
onHover?: OnLayerHover;
|
|
14
|
+
onHoverEnd?: OnLayerHoverEnd;
|
|
15
|
+
}
|
|
16
|
+
export interface LayerControllerConfig {
|
|
12
17
|
createPreviewOverlay: (element: Element) => HTMLDivElement;
|
|
13
18
|
getSelectedElementId: () => string | null;
|
|
14
19
|
selectElement: (element: Element) => HTMLDivElement | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC;AAEzC,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,cAAc,CAAC;IAC3D,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,cAAc,GAAG,SAAS,CAAC;IAChE,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB"}
|
|
@@ -8,13 +8,15 @@ export declare function getLayerDisplayName(layer: LayerInfo): string;
|
|
|
8
8
|
* Collect instrumented descendants up to `maxDepth` instrumented nesting levels.
|
|
9
9
|
* Non-instrumented wrappers are walked through without counting toward depth.
|
|
10
10
|
* Results are in DOM order.
|
|
11
|
+
* When `startDepth` is provided, assigns `depth` to each item during collection.
|
|
11
12
|
*/
|
|
12
|
-
export declare function getInstrumentedDescendants(parent: Element, maxDepth: number): LayerInfo[];
|
|
13
|
+
export declare function getInstrumentedDescendants(parent: Element, maxDepth: number, startDepth?: number): LayerInfo[];
|
|
13
14
|
/**
|
|
14
15
|
* Build the layer chain for the dropdown:
|
|
15
16
|
*
|
|
16
17
|
* Parents – up to MAX_PARENT_DEPTH instrumented ancestors, outer → inner.
|
|
17
|
-
*
|
|
18
|
+
* Siblings – instrumented children of the immediate parent, at the same depth.
|
|
19
|
+
* Current – the selected element (highlighted), with children expanded.
|
|
18
20
|
* Children – instrumented descendants within MAX_CHILD_DEPTH levels, DOM order.
|
|
19
21
|
*
|
|
20
22
|
* Each item carries a `depth` for visual indentation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/utils.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAKlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEtF;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAE5D;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/utils.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAKlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEtF;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAE5D;AAYD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,SAAS,EAAE,CA0Bb;AA0ED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,EAAE,CAcrE"}
|
|
@@ -9,12 +9,23 @@ export function applyStyles(element, styles) {
|
|
|
9
9
|
export function getLayerDisplayName(layer) {
|
|
10
10
|
return layer.tagName;
|
|
11
11
|
}
|
|
12
|
+
function toLayerInfo(element, depth) {
|
|
13
|
+
const info = {
|
|
14
|
+
element,
|
|
15
|
+
tagName: element.tagName.toLowerCase(),
|
|
16
|
+
selectorId: getElementSelectorId(element),
|
|
17
|
+
};
|
|
18
|
+
if (depth !== undefined)
|
|
19
|
+
info.depth = depth;
|
|
20
|
+
return info;
|
|
21
|
+
}
|
|
12
22
|
/**
|
|
13
23
|
* Collect instrumented descendants up to `maxDepth` instrumented nesting levels.
|
|
14
24
|
* Non-instrumented wrappers are walked through without counting toward depth.
|
|
15
25
|
* Results are in DOM order.
|
|
26
|
+
* When `startDepth` is provided, assigns `depth` to each item during collection.
|
|
16
27
|
*/
|
|
17
|
-
export function getInstrumentedDescendants(parent, maxDepth) {
|
|
28
|
+
export function getInstrumentedDescendants(parent, maxDepth, startDepth) {
|
|
18
29
|
const result = [];
|
|
19
30
|
function walk(el, instrDepth) {
|
|
20
31
|
if (instrDepth > maxDepth)
|
|
@@ -22,11 +33,15 @@ export function getInstrumentedDescendants(parent, maxDepth) {
|
|
|
22
33
|
for (let i = 0; i < el.children.length; i++) {
|
|
23
34
|
const child = el.children[i];
|
|
24
35
|
if (isInstrumentedElement(child)) {
|
|
25
|
-
|
|
36
|
+
const info = {
|
|
26
37
|
element: child,
|
|
27
38
|
tagName: child.tagName.toLowerCase(),
|
|
28
39
|
selectorId: getElementSelectorId(child),
|
|
29
|
-
}
|
|
40
|
+
};
|
|
41
|
+
if (startDepth !== undefined) {
|
|
42
|
+
info.depth = startDepth + instrDepth - 1;
|
|
43
|
+
}
|
|
44
|
+
result.push(info);
|
|
30
45
|
walk(child, instrDepth + 1);
|
|
31
46
|
}
|
|
32
47
|
else {
|
|
@@ -37,17 +52,8 @@ export function getInstrumentedDescendants(parent, maxDepth) {
|
|
|
37
52
|
walk(parent, 1);
|
|
38
53
|
return result;
|
|
39
54
|
}
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
*
|
|
43
|
-
* Parents – up to MAX_PARENT_DEPTH instrumented ancestors, outer → inner.
|
|
44
|
-
* Current – the selected element.
|
|
45
|
-
* Children – instrumented descendants within MAX_CHILD_DEPTH levels, DOM order.
|
|
46
|
-
*
|
|
47
|
-
* Each item carries a `depth` for visual indentation.
|
|
48
|
-
*/
|
|
49
|
-
export function buildLayerChain(selectedElement) {
|
|
50
|
-
// --- Parents (walk up, collect at most MAX_PARENT_DEPTH) ---
|
|
55
|
+
/** Collect instrumented ancestors from selected element up to MAX_PARENT_DEPTH (outermost first). */
|
|
56
|
+
function collectInstrumentedParents(selectedElement) {
|
|
51
57
|
const parents = [];
|
|
52
58
|
let current = selectedElement.parentElement;
|
|
53
59
|
while (current &&
|
|
@@ -55,59 +61,71 @@ export function buildLayerChain(selectedElement) {
|
|
|
55
61
|
current !== document.body &&
|
|
56
62
|
parents.length < MAX_PARENT_DEPTH) {
|
|
57
63
|
if (isInstrumentedElement(current)) {
|
|
58
|
-
parents.push(
|
|
59
|
-
element: current,
|
|
60
|
-
tagName: current.tagName.toLowerCase(),
|
|
61
|
-
selectorId: getElementSelectorId(current),
|
|
62
|
-
});
|
|
64
|
+
parents.push(toLayerInfo(current));
|
|
63
65
|
}
|
|
64
66
|
current = current.parentElement;
|
|
65
67
|
}
|
|
66
|
-
// Reverse so outermost parent comes first
|
|
67
68
|
parents.reverse();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
return parents;
|
|
70
|
+
}
|
|
71
|
+
/** Add parents to chain with depth 0, 1, …; returns depth of selected (parents.length). */
|
|
72
|
+
function addParentsToChain(chain, parents) {
|
|
72
73
|
parents.forEach((p, i) => {
|
|
73
|
-
chain.push({ ...p, depth:
|
|
74
|
-
});
|
|
75
|
-
// Self
|
|
76
|
-
const selfDepth = parents.length;
|
|
77
|
-
chain.push({
|
|
78
|
-
element: selectedElement,
|
|
79
|
-
tagName: selectedElement.tagName.toLowerCase(),
|
|
80
|
-
selectorId: getElementSelectorId(selectedElement),
|
|
81
|
-
depth: selfDepth,
|
|
74
|
+
chain.push({ ...p, depth: i });
|
|
82
75
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
return parents.length;
|
|
77
|
+
}
|
|
78
|
+
/** Add selected element and its descendants at the given depth. */
|
|
79
|
+
function addSelfAndDescendantsToChain(chain, selectedElement, selfDepth) {
|
|
80
|
+
chain.push(toLayerInfo(selectedElement, selfDepth));
|
|
81
|
+
const descendants = getInstrumentedDescendants(selectedElement, MAX_CHILD_DEPTH, selfDepth + 1);
|
|
87
82
|
chain.push(...descendants);
|
|
88
|
-
|
|
83
|
+
}
|
|
84
|
+
/** Get the innermost instrumented parent's DOM element, or null if none. */
|
|
85
|
+
function getImmediateInstrParent(parents) {
|
|
86
|
+
return parents.at(-1)?.element ?? null;
|
|
87
|
+
}
|
|
88
|
+
/** Collect instrumented siblings of the selected element from its parent (DOM order). */
|
|
89
|
+
function collectSiblings(parent, selectedElement) {
|
|
90
|
+
const siblings = getInstrumentedDescendants(parent, 1);
|
|
91
|
+
if (!siblings.some((s) => s.element === selectedElement)) {
|
|
92
|
+
siblings.push(toLayerInfo(selectedElement));
|
|
93
|
+
}
|
|
94
|
+
return siblings;
|
|
95
|
+
}
|
|
96
|
+
/** Add siblings at selfDepth, expanding children only for the selected element. */
|
|
97
|
+
function appendSiblingsWithSelected(chain, siblings, selectedElement, selfDepth) {
|
|
98
|
+
for (const sibling of siblings) {
|
|
99
|
+
if (sibling.element === selectedElement) {
|
|
100
|
+
addSelfAndDescendantsToChain(chain, selectedElement, selfDepth);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
chain.push({ ...sibling, depth: selfDepth });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
89
106
|
}
|
|
90
107
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
108
|
+
* Build the layer chain for the dropdown:
|
|
109
|
+
*
|
|
110
|
+
* Parents – up to MAX_PARENT_DEPTH instrumented ancestors, outer → inner.
|
|
111
|
+
* Siblings – instrumented children of the immediate parent, at the same depth.
|
|
112
|
+
* Current – the selected element (highlighted), with children expanded.
|
|
113
|
+
* Children – instrumented descendants within MAX_CHILD_DEPTH levels, DOM order.
|
|
114
|
+
*
|
|
115
|
+
* Each item carries a `depth` for visual indentation.
|
|
93
116
|
*/
|
|
94
|
-
function
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (descSet.has(child)) {
|
|
103
|
-
descMap.get(child).depth = startDepth + instrDepth - 1;
|
|
104
|
-
walk(child, instrDepth + 1);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
walk(child, instrDepth);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
117
|
+
export function buildLayerChain(selectedElement) {
|
|
118
|
+
const parents = collectInstrumentedParents(selectedElement);
|
|
119
|
+
const chain = [];
|
|
120
|
+
const selfDepth = addParentsToChain(chain, parents);
|
|
121
|
+
const instrParent = getImmediateInstrParent(parents);
|
|
122
|
+
if (instrParent) {
|
|
123
|
+
const siblings = collectSiblings(instrParent, selectedElement);
|
|
124
|
+
appendSiblingsWithSelected(chain, siblings, selectedElement, selfDepth);
|
|
110
125
|
}
|
|
111
|
-
|
|
126
|
+
else {
|
|
127
|
+
addSelfAndDescendantsToChain(chain, selectedElement, selfDepth);
|
|
128
|
+
}
|
|
129
|
+
return chain;
|
|
112
130
|
}
|
|
113
131
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/utils.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIhE,sCAAsC;AACtC,MAAM,UAAU,WAAW,CAAC,OAAoB,EAAE,MAA8B;IAC9E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAClD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/injections/layer-dropdown/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
export declare function isInstrumentedElement(element: Element): boolean;
|
|
3
3
|
/** Get the selector ID from an element's data attributes (prefers source-location) */
|
|
4
4
|
export declare function getElementSelectorId(element: Element): string | null;
|
|
5
|
-
/** Find the nearest instrumented ancestor (not the element itself) */
|
|
6
|
-
export declare function getImmediateInstrumentedParent(element: Element): Element | null;
|
|
7
5
|
/** Find elements by ID - first try data-source-location, fallback to data-visual-selector-id */
|
|
8
6
|
export declare function findElementsById(id: string | null): Element[];
|
|
9
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/injections/utils.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAK/D;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAOpE;AAED,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/injections/utils.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAK/D;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAOpE;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,EAAE,CAW7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/E"}
|