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.
Files changed (155) hide show
  1. package/README.md +43 -31
  2. package/lib/animation.d.ts +2 -2
  3. package/lib/animation.d.ts.map +1 -1
  4. package/lib/animation.js +16 -12
  5. package/lib/animation.js.map +1 -1
  6. package/lib/classNames.d.ts.map +1 -1
  7. package/lib/classNames.js +2 -2
  8. package/lib/classNames.js.map +1 -1
  9. package/lib/dataLoader.d.ts +1 -0
  10. package/lib/dataLoader.d.ts.map +1 -1
  11. package/lib/dataLoader.js +22 -20
  12. package/lib/dataLoader.js.map +1 -1
  13. package/lib/dragAndDropHandler/binarySearch.js +3 -3
  14. package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
  15. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
  16. package/lib/dragAndDropHandler/dragElement.js +11 -13
  17. package/lib/dragAndDropHandler/dragElement.js.map +1 -1
  18. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  19. package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
  20. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  21. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  22. package/lib/dragAndDropHandler/index.js +125 -158
  23. package/lib/dragAndDropHandler/index.js.map +1 -1
  24. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
  25. package/lib/dragAndDropHandler/iterateVisibleNodes.js +23 -22
  26. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
  27. package/lib/dragAndDropHandler/types.d.ts.map +1 -1
  28. package/lib/elementsRenderer.d.ts +20 -7
  29. package/lib/elementsRenderer.d.ts.map +1 -1
  30. package/lib/elementsRenderer.js +195 -136
  31. package/lib/elementsRenderer.js.map +1 -1
  32. package/lib/events.d.ts +44 -11
  33. package/lib/events.d.ts.map +1 -1
  34. package/lib/index.d.ts +36 -13
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +386 -349
  37. package/lib/index.js.map +1 -1
  38. package/lib/keyHandler.d.ts +13 -8
  39. package/lib/keyHandler.d.ts.map +1 -1
  40. package/lib/keyHandler.js +106 -51
  41. package/lib/keyHandler.js.map +1 -1
  42. package/lib/methodTypes.d.ts +3 -3
  43. package/lib/methodTypes.d.ts.map +1 -1
  44. package/lib/mouseHandler.d.ts +1 -1
  45. package/lib/mouseHandler.d.ts.map +1 -1
  46. package/lib/mouseHandler.js +36 -49
  47. package/lib/mouseHandler.js.map +1 -1
  48. package/lib/mouseUtils.d.ts.map +1 -1
  49. package/lib/mouseUtils.js +2 -2
  50. package/lib/mouseUtils.js.map +1 -1
  51. package/lib/node.d.ts +47 -16
  52. package/lib/node.d.ts.map +1 -1
  53. package/lib/node.js +169 -171
  54. package/lib/node.js.map +1 -1
  55. package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
  56. package/lib/nodeElement/borderDropHint.js +4 -5
  57. package/lib/nodeElement/borderDropHint.js.map +1 -1
  58. package/lib/nodeElement/folderElement.d.ts +8 -5
  59. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  60. package/lib/nodeElement/folderElement.js +75 -67
  61. package/lib/nodeElement/folderElement.js.map +1 -1
  62. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
  63. package/lib/nodeElement/ghostDropHint.js +13 -13
  64. package/lib/nodeElement/ghostDropHint.js.map +1 -1
  65. package/lib/nodeElement/index.d.ts +2 -1
  66. package/lib/nodeElement/index.d.ts.map +1 -1
  67. package/lib/nodeElement/index.js +38 -30
  68. package/lib/nodeElement/index.js.map +1 -1
  69. package/lib/nodeUtils.d.ts.map +1 -1
  70. package/lib/nodeUtils.js +1 -1
  71. package/lib/nodeUtils.js.map +1 -1
  72. package/lib/options.d.ts +19 -3
  73. package/lib/options.d.ts.map +1 -1
  74. package/lib/positionUtils.js +3 -3
  75. package/lib/positionUtils.js.map +1 -1
  76. package/lib/requestUrl.d.ts +1 -1
  77. package/lib/requestUrl.d.ts.map +1 -1
  78. package/lib/requestUrl.js +6 -17
  79. package/lib/requestUrl.js.map +1 -1
  80. package/lib/saveStateHandler.d.ts.map +1 -1
  81. package/lib/saveStateHandler.js +59 -89
  82. package/lib/saveStateHandler.js.map +1 -1
  83. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
  84. package/lib/scrollHandler/containerScrollParent.js +11 -18
  85. package/lib/scrollHandler/containerScrollParent.js.map +1 -1
  86. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
  87. package/lib/scrollHandler/createScrollParent.js +12 -13
  88. package/lib/scrollHandler/createScrollParent.js.map +1 -1
  89. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
  90. package/lib/scrollHandler/documentScrollParent.js +18 -27
  91. package/lib/scrollHandler/documentScrollParent.js.map +1 -1
  92. package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
  93. package/lib/scrollHandler/scrollParent.js +30 -34
  94. package/lib/scrollHandler/scrollParent.js.map +1 -1
  95. package/lib/scrollHandler.d.ts.map +1 -1
  96. package/lib/scrollHandler.js +11 -14
  97. package/lib/scrollHandler.js.map +1 -1
  98. package/lib/selectNodeHandler.d.ts +4 -2
  99. package/lib/selectNodeHandler.d.ts.map +1 -1
  100. package/lib/selectNodeHandler.js +64 -83
  101. package/lib/selectNodeHandler.js.map +1 -1
  102. package/lib/setDefaultOptions.d.ts.map +1 -1
  103. package/lib/setDefaultOptions.js +34 -38
  104. package/lib/setDefaultOptions.js.map +1 -1
  105. package/lib/triggerCustomEvent.d.ts.map +1 -1
  106. package/lib/triggerCustomEvent.js +2 -2
  107. package/lib/triggerCustomEvent.js.map +1 -1
  108. package/lib/util.d.ts.map +1 -1
  109. package/lib/util.js +2 -2
  110. package/lib/util.js.map +1 -1
  111. package/lib/version.d.ts +1 -1
  112. package/lib/version.js +1 -1
  113. package/lib/version.js.map +1 -1
  114. package/package.json +43 -32
  115. package/src/animation.ts +14 -12
  116. package/src/classNames.ts +52 -52
  117. package/src/dataLoader.ts +79 -71
  118. package/src/dragAndDropHandler/binarySearch.ts +17 -17
  119. package/src/dragAndDropHandler/dragElement.ts +51 -50
  120. package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
  121. package/src/dragAndDropHandler/index.ts +334 -348
  122. package/src/dragAndDropHandler/iterateVisibleNodes.ts +61 -63
  123. package/src/dragAndDropHandler/types.ts +5 -5
  124. package/src/elementsRenderer.ts +377 -294
  125. package/src/events.ts +241 -208
  126. package/src/header.txt +1 -1
  127. package/src/index.ts +259 -229
  128. package/src/keyHandler.ts +179 -115
  129. package/src/methodTypes.ts +7 -10
  130. package/src/mouseHandler.ts +316 -316
  131. package/src/mouseUtils.ts +14 -14
  132. package/src/node.ts +773 -771
  133. package/src/nodeElement/borderDropHint.ts +25 -25
  134. package/src/nodeElement/folderElement.ts +116 -102
  135. package/src/nodeElement/ghostDropHint.ts +64 -62
  136. package/src/nodeElement/index.ts +81 -73
  137. package/src/nodeUtils.ts +5 -5
  138. package/src/options.ts +25 -5
  139. package/src/requestUrl.ts +7 -14
  140. package/src/saveStateHandler.ts +191 -207
  141. package/src/scrollHandler/containerScrollParent.ts +40 -49
  142. package/src/scrollHandler/createScrollParent.ts +26 -27
  143. package/src/scrollHandler/documentScrollParent.ts +66 -72
  144. package/src/scrollHandler/scrollParent.ts +90 -86
  145. package/src/scrollHandler.ts +45 -45
  146. package/src/selectNodeHandler.ts +171 -165
  147. package/src/setDefaultOptions.ts +44 -32
  148. package/src/triggerCustomEvent.ts +7 -3
  149. package/src/util.ts +2 -3
  150. package/src/version.ts +1 -1
  151. package/tree_element.css +87 -69
  152. package/tree_element.debug.js +3866 -3831
  153. package/tree_element.debug.js.map +1 -1
  154. package/tree_element.js +2 -2
  155. package/tree_element.js.map +1 -1
