tree-element 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -6
- package/lib/animation.d.ts +2 -2
- package/lib/animation.d.ts.map +1 -1
- package/lib/animation.js +13 -9
- package/lib/animation.js.map +1 -1
- package/lib/dataLoader.d.ts +1 -0
- package/lib/dataLoader.d.ts.map +1 -1
- package/lib/dataLoader.js +8 -0
- package/lib/dataLoader.js.map +1 -1
- package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
- package/lib/dragAndDropHandler/dragElement.js +2 -1
- package/lib/dragAndDropHandler/dragElement.js.map +1 -1
- package/lib/dragAndDropHandler/index.d.ts.map +1 -1
- package/lib/dragAndDropHandler/index.js +56 -65
- package/lib/dragAndDropHandler/index.js.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.js +16 -15
- package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
- package/lib/elementsRenderer.d.ts +5 -1
- package/lib/elementsRenderer.d.ts.map +1 -1
- package/lib/elementsRenderer.js +62 -39
- package/lib/elementsRenderer.js.map +1 -1
- package/lib/events.d.ts +44 -11
- package/lib/events.d.ts.map +1 -1
- package/lib/index.d.ts +31 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +162 -122
- package/lib/index.js.map +1 -1
- package/lib/keyHandler.d.ts +11 -5
- package/lib/keyHandler.d.ts.map +1 -1
- package/lib/keyHandler.js +87 -33
- package/lib/keyHandler.js.map +1 -1
- package/lib/methodTypes.d.ts +2 -2
- package/lib/methodTypes.d.ts.map +1 -1
- package/lib/mouseHandler.d.ts +1 -1
- package/lib/mouseHandler.d.ts.map +1 -1
- package/lib/mouseHandler.js +10 -7
- package/lib/mouseHandler.js.map +1 -1
- package/lib/node.d.ts +45 -15
- package/lib/node.d.ts.map +1 -1
- package/lib/node.js +136 -139
- package/lib/node.js.map +1 -1
- package/lib/nodeElement/folderElement.d.ts +1 -1
- package/lib/nodeElement/folderElement.d.ts.map +1 -1
- package/lib/nodeElement/folderElement.js +46 -57
- package/lib/nodeElement/folderElement.js.map +1 -1
- package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
- package/lib/nodeElement/ghostDropHint.js +8 -4
- package/lib/nodeElement/ghostDropHint.js.map +1 -1
- package/lib/nodeElement/index.d.ts.map +1 -1
- package/lib/nodeElement/index.js +6 -6
- package/lib/nodeElement/index.js.map +1 -1
- package/lib/nodeUtils.d.ts.map +1 -1
- package/lib/nodeUtils.js +1 -1
- package/lib/nodeUtils.js.map +1 -1
- package/lib/options.d.ts +23 -6
- package/lib/options.d.ts.map +1 -1
- package/lib/requestUrl.d.ts +0 -1
- package/lib/requestUrl.d.ts.map +1 -1
- package/lib/requestUrl.js +4 -22
- package/lib/requestUrl.js.map +1 -1
- package/lib/saveStateHandler.d.ts.map +1 -1
- package/lib/saveStateHandler.js +21 -41
- package/lib/saveStateHandler.js.map +1 -1
- package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/containerScrollParent.js +3 -8
- package/lib/scrollHandler/containerScrollParent.js.map +1 -1
- package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/createScrollParent.js +4 -5
- package/lib/scrollHandler/createScrollParent.js.map +1 -1
- package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/documentScrollParent.js +3 -9
- package/lib/scrollHandler/documentScrollParent.js.map +1 -1
- package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/scrollParent.js +19 -17
- package/lib/scrollHandler/scrollParent.js.map +1 -1
- package/lib/selectNodeHandler.d.ts +3 -1
- package/lib/selectNodeHandler.d.ts.map +1 -1
- package/lib/selectNodeHandler.js +27 -37
- package/lib/selectNodeHandler.js.map +1 -1
- package/lib/setDefaultOptions.d.ts +3 -0
- package/lib/setDefaultOptions.d.ts.map +1 -1
- package/lib/setDefaultOptions.js +21 -20
- package/lib/setDefaultOptions.js.map +1 -1
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +1 -1
- package/lib/util.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +44 -35
- package/src/animation.ts +13 -11
- package/src/dataLoader.ts +11 -0
- package/src/dragAndDropHandler/dragElement.ts +2 -1
- package/src/dragAndDropHandler/index.ts +70 -75
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +18 -16
- package/src/elementsRenderer.ts +76 -46
- package/src/events.ts +44 -11
- package/src/index.ts +210 -150
- package/src/keyHandler.ts +95 -41
- package/src/methodTypes.ts +3 -3
- package/src/mouseHandler.ts +10 -7
- package/src/node.ts +155 -148
- package/src/nodeElement/folderElement.ts +54 -63
- package/src/nodeElement/ghostDropHint.ts +4 -2
- package/src/nodeElement/index.ts +9 -15
- package/src/nodeUtils.ts +1 -1
- package/src/options.ts +23 -6
- package/src/requestUrl.ts +4 -25
- package/src/saveStateHandler.ts +29 -43
- package/src/scrollHandler/containerScrollParent.ts +3 -9
- package/src/scrollHandler/createScrollParent.ts +1 -2
- package/src/scrollHandler/documentScrollParent.ts +5 -11
- package/src/scrollHandler/scrollParent.ts +29 -25
- package/src/selectNodeHandler.ts +34 -38
- package/src/setDefaultOptions.ts +31 -19
- package/src/util.ts +1 -2
- package/src/version.ts +1 -1
- package/tree_element.css +87 -69
- package/tree_element.debug.js +717 -659
- package/tree_element.debug.js.map +1 -1
- package/tree_element.js +2 -2
- package/tree_element.js.map +1 -1
|
@@ -25,7 +25,7 @@ class FolderElement extends NodeElement {
|
|
|
25
25
|
this._renderChildren = renderChildren;
|
|
26
26
|
this._triggerEvent = triggerEvent;
|
|
27
27
|
}
|
|
28
|
-
_close(slide, animationSpeed) {
|
|
28
|
+
async _close(slide, animationSpeed) {
|
|
29
29
|
if (!this._node.is_open) {
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
@@ -38,80 +38,69 @@ class FolderElement extends NodeElement {
|
|
|
38
38
|
}
|
|
39
39
|
let button = this._getButton();
|
|
40
40
|
button.classList.add(this._classNames.closed);
|
|
41
|
-
button.
|
|
41
|
+
button.replaceChildren();
|
|
42
42
|
let closedIconElement = this._closedIconElement;
|
|
43
43
|
if (closedIconElement) {
|
|
44
44
|
let icon = closedIconElement.cloneNode(true);
|
|
45
|
-
button.
|
|
45
|
+
button.append(icon);
|
|
46
46
|
}
|
|
47
|
-
let doClose = () => {
|
|
48
|
-
this._element.classList.add(this._classNames.closed);
|
|
49
|
-
let titleSpan = this._getTitleSpan();
|
|
50
|
-
titleSpan.setAttribute("aria-expanded", "false");
|
|
51
|
-
this._triggerEvent("tree.close", {
|
|
52
|
-
node: this._node
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
47
|
let ul = this._getUl();
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
doClose();
|
|
48
|
+
if (ul) {
|
|
49
|
+
if (slide) {
|
|
50
|
+
await slideUp(ul, animationSpeed);
|
|
51
|
+
} else {
|
|
52
|
+
ul.style.display = "none";
|
|
53
|
+
}
|
|
63
54
|
}
|
|
55
|
+
this._element.classList.add(this._classNames.closed);
|
|
56
|
+
let titleSpan = this._getTitleSpan();
|
|
57
|
+
titleSpan.setAttribute("aria-expanded", "false");
|
|
58
|
+
this._triggerEvent("tree.close", {
|
|
59
|
+
node: this._node
|
|
60
|
+
});
|
|
64
61
|
}
|
|
65
62
|
async _open(slide, animationSpeed) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
let icon = openedIconElement.cloneNode(true);
|
|
86
|
-
button.appendChild(icon);
|
|
87
|
-
}
|
|
88
|
-
let doOpen = () => {
|
|
89
|
-
this._element.classList.remove(this._classNames.closed);
|
|
90
|
-
let titleSpan = this._getTitleSpan();
|
|
91
|
-
titleSpan.setAttribute("aria-expanded", "true");
|
|
92
|
-
this._triggerEvent("tree.open", {
|
|
93
|
-
node: this._node
|
|
94
|
-
});
|
|
95
|
-
resolve();
|
|
96
|
-
};
|
|
63
|
+
if (this._node.is_open) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this._node.is_open = true;
|
|
67
|
+
if (!this._isRendered()) {
|
|
68
|
+
// The folder is rendered open when its parent is opened
|
|
69
|
+
this._triggerEvent("tree.open", {
|
|
70
|
+
node: this._node
|
|
71
|
+
});
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
let button = this._getButton();
|
|
75
|
+
button.classList.remove(this._classNames.closed);
|
|
76
|
+
button.replaceChildren();
|
|
77
|
+
let openedIconElement = this._openedIconElement;
|
|
78
|
+
if (openedIconElement) {
|
|
79
|
+
let icon = openedIconElement.cloneNode(true);
|
|
80
|
+
button.append(icon);
|
|
81
|
+
}
|
|
97
82
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
slideDown(ul, animationSpeed, doOpen);
|
|
83
|
+
// The children are rendered the first time the folder is opened
|
|
84
|
+
let ul = this._getUl() ?? this._renderChildren(this._node);
|
|
85
|
+
if (ul) {
|
|
86
|
+
if (slide) {
|
|
87
|
+
await slideDown(ul, animationSpeed);
|
|
104
88
|
} else {
|
|
105
89
|
ul.style.display = "block";
|
|
106
|
-
doOpen();
|
|
107
90
|
}
|
|
91
|
+
}
|
|
92
|
+
this._element.classList.remove(this._classNames.closed);
|
|
93
|
+
let titleSpan = this._getTitleSpan();
|
|
94
|
+
titleSpan.setAttribute("aria-expanded", "true");
|
|
95
|
+
this._triggerEvent("tree.open", {
|
|
96
|
+
node: this._node
|
|
108
97
|
});
|
|
109
98
|
}
|
|
110
99
|
_mustShowBorderDropHint(position) {
|
|
111
100
|
return !this._node.is_open && position === "inside";
|
|
112
101
|
}
|
|
113
102
|
_getButton() {
|
|
114
|
-
return this._element.querySelector(`:scope > .${this._classNames.element} >
|
|
103
|
+
return this._element.querySelector(`:scope > .${this._classNames.element} > .${this._classNames.toggler}`);
|
|
115
104
|
}
|
|
116
105
|
}
|
|
117
106
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folderElement.js","sources":["../../src/nodeElement/folderElement.ts"],"sourcesContent":["import type { AnimationSpeed } from \"../animation\";\nimport type { TriggerEvent } from \"../methodTypes\";\nimport type { Node, Position } from \"../node\";\nimport type { NodeElementParams } from \"./index\";\n\nimport { slideDown, slideUp } from \"../animation\";\nimport NodeElement from \"./index\";\n\nexport type RenderChildren = (node: Node) => HTMLUListElement | null;\n\ninterface FolderElementParams extends NodeElementParams {\n closedIconElement?: globalThis.Node;\n openedIconElement?: globalThis.Node;\n renderChildren: RenderChildren;\n triggerEvent: TriggerEvent;\n}\n\nclass FolderElement extends NodeElement {\n private closedIconElement?: globalThis.Node;\n private openedIconElement?: globalThis.Node;\n private renderChildren: RenderChildren;\n private triggerEvent: TriggerEvent;\n\n constructor({\n classNames,\n closedIconElement,\n getScrollLeft,\n node,\n openedIconElement,\n renderChildren,\n tabIndex,\n treeElement,\n triggerEvent,\n }: FolderElementParams) {\n super({\n classNames,\n getScrollLeft,\n node,\n tabIndex,\n treeElement,\n });\n\n this.closedIconElement = closedIconElement;\n this.openedIconElement = openedIconElement;\n this.renderChildren = renderChildren;\n this.triggerEvent = triggerEvent;\n }\n\n public close(slide: boolean
|
|
1
|
+
{"version":3,"file":"folderElement.js","sources":["../../src/nodeElement/folderElement.ts"],"sourcesContent":["import type { AnimationSpeed } from \"../animation\";\nimport type { TriggerEvent } from \"../methodTypes\";\nimport type { Node, Position } from \"../node\";\nimport type { NodeElementParams } from \"./index\";\n\nimport { slideDown, slideUp } from \"../animation\";\nimport NodeElement from \"./index\";\n\nexport type RenderChildren = (node: Node) => HTMLUListElement | null;\n\ninterface FolderElementParams extends NodeElementParams {\n closedIconElement?: globalThis.Node;\n openedIconElement?: globalThis.Node;\n renderChildren: RenderChildren;\n triggerEvent: TriggerEvent;\n}\n\nclass FolderElement extends NodeElement {\n private closedIconElement?: globalThis.Node;\n private openedIconElement?: globalThis.Node;\n private renderChildren: RenderChildren;\n private triggerEvent: TriggerEvent;\n\n constructor({\n classNames,\n closedIconElement,\n getScrollLeft,\n node,\n openedIconElement,\n renderChildren,\n tabIndex,\n treeElement,\n triggerEvent,\n }: FolderElementParams) {\n super({\n classNames,\n getScrollLeft,\n node,\n tabIndex,\n treeElement,\n });\n\n this.closedIconElement = closedIconElement;\n this.openedIconElement = openedIconElement;\n this.renderChildren = renderChildren;\n this.triggerEvent = triggerEvent;\n }\n\n public async close(\n slide: boolean,\n animationSpeed: AnimationSpeed,\n ): Promise<void> {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n if (!this.isRendered()) {\n this.triggerEvent(\"tree.close\", { node: this.node });\n return;\n }\n\n const button = this.getButton();\n button.classList.add(this.classNames.closed);\n button.replaceChildren();\n\n const closedIconElement = this.closedIconElement;\n\n if (closedIconElement) {\n const icon = closedIconElement.cloneNode(true);\n button.append(icon);\n }\n\n const ul = this.getUl();\n\n if (ul) {\n if (slide) {\n await slideUp(ul, animationSpeed);\n } else {\n ul.style.display = \"none\";\n }\n }\n\n this.element.classList.add(this.classNames.closed);\n\n const titleSpan = this.getTitleSpan();\n titleSpan.setAttribute(\"aria-expanded\", \"false\");\n\n this.triggerEvent(\"tree.close\", {\n node: this.node,\n });\n }\n\n public async open(\n slide: boolean,\n animationSpeed: AnimationSpeed,\n ): Promise<void> {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n if (!this.isRendered()) {\n // The folder is rendered open when its parent is opened\n this.triggerEvent(\"tree.open\", { node: this.node });\n return;\n }\n\n const button = this.getButton();\n button.classList.remove(this.classNames.closed);\n button.replaceChildren();\n\n const openedIconElement = this.openedIconElement;\n\n if (openedIconElement) {\n const icon = openedIconElement.cloneNode(true);\n button.append(icon);\n }\n\n // The children are rendered the first time the folder is opened\n const ul = this.getUl() ?? this.renderChildren(this.node);\n\n if (ul) {\n if (slide) {\n await slideDown(ul, animationSpeed);\n } else {\n ul.style.display = \"block\";\n }\n }\n\n this.element.classList.remove(this.classNames.closed);\n\n const titleSpan = this.getTitleSpan();\n titleSpan.setAttribute(\"aria-expanded\", \"true\");\n\n this.triggerEvent(\"tree.open\", {\n node: this.node,\n });\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return !this.node.is_open && position === \"inside\";\n }\n\n private getButton(): HTMLElement {\n return this.element.querySelector(\n `:scope > .${this.classNames.element} > .${this.classNames.toggler}`,\n ) as HTMLElement;\n }\n}\n\nexport default FolderElement;\n"],"names":["closedIconElement","openedIconElement","renderChildren","triggerEvent","close","node","isRendered","getButton","classNames","getUl","element","getTitleSpan","open","mustShowBorderDropHint"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ghostDropHint.d.ts","sourceRoot":"","sources":["../../src/nodeElement/ghostDropHint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,cAAM,aAAc,YAAW,QAAQ;IACrC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,IAAI,CAAO;gBAGjB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"ghostDropHint.d.ts","sourceRoot":"","sources":["../../src/nodeElement/ghostDropHint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,cAAM,aAAc,YAAW,QAAQ;IACrC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,IAAI,CAAO;gBAGjB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU;IA4BjB,MAAM,IAAI,IAAI;IAIrB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,oBAAoB;CAO7B;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -6,11 +6,15 @@ class GhostDropHint {
|
|
|
6
6
|
this._ghost = this._createGhostElement();
|
|
7
7
|
switch (position) {
|
|
8
8
|
case "after":
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
{
|
|
10
|
+
this._moveAfter();
|
|
11
|
+
break;
|
|
12
|
+
}
|
|
11
13
|
case "before":
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
{
|
|
15
|
+
this._moveBefore();
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
14
18
|
case "inside":
|
|
15
19
|
{
|
|
16
20
|
if (node.isFolder() && node.is_open) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ghostDropHint.js","sources":["../../src/nodeElement/ghostDropHint.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type { DropHint } from \"../dragAndDropHandler/types\";\nimport type { Node, Position } from \"../node\";\n\nclass GhostDropHint implements DropHint {\n private classNames: ClassNames;\n private element: HTMLElement;\n private ghost: HTMLElement;\n private node: Node;\n\n constructor(\n node: Node,\n element: HTMLElement,\n position: Position,\n classNames: ClassNames,\n ) {\n this.classNames = classNames;\n this.element = element;\n this.node = node;\n this.ghost = this.createGhostElement();\n\n switch (position) {\n case \"after\"
|
|
1
|
+
{"version":3,"file":"ghostDropHint.js","sources":["../../src/nodeElement/ghostDropHint.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type { DropHint } from \"../dragAndDropHandler/types\";\nimport type { Node, Position } from \"../node\";\n\nclass GhostDropHint implements DropHint {\n private classNames: ClassNames;\n private element: HTMLElement;\n private ghost: HTMLElement;\n private node: Node;\n\n constructor(\n node: Node,\n element: HTMLElement,\n position: Position,\n classNames: ClassNames,\n ) {\n this.classNames = classNames;\n this.element = element;\n this.node = node;\n this.ghost = this.createGhostElement();\n\n switch (position) {\n case \"after\": {\n this.moveAfter();\n break;\n }\n\n case \"before\": {\n this.moveBefore();\n break;\n }\n\n case \"inside\": {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n }\n\n public remove(): void {\n this.ghost.remove();\n }\n\n private createGhostElement() {\n const { circle, common, ghost: ghostClass, line } = this.classNames;\n\n const ghost = document.createElement(\"li\");\n ghost.className = `${common} ${ghostClass}`;\n\n const circleSpan = document.createElement(\"span\");\n circleSpan.className = `${common} ${circle}`;\n ghost.append(circleSpan);\n\n const lineSpan = document.createElement(\"span\");\n lineSpan.className = `${common} ${line}`;\n ghost.append(lineSpan);\n\n return ghost;\n }\n\n private moveAfter(): void {\n this.element.after(this.ghost);\n }\n\n private moveBefore(): void {\n this.element.before(this.ghost);\n }\n\n private moveInside(): void {\n this.element.after(this.ghost);\n this.ghost.classList.add(this.classNames.inside);\n }\n\n private moveInsideOpenFolder(): void {\n const childElement = this.node.children[0]?.element;\n\n if (childElement) {\n childElement.before(this.ghost);\n }\n }\n}\n\nexport default GhostDropHint;\n"],"names":["classNames","element","node","ghost","createGhostElement","moveAfter","moveBefore","moveInsideOpenFolder","moveInside"],"mappings":"AAIA,MAAM,aAAa,CAAqB;EAMtC,WAAW,CACT,IAAU,EACV,OAAoB,EACpB,QAAkB,EAClB,UAAsB,EACtB;IACA,IAAI,CAACA,WAAU,GAAG,UAAU;IAC5B,IAAI,CAACC,QAAO,GAAG,OAAO;IACtB,IAAI,CAACC,KAAI,GAAG,IAAI;AAChB,IAAA,IAAI,CAACC,MAAK,GAAG,IAAI,CAACC,mBAAkB,EAAE;AAEtC,IAAA,QAAQ,QAAQ;AACd,MAAA,KAAK,OAAO;AAAE,QAAA;UACZ,IAAI,CAACC,UAAS,EAAE;AAChB,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;UACb,IAAI,CAACC,WAAU,EAAE;AACjB,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;UACb,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YACnC,IAAI,CAACC,qBAAoB,EAAE;AAC7B,UAAA,CAAC,MAAM;YACL,IAAI,CAACC,WAAU,EAAE;AACnB,UAAA;AACF,QAAA;AACF;AACF,EAAA;AAEO,EAAA,MAAM,GAAS;AACpB,IAAA,IAAI,CAACL,MAAK,CAAC,MAAM,EAAE;AACrB,EAAA;AAEQC,EAAAA,mBAAkBA,GAAG;IAC3B,IAAM;MAAE,MAAM;MAAE,MAAM;AAAE,MAAA,KAAK,EAAE,UAAU;AAAE,MAAA;KAAM,GAAG,IAAI,CAACJ,WAAU;AAEnE,IAAA,IAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1C,IAAA,KAAK,CAAC,SAAS,GAAG,GAAG,MAAM,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;AAE3C,IAAA,IAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACjD,IAAA,UAAU,CAAC,SAAS,GAAG,GAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;AAC5C,IAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;AAExB,IAAA,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/C,IAAA,QAAQ,CAAC,SAAS,GAAG,GAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;AACxC,IAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAEtB,IAAA,OAAO,KAAK;AACd,EAAA;AAEQK,EAAAA,UAASA,GAAS;IACxB,IAAI,CAACJ,QAAO,CAAC,KAAK,CAAC,IAAI,CAACE,MAAK,CAAC;AAChC,EAAA;AAEQG,EAAAA,WAAUA,GAAS;IACzB,IAAI,CAACL,QAAO,CAAC,MAAM,CAAC,IAAI,CAACE,MAAK,CAAC;AACjC,EAAA;AAEQK,EAAAA,WAAUA,GAAS;IACzB,IAAI,CAACP,QAAO,CAAC,KAAK,CAAC,IAAI,CAACE,MAAK,CAAC;AAC9B,IAAA,IAAI,CAACA,MAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAACH,WAAU,CAAC,MAAM,CAAC;AAClD,EAAA;AAEQO,EAAAA,qBAAoBA,GAAS;IACnC,IAAM,YAAY,GAAG,IAAI,CAACL,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO;AAEnD,IAAA,IAAI,YAAY,EAAE;AAChB,MAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAACC,MAAK,CAAC;AACjC,IAAA;AACF,EAAA;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nodeElement/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK9C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,cAAM,WAAW;IACR,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IAClB,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAc;gBAErB,EACV,UAAU,EACV,aAAa,EACb,IAAI,EACJ,QAAQ,EACR,WAAW,GACZ,EAAE,iBAAiB;IAWb,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nodeElement/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK9C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,cAAM,WAAW;IACR,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IAClB,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAc;gBAErB,EACV,UAAU,EACV,aAAa,EACb,IAAI,EACJ,QAAQ,EACR,WAAW,GACZ,EAAE,iBAAiB;IAWb,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAMzC,QAAQ,IAAI,IAAI;IAmBhB,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI;IAsB1C,SAAS,CAAC,YAAY,IAAI,eAAe;IAMzC,SAAS,CAAC,KAAK,IAAI,gBAAgB,GAAG,IAAI;IAO1C,SAAS,CAAC,UAAU,IAAI,OAAO;IAI/B,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;CAG9D;AAED,eAAe,WAAW,CAAC"}
|
package/lib/nodeElement/index.js
CHANGED
|
@@ -19,11 +19,7 @@ class NodeElement {
|
|
|
19
19
|
this._element = node.element ?? this._treeElement;
|
|
20
20
|
}
|
|
21
21
|
_addDropHint(position) {
|
|
22
|
-
|
|
23
|
-
return new BorderDropHint(this._element, this._getScrollLeft(), this._classNames);
|
|
24
|
-
} else {
|
|
25
|
-
return new GhostDropHint(this._node, this._element, position, this._classNames);
|
|
26
|
-
}
|
|
22
|
+
return this._mustShowBorderDropHint(position) ? new BorderDropHint(this._element, this._getScrollLeft(), this._classNames) : new GhostDropHint(this._node, this._element, position, this._classNames);
|
|
27
23
|
}
|
|
28
24
|
_deselect() {
|
|
29
25
|
if (!this._isRendered()) {
|
|
@@ -31,7 +27,11 @@ class NodeElement {
|
|
|
31
27
|
}
|
|
32
28
|
this._element.classList.remove(this._classNames.selected);
|
|
33
29
|
let titleSpan = this._getTitleSpan();
|
|
34
|
-
|
|
30
|
+
|
|
31
|
+
// Check for null or undefined
|
|
32
|
+
if (this._tabIndex != null) {
|
|
33
|
+
titleSpan.setAttribute("tabindex", "-1");
|
|
34
|
+
}
|
|
35
35
|
titleSpan.setAttribute("aria-selected", "false");
|
|
36
36
|
titleSpan.blur();
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/nodeElement/index.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type { DropHint } from \"../dragAndDropHandler/types\";\nimport type { GetScrollLeft } from \"../methodTypes\";\nimport type { Node, Position } from \"../node\";\n\nimport BorderDropHint from \"./borderDropHint\";\nimport GhostDropHint from \"./ghostDropHint\";\n\nexport interface NodeElementParams {\n classNames: ClassNames;\n getScrollLeft: GetScrollLeft;\n node: Node;\n tabIndex?: number;\n treeElement: HTMLElement;\n}\n\nclass NodeElement {\n public element: HTMLElement;\n public node: Node;\n protected classNames: ClassNames;\n private getScrollLeft: GetScrollLeft;\n private tabIndex?: number;\n private treeElement: HTMLElement;\n\n constructor({\n classNames,\n getScrollLeft,\n node,\n tabIndex,\n treeElement,\n }: NodeElementParams) {\n this.classNames = classNames;\n this.getScrollLeft = getScrollLeft;\n this.node = node;\n this.tabIndex = tabIndex;\n this.treeElement = treeElement;\n\n // The root node has no element of its own; it uses the tree element.\n this.element = node.element ?? this.treeElement;\n }\n\n public addDropHint(position: Position): DropHint {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/nodeElement/index.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type { DropHint } from \"../dragAndDropHandler/types\";\nimport type { GetScrollLeft } from \"../methodTypes\";\nimport type { Node, Position } from \"../node\";\n\nimport BorderDropHint from \"./borderDropHint\";\nimport GhostDropHint from \"./ghostDropHint\";\n\nexport interface NodeElementParams {\n classNames: ClassNames;\n getScrollLeft: GetScrollLeft;\n node: Node;\n tabIndex?: number;\n treeElement: HTMLElement;\n}\n\nclass NodeElement {\n public element: HTMLElement;\n public node: Node;\n protected classNames: ClassNames;\n private getScrollLeft: GetScrollLeft;\n private tabIndex?: number;\n private treeElement: HTMLElement;\n\n constructor({\n classNames,\n getScrollLeft,\n node,\n tabIndex,\n treeElement,\n }: NodeElementParams) {\n this.classNames = classNames;\n this.getScrollLeft = getScrollLeft;\n this.node = node;\n this.tabIndex = tabIndex;\n this.treeElement = treeElement;\n\n // The root node has no element of its own; it uses the tree element.\n this.element = node.element ?? this.treeElement;\n }\n\n public addDropHint(position: Position): DropHint {\n return this.mustShowBorderDropHint(position)\n ? new BorderDropHint(this.element, this.getScrollLeft(), this.classNames)\n : new GhostDropHint(this.node, this.element, position, this.classNames);\n }\n\n public deselect(): void {\n if (!this.isRendered()) {\n return;\n }\n\n this.element.classList.remove(this.classNames.selected);\n\n const titleSpan = this.getTitleSpan();\n\n // Check for null or undefined\n if (this.tabIndex != null) {\n titleSpan.setAttribute(\"tabindex\", \"-1\");\n }\n\n titleSpan.setAttribute(\"aria-selected\", \"false\");\n\n titleSpan.blur();\n }\n\n public select(mustSetFocus: boolean): void {\n if (!this.isRendered()) {\n return;\n }\n\n this.element.classList.add(this.classNames.selected);\n\n const titleSpan = this.getTitleSpan();\n const tabIndex = this.tabIndex;\n\n // Check for null or undefined\n if (tabIndex != null) {\n titleSpan.setAttribute(\"tabindex\", tabIndex.toString());\n }\n\n titleSpan.setAttribute(\"aria-selected\", \"true\");\n\n if (mustSetFocus) {\n titleSpan.focus();\n }\n }\n\n protected getTitleSpan(): HTMLSpanElement {\n return this.element.querySelector(\n `:scope > .${this.classNames.element} > span.${this.classNames.title}`,\n ) as HTMLSpanElement;\n }\n\n protected getUl(): HTMLUListElement | null {\n return this.element.querySelector(\":scope > ul\");\n }\n\n /* A node inside a closed folder is not rendered. Its selected and open\n * state is applied when it is rendered.\n */\n protected isRendered(): boolean {\n return Boolean(this.node.element);\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return position === \"inside\";\n }\n}\n\nexport default NodeElement;\n"],"names":["classNames","getScrollLeft","node","tabIndex","treeElement","element","addDropHint","mustShowBorderDropHint","deselect","isRendered","getTitleSpan","select","getUl"],"mappings":"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"}
|
package/lib/nodeUtils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeUtils.d.ts","sourceRoot":"","sources":["../src/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEnD,UAAU,sBAAuB,SAAQ,UAAU;IACjD,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,GACnC,MAAM,QAAQ,KACb,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"nodeUtils.d.ts","sourceRoot":"","sources":["../src/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEnD,UAAU,sBAAuB,SAAQ,UAAU;IACjD,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,GACnC,MAAM,QAAQ,KACb,IAAI,IAAI,sBAGmB,CAAC"}
|
package/lib/nodeUtils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
let isNodeRecordWithChildren = data => typeof data === "object" && "children" in data && data.children
|
|
1
|
+
let isNodeRecordWithChildren = data => typeof data === "object" && "children" in data && Array.isArray(data.children);
|
|
2
2
|
|
|
3
3
|
export { isNodeRecordWithChildren };
|
|
4
4
|
//# sourceMappingURL=nodeUtils.js.map
|
package/lib/nodeUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeUtils.js","sources":["../src/nodeUtils.ts"],"sourcesContent":["import type { NodeData, NodeRecord } from \"./node\";\n\ninterface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport const isNodeRecordWithChildren = (\n data: NodeData,\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data.children
|
|
1
|
+
{"version":3,"file":"nodeUtils.js","sources":["../src/nodeUtils.ts"],"sourcesContent":["import type { NodeData, NodeRecord } from \"./node\";\n\ninterface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport const isNodeRecordWithChildren = (\n data: NodeData,\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n Array.isArray(data.children);\n"],"names":[],"mappings":"AAMO,IAAM,wBAAwB,GACnC,IAAc,IAEd,OAAO,IAAI,KAAK,QAAQ,IACxB,UAAU,IAAI,IAAI,IAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;;"}
|
package/lib/options.d.ts
CHANGED
|
@@ -16,10 +16,25 @@ export interface TreeElementOptions {
|
|
|
16
16
|
* The duration of the slide animation: `"fast"` is 200ms, `"slow"` is
|
|
17
17
|
* 600ms, a number is milliseconds.
|
|
18
18
|
*
|
|
19
|
-
* @defaultValue `"fast"`
|
|
19
|
+
* @defaultValue `"fast"`, or `0` when the user prefers reduced motion
|
|
20
|
+
* (`prefers-reduced-motion: reduce`).
|
|
20
21
|
* @group Appearance
|
|
21
22
|
*/
|
|
22
23
|
animationSpeed: AnimationSpeed;
|
|
24
|
+
/**
|
|
25
|
+
* The accessible name of the tree, set as `aria-label` on the root `ul`.
|
|
26
|
+
* Use `ariaLabelledBy` instead when the name is visible on the page.
|
|
27
|
+
*
|
|
28
|
+
* @group Appearance
|
|
29
|
+
*/
|
|
30
|
+
ariaLabel?: string;
|
|
31
|
+
/**
|
|
32
|
+
* The id of the element that names the tree, set as `aria-labelledby` on
|
|
33
|
+
* the root `ul`.
|
|
34
|
+
*
|
|
35
|
+
* @group Appearance
|
|
36
|
+
*/
|
|
37
|
+
ariaLabelledBy?: string;
|
|
23
38
|
/**
|
|
24
39
|
* Escape node names. With `false`, names are inserted as html — only do
|
|
25
40
|
* that for data you control.
|
|
@@ -62,8 +77,8 @@ export interface TreeElementOptions {
|
|
|
62
77
|
*
|
|
63
78
|
* Type: `HTMLElement | string`
|
|
64
79
|
*
|
|
65
|
-
* @defaultValue
|
|
66
|
-
* true.
|
|
80
|
+
* @defaultValue An svg triangle pointing right, or left when `rtl` is
|
|
81
|
+
* true. It is sized in em and filled with `currentColor`.
|
|
67
82
|
* @group Appearance
|
|
68
83
|
*/
|
|
69
84
|
closedIcon?: IconElement;
|
|
@@ -109,7 +124,7 @@ export interface TreeElementOptions {
|
|
|
109
124
|
*/
|
|
110
125
|
dragAndDrop: boolean;
|
|
111
126
|
/**
|
|
112
|
-
* Handle the
|
|
127
|
+
* Handle the keyboard when the focus is on the tree. See
|
|
113
128
|
* [Selection](/guide/selection#keyboard-navigation).
|
|
114
129
|
*
|
|
115
130
|
* @defaultValue `true`
|
|
@@ -223,7 +238,8 @@ export interface TreeElementOptions {
|
|
|
223
238
|
*
|
|
224
239
|
* Type: `HTMLElement | string`
|
|
225
240
|
*
|
|
226
|
-
* @defaultValue
|
|
241
|
+
* @defaultValue An svg triangle pointing down, sized in em and filled with
|
|
242
|
+
* `currentColor`.
|
|
227
243
|
* @group Appearance
|
|
228
244
|
*/
|
|
229
245
|
openedIcon?: IconElement;
|
|
@@ -282,7 +298,8 @@ export interface TreeElementOptions {
|
|
|
282
298
|
startDndDelay?: number;
|
|
283
299
|
/**
|
|
284
300
|
* The `tabindex` of the selected node's title, which is what makes the
|
|
285
|
-
* tree focusable.
|
|
301
|
+
* tree focusable. When no node is selected, the first node gets it. The
|
|
302
|
+
* other nodes get `-1`.
|
|
286
303
|
*
|
|
287
304
|
* @defaultValue `0`
|
|
288
305
|
* @group Selection
|
package/lib/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;AAEvD,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,MAAM,CAAC;AAE/C,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;AAEpE,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,EAChB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;AAEb,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,OAAO,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
package/lib/requestUrl.d.ts
CHANGED
package/lib/requestUrl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestUrl.d.ts","sourceRoot":"","sources":["../src/requestUrl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requestUrl.d.ts","sourceRoot":"","sources":["../src/requestUrl.ts"],"names":[],"mappings":"AAGA,cAAM,UAAU;IACd,OAAO,CAAC,GAAG,CAAM;gBAEL,QAAQ,EAAE,MAAM;IAI5B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIzC,KAAK;CAGN;AAED,eAAe,UAAU,CAAC"}
|
package/lib/requestUrl.js
CHANGED
|
@@ -1,33 +1,15 @@
|
|
|
1
|
-
// Url
|
|
1
|
+
// Url of a request. A relative url is resolved against the page, like a link
|
|
2
|
+
// or `fetch` would, so it also works when the page is in a subdirectory.
|
|
2
3
|
|
|
3
|
-
let isAbsoluteUrl = inputUrl => {
|
|
4
|
-
try {
|
|
5
|
-
new URL(inputUrl);
|
|
6
|
-
return true;
|
|
7
|
-
} catch {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
let LOCALHOST = "http://localhost";
|
|
12
4
|
class RequestUrl {
|
|
13
5
|
constructor(inputUrl) {
|
|
14
|
-
|
|
15
|
-
this._url = new URL(inputUrl);
|
|
16
|
-
this._isAbsolute = true;
|
|
17
|
-
} else {
|
|
18
|
-
this._url = new URL(inputUrl, LOCALHOST);
|
|
19
|
-
this._isAbsolute = false;
|
|
20
|
-
}
|
|
6
|
+
this._url = new URL(inputUrl, document.baseURI);
|
|
21
7
|
}
|
|
22
8
|
_setSearchParam(key, value) {
|
|
23
9
|
this._url.searchParams.set(key, value);
|
|
24
10
|
}
|
|
25
11
|
_value() {
|
|
26
|
-
|
|
27
|
-
return this._url.href;
|
|
28
|
-
} else {
|
|
29
|
-
return this._url.href.slice(LOCALHOST.length);
|
|
30
|
-
}
|
|
12
|
+
return this._url.href;
|
|
31
13
|
}
|
|
32
14
|
}
|
|
33
15
|
|
package/lib/requestUrl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestUrl.js","sources":["../src/requestUrl.ts"],"sourcesContent":["// Url
|
|
1
|
+
{"version":3,"file":"requestUrl.js","sources":["../src/requestUrl.ts"],"sourcesContent":["// Url of a request. A relative url is resolved against the page, like a link\n// or `fetch` would, so it also works when the page is in a subdirectory.\n\nclass RequestUrl {\n private url: URL;\n\n constructor(inputUrl: string) {\n this.url = new URL(inputUrl, document.baseURI);\n }\n\n setSearchParam(key: string, value: string) {\n this.url.searchParams.set(key, value);\n }\n\n value() {\n return this.url.href;\n }\n}\n\nexport default RequestUrl;\n"],"names":["url","setSearchParam","value"],"mappings":"AAAA;AACA;;AAEA,MAAM,UAAU,CAAC;EAGf,WAAW,CAAC,QAAgB,EAAE;IAC5B,IAAI,CAACA,IAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;AAChD,EAAA;AAEAC,EAAAA,eAAcA,CAAC,GAAW,EAAE,KAAa,EAAE;IACzC,IAAI,CAACD,IAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACvC,EAAA;AAEAE,EAAAA,MAAKA,GAAG;AACN,IAAA,OAAO,IAAI,CAACF,IAAG,CAAC,IAAI;AACtB,EAAA;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveStateHandler.d.ts","sourceRoot":"","sources":["../src/saveStateHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,eAAe,EACf,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAI9E,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,UAAU,sBAAsB;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,eAAe,CAAmB;gBAE9B,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,OAAO,EACP,qBAAqB,EACrB,qBAAqB,EACrB,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,SAAS,GACV,EAAE,sBAAsB;IAalB,qBAAqB,IAAI,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"saveStateHandler.d.ts","sourceRoot":"","sources":["../src/saveStateHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,eAAe,EACf,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAI9E,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,UAAU,sBAAsB;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,eAAe,CAAmB;gBAE9B,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,OAAO,EACP,qBAAqB,EACrB,qBAAqB,EACrB,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,SAAS,GACV,EAAE,sBAAsB;IAalB,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAUtC,QAAQ,IAAI,UAAU;IAgCtB,mBAAmB,IAAI,IAAI,GAAG,UAAU;IAUxC,SAAS,IAAI,IAAI;IAoBjB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAcrC,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCtE,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;CAiB3B"}
|
package/lib/saveStateHandler.js
CHANGED
|
@@ -29,11 +29,7 @@ class SaveStateHandler {
|
|
|
29
29
|
return null;
|
|
30
30
|
}
|
|
31
31
|
let state = this._getStateFromStorage();
|
|
32
|
-
|
|
33
|
-
return state.selected_node[0] ?? null;
|
|
34
|
-
} else {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
32
|
+
return state?.selected_node ? state.selected_node[0] ?? null : null;
|
|
37
33
|
}
|
|
38
34
|
_getState() {
|
|
39
35
|
let getOpenNodeIds = () => {
|
|
@@ -48,11 +44,11 @@ class SaveStateHandler {
|
|
|
48
44
|
};
|
|
49
45
|
let getSelectedNodeIds = () => {
|
|
50
46
|
let selectedNodeIds = [];
|
|
51
|
-
this._getSelectedNodes()
|
|
47
|
+
for (let node of this._getSelectedNodes()) {
|
|
52
48
|
if (node.id != null) {
|
|
53
49
|
selectedNodeIds.push(node.id);
|
|
54
50
|
}
|
|
55
|
-
}
|
|
51
|
+
}
|
|
56
52
|
return selectedNodeIds;
|
|
57
53
|
};
|
|
58
54
|
return {
|
|
@@ -65,11 +61,7 @@ class SaveStateHandler {
|
|
|
65
61
|
return null;
|
|
66
62
|
}
|
|
67
63
|
let jsonData = this._loadFromStorage();
|
|
68
|
-
|
|
69
|
-
return this._parseState(jsonData);
|
|
70
|
-
} else {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
64
|
+
return jsonData ? this._parseState(jsonData) : null;
|
|
73
65
|
}
|
|
74
66
|
_saveState() {
|
|
75
67
|
if (!this._saveStateOption) {
|
|
@@ -89,10 +81,7 @@ class SaveStateHandler {
|
|
|
89
81
|
result: must load on demand (boolean)
|
|
90
82
|
*/
|
|
91
83
|
_setInitialState(state) {
|
|
92
|
-
let mustLoadOnDemand = false;
|
|
93
|
-
if (state.open_nodes) {
|
|
94
|
-
mustLoadOnDemand = this._openInitialNodes(state.open_nodes);
|
|
95
|
-
}
|
|
84
|
+
let mustLoadOnDemand = state.open_nodes ? this._openInitialNodes(state.open_nodes) : false;
|
|
96
85
|
this._resetSelection();
|
|
97
86
|
if (state.selected_node) {
|
|
98
87
|
this._selectInitialNodes(state.selected_node);
|
|
@@ -108,9 +97,7 @@ class SaveStateHandler {
|
|
|
108
97
|
let newNodesIds = [];
|
|
109
98
|
for (let nodeId of nodeIds) {
|
|
110
99
|
let node = this._getNodeById(nodeId);
|
|
111
|
-
if (
|
|
112
|
-
newNodesIds.push(nodeId);
|
|
113
|
-
} else {
|
|
100
|
+
if (node) {
|
|
114
101
|
if (!node.is_loading) {
|
|
115
102
|
if (node.load_on_demand) {
|
|
116
103
|
await loadAndOpenNode(node);
|
|
@@ -118,13 +105,13 @@ class SaveStateHandler {
|
|
|
118
105
|
await this._openNode(node, false);
|
|
119
106
|
}
|
|
120
107
|
}
|
|
108
|
+
} else {
|
|
109
|
+
newNodesIds.push(nodeId);
|
|
121
110
|
}
|
|
122
111
|
}
|
|
123
112
|
nodeIds = newNodesIds;
|
|
124
|
-
if (state.selected_node) {
|
|
125
|
-
|
|
126
|
-
this._refreshElements(null);
|
|
127
|
-
}
|
|
113
|
+
if (state.selected_node && this._selectInitialNodes(state.selected_node)) {
|
|
114
|
+
this._refreshElements(null);
|
|
128
115
|
}
|
|
129
116
|
};
|
|
130
117
|
let loadAndOpenNode = async node => {
|
|
@@ -134,28 +121,20 @@ class SaveStateHandler {
|
|
|
134
121
|
await openNodes();
|
|
135
122
|
}
|
|
136
123
|
_getKeyName() {
|
|
137
|
-
|
|
138
|
-
return this._saveStateOption;
|
|
139
|
-
} else {
|
|
140
|
-
return "tree";
|
|
141
|
-
}
|
|
124
|
+
return typeof this._saveStateOption === "string" ? this._saveStateOption : "tree";
|
|
142
125
|
}
|
|
143
126
|
_loadFromStorage() {
|
|
144
|
-
|
|
145
|
-
return this._onGetStateFromStorage();
|
|
146
|
-
} else {
|
|
147
|
-
return localStorage.getItem(this._getKeyName());
|
|
148
|
-
}
|
|
127
|
+
return this._onGetStateFromStorage ? this._onGetStateFromStorage() : localStorage.getItem(this._getKeyName());
|
|
149
128
|
}
|
|
150
129
|
_openInitialNodes(nodeIds) {
|
|
151
130
|
let mustLoadOnDemand = false;
|
|
152
131
|
for (let nodeId of nodeIds) {
|
|
153
132
|
let node = this._getNodeById(nodeId);
|
|
154
133
|
if (node) {
|
|
155
|
-
if (
|
|
156
|
-
node.is_open = true;
|
|
157
|
-
} else {
|
|
134
|
+
if (node.load_on_demand) {
|
|
158
135
|
mustLoadOnDemand = true;
|
|
136
|
+
} else {
|
|
137
|
+
node.is_open = true;
|
|
159
138
|
}
|
|
160
139
|
}
|
|
161
140
|
}
|
|
@@ -173,18 +152,19 @@ class SaveStateHandler {
|
|
|
173
152
|
}
|
|
174
153
|
_resetSelection() {
|
|
175
154
|
let selectedNodes = this._getSelectedNodes();
|
|
176
|
-
|
|
155
|
+
for (let node of selectedNodes) {
|
|
177
156
|
this._removeFromSelection(node);
|
|
178
|
-
}
|
|
157
|
+
}
|
|
179
158
|
}
|
|
180
159
|
_selectInitialNodes(nodeIds) {
|
|
181
160
|
let selectCount = 0;
|
|
182
161
|
for (let nodeId of nodeIds) {
|
|
183
162
|
let node = this._getNodeById(nodeId);
|
|
184
|
-
if (node) {
|
|
185
|
-
|
|
186
|
-
this._addToSelection(node);
|
|
163
|
+
if (!node) {
|
|
164
|
+
continue;
|
|
187
165
|
}
|
|
166
|
+
selectCount += 1;
|
|
167
|
+
this._addToSelection(node);
|
|
188
168
|
}
|
|
189
169
|
return selectCount !== 0;
|
|
190
170
|
}
|