uiconfig-blueprint 0.1.0-dev.13 → 0.1.0-dev.14

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 (165) hide show
  1. package/dist/ConfigObject.d.ts +3 -1
  2. package/dist/{allPaths-Dbwyd6G0.js → allPaths-DANRR6MZ.js} +5 -5
  3. package/dist/{allPaths-Dbwyd6G0.js.map → allPaths-DANRR6MZ.js.map} +1 -1
  4. package/dist/{allPathsLoader-B9DtnPQs.js → allPathsLoader-BdHGVD6B.js} +4 -4
  5. package/dist/{allPathsLoader-B9DtnPQs.js.map → allPathsLoader-BdHGVD6B.js.map} +1 -1
  6. package/dist/bpComponents/BPColorInputComponent.d.ts +1 -0
  7. package/dist/bpComponents/BPComponent.d.ts +2 -0
  8. package/dist/bpComponents/BPContainerComponent.d.ts +10 -2
  9. package/dist/bpComponents/BPFileComponent.d.ts +12 -10
  10. package/dist/bpComponents/BPFolderComponent.d.ts +13 -4
  11. package/dist/bpComponents/BPPanelComponent.d.ts +3 -3
  12. package/dist/bpComponents/BPTextInputComponent.d.ts +4 -0
  13. package/dist/bpComponents/BPValueComponent.d.ts +2 -2
  14. package/dist/bpComponents/BPVectorInputComponent.d.ts +11 -5
  15. package/dist/bpComponents/InputGroup2.d.ts +25 -0
  16. package/dist/components/DialogContext.d.ts +10 -3
  17. package/dist/components/DraggableIcon.d.ts +4 -3
  18. package/dist/components/FileComponent.d.ts +13 -6
  19. package/dist/components/FormGroupComponent.d.ts +3 -2
  20. package/dist/components/InspectorStackComponent.d.ts +11 -2
  21. package/dist/index-6kveHKKU.js +695 -0
  22. package/dist/index-6kveHKKU.js.map +1 -0
  23. package/dist/index-D9WNL8Mc.js +695 -0
  24. package/dist/index-D9WNL8Mc.js.map +1 -0
  25. package/dist/index-t3WzvX5M.js +13501 -0
  26. package/dist/index-t3WzvX5M.js.map +1 -0
  27. package/dist/index.js +28 -41
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +2 -2
  30. package/dist/lib.d.ts +2 -3
  31. package/dist/{splitPathsBySizeLoader-Dii-Xb62.js → splitPathsBySizeLoader-Bhwx_O-M.js} +5 -5
  32. package/dist/{splitPathsBySizeLoader-Dii-Xb62.js.map → splitPathsBySizeLoader-Bhwx_O-M.js.map} +1 -1
  33. package/dist/utils/pointerLock.d.ts +44 -0
  34. package/docs/classes/UI.html +3 -3
  35. package/docs/classes/UiConfigRendererBlueprint.html +3 -3
  36. package/lib/css/renderer.css +35 -103
  37. package/lib/css/renderer.css.map +1 -1
  38. package/lib/esm/ConfigObject.d.ts +3 -1
  39. package/lib/esm/ConfigObject.js +5 -4
  40. package/lib/esm/ConfigObject.js.map +1 -1
  41. package/lib/esm/UiConfigRendererBlueprint.js +2 -1
  42. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  43. package/lib/esm/bpComponents/BPButtonComponent.js +1 -1
  44. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  45. package/lib/esm/bpComponents/BPColorInputComponent.d.ts +1 -0
  46. package/lib/esm/bpComponents/BPColorInputComponent.js +17 -4
  47. package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
  48. package/lib/esm/bpComponents/BPComponent.d.ts +2 -0
  49. package/lib/esm/bpComponents/BPComponent.js +4 -4
  50. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  51. package/lib/esm/bpComponents/BPContainerComponent.d.ts +10 -2
  52. package/lib/esm/bpComponents/BPContainerComponent.js +4 -1
  53. package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
  54. package/lib/esm/bpComponents/BPDropdownInputComponent.js +4 -3
  55. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  56. package/lib/esm/bpComponents/BPFileComponent.d.ts +12 -10
  57. package/lib/esm/bpComponents/BPFileComponent.js +10 -8
  58. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  59. package/lib/esm/bpComponents/BPFolderComponent.d.ts +13 -4
  60. package/lib/esm/bpComponents/BPFolderComponent.js +58 -13
  61. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  62. package/lib/esm/bpComponents/BPInputComponent.js +1 -1
  63. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  64. package/lib/esm/bpComponents/BPPanelComponent.d.ts +3 -3
  65. package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
  66. package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
  67. package/lib/esm/bpComponents/BPTextInputComponent.d.ts +4 -0
  68. package/lib/esm/bpComponents/BPTextInputComponent.js +34 -3
  69. package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
  70. package/lib/esm/bpComponents/BPTreeComponent.d.ts +4 -4
  71. package/lib/esm/bpComponents/BPTreeComponent.js +2 -2
  72. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  73. package/lib/esm/bpComponents/BPValueComponent.d.ts +2 -2
  74. package/lib/esm/bpComponents/BPValueComponent.js +5 -4
  75. package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
  76. package/lib/esm/bpComponents/BPVectorInputComponent.d.ts +11 -5
  77. package/lib/esm/bpComponents/BPVectorInputComponent.js +47 -6
  78. package/lib/esm/bpComponents/BPVectorInputComponent.js.map +1 -1
  79. package/lib/esm/bpComponents/InputGroup2.d.ts +25 -0
  80. package/lib/esm/bpComponents/InputGroup2.js +93 -0
  81. package/lib/esm/bpComponents/InputGroup2.js.map +1 -0
  82. package/lib/esm/components/ConfigurationPanelComponent.js +1 -1
  83. package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
  84. package/lib/esm/components/DialogContext.d.ts +10 -3
  85. package/lib/esm/components/DialogContext.js +14 -13
  86. package/lib/esm/components/DialogContext.js.map +1 -1
  87. package/lib/esm/components/DraggableIcon.d.ts +4 -3
  88. package/lib/esm/components/DraggableIcon.js +41 -39
  89. package/lib/esm/components/DraggableIcon.js.map +1 -1
  90. package/lib/esm/components/ExtendedNumericInput.js +1 -1
  91. package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
  92. package/lib/esm/components/FileComponent.d.ts +13 -6
  93. package/lib/esm/components/FileComponent.js +15 -6
  94. package/lib/esm/components/FileComponent.js.map +1 -1
  95. package/lib/esm/components/FormGroupComponent.d.ts +3 -2
  96. package/lib/esm/components/FormGroupComponent.js +1 -6
  97. package/lib/esm/components/FormGroupComponent.js.map +1 -1
  98. package/lib/esm/components/InspectorStackComponent.d.ts +11 -2
  99. package/lib/esm/components/InspectorStackComponent.js +14 -4
  100. package/lib/esm/components/InspectorStackComponent.js.map +1 -1
  101. package/lib/esm/components/NumericInput.js +3 -2
  102. package/lib/esm/components/NumericInput.js.map +1 -1
  103. package/lib/esm/components/TreeNode2.d.ts +1 -1
  104. package/lib/esm/components/TreeNode2.js +4 -2
  105. package/lib/esm/components/TreeNode2.js.map +1 -1
  106. package/lib/esm/components/treeTypes.d.ts +2 -1
  107. package/lib/esm/lib.d.ts +2 -3
  108. package/lib/esm/lib.js +2 -3
  109. package/lib/esm/lib.js.map +1 -1
  110. package/lib/esm/renderer.css.js +1 -1
  111. package/lib/esm/utils/pointerLock.d.ts +44 -0
  112. package/lib/esm/utils/pointerLock.js +215 -0
  113. package/lib/esm/utils/pointerLock.js.map +1 -0
  114. package/lib/esm/utils.js +6 -1
  115. package/lib/esm/utils.js.map +1 -1
  116. package/package.json +10 -12
  117. package/src/ConfigObject.tsx +11 -5
  118. package/src/UiConfigRendererBlueprint.tsx +1 -1
  119. package/src/bpComponents/BPButtonComponent.tsx +1 -1
  120. package/src/bpComponents/BPColorInputComponent.tsx +13 -4
  121. package/src/bpComponents/BPComponent.tsx +4 -3
  122. package/src/bpComponents/BPContainerComponent.tsx +20 -3
  123. package/src/bpComponents/BPDropdownInputComponent.tsx +4 -3
  124. package/src/bpComponents/BPFileComponent.tsx +29 -20
  125. package/src/bpComponents/BPFolderComponent.scss +11 -6
  126. package/src/bpComponents/BPFolderComponent.tsx +122 -24
  127. package/src/bpComponents/BPInputComponent.tsx +1 -0
  128. package/src/bpComponents/BPPanelComponent.tsx +4 -4
  129. package/src/bpComponents/BPTextInputComponent.tsx +38 -5
  130. package/src/bpComponents/BPValueComponent.tsx +4 -4
  131. package/src/bpComponents/BPVectorInputComponent.tsx +80 -10
  132. package/src/bpComponents/InputGroup2.tsx +175 -0
  133. package/src/bpComponents/index.scss +0 -1
  134. package/src/components/ConfigurationPanelComponent.tsx +2 -2
  135. package/src/components/DialogContext.tsx +20 -12
  136. package/src/components/DraggableIcon.tsx +71 -49
  137. package/src/components/ExtendedNumericInput.tsx +2 -2
  138. package/src/components/FileComponent.tsx +37 -18
  139. package/src/components/FormGroupComponent.tsx +8 -4
  140. package/src/components/InspectorStackComponent.tsx +20 -7
  141. package/src/components/NumericInput.tsx +4 -5
  142. package/src/components/common.scss +1 -1
  143. package/src/lib.ts +2 -3
  144. package/src/renderer.scss +30 -8
  145. package/src/utils/PointerLockManager.md +334 -0
  146. package/src/utils/pointerLock.ts +264 -0
  147. package/src/utils.ts +8 -4
  148. package/dist/bpComponents/BPTreeComponent.d.ts +0 -46
  149. package/dist/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  150. package/dist/components/Tree2.d.ts +0 -52
  151. package/dist/components/TreeNode2.d.ts +0 -43
  152. package/dist/components/treeTypes.d.ts +0 -18
  153. package/dist/index-BFBvfUPU.js +0 -671
  154. package/dist/index-BFBvfUPU.js.map +0 -1
  155. package/dist/index-CHQ1fP9-.js +0 -671
  156. package/dist/index-CHQ1fP9-.js.map +0 -1
  157. package/dist/index-Dbe8gLld.js +0 -13583
  158. package/dist/index-Dbe8gLld.js.map +0 -1
  159. package/src/bpComponents/BPTreeComponent.scss +0 -3
  160. package/src/bpComponents/BPTreeComponent.tsx +0 -244
  161. package/src/bpComponents/BPTreeFolderComponent.tsx +0 -31
  162. package/src/components/Tree2.tsx +0 -344
  163. package/src/components/TreeNode2.tsx +0 -192
  164. package/src/components/tree2.scss +0 -69
  165. package/src/components/treeTypes.ts +0 -97
