tree-element 0.1.1 → 0.3.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/README.md +43 -31
- package/lib/animation.d.ts +2 -2
- package/lib/animation.d.ts.map +1 -1
- package/lib/animation.js +16 -12
- package/lib/animation.js.map +1 -1
- package/lib/classNames.d.ts.map +1 -1
- package/lib/classNames.js +2 -2
- package/lib/classNames.js.map +1 -1
- package/lib/dataLoader.d.ts +1 -0
- package/lib/dataLoader.d.ts.map +1 -1
- package/lib/dataLoader.js +22 -20
- package/lib/dataLoader.js.map +1 -1
- package/lib/dragAndDropHandler/binarySearch.js +3 -3
- package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
- package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
- package/lib/dragAndDropHandler/dragElement.js +11 -13
- package/lib/dragAndDropHandler/dragElement.js.map +1 -1
- package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
- package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
- package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
- package/lib/dragAndDropHandler/index.d.ts.map +1 -1
- package/lib/dragAndDropHandler/index.js +125 -158
- package/lib/dragAndDropHandler/index.js.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.js +23 -22
- package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
- package/lib/dragAndDropHandler/types.d.ts.map +1 -1
- package/lib/elementsRenderer.d.ts +20 -7
- package/lib/elementsRenderer.d.ts.map +1 -1
- package/lib/elementsRenderer.js +195 -136
- 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 +36 -13
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +386 -349
- package/lib/index.js.map +1 -1
- package/lib/keyHandler.d.ts +13 -8
- package/lib/keyHandler.d.ts.map +1 -1
- package/lib/keyHandler.js +106 -51
- package/lib/keyHandler.js.map +1 -1
- package/lib/methodTypes.d.ts +3 -3
- 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 +36 -49
- package/lib/mouseHandler.js.map +1 -1
- package/lib/mouseUtils.d.ts.map +1 -1
- package/lib/mouseUtils.js +2 -2
- package/lib/mouseUtils.js.map +1 -1
- package/lib/node.d.ts +47 -16
- package/lib/node.d.ts.map +1 -1
- package/lib/node.js +169 -171
- package/lib/node.js.map +1 -1
- package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
- package/lib/nodeElement/borderDropHint.js +4 -5
- package/lib/nodeElement/borderDropHint.js.map +1 -1
- package/lib/nodeElement/folderElement.d.ts +8 -5
- package/lib/nodeElement/folderElement.d.ts.map +1 -1
- package/lib/nodeElement/folderElement.js +75 -67
- package/lib/nodeElement/folderElement.js.map +1 -1
- package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
- package/lib/nodeElement/ghostDropHint.js +13 -13
- package/lib/nodeElement/ghostDropHint.js.map +1 -1
- package/lib/nodeElement/index.d.ts +2 -1
- package/lib/nodeElement/index.d.ts.map +1 -1
- package/lib/nodeElement/index.js +38 -30
- 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 +19 -3
- package/lib/options.d.ts.map +1 -1
- package/lib/positionUtils.js +3 -3
- package/lib/positionUtils.js.map +1 -1
- package/lib/requestUrl.d.ts +1 -1
- package/lib/requestUrl.d.ts.map +1 -1
- package/lib/requestUrl.js +6 -17
- package/lib/requestUrl.js.map +1 -1
- package/lib/saveStateHandler.d.ts.map +1 -1
- package/lib/saveStateHandler.js +59 -89
- package/lib/saveStateHandler.js.map +1 -1
- package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/containerScrollParent.js +11 -18
- package/lib/scrollHandler/containerScrollParent.js.map +1 -1
- package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/createScrollParent.js +12 -13
- package/lib/scrollHandler/createScrollParent.js.map +1 -1
- package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/documentScrollParent.js +18 -27
- package/lib/scrollHandler/documentScrollParent.js.map +1 -1
- package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/scrollParent.js +30 -34
- package/lib/scrollHandler/scrollParent.js.map +1 -1
- package/lib/scrollHandler.d.ts.map +1 -1
- package/lib/scrollHandler.js +11 -14
- package/lib/scrollHandler.js.map +1 -1
- package/lib/selectNodeHandler.d.ts +4 -2
- package/lib/selectNodeHandler.d.ts.map +1 -1
- package/lib/selectNodeHandler.js +64 -83
- package/lib/selectNodeHandler.js.map +1 -1
- package/lib/setDefaultOptions.d.ts.map +1 -1
- package/lib/setDefaultOptions.js +34 -38
- package/lib/setDefaultOptions.js.map +1 -1
- package/lib/triggerCustomEvent.d.ts.map +1 -1
- package/lib/triggerCustomEvent.js +2 -2
- package/lib/triggerCustomEvent.js.map +1 -1
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +2 -2
- 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 +43 -32
- package/src/animation.ts +14 -12
- package/src/classNames.ts +52 -52
- package/src/dataLoader.ts +79 -71
- package/src/dragAndDropHandler/binarySearch.ts +17 -17
- package/src/dragAndDropHandler/dragElement.ts +51 -50
- package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
- package/src/dragAndDropHandler/index.ts +334 -348
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +61 -63
- package/src/dragAndDropHandler/types.ts +5 -5
- package/src/elementsRenderer.ts +377 -294
- package/src/events.ts +241 -208
- package/src/header.txt +1 -1
- package/src/index.ts +259 -229
- package/src/keyHandler.ts +179 -115
- package/src/methodTypes.ts +7 -10
- package/src/mouseHandler.ts +316 -316
- package/src/mouseUtils.ts +14 -14
- package/src/node.ts +773 -771
- package/src/nodeElement/borderDropHint.ts +25 -25
- package/src/nodeElement/folderElement.ts +116 -102
- package/src/nodeElement/ghostDropHint.ts +64 -62
- package/src/nodeElement/index.ts +81 -73
- package/src/nodeUtils.ts +5 -5
- package/src/options.ts +25 -5
- package/src/requestUrl.ts +7 -14
- package/src/saveStateHandler.ts +191 -207
- package/src/scrollHandler/containerScrollParent.ts +40 -49
- package/src/scrollHandler/createScrollParent.ts +26 -27
- package/src/scrollHandler/documentScrollParent.ts +66 -72
- package/src/scrollHandler/scrollParent.ts +90 -86
- package/src/scrollHandler.ts +45 -45
- package/src/selectNodeHandler.ts +171 -165
- package/src/setDefaultOptions.ts +44 -32
- package/src/triggerCustomEvent.ts +7 -3
- package/src/util.ts +2 -3
- package/src/version.ts +1 -1
- package/tree_element.css +87 -69
- package/tree_element.debug.js +3866 -3831
- package/tree_element.debug.js.map +1 -1
- package/tree_element.js +2 -2
- package/tree_element.js.map +1 -1
package/lib/selectNodeHandler.js
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
class SelectNodeHandler {
|
|
2
|
-
_getNodeById;
|
|
3
|
-
_getNodeElementForNode;
|
|
4
|
-
_getOnCanSelectNode;
|
|
5
|
-
_getSelectable;
|
|
6
|
-
_openParents;
|
|
7
|
-
_saveState;
|
|
8
|
-
_selectedNodes;
|
|
9
|
-
_selectedSingleNode;
|
|
10
|
-
_triggerEvent;
|
|
11
2
|
constructor({
|
|
12
|
-
getNodeById,
|
|
13
|
-
getNodeElementForNode,
|
|
14
|
-
getOnCanSelectNode,
|
|
15
|
-
getSelectable,
|
|
16
|
-
openParents,
|
|
17
|
-
saveState,
|
|
18
|
-
triggerEvent
|
|
3
|
+
_getNodeById: getNodeById,
|
|
4
|
+
_getNodeElementForNode: getNodeElementForNode,
|
|
5
|
+
_getOnCanSelectNode: getOnCanSelectNode,
|
|
6
|
+
_getSelectable: getSelectable,
|
|
7
|
+
_openParents: openParents,
|
|
8
|
+
_saveState: saveState,
|
|
9
|
+
_triggerEvent: triggerEvent,
|
|
10
|
+
_updateTabStop: updateTabStop
|
|
19
11
|
}) {
|
|
20
12
|
this._getNodeById = getNodeById;
|
|
21
13
|
this._getNodeElementForNode = getNodeElementForNode;
|
|
@@ -26,70 +18,58 @@ class SelectNodeHandler {
|
|
|
26
18
|
this._selectedNodes = new Set();
|
|
27
19
|
this._selectedSingleNode = null;
|
|
28
20
|
this._triggerEvent = triggerEvent;
|
|
21
|
+
this._updateTabStop = updateTabStop;
|
|
29
22
|
}
|
|
30
|
-
|
|
31
|
-
if (node.id
|
|
32
|
-
this._selectedNodes.add(node.id);
|
|
33
|
-
} else {
|
|
23
|
+
_addToSelection(node) {
|
|
24
|
+
if (node.id == null) {
|
|
34
25
|
this._selectedSingleNode = node;
|
|
26
|
+
} else {
|
|
27
|
+
this._selectedNodes.add(node.id);
|
|
35
28
|
}
|
|
36
29
|
}
|
|
37
|
-
|
|
30
|
+
_clear() {
|
|
38
31
|
this._selectedNodes.clear();
|
|
39
32
|
this._selectedSingleNode = null;
|
|
40
33
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return selectedNodes[0] ?? false;
|
|
45
|
-
} else {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
34
|
+
_getSelectedNode() {
|
|
35
|
+
let selectedNodes = this._getSelectedNodes();
|
|
36
|
+
return selectedNodes.length ? selectedNodes[0] ?? null : null;
|
|
48
37
|
}
|
|
49
|
-
|
|
38
|
+
_getSelectedNodes() {
|
|
50
39
|
if (this._selectedSingleNode) {
|
|
51
40
|
return [this._selectedSingleNode];
|
|
52
|
-
} else {
|
|
53
|
-
const selectedNodes = [];
|
|
54
|
-
this._selectedNodes.forEach(id => {
|
|
55
|
-
const node = this._getNodeById(id);
|
|
56
|
-
if (node) {
|
|
57
|
-
selectedNodes.push(node);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
return selectedNodes;
|
|
61
41
|
}
|
|
42
|
+
let selectedNodes = [];
|
|
43
|
+
this._selectedNodes.forEach(id => {
|
|
44
|
+
let node = this._getNodeById(id);
|
|
45
|
+
if (node) {
|
|
46
|
+
selectedNodes.push(node);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return selectedNodes;
|
|
62
50
|
}
|
|
63
|
-
|
|
51
|
+
_getSelectedNodesUnder(parent) {
|
|
64
52
|
if (this._selectedSingleNode) {
|
|
65
|
-
|
|
66
|
-
return [this._selectedSingleNode];
|
|
67
|
-
} else {
|
|
68
|
-
return [];
|
|
69
|
-
}
|
|
70
|
-
} else {
|
|
71
|
-
const selectedNodes = [];
|
|
72
|
-
this._selectedNodes.forEach(id => {
|
|
73
|
-
const node = this._getNodeById(id);
|
|
74
|
-
if (node && parent.isParentOf(node)) {
|
|
75
|
-
selectedNodes.push(node);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
return selectedNodes;
|
|
53
|
+
return parent.isParentOf(this._selectedSingleNode) ? [this._selectedSingleNode] : [];
|
|
79
54
|
}
|
|
55
|
+
let selectedNodes = [];
|
|
56
|
+
this._selectedNodes.forEach(id => {
|
|
57
|
+
let node = this._getNodeById(id);
|
|
58
|
+
if (node && parent.isParentOf(node)) {
|
|
59
|
+
selectedNodes.push(node);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return selectedNodes;
|
|
80
63
|
}
|
|
81
|
-
|
|
64
|
+
_isNodeSelected(node) {
|
|
82
65
|
if (node.id != null) {
|
|
83
66
|
return this._selectedNodes.has(node.id);
|
|
84
|
-
} else if (this._selectedSingleNode) {
|
|
85
|
-
return this._selectedSingleNode.element === node.element;
|
|
86
|
-
} else {
|
|
87
|
-
return false;
|
|
88
67
|
}
|
|
68
|
+
return this._selectedSingleNode ? this._selectedSingleNode === node : false;
|
|
89
69
|
}
|
|
90
|
-
|
|
70
|
+
_removeFromSelection(node, includeChildren = false) {
|
|
91
71
|
if (node.id == null) {
|
|
92
|
-
if (this._selectedSingleNode
|
|
72
|
+
if (this._selectedSingleNode === node) {
|
|
93
73
|
this._selectedSingleNode = null;
|
|
94
74
|
}
|
|
95
75
|
} else {
|
|
@@ -106,39 +86,39 @@ class SelectNodeHandler {
|
|
|
106
86
|
}
|
|
107
87
|
|
|
108
88
|
/* Select a single node.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
89
|
+
* Renders the changed elements.
|
|
90
|
+
* Deselects if the node is currently selected (if the mustToggle is on).
|
|
91
|
+
* Deselects the previously selected node.
|
|
92
|
+
* Check if the node is selectable.
|
|
93
|
+
* Saves the state.
|
|
94
|
+
* Options:
|
|
95
|
+
* mustSetFocus: set the focus to the selected node
|
|
96
|
+
* mustToggle: support deselecting the selected node
|
|
97
|
+
*/
|
|
98
|
+
_selectSingleNode(node, optionsParam) {
|
|
99
|
+
let defaultOptions = {
|
|
120
100
|
mustSetFocus: true,
|
|
121
101
|
mustToggle: true
|
|
122
102
|
};
|
|
123
|
-
|
|
103
|
+
let selectOptions = {
|
|
124
104
|
...defaultOptions,
|
|
125
|
-
...
|
|
105
|
+
...optionsParam
|
|
126
106
|
};
|
|
127
|
-
|
|
107
|
+
let canSelect = () => {
|
|
128
108
|
if (!this._getSelectable()) {
|
|
129
109
|
return false;
|
|
130
110
|
}
|
|
131
|
-
|
|
111
|
+
let onCanSelectNode = this._getOnCanSelectNode();
|
|
132
112
|
return onCanSelectNode ? onCanSelectNode(node) : true;
|
|
133
113
|
};
|
|
134
114
|
if (!canSelect()) {
|
|
135
115
|
return;
|
|
136
116
|
}
|
|
137
|
-
|
|
138
|
-
this.
|
|
139
|
-
this._getNodeElementForNode(deselectedNode).
|
|
117
|
+
let deselectCurrentNode = deselectedNode => {
|
|
118
|
+
this._removeFromSelection(deselectedNode);
|
|
119
|
+
this._getNodeElementForNode(deselectedNode)._deselect();
|
|
140
120
|
};
|
|
141
|
-
if (this.
|
|
121
|
+
if (this._isNodeSelected(node)) {
|
|
142
122
|
if (selectOptions.mustToggle) {
|
|
143
123
|
deselectCurrentNode(node);
|
|
144
124
|
this._triggerEvent("tree.deselect", {
|
|
@@ -146,18 +126,19 @@ class SelectNodeHandler {
|
|
|
146
126
|
});
|
|
147
127
|
}
|
|
148
128
|
} else {
|
|
149
|
-
|
|
129
|
+
let deselectedNode = this._getSelectedNode();
|
|
150
130
|
if (deselectedNode) {
|
|
151
131
|
deselectCurrentNode(deselectedNode);
|
|
152
132
|
}
|
|
153
|
-
this.
|
|
133
|
+
this._addToSelection(node);
|
|
154
134
|
this._openParents(node);
|
|
155
|
-
this._getNodeElementForNode(node).
|
|
135
|
+
this._getNodeElementForNode(node)._select(selectOptions.mustSetFocus);
|
|
156
136
|
this._triggerEvent("tree.select", {
|
|
157
|
-
deselectedNode
|
|
137
|
+
deselectedNode,
|
|
158
138
|
node
|
|
159
139
|
});
|
|
160
140
|
}
|
|
141
|
+
this._updateTabStop();
|
|
161
142
|
this._saveState();
|
|
162
143
|
}
|
|
163
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectNodeHandler.js","sources":["../src/selectNodeHandler.ts"],"sourcesContent":["import type { GetNodeById, GetNodeElementForNode, OpenParents, TriggerEvent } from \"./methodTypes\";\nimport type { Node, NodeId } from \"./node\";\nimport type { OnCanSelectNode } from \"./options\";\n\nexport interface SelectNodeOptions {\n mustSetFocus?: boolean;\n mustToggle?: boolean;\n}\n\ninterface SelectNodeHandlerParameters {\n getNodeById: GetNodeById;\n getNodeElementForNode: GetNodeElementForNode;\n getOnCanSelectNode: () => OnCanSelectNode | undefined;\n getSelectable: () => boolean;\n openParents: OpenParents;\n saveState: () => void;\n triggerEvent: TriggerEvent;\n}\n\nexport default class SelectNodeHandler {\n private getNodeById: GetNodeById;\n private getNodeElementForNode: GetNodeElementForNode;\n private getOnCanSelectNode: () => OnCanSelectNode | undefined;\n private getSelectable: () => boolean;\n private openParents: OpenParents;\n private saveState: () => void;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n private triggerEvent: TriggerEvent;\n\n constructor({ getNodeById, getNodeElementForNode, getOnCanSelectNode, getSelectable, openParents, saveState, triggerEvent }: SelectNodeHandlerParameters) {\n this.getNodeById = getNodeById;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getOnCanSelectNode = getOnCanSelectNode;\n this.getSelectable = getSelectable;\n this.openParents = openParents;\n this.saveState = saveState;\n this.selectedNodes = new Set<NodeId>();\n this.selectedSingleNode = null;\n this.triggerEvent = triggerEvent;\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public getSelectedNode(): false | Node {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0] ?? false;\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n /* Select a single node.\n * Renders the changed elements.\n * Deselects if the node is currently selected (if the mustToggle is on).\n * Deselects the previously selected node.\n * Check if the node is selectable.\n * Saves the state.\n * Options:\n * mustSetFocus: set the focus to the selected node\n * mustToggle: support deselecting the selected node\n */\n public selectSingleNode(node: Node, optionsParam?: SelectNodeOptions) {\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam ?? {}) };\n\n const canSelect = (): boolean => {\n if (!this.getSelectable()) {\n return false;\n }\n\n const onCanSelectNode = this.getOnCanSelectNode();\n return onCanSelectNode ? onCanSelectNode(node) : true;\n };\n\n if (!canSelect()) {\n return;\n }\n\n const deselectCurrentNode = (deselectedNode: Node) => {\n this.removeFromSelection(deselectedNode);\n this.getNodeElementForNode(deselectedNode).deselect();\n };\n\n if (this.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n deselectCurrentNode(node);\n this.triggerEvent(\"tree.deselect\", { node });\n }\n } else {\n const deselectedNode = this.getSelectedNode();\n\n if (deselectedNode) {\n deselectCurrentNode(deselectedNode);\n }\n\n this.addToSelection(node);\n this.openParents(node);\n this.getNodeElementForNode(node).select(selectOptions.mustSetFocus);\n\n this.triggerEvent(\"tree.select\", {\n deselectedNode: deselectedNode || null,\n node,\n });\n }\n\n this.saveState();\n }\n}\n"],"names":["getNodeById","getNodeElementForNode","getOnCanSelectNode","getSelectable","openParents","saveState","selectedNodes","selectedSingleNode","triggerEvent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectNodeHandler.js","sources":["../src/selectNodeHandler.ts"],"sourcesContent":["import type {\n GetNodeById,\n GetNodeElementForNode,\n OpenParents,\n TriggerEvent,\n} from \"./methodTypes\";\nimport type { Node, NodeId } from \"./node\";\nimport type { OnCanSelectNode } from \"./options\";\n\nexport interface SelectNodeOptions {\n mustSetFocus?: boolean;\n mustToggle?: boolean;\n}\n\ninterface SelectNodeHandlerParameters {\n getNodeById: GetNodeById;\n getNodeElementForNode: GetNodeElementForNode;\n getOnCanSelectNode: () => OnCanSelectNode | undefined;\n getSelectable: () => boolean;\n openParents: OpenParents;\n saveState: () => void;\n triggerEvent: TriggerEvent;\n updateTabStop: () => void;\n}\n\nexport default class SelectNodeHandler {\n private getNodeById: GetNodeById;\n private getNodeElementForNode: GetNodeElementForNode;\n private getOnCanSelectNode: () => OnCanSelectNode | undefined;\n private getSelectable: () => boolean;\n private openParents: OpenParents;\n private saveState: () => void;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n private triggerEvent: TriggerEvent;\n private updateTabStop: () => void;\n\n constructor({\n getNodeById,\n getNodeElementForNode,\n getOnCanSelectNode,\n getSelectable,\n openParents,\n saveState,\n triggerEvent,\n updateTabStop,\n }: SelectNodeHandlerParameters) {\n this.getNodeById = getNodeById;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getOnCanSelectNode = getOnCanSelectNode;\n this.getSelectable = getSelectable;\n this.openParents = openParents;\n this.saveState = saveState;\n this.selectedNodes = new Set<NodeId>();\n this.selectedSingleNode = null;\n this.triggerEvent = triggerEvent;\n this.updateTabStop = updateTabStop;\n }\n\n public addToSelection(node: Node): void {\n if (node.id == null) {\n this.selectedSingleNode = node;\n } else {\n this.selectedNodes.add(node.id);\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public getSelectedNode(): Node | null {\n const selectedNodes = this.getSelectedNodes();\n\n return selectedNodes.length ? (selectedNodes[0] ?? null) : null;\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n }\n\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n return parent.isParentOf(this.selectedSingleNode)\n ? [this.selectedSingleNode]\n : [];\n }\n\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n }\n return this.selectedSingleNode ? this.selectedSingleNode === node : false;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (this.selectedSingleNode === node) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n /* Select a single node.\n * Renders the changed elements.\n * Deselects if the node is currently selected (if the mustToggle is on).\n * Deselects the previously selected node.\n * Check if the node is selectable.\n * Saves the state.\n * Options:\n * mustSetFocus: set the focus to the selected node\n * mustToggle: support deselecting the selected node\n */\n public selectSingleNode(node: Node, optionsParam?: SelectNodeOptions) {\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...optionsParam };\n\n const canSelect = (): boolean => {\n if (!this.getSelectable()) {\n return false;\n }\n\n const onCanSelectNode = this.getOnCanSelectNode();\n return onCanSelectNode ? onCanSelectNode(node) : true;\n };\n\n if (!canSelect()) {\n return;\n }\n\n const deselectCurrentNode = (deselectedNode: Node) => {\n this.removeFromSelection(deselectedNode);\n this.getNodeElementForNode(deselectedNode).deselect();\n };\n\n if (this.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n deselectCurrentNode(node);\n this.triggerEvent(\"tree.deselect\", { node });\n }\n } else {\n const deselectedNode = this.getSelectedNode();\n\n if (deselectedNode) {\n deselectCurrentNode(deselectedNode);\n }\n\n this.addToSelection(node);\n this.openParents(node);\n this.getNodeElementForNode(node).select(selectOptions.mustSetFocus);\n\n this.triggerEvent(\"tree.select\", {\n deselectedNode,\n node,\n });\n }\n\n this.updateTabStop();\n this.saveState();\n }\n}\n"],"names":["getNodeById","getNodeElementForNode","getOnCanSelectNode","getSelectable","openParents","saveState","selectedNodes","selectedSingleNode","triggerEvent","updateTabStop","addToSelection","clear","getSelectedNode","getSelectedNodes","getSelectedNodesUnder","isNodeSelected","removeFromSelection","selectSingleNode","deselect","select"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setDefaultOptions.d.ts","sourceRoot":"","sources":["../src/setDefaultOptions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setDefaultOptions.d.ts","sourceRoot":"","sources":["../src/setDefaultOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AA6CpD,QAAA,MAAM,iBAAiB,GACrB,aAAa,WAAW,EACxB,cAAc,OAAO,CAAC,kBAAkB,CAAC,KACxC,kBAaF,CAAC;AA4BF,eAAe,iBAAiB,CAAC"}
|
package/lib/setDefaultOptions.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DEFAULT_CLASS_PREFIX } from './classNames.js';
|
|
2
2
|
import { Node } from './node.js';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
let defaults = {
|
|
5
5
|
animationSpeed: "fast",
|
|
6
6
|
autoEscape: true,
|
|
7
7
|
autoOpen: false,
|
|
@@ -10,34 +10,30 @@ const defaults = {
|
|
|
10
10
|
classPrefix: DEFAULT_CLASS_PREFIX,
|
|
11
11
|
// the prefix of all css classes
|
|
12
12
|
// The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER
|
|
13
|
-
//
|
|
14
|
-
closedIcon: undefined,
|
|
15
|
-
commonClassName: undefined,
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
dataUrl: undefined,
|
|
13
|
+
// https://www.fileformat.info/info/unicode/char/25ba/index.htm
|
|
14
|
+
// closedIcon: undefined,
|
|
15
|
+
// commonClassName: undefined, // the class of every element; the default is "<classPrefix>-common"
|
|
16
|
+
// data: undefined,
|
|
17
|
+
// dataFilter: undefined,
|
|
18
|
+
// dataUrl: undefined,
|
|
20
19
|
dragAndDrop: false,
|
|
21
20
|
keyboardSupport: true,
|
|
22
21
|
nodeClass: Node,
|
|
23
|
-
onCanMove: undefined,
|
|
24
|
-
// Can this node be moved?
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
onSetStateFromStorage: undefined,
|
|
34
|
-
openedIcon: undefined,
|
|
22
|
+
// onCanMove: undefined, // Can this node be moved?
|
|
23
|
+
// onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)
|
|
24
|
+
// onCanSelectNode: undefined,
|
|
25
|
+
// onCreateLi: undefined,
|
|
26
|
+
// onDragMove: undefined,
|
|
27
|
+
// onDragStop: undefined,
|
|
28
|
+
// onGetStateFromStorage: undefined,
|
|
29
|
+
// onIsMoveHandle: undefined,
|
|
30
|
+
// onSetStateFromStorage: undefined,
|
|
31
|
+
// openedIcon: undefined,
|
|
35
32
|
openFolderDelay: 500,
|
|
36
33
|
// The delay for opening a folder during drag and drop; the value is in milliseconds
|
|
37
34
|
// The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE
|
|
38
|
-
//
|
|
39
|
-
rtl: undefined,
|
|
40
|
-
// right-to-left support; true / false (default)
|
|
35
|
+
// https://www.fileformat.info/info/unicode/char/25bc/index.htm
|
|
36
|
+
// rtl: undefined, // right-to-left support; true / false (default)
|
|
41
37
|
saveState: false,
|
|
42
38
|
// true / false / string (local storage key; the default key is "tree")
|
|
43
39
|
selectable: true,
|
|
@@ -47,14 +43,14 @@ const defaults = {
|
|
|
47
43
|
startDndDelay: 300,
|
|
48
44
|
// The delay for starting dnd (in milliseconds)
|
|
49
45
|
tabIndex: 0,
|
|
50
|
-
treeClassName: undefined,
|
|
51
|
-
// the class of the root element; the default is classPrefix
|
|
46
|
+
// treeClassName: undefined, // the class of the root element; the default is classPrefix
|
|
52
47
|
useContextMenu: true
|
|
53
48
|
};
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
let setDefaultOptions = (htmlElement, inputOptions) => {
|
|
50
|
+
let options = {
|
|
56
51
|
...defaults,
|
|
57
|
-
...inputOptions
|
|
52
|
+
...inputOptions,
|
|
53
|
+
animationSpeed: inputOptions.animationSpeed ?? getDefaultAnimationSpeed()
|
|
58
54
|
};
|
|
59
55
|
options.dataUrl ??= htmlElement.dataset.url;
|
|
60
56
|
options.rtl ??= getRtlOptionFromHTMLElement(htmlElement);
|
|
@@ -62,24 +58,24 @@ const setDefaultOptions = (htmlElement, inputOptions) => {
|
|
|
62
58
|
options.openedIcon ??= "▼";
|
|
63
59
|
return options;
|
|
64
60
|
};
|
|
65
|
-
|
|
61
|
+
|
|
62
|
+
// No animation when the user asked the system for reduced motion
|
|
63
|
+
let getDefaultAnimationSpeed = () => prefersReducedMotion() ? 0 : defaults.animationSpeed;
|
|
64
|
+
let prefersReducedMotion = () => typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
65
|
+
let getDefaultClosedIcon = options => {
|
|
66
66
|
if (options.rtl) {
|
|
67
67
|
// triangle to the left
|
|
68
68
|
return "◀";
|
|
69
|
-
} else {
|
|
70
|
-
// triangle to the right
|
|
71
|
-
return "►";
|
|
72
69
|
}
|
|
70
|
+
// triangle to the right
|
|
71
|
+
return "►";
|
|
73
72
|
};
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
let getRtlOptionFromHTMLElement = htmlElement => {
|
|
74
|
+
let dataRtl = htmlElement.dataset.rtl;
|
|
76
75
|
if (dataRtl == "") {
|
|
77
76
|
return true;
|
|
78
|
-
} else if (dataRtl === "false") {
|
|
79
|
-
return false;
|
|
80
|
-
} else {
|
|
81
|
-
return Boolean(dataRtl);
|
|
82
77
|
}
|
|
78
|
+
return dataRtl === "false" ? false : Boolean(dataRtl);
|
|
83
79
|
};
|
|
84
80
|
|
|
85
81
|
export { setDefaultOptions as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setDefaultOptions.js","sources":["../src/setDefaultOptions.ts"],"sourcesContent":["import type { TreeElementOptions } from \"./options\";\n\nimport { DEFAULT_CLASS_PREFIX } from \"./classNames\";\nimport { Node } from \"./node\";\n\nconst defaults: TreeElementOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n classPrefix: DEFAULT_CLASS_PREFIX, // the prefix of all css classes\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n //
|
|
1
|
+
{"version":3,"file":"setDefaultOptions.js","sources":["../src/setDefaultOptions.ts"],"sourcesContent":["import type { AnimationSpeed } from \"./animation\";\nimport type { TreeElementOptions } from \"./options\";\n\nimport { DEFAULT_CLASS_PREFIX } from \"./classNames\";\nimport { Node } from \"./node\";\n\nconst defaults: TreeElementOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n classPrefix: DEFAULT_CLASS_PREFIX, // the prefix of all css classes\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n // https://www.fileformat.info/info/unicode/char/25ba/index.htm\n // closedIcon: undefined,\n // commonClassName: undefined, // the class of every element; the default is \"<classPrefix>-common\"\n // data: undefined,\n // dataFilter: undefined,\n // dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n // onCanMove: undefined, // Can this node be moved?\n // onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n // onCanSelectNode: undefined,\n // onCreateLi: undefined,\n // onDragMove: undefined,\n // onDragStop: undefined,\n // onGetStateFromStorage: undefined,\n // onIsMoveHandle: undefined,\n // onSetStateFromStorage: undefined,\n // openedIcon: undefined,\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE\n // https://www.fileformat.info/info/unicode/char/25bc/index.htm\n // rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (local storage key; the default key is \"tree\")\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n // treeClassName: undefined, // the class of the root element; the default is classPrefix\n useContextMenu: true,\n};\n\nconst setDefaultOptions = (\n htmlElement: HTMLElement,\n inputOptions: Partial<TreeElementOptions>,\n): TreeElementOptions => {\n const options = {\n ...defaults,\n ...inputOptions,\n animationSpeed: inputOptions.animationSpeed ?? getDefaultAnimationSpeed(),\n };\n\n options.dataUrl ??= htmlElement.dataset.url;\n options.rtl ??= getRtlOptionFromHTMLElement(htmlElement);\n options.closedIcon ??= getDefaultClosedIcon(options);\n options.openedIcon ??= \"▼\";\n\n return options;\n};\n\n// No animation when the user asked the system for reduced motion\nconst getDefaultAnimationSpeed = (): AnimationSpeed =>\n prefersReducedMotion() ? 0 : defaults.animationSpeed;\n\nconst prefersReducedMotion = (): boolean =>\n typeof window.matchMedia === \"function\" &&\n window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\nconst getDefaultClosedIcon = (options: TreeElementOptions): string => {\n if (options.rtl) {\n // triangle to the left\n return \"◀\";\n }\n // triangle to the right\n return \"►\";\n};\n\nconst getRtlOptionFromHTMLElement = (htmlElement: HTMLElement): boolean => {\n const dataRtl = htmlElement.dataset.rtl;\n\n if (dataRtl == \"\") {\n return true;\n }\n return dataRtl === \"false\" ? false : Boolean(dataRtl);\n};\n\nexport default setDefaultOptions;\n"],"names":[],"mappings":";;;AAMA,IAAM,QAA4B,GAAG;AACnC,EAAA,cAAc,EAAE,MAAM;AACtB,EAAA,UAAU,EAAE,IAAI;AAChB,EAAA,QAAQ,EAAE,KAAK;AAAE;AACjB,EAAA,UAAU,EAAE,IAAI;AAChB,EAAA,WAAW,EAAE,oBAAoB;AAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,WAAW,EAAE,KAAK;AAClB,EAAA,eAAe,EAAE,IAAI;AACrB,EAAA,SAAS,EAAE,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,eAAe,EAAE,GAAG;AAAE;AACtB;AACA;AACA;AACA,EAAA,SAAS,EAAE,KAAK;AAAE;AAClB,EAAA,UAAU,EAAE,IAAI;AAChB,EAAA,eAAe,EAAE,KAAK;AACtB,EAAA,KAAK,EAAE,IAAI;AAAE;AACb,EAAA,aAAa,EAAE,GAAG;AAAE;AACpB,EAAA,QAAQ,EAAE,CAAC;AACX;AACA,EAAA,cAAc,EAAE;AAClB,CAAC;AAED,IAAM,iBAAiB,GAAG,CACxB,WAAwB,EACxB,YAAyC,KAClB;AACvB,EAAA,IAAM,OAAO,GAAG;AACd,IAAA,GAAG,QAAQ;AACX,IAAA,GAAG,YAAY;AACf,IAAA,cAAc,EAAE,YAAY,CAAC,cAAc,IAAI,wBAAwB;GACxE;AAED,EAAA,OAAO,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,CAAC,GAAG;AAC3C,EAAA,OAAO,CAAC,GAAG,KAAK,2BAA2B,CAAC,WAAW,CAAC;AACxD,EAAA,OAAO,CAAC,UAAU,KAAK,oBAAoB,CAAC,OAAO,CAAC;EACpD,OAAO,CAAC,UAAU,KAAK,UAAU;AAEjC,EAAA,OAAO,OAAO;AAChB;;AAEA;AACA,IAAM,wBAAwB,GAAG,MAC/B,oBAAoB,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,cAAc;AAEtD,IAAM,oBAAoB,GAAG,MAC3B,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,IACvC,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO;AAE/D,IAAM,oBAAoB,GAAI,OAA2B,IAAa;EACpE,IAAI,OAAO,CAAC,GAAG,EAAE;AACf;AACA,IAAA,OAAO,UAAU;AACnB,EAAA;AACA;AACA,EAAA,OAAO,UAAU;AACnB,CAAC;AAED,IAAM,2BAA2B,GAAI,WAAwB,IAAc;AACzE,EAAA,IAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG;EAEvC,IAAI,OAAO,IAAI,EAAE,EAAE;AACjB,IAAA,OAAO,IAAI;AACb,EAAA;EACA,OAAO,OAAO,KAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;AACvD,CAAC;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerCustomEvent.d.ts","sourceRoot":"","sources":["../src/triggerCustomEvent.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"triggerCustomEvent.d.ts","sourceRoot":"","sources":["../src/triggerCustomEvent.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,kBAAkB,GACtB,SAAS,WAAW,EACpB,WAAW,MAAM,EACjB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAUF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Trigger a CustomEvent. Return if the event is processed (true) or cancelled (false).
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
let triggerCustomEvent = (element, eventName, values) => {
|
|
3
|
+
let event = new CustomEvent(eventName, {
|
|
4
4
|
bubbles: true,
|
|
5
5
|
cancelable: true,
|
|
6
6
|
detail: values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerCustomEvent.js","sources":["../src/triggerCustomEvent.ts"],"sourcesContent":["// Trigger a CustomEvent. Return if the event is processed (true) or cancelled (false).\nconst triggerCustomEvent = (element: HTMLElement
|
|
1
|
+
{"version":3,"file":"triggerCustomEvent.js","sources":["../src/triggerCustomEvent.ts"],"sourcesContent":["// Trigger a CustomEvent. Return if the event is processed (true) or cancelled (false).\nconst triggerCustomEvent = (\n element: HTMLElement,\n eventName: string,\n values?: Record<string, unknown>,\n): boolean => {\n const event = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: values,\n });\n\n element.dispatchEvent(event);\n\n return !event.defaultPrevented;\n};\n\nexport default triggerCustomEvent;\n"],"names":[],"mappings":"AAAA;AACA,IAAM,kBAAkB,GAAG,CACzB,OAAoB,EACpB,SAAiB,EACjB,MAAgC,KACpB;AACZ,EAAA,IAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;AACvC,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE;AACV,GAAC,CAAC;AAEF,EAAA,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;EAE5B,OAAO,CAAC,KAAK,CAAC,gBAAgB;AAChC;;"}
|
package/lib/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,GAAG,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,GAAG,OAAO,KAAG,OAA8B,CAAC;AAElE,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MACrB,CAAC"}
|
package/lib/util.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
let isInt = n => Number.isInteger(n);
|
|
2
|
+
let getBoolString = value => value ? "true" : "false";
|
|
3
3
|
|
|
4
4
|
export { getBoolString, isInt };
|
|
5
5
|
//# sourceMappingURL=util.js.map
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sources":["../src/util.ts"],"sourcesContent":["export const isInt = (n: unknown): boolean
|
|
1
|
+
{"version":3,"file":"util.js","sources":["../src/util.ts"],"sourcesContent":["export const isInt = (n: unknown): boolean => Number.isInteger(n);\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n"],"names":[],"mappings":"AAAO,IAAM,KAAK,GAAI,CAAU,IAAc,MAAM,CAAC,SAAS,CAAC,CAAC;AAEzD,IAAM,aAAa,GAAI,KAAc,IAC1C,KAAK,GAAG,MAAM,GAAG;;"}
|
package/lib/version.d.ts
CHANGED
package/lib/version.js
CHANGED
package/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["// Generated by config/generateVersion.mjs. Do not edit.\nconst version = \"0.
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["// Generated by config/generateVersion.mjs. Do not edit.\nconst version = \"0.3.0\";\n\nexport default version;\n"],"names":[],"mappings":"AAAA;AACA,IAAM,OAAO,GAAG;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tree-element",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Tree widget in plain javascript",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tree"
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
"./package.json": "./package.json"
|
|
21
21
|
},
|
|
22
22
|
"sideEffects": false,
|
|
23
|
+
"browserslist": [
|
|
24
|
+
"defaults",
|
|
25
|
+
"not op_mini all"
|
|
26
|
+
],
|
|
23
27
|
"files": [
|
|
24
28
|
"tree_element.css",
|
|
25
29
|
"tree_element.debug.js",
|
|
@@ -35,9 +39,10 @@
|
|
|
35
39
|
},
|
|
36
40
|
"scripts": {
|
|
37
41
|
"ci": "pnpm lint && pnpm tsc && pnpm docs-check && pnpm test",
|
|
38
|
-
"
|
|
39
|
-
"vitest
|
|
40
|
-
"
|
|
42
|
+
"build-debug": "DEBUG_BUILD=true rollup --config config/rollup.config.mjs",
|
|
43
|
+
"vitest": "pnpm build-debug && vitest run --coverage --config config/vitest.config.mjs",
|
|
44
|
+
"vitest-watch": "vitest --config config/vitest.config.mjs",
|
|
45
|
+
"lint": "eslint css src playwright test",
|
|
41
46
|
"production": "./config/production",
|
|
42
47
|
"devserver": "SERVE=true rollup --config config/rollup.config.mjs --watch",
|
|
43
48
|
"docs-api": "typedoc && node docs/scripts/fixApiLinks.mjs",
|
|
@@ -46,67 +51,73 @@
|
|
|
46
51
|
"docs-preview": "vitepress preview docs",
|
|
47
52
|
"devserver-with-coverage": "COVERAGE=true SERVE=true rollup --config config/rollup.config.mjs",
|
|
48
53
|
"build-with-coverage": "COVERAGE=true rollup --config config/rollup.config.mjs",
|
|
49
|
-
"prettier": "prettier src
|
|
54
|
+
"prettier": "prettier \"src/**/*.ts\" \"test/**/*.ts\" --write",
|
|
50
55
|
"tsc": "tsc --noEmit --project tsconfig.json",
|
|
51
56
|
"version": "node config/generateVersion.mjs && git add src/version.ts",
|
|
52
57
|
"prepublishOnly": "pnpm run production",
|
|
53
58
|
"release": "node config/release.mjs",
|
|
54
|
-
"playwright": "pnpm build-with-coverage && playwright test --config
|
|
59
|
+
"playwright": "pnpm build-with-coverage && playwright test --config config/playwright.config.js",
|
|
55
60
|
"test": "pnpm vitest && pnpm playwright",
|
|
56
61
|
"docs-check": "kiira check"
|
|
57
62
|
},
|
|
58
63
|
"devDependencies": {
|
|
59
|
-
"@
|
|
60
|
-
"@babel/
|
|
61
|
-
"@babel/
|
|
64
|
+
"@axe-core/playwright": "^4.13.0",
|
|
65
|
+
"@babel/cli": "^8.0.6",
|
|
66
|
+
"@babel/core": "^8.0.6",
|
|
67
|
+
"@babel/preset-env": "^8.0.6",
|
|
62
68
|
"@babel/preset-typescript": "^8.0.1",
|
|
63
|
-
"@cspell/eslint-plugin": "^10.
|
|
64
|
-
"@eslint/
|
|
65
|
-
"@
|
|
69
|
+
"@cspell/eslint-plugin": "^10.3.6",
|
|
70
|
+
"@eslint/css": "^2.0.0",
|
|
71
|
+
"@eslint/js": "^10.0.1",
|
|
72
|
+
"@playwright/test": "^1.63.0",
|
|
66
73
|
"@rollup/plugin-babel": "^7.1.0",
|
|
67
74
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
68
75
|
"@rollup/plugin-terser": "^1.0.0",
|
|
69
|
-
"@testing-library/dom": "^10.4.
|
|
76
|
+
"@testing-library/dom": "^10.4.2",
|
|
70
77
|
"@testing-library/jest-dom": "^7.0.1",
|
|
71
|
-
"@testing-library/user-event": "^14.6.
|
|
78
|
+
"@testing-library/user-event": "^14.6.7",
|
|
72
79
|
"@types/debug": "^4.1.13",
|
|
73
|
-
"@types/node": "^26.4
|
|
74
|
-
"@vitest/coverage-istanbul": "^
|
|
80
|
+
"@types/node": "^26.6.4",
|
|
81
|
+
"@vitest/coverage-istanbul": "^5.0.3",
|
|
75
82
|
"@vitest/eslint-plugin": "^1.6.27",
|
|
76
|
-
"autoprefixer": "^10.5.4",
|
|
77
83
|
"axe-core": "^4.13.0",
|
|
78
84
|
"babel-plugin-istanbul": "^8.0.0",
|
|
79
|
-
"
|
|
85
|
+
"babel-plugin-prefix-private-members": "^0.3.0",
|
|
86
|
+
"eslint": "^10.12.0",
|
|
80
87
|
"eslint-import-resolver-typescript": "^4.4.5",
|
|
88
|
+
"eslint-plugin-compat": "^7.0.2",
|
|
81
89
|
"eslint-plugin-import-x": "^4.17.1",
|
|
82
90
|
"eslint-plugin-jest-dom": "^5.10.1",
|
|
83
|
-
"eslint-plugin-jest-extended": "
|
|
84
|
-
"eslint-plugin-
|
|
85
|
-
"eslint-plugin-
|
|
91
|
+
"eslint-plugin-jest-extended": "github:mbraak/eslint-plugin-jest-extended#modernize",
|
|
92
|
+
"eslint-plugin-no-unsanitized": "^4.1.5",
|
|
93
|
+
"eslint-plugin-perfectionist": "^5.12.1",
|
|
94
|
+
"eslint-plugin-playwright": "^2.12.0",
|
|
86
95
|
"eslint-plugin-testing-library": "^7.16.2",
|
|
96
|
+
"eslint-plugin-tsdoc": "^0.5.4",
|
|
97
|
+
"eslint-plugin-unicorn": "^77.0.0",
|
|
87
98
|
"jest-extended": "^7.0.0",
|
|
88
|
-
"jsdom": "^30",
|
|
99
|
+
"jsdom": "^30.1.1",
|
|
89
100
|
"jsdom-testing-mocks": "^1.16.0",
|
|
90
101
|
"jsonfile": "^6.2.1",
|
|
91
102
|
"kiira": "^0.6.0",
|
|
92
103
|
"kiira-core": "^0.6.0",
|
|
93
104
|
"lodash": "^4.18.1",
|
|
94
|
-
"msw": "^
|
|
95
|
-
"postcss": "^8.5.
|
|
96
|
-
"postcss-cli": "^
|
|
97
|
-
"postcss-import": "^17",
|
|
105
|
+
"msw": "^3.0.2",
|
|
106
|
+
"postcss": "^8.5.28",
|
|
107
|
+
"postcss-cli": "^12.0.0",
|
|
108
|
+
"postcss-import": "^17.0.0",
|
|
98
109
|
"postcss-load-config": "^6.0.1",
|
|
99
|
-
"postcss-nested": "^8",
|
|
100
|
-
"prettier": "^3.9.
|
|
101
|
-
"rollup": "^4.
|
|
110
|
+
"postcss-nested": "^8.0.1",
|
|
111
|
+
"prettier": "^3.9.9",
|
|
112
|
+
"rollup": "^4.64.0",
|
|
102
113
|
"rollup-plugin-serve": "^3.0.0",
|
|
103
114
|
"rollup-plugin-tsconfig-paths": "^1.5.2",
|
|
104
115
|
"tslib": "^2.8.1",
|
|
105
116
|
"typedoc": "^0.28.20",
|
|
106
|
-
"typedoc-plugin-markdown": "^4.13.
|
|
117
|
+
"typedoc-plugin-markdown": "^4.13.1",
|
|
107
118
|
"typescript": "^6.0.3",
|
|
108
|
-
"typescript-eslint": "^8.
|
|
119
|
+
"typescript-eslint": "^8.71.0",
|
|
109
120
|
"vitepress": "^1.6.4",
|
|
110
|
-
"vitest": "^
|
|
121
|
+
"vitest": "^5.0.3"
|
|
111
122
|
}
|
|
112
123
|
}
|