@@ -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
- addToSelection(node) {
31
- if (node.id != null) {
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
- clear() {
30
+ _clear() {
38
31
  this._selectedNodes.clear();
39
32
  this._selectedSingleNode = null;
40
33
  }
41
- getSelectedNode() {
42
- const selectedNodes = this.getSelectedNodes();
43
- if (selectedNodes.length) {
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
- getSelectedNodes() {
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
- getSelectedNodesUnder(parent) {
51
+ _getSelectedNodesUnder(parent) {
64
52
  if (this._selectedSingleNode) {
65
- if (parent.isParentOf(this._selectedSingleNode)) {
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
- isNodeSelected(node) {
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
- removeFromSelection(node, includeChildren = false) {
70
+ _removeFromSelection(node, includeChildren = false) {
91
71
  if (node.id == null) {
92
- if (this._selectedSingleNode && node.element === this._selectedSingleNode.element) {
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
- * Renders the changed elements.
110
- * Deselects if the node is currently selected (if the mustToggle is on).
111
- * Deselects the previously selected node.
112
- * Check if the node is selectable.
113
- * Saves the state.
114
- * Options:
115
- * mustSetFocus: set the focus to the selected node
116
- * mustToggle: support deselecting the selected node
117
- */
118
- selectSingleNode(node, optionsParam) {
119
- const defaultOptions = {
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
- const selectOptions = {
103
+ let selectOptions = {
124
104
  ...defaultOptions,
125
- ...(optionsParam ?? {})
105
+ ...optionsParam
126
106
  };
127
- const canSelect = () => {
107
+ let canSelect = () => {
128
108
  if (!this._getSelectable()) {
129
109
  return false;
130
110
  }
131
- const onCanSelectNode = this._getOnCanSelectNode();
111
+ let onCanSelectNode = this._getOnCanSelectNode();
132
112
  return onCanSelectNode ? onCanSelectNode(node) : true;
133
113
  };
134
114
  if (!canSelect()) {
135
115
  return;
136
116
  }
137
- const deselectCurrentNode = deselectedNode => {
138
- this.removeFromSelection(deselectedNode);
139
- this._getNodeElementForNode(deselectedNode).deselect();
117
+ let deselectCurrentNode = deselectedNode => {
118
+ this._removeFromSelection(deselectedNode);
119
+ this._getNodeElementForNode(deselectedNode)._deselect();
140
120
  };
141
- if (this.isNodeSelected(node)) {
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
- const deselectedNode = this.getSelectedNode();
129
+ let deselectedNode = this._getSelectedNode();
150
130
  if (deselectedNode) {
151
131
  deselectCurrentNode(deselectedNode);
152
132
  }
153
- this.addToSelection(node);
133
+ this._addToSelection(node);
154
134
  this._openParents(node);
155
- this._getNodeElementForNode(node).select(selectOptions.mustSetFocus);
135
+ this._getNodeElementForNode(node)._select(selectOptions.mustSetFocus);
156
136
  this._triggerEvent("tree.select", {
157
- deselectedNode: deselectedNode || null,
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":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AA6CpD,QAAA,MAAM,iBAAiB,GAAI,aAAa,WAAW,EAAE,cAAc,OAAO,CAAC,kBAAkB,CAAC,KAAG,kBAShG,CAAA;AAwBD,eAAe,iBAAiB,CAAC"}
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"}
@@ -1,7 +1,7 @@
1
1
  import { DEFAULT_CLASS_PREFIX } from './classNames.js';
2
2
  import { Node } from './node.js';
3
3
 
4
- const defaults = {
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
- // http://www.fileformat.info/info/unicode/char/25ba/index.htm
14
- closedIcon: undefined,
15
- commonClassName: undefined,
16
- // the class of every element; the default is "<classPrefix>-common"
17
- data: undefined,
18
- dataFilter: undefined,
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
- onCanMoveTo: undefined,
26
- // Can this node be moved to this position? function(moved_node, target_node, position)
27
- onCanSelectNode: undefined,
28
- onCreateLi: undefined,
29
- onDragMove: undefined,
30
- onDragStop: undefined,
31
- onGetStateFromStorage: undefined,
32
- onIsMoveHandle: undefined,
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
- // http://www.fileformat.info/info/unicode/char/25bc/index.htm
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
- const setDefaultOptions = (htmlElement, inputOptions) => {
55
- const options = {
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 ??= "&#x25bc;";
63
59
  return options;
64
60
  };
65
- const getDefaultClosedIcon = options => {
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 "&#x25c0;";
69
- } else {
70
- // triangle to the right
71
- return "&#x25ba;";
72
69
  }
70
+ // triangle to the right
71
+ return "&#x25ba;";
73
72
  };
74
- const getRtlOptionFromHTMLElement = htmlElement => {
75
- const dataRtl = htmlElement.dataset.rtl;
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 // http://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 // http://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 = (htmlElement: HTMLElement, inputOptions: Partial<TreeElementOptions>): TreeElementOptions => {\n const options = { ...defaults, ...inputOptions };\n\n options.dataUrl ??= htmlElement.dataset.url;\n options.rtl ??= getRtlOptionFromHTMLElement(htmlElement);\n options.closedIcon ??= getDefaultClosedIcon(options);\n options.openedIcon ??= \"&#x25bc;\";\n\n return options;\n}\n\nconst getDefaultClosedIcon = (options: TreeElementOptions): string => {\n if (options.rtl) {\n // triangle to the left\n return \"&#x25c0;\";\n } else {\n // triangle to the right\n return \"&#x25ba;\";\n }\n}\n\nconst getRtlOptionFromHTMLElement = (htmlElement: HTMLElement): boolean => {\n const dataRtl = htmlElement.dataset.rtl;\n\n if (dataRtl == \"\") {\n return true;\n } else if (dataRtl === \"false\") {\n return false;\n } else {\n return Boolean(dataRtl);\n }\n}\n\nexport default setDefaultOptions;"],"names":[],"mappings":";;;AAKA,MAAM,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,EAAA,UAAU,EAAE,SAAS;AACrB,EAAA,eAAe,EAAE,SAAS;AAAE;AAC5B,EAAA,IAAI,EAAE,SAAS;AACf,EAAA,UAAU,EAAE,SAAS;AACrB,EAAA,OAAO,EAAE,SAAS;AAClB,EAAA,WAAW,EAAE,KAAK;AAClB,EAAA,eAAe,EAAE,IAAI;AACrB,EAAA,SAAS,EAAE,IAAI;AACf,EAAA,SAAS,EAAE,SAAS;AAAE;AACtB,EAAA,WAAW,EAAE,SAAS;AAAE;AACxB,EAAA,eAAe,EAAE,SAAS;AAC1B,EAAA,UAAU,EAAE,SAAS;AACrB,EAAA,UAAU,EAAE,SAAS;AACrB,EAAA,UAAU,EAAE,SAAS;AACrB,EAAA,qBAAqB,EAAE,SAAS;AAChC,EAAA,cAAc,EAAE,SAAS;AACzB,EAAA,qBAAqB,EAAE,SAAS;AAChC,EAAA,UAAU,EAAE,SAAS;AACrB,EAAA,eAAe,EAAE,GAAG;AAAE;AACtB;AACA;AACA,EAAA,GAAG,EAAE,SAAS;AAAE;AAChB,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,EAAA,aAAa,EAAE,SAAS;AAAE;AAC1B,EAAA,cAAc,EAAE;AAClB,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,WAAwB,EAAE,YAAyC,KAAyB;AACrH,EAAA,MAAM,OAAO,GAAG;AAAE,IAAA,GAAG,QAAQ;IAAE,GAAG;GAAc;AAEhD,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,MAAM,oBAAoB,GAAI,OAA2B,IAAa;EACpE,IAAI,OAAO,CAAC,GAAG,EAAE;AACf;AACA,IAAA,OAAO,UAAU;AACnB,EAAA,CAAC,MAAM;AACL;AACA,IAAA,OAAO,UAAU;AACnB,EAAA;AACF,CAAC;AAED,MAAM,2BAA2B,GAAI,WAAwB,IAAc;AACzE,EAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG;EAEvC,IAAI,OAAO,IAAI,EAAE,EAAE;AACjB,IAAA,OAAO,IAAI;AACb,EAAA,CAAC,MAAM,IAAI,OAAO,KAAK,OAAO,EAAE;AAC9B,IAAA,OAAO,KAAK;AACd,EAAA,CAAC,MAAM;IACL,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB,EAAA;AACF,CAAC;;"}
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 ??= \"&#x25bc;\";\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 \"&#x25c0;\";\n }\n // triangle to the right\n return \"&#x25ba;\";\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,GAAI,SAAS,WAAW,EAAE,WAAW,MAAM,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAUvG,CAAA;AAED,eAAe,kBAAkB,CAAC"}
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
- const triggerCustomEvent = (element, eventName, values) => {
3
- const event = new CustomEvent(eventName, {
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, eventName: string, values?: Record<string, unknown>): 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;"],"names":[],"mappings":"AAAA;AACA,MAAM,kBAAkB,GAAG,CAAC,OAAoB,EAAE,SAAiB,EAAE,MAAgC,KAAc;AACjH,EAAA,MAAM,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;;"}
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,OACK,CAAC;AAEzC,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MACnB,CAAC"}
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
- const isInt = n => typeof n === "number" && n % 1 === 0;
2
- const getBoolString = value => value ? "true" : "false";
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 =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n"],"names":[],"mappings":"AAAO,MAAM,KAAK,GAAI,CAAU,IAC5B,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK;AAEhC,MAAM,aAAa,GAAI,KAAc,IACxC,KAAK,GAAG,MAAM,GAAG;;"}
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
@@ -1,3 +1,3 @@
1
- declare const version = "0.1.1";
1
+ declare const version = "0.3.0";
2
2
  export default version;
3
3
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // Generated by config/generateVersion.mjs. Do not edit.
2
- const version = "0.1.1";
2
+ let version = "0.3.0";
3
3
 
4
4
  export { version as default };
5
5
  //# sourceMappingURL=version.js.map
@@ -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.1\";\n\nexport default version;\n"],"names":[],"mappings":"AAAA;AACA,MAAM,OAAO,GAAG;;"}
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.1.1",
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
- "vitest": "vitest run --coverage --config test/vitest.config.mjs",
39
- "vitest-watch": "vitest --config test/vitest.config.mjs",
40
- "lint": "eslint config src playwright test",
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/*.ts --write --tab-width 4",
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 playwright/playwright.config.js",
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
- "@babel/cli": "^8.0.4",
60
- "@babel/core": "^8.0.1",
61
- "@babel/preset-env": "^8.0.2",
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.2.0",
64
- "@eslint/js": "^10",
65
- "@playwright/test": "^1.62.1",
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.1",
76
+ "@testing-library/dom": "^10.4.2",
70
77
  "@testing-library/jest-dom": "^7.0.1",
71
- "@testing-library/user-event": "^14.6.6",
78
+ "@testing-library/user-event": "^14.6.7",
72
79
  "@types/debug": "^4.1.13",
73
- "@types/node": "^26.4.0",
74
- "@vitest/coverage-istanbul": "^4.1.11",
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
- "eslint": "^10",
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": "^3.0.1",
84
- "eslint-plugin-perfectionist": "^5.11.0",
85
- "eslint-plugin-playwright": "^2.11.0",
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": "^2.15.0",
95
- "postcss": "^8.5.26",
96
- "postcss-cli": "^11.0.1",
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.6",
101
- "rollup": "^4.63.1",
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.0",
117
+ "typedoc-plugin-markdown": "^4.13.1",
107
118
  "typescript": "^6.0.3",
108
- "typescript-eslint": "^8.69.0",
119
+ "typescript-eslint": "^8.71.0",
109
120
  "vitepress": "^1.6.4",
110
- "vitest": "^4.1.11"
121
+ "vitest": "^5.0.3"
111
122
  }
112
123
  }