tree-element 0.1.1 → 0.2.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 (148) hide show
  1. package/README.md +33 -29
  2. package/lib/animation.js +5 -5
  3. package/lib/animation.js.map +1 -1
  4. package/lib/classNames.d.ts.map +1 -1
  5. package/lib/classNames.js +2 -2
  6. package/lib/classNames.js.map +1 -1
  7. package/lib/dataLoader.d.ts.map +1 -1
  8. package/lib/dataLoader.js +14 -20
  9. package/lib/dataLoader.js.map +1 -1
  10. package/lib/dragAndDropHandler/binarySearch.js +3 -3
  11. package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
  12. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
  13. package/lib/dragAndDropHandler/dragElement.js +9 -12
  14. package/lib/dragAndDropHandler/dragElement.js.map +1 -1
  15. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  16. package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
  17. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  18. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  19. package/lib/dragAndDropHandler/index.js +90 -114
  20. package/lib/dragAndDropHandler/index.js.map +1 -1
  21. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
  22. package/lib/dragAndDropHandler/iterateVisibleNodes.js +10 -10
  23. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
  24. package/lib/dragAndDropHandler/types.d.ts.map +1 -1
  25. package/lib/elementsRenderer.d.ts +15 -6
  26. package/lib/elementsRenderer.d.ts.map +1 -1
  27. package/lib/elementsRenderer.js +157 -121
  28. package/lib/elementsRenderer.js.map +1 -1
  29. package/lib/events.d.ts.map +1 -1
  30. package/lib/index.d.ts +5 -5
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +249 -252
  33. package/lib/index.js.map +1 -1
  34. package/lib/keyHandler.d.ts +2 -3
  35. package/lib/keyHandler.d.ts.map +1 -1
  36. package/lib/keyHandler.js +26 -25
  37. package/lib/keyHandler.js.map +1 -1
  38. package/lib/methodTypes.d.ts +1 -1
  39. package/lib/methodTypes.d.ts.map +1 -1
  40. package/lib/mouseHandler.d.ts.map +1 -1
  41. package/lib/mouseHandler.js +26 -42
  42. package/lib/mouseHandler.js.map +1 -1
  43. package/lib/mouseUtils.d.ts.map +1 -1
  44. package/lib/mouseUtils.js +2 -2
  45. package/lib/mouseUtils.js.map +1 -1
  46. package/lib/node.d.ts +2 -1
  47. package/lib/node.d.ts.map +1 -1
  48. package/lib/node.js +36 -35
  49. package/lib/node.js.map +1 -1
  50. package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
  51. package/lib/nodeElement/borderDropHint.js +4 -5
  52. package/lib/nodeElement/borderDropHint.js.map +1 -1
  53. package/lib/nodeElement/folderElement.d.ts +7 -4
  54. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  55. package/lib/nodeElement/folderElement.js +61 -42
  56. package/lib/nodeElement/folderElement.js.map +1 -1
  57. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
  58. package/lib/nodeElement/ghostDropHint.js +5 -9
  59. package/lib/nodeElement/ghostDropHint.js.map +1 -1
  60. package/lib/nodeElement/index.d.ts +2 -1
  61. package/lib/nodeElement/index.d.ts.map +1 -1
  62. package/lib/nodeElement/index.js +34 -26
  63. package/lib/nodeElement/index.js.map +1 -1
  64. package/lib/nodeUtils.d.ts.map +1 -1
  65. package/lib/nodeUtils.js +1 -1
  66. package/lib/nodeUtils.js.map +1 -1
  67. package/lib/options.d.ts.map +1 -1
  68. package/lib/positionUtils.js +3 -3
  69. package/lib/positionUtils.js.map +1 -1
  70. package/lib/requestUrl.d.ts +1 -1
  71. package/lib/requestUrl.d.ts.map +1 -1
  72. package/lib/requestUrl.js +4 -6
  73. package/lib/requestUrl.js.map +1 -1
  74. package/lib/saveStateHandler.d.ts.map +1 -1
  75. package/lib/saveStateHandler.js +38 -48
  76. package/lib/saveStateHandler.js.map +1 -1
  77. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
  78. package/lib/scrollHandler/containerScrollParent.js +9 -11
  79. package/lib/scrollHandler/containerScrollParent.js.map +1 -1
  80. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
  81. package/lib/scrollHandler/createScrollParent.js +10 -10
  82. package/lib/scrollHandler/createScrollParent.js.map +1 -1
  83. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
  84. package/lib/scrollHandler/documentScrollParent.js +16 -19
  85. package/lib/scrollHandler/documentScrollParent.js.map +1 -1
  86. package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
  87. package/lib/scrollHandler/scrollParent.js +11 -17
  88. package/lib/scrollHandler/scrollParent.js.map +1 -1
  89. package/lib/scrollHandler.d.ts.map +1 -1
  90. package/lib/scrollHandler.js +11 -14
  91. package/lib/scrollHandler.js.map +1 -1
  92. package/lib/selectNodeHandler.d.ts +2 -2
  93. package/lib/selectNodeHandler.d.ts.map +1 -1
  94. package/lib/selectNodeHandler.js +45 -54
  95. package/lib/selectNodeHandler.js.map +1 -1
  96. package/lib/setDefaultOptions.d.ts.map +1 -1
  97. package/lib/setDefaultOptions.js +23 -28
  98. package/lib/setDefaultOptions.js.map +1 -1
  99. package/lib/triggerCustomEvent.d.ts.map +1 -1
  100. package/lib/triggerCustomEvent.js +2 -2
  101. package/lib/triggerCustomEvent.js.map +1 -1
  102. package/lib/util.d.ts.map +1 -1
  103. package/lib/util.js +2 -2
  104. package/lib/util.js.map +1 -1
  105. package/lib/version.d.ts +1 -1
  106. package/lib/version.js +1 -1
  107. package/lib/version.js.map +1 -1
  108. package/package.json +5 -3
  109. package/src/animation.ts +1 -1
  110. package/src/classNames.ts +52 -52
  111. package/src/dataLoader.ts +68 -71
  112. package/src/dragAndDropHandler/binarySearch.ts +17 -17
  113. package/src/dragAndDropHandler/dragElement.ts +50 -50
  114. package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
  115. package/src/dragAndDropHandler/index.ts +342 -351
  116. package/src/dragAndDropHandler/iterateVisibleNodes.ts +59 -63
  117. package/src/dragAndDropHandler/types.ts +5 -5
  118. package/src/elementsRenderer.ts +351 -298
  119. package/src/events.ts +216 -216
  120. package/src/header.txt +1 -1
  121. package/src/index.ts +52 -82
  122. package/src/keyHandler.ts +125 -115
  123. package/src/methodTypes.ts +4 -7
  124. package/src/mouseHandler.ts +314 -317
  125. package/src/mouseUtils.ts +14 -14
  126. package/src/node.ts +761 -766
  127. package/src/nodeElement/borderDropHint.ts +25 -25
  128. package/src/nodeElement/folderElement.ts +135 -112
  129. package/src/nodeElement/ghostDropHint.ts +62 -62
  130. package/src/nodeElement/index.ts +88 -74
  131. package/src/nodeUtils.ts +5 -5
  132. package/src/options.ts +6 -2
  133. package/src/requestUrl.ts +3 -3
  134. package/src/saveStateHandler.ts +204 -206
  135. package/src/scrollHandler/containerScrollParent.ts +49 -52
  136. package/src/scrollHandler/createScrollParent.ts +27 -27
  137. package/src/scrollHandler/documentScrollParent.ts +70 -70
  138. package/src/scrollHandler/scrollParent.ts +98 -98
  139. package/src/scrollHandler.ts +45 -45
  140. package/src/selectNodeHandler.ts +176 -166
  141. package/src/setDefaultOptions.ts +25 -22
  142. package/src/triggerCustomEvent.ts +7 -3
  143. package/src/util.ts +2 -2
  144. package/src/version.ts +1 -1
  145. package/tree_element.debug.js +3752 -3784
  146. package/tree_element.debug.js.map +1 -1
  147. package/tree_element.js +2 -2
  148. package/tree_element.js.map +1 -1