@@ -0,0 +1,264 @@
1
+ // Pointer Lock API utilities for cursor wrap-around behavior
2
+
3
+ class FakeCursor {
4
+ private element: HTMLDivElement | null = null;
5
+ private x = 0;
6
+ private y = 0;
7
+ private visible = false;
8
+ private originalCursor = '';
9
+
10
+ constructor() {
11
+ if (typeof document !== 'undefined') {
12
+ this.createCursorElement();
13
+ }else {
14
+ console.warn('FakeCursor: document is undefined, cannot create cursor element.');
15
+ }
16
+ }
17
+
18
+ private createCursorElement() {
19
+ this.element = document.createElement('div');
20
+ this.element.style.position = 'fixed';
21
+ this.element.style.width = '16px';
22
+ this.element.style.height = '16px';
23
+ this.element.style.transform = 'translate(calc(-50% + 1px), calc(-50% + 1px))';
24
+ this.element.style.pointerEvents = 'none';
25
+ this.element.style.zIndex = '999999';
26
+ this.element.style.display = 'none';
27
+ this.element.innerHTML = `
28
+ <svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
29
+ <g clip-path="url(#clip0_1_176)">
30
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M0 5.9907V5.9957L5.997 11.9917L5.998 7.9927H7.997H10.017V11.9927L15.997 5.9917L10.017 -0.00730079L10.018 4.0117L7.997 4.0137H5.997L5.998 -0.00830078L0 5.9907ZM1.411 5.9937L4.998 2.4057L4.997 4.9927H8.497H11.018V2.4077L14.583 5.9937L11.019 9.5787L11.018 6.9937H8.497L4.998 6.9927L4.997 9.5787L1.411 5.9937Z" fill="white"/>
31
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M8.4971 6.9932H11.0181V9.5792L14.5831 5.9932L11.0181 2.4082V5.0132H8.4971H4.9971V2.4062L1.4111 5.9932L4.9971 9.5792V6.9922L8.4971 6.9932Z" fill="black"/>
32
+ </g>
33
+ <defs>
34
+ <clipPath id="clip0_1_176">
35
+ <rect width="16" height="12" fill="white"/>
36
+ </clipPath>
37
+ </defs>
38
+ </svg>
39
+ `;
40
+ document.body.appendChild(this.element);
41
+ }
42
+
43
+ show(useFallback: boolean) {
44
+ if (this.element) {
45
+ this.element.style.display = 'block';
46
+ this.visible = true;
47
+ if(useFallback) {
48
+ this.originalCursor = document.documentElement.style.cursor;
49
+ document.documentElement.style.cursor = 'ew-resize';
50
+ this.element.style.opacity = '0'; // for pointer events
51
+ this.element.style.pointerEvents = 'auto'; // for pointer events
52
+ }
53
+ }
54
+ }
55
+
56
+ hide(useFallback: boolean) {
57
+ if (this.element) {
58
+ this.element.style.display = 'none';
59
+ this.visible = false;
60
+ // Restore original cursor
61
+ if (useFallback && this.originalCursor !== undefined) {
62
+ document.documentElement.style.cursor = this.originalCursor;
63
+ }
64
+ this.element.style.opacity = '1';
65
+ this.element.style.pointerEvents = 'none';
66
+ }
67
+ }
68
+
69
+ setPosition(x: number, y: number) {
70
+ this.x = x;
71
+ this.y = y;
72
+ if (this.element) {
73
+ this.element.style.left = `${x}px`;
74
+ this.element.style.top = `${y}px`;
75
+ }
76
+ }
77
+
78
+ getPosition() {
79
+ return { x: this.x, y: this.y };
80
+ }
81
+
82
+ isVisible() {
83
+ return this.visible;
84
+ }
85
+
86
+ destroy() {
87
+ if (this.element && this.element.parentNode) {
88
+ this.element.parentNode.removeChild(this.element);
89
+ this.element = null;
90
+ }
91
+ }
92
+ }
93
+
94
+ // Singleton instance
95
+ let fakeCursorInstance: FakeCursor | null = null;
96
+
97
+ export function getFakeCursor(): FakeCursor {
98
+ if (!fakeCursorInstance) {
99
+ fakeCursorInstance = new FakeCursor();
100
+ }
101
+ return fakeCursorInstance;
102
+ }
103
+
104
+ export function destroyFakeCursor() {
105
+ if (fakeCursorInstance) {
106
+ fakeCursorInstance.destroy();
107
+ fakeCursorInstance = null;
108
+ }
109
+ }
110
+
111
+ export interface PointerLockOptions {
112
+ onMove: (movementX: number, movementY: number, cursorX: number, cursorY: number) => void;
113
+ onLockChange?: (locked: boolean) => void;
114
+ }
115
+
116
+ export class PointerLockManager {
117
+ private element: HTMLElement;
118
+ private fakeCursor: FakeCursor;
119
+ private options: PointerLockOptions;
120
+ private isLocked = false;
121
+ private cursorX = 0;
122
+ private cursorY = 0;
123
+ private useFallback = false;
124
+ private lastMouseX = 0;
125
+ private lastMouseY = 0;
126
+
127
+ constructor(element: HTMLElement, options: PointerLockOptions) {
128
+ this.element = element;
129
+ this.options = options;
130
+ this.fakeCursor = getFakeCursor();
131
+ this.handleMouseMove = this.handleMouseMove.bind(this);
132
+ this.handlePointerLockChange = this.handlePointerLockChange.bind(this);
133
+ this.handleFallbackMouseMove = this.handleFallbackMouseMove.bind(this);
134
+ }
135
+
136
+ requestLock(initialX: number, initialY: number) {
137
+ this.cursorX = initialX;
138
+ this.cursorY = initialY;
139
+ this.lastMouseX = initialX;
140
+ this.lastMouseY = initialY;
141
+ this.fakeCursor.setPosition(initialX, initialY);
142
+
143
+ // Try to request pointer lock, but prepare for fallback
144
+ if (isSafari() || !this.element.requestPointerLock) {
145
+ // Use fallback immediately for Safari or if pointer lock is not supported
146
+ this.useFallback = true;
147
+ this.isLocked = true; // Treat fallback as "locked" state
148
+ this.fakeCursor.show(true);
149
+ // Don't show fake cursor in fallback mode
150
+ document.addEventListener('mousemove', this.handleFallbackMouseMove);
151
+ if (this.options.onLockChange) {
152
+ this.options.onLockChange(true);
153
+ }
154
+ } else {
155
+ this.useFallback = false
156
+ this.fakeCursor.show(false);
157
+ // Try pointer lock for other browsers
158
+ this.element.requestPointerLock();
159
+ document.addEventListener('pointerlockchange', this.handlePointerLockChange);
160
+ document.addEventListener('mousemove', this.handleMouseMove);
161
+
162
+ // Fallback if pointer lock doesn't engage within 100ms
163
+ setTimeout(() => {
164
+ if (!this.isLocked && !this.useFallback) {
165
+ this.useFallback = true;
166
+ this.isLocked = true;
167
+ this.fakeCursor.show(true);
168
+ document.removeEventListener('mousemove', this.handleMouseMove);
169
+ document.removeEventListener('pointerlockchange', this.handlePointerLockChange);
170
+ document.addEventListener('mousemove', this.handleFallbackMouseMove);
171
+ if (this.options.onLockChange) {
172
+ this.options.onLockChange(true);
173
+ }
174
+ }
175
+ }, 100);
176
+ }
177
+ }
178
+
179
+ releaseLock() {
180
+ if (this.isLocked && !this.useFallback) {
181
+ document.exitPointerLock();
182
+ }
183
+ this.cleanup();
184
+ }
185
+
186
+ private cleanup() {
187
+ document.removeEventListener('mousemove', this.handleMouseMove);
188
+ document.removeEventListener('mousemove', this.handleFallbackMouseMove);
189
+ document.removeEventListener('pointerlockchange', this.handlePointerLockChange);
190
+ this.fakeCursor.hide(this.useFallback);
191
+ this.isLocked = false;
192
+ this.useFallback = false;
193
+ }
194
+
195
+ private handlePointerLockChange() {
196
+ this.isLocked = document.pointerLockElement === this.element;
197
+
198
+ if (!this.isLocked) {
199
+ this.cleanup();
200
+ }
201
+
202
+ if (this.options.onLockChange) {
203
+ this.options.onLockChange(this.isLocked);
204
+ }
205
+ }
206
+
207
+ private handleFallbackMouseMove(ev: MouseEvent) {
208
+ if (!this.isLocked || !this.useFallback) return;
209
+
210
+ // Calculate movement manually
211
+ const movementX = ev.clientX - this.lastMouseX;
212
+ const movementY = ev.clientY - this.lastMouseY;
213
+
214
+ this.lastMouseX = ev.clientX;
215
+ this.lastMouseY = ev.clientY;
216
+
217
+ // Update fake cursor position
218
+ this.cursorX = ev.clientX;
219
+ this.cursorY = ev.clientY;
220
+
221
+ this.fakeCursor.setPosition(this.cursorX, this.cursorY);
222
+ this.options.onMove(movementX, movementY, this.cursorX, this.cursorY);
223
+ }
224
+
225
+ private handleMouseMove(ev: MouseEvent) {
226
+ if (!this.isLocked || this.useFallback) return;
227
+
228
+ const movementX = ev.movementX || 0;
229
+ const movementY = ev.movementY || 0;
230
+
231
+ // Update fake cursor position
232
+ this.cursorX += movementX;
233
+ this.cursorY += movementY;
234
+
235
+ // Wrap around screen edges
236
+ const screenWidth = window.innerWidth;
237
+ const screenHeight = window.innerHeight;
238
+
239
+ if (this.cursorX < 0) {
240
+ this.cursorX = screenWidth - 1;
241
+ } else if (this.cursorX >= screenWidth) {
242
+ this.cursorX = 0;
243
+ }
244
+
245
+ if (this.cursorY < 0) {
246
+ this.cursorY = screenHeight - 1;
247
+ } else if (this.cursorY >= screenHeight) {
248
+ this.cursorY = 0;
249
+ }
250
+
251
+ this.fakeCursor.setPosition(this.cursorX, this.cursorY);
252
+ this.options.onMove(movementX, movementY, this.cursorX, this.cursorY);
253
+ }
254
+
255
+ isPointerLocked() {
256
+ return this.isLocked;
257
+ }
258
+ }
259
+
260
+ // Detect if we're running in Safari
261
+ function isSafari(): boolean {
262
+ if (typeof navigator === 'undefined') return false;
263
+ return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
264
+ }
package/src/utils.ts CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  // todo move to uiConfigMethods
3
2
  export function cleanLabel(varName?: string): string|undefined {
4
3
  if (!varName || typeof varName !== 'string') {
@@ -25,9 +24,14 @@ export function cleanLabel(varName?: string): string|undefined {
25
24
 
26
25
  // Split into words, capitalize first letter of each word, and join with spaces
27
26
  const words = result.split(/\s+/).filter(word => word.length > 0);
28
- const capitalizedWords = words.map(word =>
29
- word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
30
- );
27
+ const capitalizedWords = words.map(word => {
28
+ // Preserve acronyms (all uppercase words with 2+ chars)
29
+ if (word.length >= 2 && word === word.toUpperCase()) {
30
+ return word;
31
+ }
32
+ // Regular word capitalization
33
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
34
+ });
31
35
 
32
36
 
33
37
  return capitalizedWords.join(' ');
@@ -1,46 +0,0 @@
1
- import { BPComponent, BPComponentProps, BPComponentState, UiConfigRendererContextType } from "./BPComponent";
2
- import { TreeNodeInfo } from "@blueprintjs/core";
3
- import React from "react";
4
- export type BPTreeComponentState<T = {}> = BPComponentState & {
5
- nodes: TreeNodeInfo<T>[];
6
- };
7
- type NodePath = (string | number)[];
8
- export declare abstract class BPTreeComponent<T = {}, TConfigVal extends any = void> extends BPComponent<TConfigVal, BPTreeComponentState<T>, BPComponentProps<TConfigVal> & {
9
- className: string;
10
- }> {
11
- constructor(props: BPComponentProps<TConfigVal> & {
12
- className: string;
13
- }, context: UiConfigRendererContextType);
14
- protected _infoMap: Map<string | number, TreeNodeInfo<T>>;
15
- protected _createNodeInfo(id: string, obj: T): {
16
- id: string;
17
- label: string;
18
- nodeData: T;
19
- childNodes: never[];
20
- isExpanded: boolean;
21
- isSelected: boolean;
22
- };
23
- protected abstract _getNodeId(obj: T): string;
24
- protected abstract _updateNodeInfo(node: TreeNodeInfo<T>, obj: T): TreeNodeInfo<T>;
25
- protected abstract _getRootNodes(): T[];
26
- protected _onNodeClick(_id: string | number): Promise<void>;
27
- protected _onNodeDoubleClick(_id: string | number): Promise<void>;
28
- protected _cloneNodes(callback?: (t: TreeNodeInfo<T>) => void, state?: TreeNodeInfo<T>[]): TreeNodeInfo<T>[];
29
- protected _getNodePath(id: string, nodes?: TreeNodeInfo<T>[]): NodePath;
30
- protected _forEachNode<T>(nodes: TreeNodeInfo<T>[] | undefined, callback: (node: TreeNodeInfo<T>, path: NodePath) => void, path?: NodePath): TreeNodeInfo<T>[] | undefined;
31
- protected _onNodeExpandCollapse(_id: string | number, expanded?: boolean): Promise<void>;
32
- protected _onNodeContextMenu(_id: string | number): Promise<void>;
33
- protected buildData(data: TreeNodeInfo<T>[], obj: T, _?: any, _2?: any): TreeNodeInfo<T>[];
34
- getUpdatedState(_state: BPTreeComponentState<T>): BPTreeComponentState<T>;
35
- deselectAll(): Promise<void>;
36
- setSelected(id?: string | string[], expand?: boolean): Promise<void>;
37
- componentDidMount(): void;
38
- componentWillUnmount(): void;
39
- findSelectedNode(nodes?: TreeNodeInfo<T>[]): TreeNodeInfo<T> | undefined;
40
- getFlatNodes(onlyVisible?: boolean, nodes?: TreeNodeInfo<T>[], res?: TreeNodeInfo<T>[]): TreeNodeInfo<T>[];
41
- protected _handleKeyDown(e: React.KeyboardEvent): void;
42
- protected _canDropNode(_sourceNode: TreeNodeInfo<T>, _sourcePath: NodePath, _targetNode: TreeNodeInfo<T>, _targetPath: NodePath, _index?: number): boolean;
43
- protected _onDropNode(_sourceNode: TreeNodeInfo<T>, _sourcePath: NodePath, _targetNode: TreeNodeInfo<T>, _targetPath: NodePath, _e?: React.DragEvent, _index?: number): void;
44
- render(): import("react/jsx-runtime").JSX.Element | null;
45
- }
46
- export {};
@@ -1,10 +0,0 @@
1
- import { TreeNodeInfo } from "@blueprintjs/core";
2
- import { BPTreeComponent } from "./BPTreeComponent";
3
- import { UiObjectConfig } from 'uiconfig.js';
4
- export declare class BPTreeFolderComponent extends BPTreeComponent<UiObjectConfig> {
5
- protected _getNodeId(obj: UiObjectConfig): string;
6
- protected _updateNodeInfo(node: TreeNodeInfo<UiObjectConfig>, obj: UiObjectConfig): TreeNodeInfo<UiObjectConfig<any, string, any>>;
7
- protected _getRootNodes(): UiObjectConfig[];
8
- protected _onNodeClick(_id: string | number): Promise<void>;
9
- protected _onNodeDoubleClick(_id: string | number): Promise<void>;
10
- }
@@ -1,52 +0,0 @@
1
- import * as React from "react";
2
- import type { TreeEventHandler } from "@blueprintjs/core";
3
- import { type Props } from "@blueprintjs/core";
4
- import { TreeNodeInfo } from "./treeTypes";
5
- export interface TreeProps<T = {}> extends Props {
6
- compact?: boolean;
7
- contents: ReadonlyArray<TreeNodeInfo<T>>;
8
- onNodeClick?: TreeEventHandler<T>;
9
- onNodeCollapse?: TreeEventHandler<T>;
10
- onNodeContextMenu?: TreeEventHandler<T>;
11
- onNodeDoubleClick?: TreeEventHandler<T>;
12
- onNodeExpand?: TreeEventHandler<T>;
13
- onNodeMouseEnter?: TreeEventHandler<T>;
14
- onNodeMouseLeave?: TreeEventHandler<T>;
15
- onNodeDrop?: (source: TreeNodeInfo<T>, sourcePath: number[], target: TreeNodeInfo<T>, targetPath: number[], event: React.DragEvent<HTMLElement>, index?: number) => void;
16
- onNodeDragStart?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
17
- onNodeDragOver?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
18
- onNodeDragEnd?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
19
- onNodeDragEnter?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
20
- onNodeDragLeave?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
21
- canDropNode?: (source: TreeNodeInfo<T>, sourcePath: number[], target: TreeNodeInfo<T>, targetPath: number[], index?: number) => boolean;
22
- }
23
- export declare class Tree2<T = {}> extends React.Component<TreeProps<T>> {
24
- static displayName: string;
25
- static ofType<U>(): new (props: TreeProps<U>) => Tree2<U>;
26
- static nodeFromPath<U>(path: readonly number[], treeNodes?: ReadonlyArray<TreeNodeInfo<U>>): TreeNodeInfo<U>;
27
- private nodeRefs;
28
- private dragSource;
29
- private draggingNode?;
30
- private dragOverNode?;
31
- private rootRef;
32
- render(): import("react/jsx-runtime").JSX.Element;
33
- getNodeContentElement(nodeId: string | number): HTMLElement | undefined;
34
- private renderNodeSpacer;
35
- private renderNodes;
36
- private handleContentRef;
37
- private handleNodeCollapse;
38
- private handleNodeClick;
39
- private handleNodeContextMenu;
40
- private handleNodeDoubleClick;
41
- private handleNodeExpand;
42
- private handleNodeMouseEnter;
43
- private handleNodeMouseLeave;
44
- private handleNodeDragStart;
45
- private handleNodeDragOver;
46
- private handleNodeDrop;
47
- private handleNodeDragEnd;
48
- private handleNodeDragEnter;
49
- private handleNodeDragLeave;
50
- private addNodeClass;
51
- private removeNodeClass;
52
- }
@@ -1,43 +0,0 @@
1
- import * as React from "react";
2
- import type { TreeEventHandler, TreeNodeInfo } from "@blueprintjs/core";
3
- export interface TreeNodeProps<T = {}> extends TreeNodeInfo<T> {
4
- children?: React.ReactNode;
5
- contentRef?: (node: TreeNodeInfo<T>, element: HTMLDivElement | null) => void;
6
- depth: number;
7
- key?: string | number;
8
- onClick?: TreeEventHandler<T>;
9
- onCollapse?: TreeEventHandler<T>;
10
- onContextMenu?: TreeEventHandler<T>;
11
- onDoubleClick?: TreeEventHandler<T>;
12
- onExpand?: TreeEventHandler<T>;
13
- onMouseEnter?: TreeEventHandler<T>;
14
- onMouseLeave?: TreeEventHandler<T>;
15
- path: number[];
16
- draggable?: boolean;
17
- onDragStart?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
18
- onDragOver?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
19
- onDrop?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
20
- onDragEnd?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
21
- onDragEnter?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
22
- onDragLeave?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
23
- }
24
- export declare class TreeNode2<T = {}> extends React.Component<TreeNodeProps<T>> {
25
- static displayName: string;
26
- static ofType<U>(): new (props: TreeNodeProps<U>) => TreeNode2<U>;
27
- render(): import("react/jsx-runtime").JSX.Element;
28
- private maybeRenderCaret;
29
- private maybeRenderSecondaryLabel;
30
- private handleCaretClick;
31
- private handleClick;
32
- private handleContentRef;
33
- private handleContextMenu;
34
- private handleDoubleClick;
35
- private handleMouseEnter;
36
- private handleMouseLeave;
37
- private handleDragStart;
38
- private handleDragOver;
39
- private handleDrop;
40
- private handleDragEnd;
41
- private handleDragEnter;
42
- private handleDragLeave;
43
- }
@@ -1,18 +0,0 @@
1
- /// <reference types="react" />
2
- import type { IconName, MaybeElement } from "@blueprintjs/core";
3
- export interface TreeNodeInfo<T = {}> {
4
- className?: string;
5
- childNodes?: Array<TreeNodeInfo<T>>;
6
- disabled?: boolean;
7
- hasCaret?: boolean;
8
- icon?: IconName | MaybeElement;
9
- id: string | number;
10
- isExpanded?: boolean;
11
- isSelected?: boolean;
12
- label: string | React.JSX.Element;
13
- secondaryLabel?: string | MaybeElement;
14
- nodeData?: T;
15
- draggable?: boolean;
16
- droppable?: boolean;
17
- }
18
- export type TreeEventHandler<T = {}> = (node: TreeNodeInfo<T>, nodePath: number[], e: React.MouseEvent<HTMLElement>) => void;