package/src/nodeUtils.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import type { NodeData, NodeRecord } from "./node";
2
2
 
3
3
  interface NodeRecordWithChildren extends NodeRecord {
4
- children: NodeData[];
4
+ children: NodeData[];
5
5
  }
6
6
 
7
7
  export const isNodeRecordWithChildren = (
8
- data: NodeData,
8
+ data: NodeData,
9
9
  ): data is NodeRecordWithChildren =>
10
- typeof data === "object" &&
11
- "children" in data &&
12
- data.children instanceof Array;
10
+ typeof data === "object" &&
11
+ "children" in data &&
12
+ data.children instanceof Array;
package/src/options.ts CHANGED
@@ -17,9 +17,13 @@ export type OnCanMoveTo = (
17
17
  positionName: string,
18
18
  ) => boolean;
19
19
 
20
- export type OnCanSelectNode = (node: Node) => boolean
20
+ export type OnCanSelectNode = (node: Node) => boolean;
21
21
 
22
- export type OnCreateLi = (node: Node, el: HTMLElement, isSelected: boolean) => void;
22
+ export type OnCreateLi = (
23
+ node: Node,
24
+ el: HTMLElement,
25
+ isSelected: boolean,
26
+ ) => void;
23
27
 
24
28
  export type OnGetStateFromStorage = (() => string) | undefined;
25
29
 
package/src/requestUrl.ts CHANGED
@@ -7,7 +7,7 @@ const isAbsoluteUrl = (inputUrl: string) => {
7
7
  } catch {
8
8
  return false;
9
9
  }
10
- }
10
+ };
11
11
 
12
12
  const LOCALHOST = "http://localhost";
13
13
 
@@ -29,7 +29,7 @@ class RequestUrl {
29
29
  this.url.searchParams.set(key, value);
30
30
  }
31
31
 
32
- toString() {
32
+ value() {
33
33
  if (this.isAbsolute) {
34
34
  return this.url.href;
35
35
  } else {
@@ -38,4 +38,4 @@ class RequestUrl {
38
38
  }
39
39
  }
40
40
 
41
- export default RequestUrl;
41
+ export default RequestUrl;
@@ -1,11 +1,11 @@
1
1
  import type {
2
- AddToSelection,
3
- GetNodeById,
4
- GetSelectedNodes,
5
- GetTree,
6
- OpenNode,
7
- RefreshElements,
8
- RemoveFromSelection,
2
+ AddToSelection,
3
+ GetNodeById,
4
+ GetSelectedNodes,
5
+ GetTree,
6
+ OpenNode,
7
+ RefreshElements,
8
+ RemoveFromSelection,
9
9
  } from "./methodTypes";
10
10
  import type { Node, NodeId } from "./node";
11
11
  import type { OnGetStateFromStorage, OnSetStateFromStorage } from "./options";
@@ -13,267 +13,265 @@ import type { OnGetStateFromStorage, OnSetStateFromStorage } from "./options";
13
13
  import { isInt } from "./util";
14
14
 
15
15
  export interface SavedState {
16
- open_nodes?: NodeId[];
17
- selected_node?: NodeId[];
16
+ open_nodes?: NodeId[];
17
+ selected_node?: NodeId[];
18
18
  }
19
19
 
20
20
  interface SaveStateHandlerParams {
21
- addToSelection: AddToSelection;
22
- getNodeById: GetNodeById;
23
- getSelectedNodes: GetSelectedNodes;
24
- getTree: GetTree;
25
- onGetStateFromStorage?: OnGetStateFromStorage;
26
- onSetStateFromStorage?: OnSetStateFromStorage;
27
- openNode: OpenNode;
28
- refreshElements: RefreshElements;
29
- removeFromSelection: RemoveFromSelection;
30
- saveState: boolean | string;
21
+ addToSelection: AddToSelection;
22
+ getNodeById: GetNodeById;
23
+ getSelectedNodes: GetSelectedNodes;
24
+ getTree: GetTree;
25
+ onGetStateFromStorage?: OnGetStateFromStorage;
26
+ onSetStateFromStorage?: OnSetStateFromStorage;
27
+ openNode: OpenNode;
28
+ refreshElements: RefreshElements;
29
+ removeFromSelection: RemoveFromSelection;
30
+ saveState: boolean | string;
31
31
  }
32
32
 
33
33
  export default class SaveStateHandler {
34
- private addToSelection: AddToSelection;
35
- private getNodeById: GetNodeById;
36
- private getSelectedNodes: GetSelectedNodes;
37
- private getTree: GetTree;
38
- private onGetStateFromStorage?: OnGetStateFromStorage;
39
- private onSetStateFromStorage?: OnSetStateFromStorage;
40
- private openNode: OpenNode;
41
- private refreshElements: RefreshElements;
42
- private removeFromSelection: RemoveFromSelection;
43
- private saveStateOption: boolean | string;
44
-
45
- constructor({
46
- addToSelection,
47
- getNodeById,
48
- getSelectedNodes,
49
- getTree,
50
- onGetStateFromStorage,
51
- onSetStateFromStorage,
52
- openNode,
53
- refreshElements,
54
- removeFromSelection,
55
- saveState,
56
- }: SaveStateHandlerParams) {
57
- this.addToSelection = addToSelection;
58
- this.getNodeById = getNodeById;
59
- this.getSelectedNodes = getSelectedNodes;
60
- this.getTree = getTree;
61
- this.onGetStateFromStorage = onGetStateFromStorage;
62
- this.onSetStateFromStorage = onSetStateFromStorage;
63
- this.openNode = openNode;
64
- this.refreshElements = refreshElements;
65
- this.removeFromSelection = removeFromSelection;
66
- this.saveStateOption = saveState;
34
+ private addToSelection: AddToSelection;
35
+ private getNodeById: GetNodeById;
36
+ private getSelectedNodes: GetSelectedNodes;
37
+ private getTree: GetTree;
38
+ private onGetStateFromStorage?: OnGetStateFromStorage;
39
+ private onSetStateFromStorage?: OnSetStateFromStorage;
40
+ private openNode: OpenNode;
41
+ private refreshElements: RefreshElements;
42
+ private removeFromSelection: RemoveFromSelection;
43
+ private saveStateOption: boolean | string;
44
+
45
+ constructor({
46
+ addToSelection,
47
+ getNodeById,
48
+ getSelectedNodes,
49
+ getTree,
50
+ onGetStateFromStorage,
51
+ onSetStateFromStorage,
52
+ openNode,
53
+ refreshElements,
54
+ removeFromSelection,
55
+ saveState,
56
+ }: SaveStateHandlerParams) {
57
+ this.addToSelection = addToSelection;
58
+ this.getNodeById = getNodeById;
59
+ this.getSelectedNodes = getSelectedNodes;
60
+ this.getTree = getTree;
61
+ this.onGetStateFromStorage = onGetStateFromStorage;
62
+ this.onSetStateFromStorage = onSetStateFromStorage;
63
+ this.openNode = openNode;
64
+ this.refreshElements = refreshElements;
65
+ this.removeFromSelection = removeFromSelection;
66
+ this.saveStateOption = saveState;
67
+ }
68
+
69
+ public getNodeIdToBeSelected(): NodeId | null {
70
+ if (!this.saveStateOption) {
71
+ return null;
67
72
  }
68
73
 
69
- public getNodeIdToBeSelected(): NodeId | null {
70
- if (!this.saveStateOption) {
71
- return null;
72
- }
73
-
74
- const state = this.getStateFromStorage();
74
+ const state = this.getStateFromStorage();
75
75
 
76
- if (state?.selected_node) {
77
- return state.selected_node[0] ?? null;
78
- } else {
79
- return null;
80
- }
76
+ if (state?.selected_node) {
77
+ return state.selected_node[0] ?? null;
78
+ } else {
79
+ return null;
81
80
  }
81
+ }
82
+
83
+ public getState(): SavedState {
84
+ const getOpenNodeIds = (): NodeId[] => {
85
+ const openNodes: NodeId[] = [];
82
86
 
83
- public getState(): SavedState {
84
- const getOpenNodeIds = (): NodeId[] => {
85
- const openNodes: NodeId[] = [];
87
+ this.getTree()?.iterate((node: Node) => {
88
+ if (node.is_open && node.id && node.hasChildren()) {
89
+ openNodes.push(node.id);
90
+ }
91
+ return true;
92
+ });
86
93
 
87
- this.getTree()?.iterate((node: Node) => {
88
- if (node.is_open && node.id && node.hasChildren()) {
89
- openNodes.push(node.id);
90
- }
91
- return true;
92
- });
94
+ return openNodes;
95
+ };
93
96
 
94
- return openNodes;
95
- };
97
+ const getSelectedNodeIds = (): NodeId[] => {
98
+ const selectedNodeIds: NodeId[] = [];
96
99
 
97
- const getSelectedNodeIds = (): NodeId[] => {
98
- const selectedNodeIds: NodeId[] = [];
100
+ this.getSelectedNodes().forEach((node) => {
101
+ if (node.id != null) {
102
+ selectedNodeIds.push(node.id);
103
+ }
104
+ });
99
105
 
100
- this.getSelectedNodes().forEach((node) => {
101
- if (node.id != null) {
102
- selectedNodeIds.push(node.id);
103
- }
104
- });
106
+ return selectedNodeIds;
107
+ };
105
108
 
106
- return selectedNodeIds;
107
- };
109
+ return {
110
+ open_nodes: getOpenNodeIds(),
111
+ selected_node: getSelectedNodeIds(),
112
+ };
113
+ }
108
114
 
109
- return {
110
- open_nodes: getOpenNodeIds(),
111
- selected_node: getSelectedNodeIds(),
112
- };
115
+ public getStateFromStorage(): null | SavedState {
116
+ if (!this.saveStateOption) {
117
+ return null;
113
118
  }
114
119
 
115
- public getStateFromStorage(): null | SavedState {
116
- if (!this.saveStateOption) {
117
- return null;
118
- }
120
+ const jsonData = this.loadFromStorage();
119
121
 
120
- const jsonData = this.loadFromStorage();
121
-
122
- if (jsonData) {
123
- return this.parseState(jsonData);
124
- } else {
125
- return null;
126
- }
122
+ if (jsonData) {
123
+ return this.parseState(jsonData);
124
+ } else {
125
+ return null;
127
126
  }
127
+ }
128
128
 
129
- public saveState(): void {
130
- if (!this.saveStateOption) {
131
- return;
132
- }
129
+ public saveState(): void {
130
+ if (!this.saveStateOption) {
131
+ return;
132
+ }
133
133
 
134
- const state = JSON.stringify(this.getState());
134
+ const state = JSON.stringify(this.getState());
135
135
 
136
- if (this.onSetStateFromStorage) {
137
- this.onSetStateFromStorage(state);
138
- } else {
139
- localStorage.setItem(this.getKeyName(), state);
140
- }
136
+ if (this.onSetStateFromStorage) {
137
+ this.onSetStateFromStorage(state);
138
+ } else {
139
+ localStorage.setItem(this.getKeyName(), state);
141
140
  }
141
+ }
142
142
 
143
- /*
143
+ /*
144
144
  Set initial state
145
145
  Don't handle nodes that are loaded on demand
146
146
 
147
147
  result: must load on demand (boolean)
148
148
  */
149
- public setInitialState(state: SavedState): boolean {
150
- let mustLoadOnDemand = false;
149
+ public setInitialState(state: SavedState): boolean {
150
+ let mustLoadOnDemand = false;
151
151
 
152
- if (state.open_nodes) {
153
- mustLoadOnDemand = this.openInitialNodes(state.open_nodes);
154
- }
155
-
156
- this.resetSelection();
152
+ if (state.open_nodes) {
153
+ mustLoadOnDemand = this.openInitialNodes(state.open_nodes);
154
+ }
157
155
 
158
- if (state.selected_node) {
159
- this.selectInitialNodes(state.selected_node);
160
- }
156
+ this.resetSelection();
161
157
 
162
- return mustLoadOnDemand;
158
+ if (state.selected_node) {
159
+ this.selectInitialNodes(state.selected_node);
163
160
  }
164
161
 
165
- public async setInitialStateOnDemand(
166
- state: SavedState,
167
- ): Promise<void> {
168
- let nodeIds = state.open_nodes;
162
+ return mustLoadOnDemand;
163
+ }
169
164
 
170
- const openNodes = async () => {
171
- if (!nodeIds) {
172
- return;
173
- }
165
+ public async setInitialStateOnDemand(state: SavedState): Promise<void> {
166
+ let nodeIds = state.open_nodes;
174
167
 
175
- const newNodesIds = [];
176
-
177
- for (const nodeId of nodeIds) {
178
- const node = this.getNodeById(nodeId);
179
-
180
- if (!node) {
181
- newNodesIds.push(nodeId);
182
- } else {
183
- if (!node.is_loading) {
184
- if (node.load_on_demand) {
185
- await loadAndOpenNode(node);
186
- } else {
187
- await this.openNode(node, false);
188
- }
189
- }
190
- }
191
- }
168
+ const openNodes = async () => {
169
+ if (!nodeIds) {
170
+ return;
171
+ }
192
172
 
193
- nodeIds = newNodesIds;
173
+ const newNodesIds = [];
194
174
 
195
- if (state.selected_node) {
196
- if (this.selectInitialNodes(state.selected_node)) {
197
- this.refreshElements(null);
198
- }
199
- }
200
- };
175
+ for (const nodeId of nodeIds) {
176
+ const node = this.getNodeById(nodeId);
201
177
 
202
- const loadAndOpenNode = async (node: Node) => {
203
- await this.openNode(node, false);
204
- await openNodes();
205
- };
178
+ if (!node) {
179
+ newNodesIds.push(nodeId);
180
+ } else {
181
+ if (!node.is_loading) {
182
+ if (node.load_on_demand) {
183
+ await loadAndOpenNode(node);
184
+ } else {
185
+ await this.openNode(node, false);
186
+ }
187
+ }
188
+ }
189
+ }
206
190
 
207
- await openNodes();
208
- }
191
+ nodeIds = newNodesIds;
209
192
 
210
- private getKeyName(): string {
211
- if (typeof this.saveStateOption === "string") {
212
- return this.saveStateOption;
213
- } else {
214
- return "tree";
193
+ if (state.selected_node) {
194
+ if (this.selectInitialNodes(state.selected_node)) {
195
+ this.refreshElements(null);
215
196
  }
197
+ }
198
+ };
199
+
200
+ const loadAndOpenNode = async (node: Node) => {
201
+ await this.openNode(node, false);
202
+ await openNodes();
203
+ };
204
+
205
+ await openNodes();
206
+ }
207
+
208
+ private getKeyName(): string {
209
+ if (typeof this.saveStateOption === "string") {
210
+ return this.saveStateOption;
211
+ } else {
212
+ return "tree";
216
213
  }
214
+ }
217
215
 
218
- private loadFromStorage(): null | string {
219
- if (this.onGetStateFromStorage) {
220
- return this.onGetStateFromStorage();
221
- } else {
222
- return localStorage.getItem(this.getKeyName());
223
- }
216
+ private loadFromStorage(): null | string {
217
+ if (this.onGetStateFromStorage) {
218
+ return this.onGetStateFromStorage();
219
+ } else {
220
+ return localStorage.getItem(this.getKeyName());
224
221
  }
222
+ }
225
223
 
226
- private openInitialNodes(nodeIds: NodeId[]): boolean {
227
- let mustLoadOnDemand = false;
224
+ private openInitialNodes(nodeIds: NodeId[]): boolean {
225
+ let mustLoadOnDemand = false;
228
226
 
229
- for (const nodeId of nodeIds) {
230
- const node = this.getNodeById(nodeId);
227
+ for (const nodeId of nodeIds) {
228
+ const node = this.getNodeById(nodeId);
231
229
 
232
- if (node) {
233
- if (!node.load_on_demand) {
234
- node.is_open = true;
235
- } else {
236
- mustLoadOnDemand = true;
237
- }
238
- }
230
+ if (node) {
231
+ if (!node.load_on_demand) {
232
+ node.is_open = true;
233
+ } else {
234
+ mustLoadOnDemand = true;
239
235
  }
240
-
241
- return mustLoadOnDemand;
236
+ }
242
237
  }
243
238
 
244
- private parseState(jsonData: string): SavedState {
245
- const state = JSON.parse(jsonData) as Record<string, unknown>;
239
+ return mustLoadOnDemand;
240
+ }
246
241
 
247
- // Check if selected_node is an int (instead of an array)
248
- if (state.selected_node && isInt(state.selected_node)) {
249
- // Convert to array
250
- state.selected_node = [state.selected_node];
251
- }
242
+ private parseState(jsonData: string): SavedState {
243
+ const state = JSON.parse(jsonData) as Record<string, unknown>;
252
244
 
253
- return state;
245
+ // Check if selected_node is an int (instead of an array)
246
+ if (state.selected_node && isInt(state.selected_node)) {
247
+ // Convert to array
248
+ state.selected_node = [state.selected_node];
254
249
  }
255
250
 
256
- private resetSelection(): void {
257
- const selectedNodes = this.getSelectedNodes();
251
+ return state;
252
+ }
258
253
 
259
- selectedNodes.forEach((node) => {
260
- this.removeFromSelection(node);
261
- });
262
- }
254
+ private resetSelection(): void {
255
+ const selectedNodes = this.getSelectedNodes();
263
256
 
264
- private selectInitialNodes(nodeIds: NodeId[]): boolean {
265
- let selectCount = 0;
257
+ selectedNodes.forEach((node) => {
258
+ this.removeFromSelection(node);
259
+ });
260
+ }
266
261
 
267
- for (const nodeId of nodeIds) {
268
- const node = this.getNodeById(nodeId);
262
+ private selectInitialNodes(nodeIds: NodeId[]): boolean {
263
+ let selectCount = 0;
269
264
 
270
- if (node) {
271
- selectCount += 1;
265
+ for (const nodeId of nodeIds) {
266
+ const node = this.getNodeById(nodeId);
272
267
 
273
- this.addToSelection(node);
274
- }
275
- }
268
+ if (node) {
269
+ selectCount += 1;
276
270
 
277
- return selectCount !== 0;
271
+ this.addToSelection(node);
272
+ }
278
273
  }
274
+
275
+ return selectCount !== 0;
276
+ }
279
277
  }
@@ -1,71 +1,68 @@
1
1
  import type {
2
- HorizontalScrollDirection,
3
- VerticalScrollDirection,
2
+ HorizontalScrollDirection,
3
+ VerticalScrollDirection,
4
4
  } from "./scrollParent";
5
5
 
6
6
  import { getElementPosition, getOffsetTop } from "../positionUtils";
7
7
  import { ScrollParent } from "./scrollParent";
8
8
 
9
-
10
9
  export default class ContainerScrollParent extends ScrollParent {
11
- private scrollParentBottom?: number;
12
- private scrollParentTop?: number;
13
-
14
- public stopScrolling() {
15
- super.stopScrolling();
16
-
17
- this.horizontalScrollDirection = undefined;
18
- this.verticalScrollDirection = undefined;
10
+ private scrollParentBottom?: number;
11
+ private scrollParentTop?: number;
12
+
13
+ public stopScrolling() {
14
+ super.stopScrolling();
15
+
16
+ this.horizontalScrollDirection = undefined;
17
+ this.verticalScrollDirection = undefined;
18
+ }
19
+
20
+ protected getNewHorizontalScrollDirection(
21
+ pageX: number,
22
+ ): HorizontalScrollDirection | undefined {
23
+ const scrollParentOffset = getElementPosition(this.container);
24
+ const containerWidth = this.container.getBoundingClientRect().width;
25
+
26
+ const rightEdge = scrollParentOffset.left + containerWidth;
27
+ const leftEdge = scrollParentOffset.left;
28
+ const isNearRightEdge = pageX > rightEdge - 20;
29
+ const isNearLeftEdge = pageX < leftEdge + 20;
30
+
31
+ if (isNearRightEdge) {
32
+ return "right";
33
+ } else if (isNearLeftEdge) {
34
+ return "left";
19
35
  }
20
36
 
21
- protected getNewHorizontalScrollDirection(
22
- pageX: number,
23
- ): HorizontalScrollDirection | undefined {
24
- const scrollParentOffset = getElementPosition(this.container);
25
- const containerWidth = this.container.getBoundingClientRect().width;
26
-
27
- const rightEdge = scrollParentOffset.left + containerWidth;
28
- const leftEdge = scrollParentOffset.left;
29
- const isNearRightEdge = pageX > rightEdge - 20;
30
- const isNearLeftEdge = pageX < leftEdge + 20;
31
-
32
- if (isNearRightEdge) {
33
- return "right";
34
- } else if (isNearLeftEdge) {
35
- return "left";
36
- }
37
+ return undefined;
38
+ }
37
39
 
38
- return undefined;
40
+ protected getNewVerticalScrollDirection(
41
+ pageY: number,
42
+ ): undefined | VerticalScrollDirection {
43
+ if (pageY < this.getScrollParentTop()) {
44
+ return "top";
39
45
  }
40
46
 
41
- protected getNewVerticalScrollDirection(
42
- pageY: number,
43
- ): undefined | VerticalScrollDirection {
44
- if (pageY < this.getScrollParentTop()) {
45
- return "top";
46
- }
47
-
48
- if (pageY > this.getScrollParentBottom()) {
49
- return "bottom";
50
- }
51
-
52
- return undefined;
47
+ if (pageY > this.getScrollParentBottom()) {
48
+ return "bottom";
53
49
  }
54
50
 
55
- private getScrollParentBottom() {
56
- if (this.scrollParentBottom == null) {
57
- const containerHeight =
58
- this.container.getBoundingClientRect().height;
59
- this.scrollParentBottom =
60
- this.getScrollParentTop() + containerHeight;
61
- }
51
+ return undefined;
52
+ }
62
53
 
63
- return this.scrollParentBottom;
54
+ private getScrollParentBottom() {
55
+ if (this.scrollParentBottom == null) {
56
+ const containerHeight = this.container.getBoundingClientRect().height;
57
+ this.scrollParentBottom = this.getScrollParentTop() + containerHeight;
64
58
  }
65
59
 
66
- private getScrollParentTop() {
67
- this.scrollParentTop ??= getOffsetTop(this.container);
60
+ return this.scrollParentBottom;
61
+ }
68
62
 
69
- return this.scrollParentTop;
70
- }
63
+ private getScrollParentTop() {
64
+ this.scrollParentTop ??= getOffsetTop(this.container);
65
+
66
+ return this.scrollParentTop;
67
+ }
71
68
  }