uiconfig-blueprint 0.1.0-dev.1 → 0.1.0-dev.12

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 (435) hide show
  1. package/README.md +27 -1
  2. package/dist/ConfigObject.d.ts +2 -1
  3. package/dist/UiConfigRendererBlueprint.d.ts +6 -4
  4. package/dist/allPaths-DtaFoocb.js +23 -0
  5. package/dist/{allPaths-EYaH0Usv.js.map → allPaths-DtaFoocb.js.map} +1 -1
  6. package/dist/{allPathsLoader-UVZ15qNf.js → allPathsLoader-B5mUU0us.js} +5 -5
  7. package/dist/{allPathsLoader-UVZ15qNf.js.map → allPathsLoader-B5mUU0us.js.map} +1 -1
  8. package/dist/bpComponents/BPButtonComponent.d.ts +1 -0
  9. package/dist/bpComponents/BPColorInputComponent.d.ts +1 -0
  10. package/dist/bpComponents/BPComponent.d.ts +3 -1
  11. package/dist/bpComponents/BPContainerComponent.d.ts +1 -1
  12. package/dist/bpComponents/BPFileComponent.d.ts +8 -5
  13. package/dist/bpComponents/BPFolderComponent.d.ts +9 -1
  14. package/dist/bpComponents/BPInputComponent.d.ts +2 -1
  15. package/dist/bpComponents/BPNumberInputComponent.d.ts +3 -1
  16. package/dist/bpComponents/BPSliderInputComponent.d.ts +1 -0
  17. package/dist/bpComponents/BPTreeComponent.d.ts +20 -10
  18. package/dist/bpComponents/BPValueComponent.d.ts +4 -1
  19. package/dist/bpComponents/BPVectorInputComponent.d.ts +1 -0
  20. package/dist/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
  21. package/dist/bpComponents/NumberUnits.d.ts +7 -0
  22. package/dist/components/DialogContext.d.ts +18 -10
  23. package/dist/components/DraggableIcon.d.ts +1 -0
  24. package/dist/components/ExtendedNumericInput.d.ts +13 -3
  25. package/dist/components/FileComponent.d.ts +3 -1
  26. package/dist/components/InspectorStackComponent.d.ts +2 -1
  27. package/dist/components/NumericInput.d.ts +76 -0
  28. package/dist/components/Tree2.d.ts +52 -0
  29. package/dist/components/TreeNode2.d.ts +43 -0
  30. package/dist/components/axesIcons.d.ts +7 -0
  31. package/dist/components/bpIconWrapper.d.ts +2 -2
  32. package/dist/components/iconMapping.d.ts +198 -0
  33. package/dist/components/loadingState.d.ts +4 -0
  34. package/dist/components/shapesIcons.d.ts +100 -0
  35. package/dist/components/treeTypes.d.ts +18 -0
  36. package/dist/index-BPcAfGYu.js +13583 -0
  37. package/dist/index-BPcAfGYu.js.map +1 -0
  38. package/dist/index-BsXaCp6n.js +671 -0
  39. package/dist/index-BsXaCp6n.js.map +1 -0
  40. package/dist/index-CIFbDQFr.js +671 -0
  41. package/dist/index-CIFbDQFr.js.map +1 -0
  42. package/dist/index.js +71 -36
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +3 -3
  45. package/dist/lib.d.ts +4 -1
  46. package/dist/{splitPathsBySizeLoader-GhF5umHk.js → splitPathsBySizeLoader-BGjtD8Dg.js} +6 -6
  47. package/dist/{splitPathsBySizeLoader-GhF5umHk.js.map → splitPathsBySizeLoader-BGjtD8Dg.js.map} +1 -1
  48. package/dist/utils.d.ts +1 -0
  49. package/docs/assets/highlight.css +45 -17
  50. package/docs/assets/navigation.js +1 -1
  51. package/docs/assets/search.js +1 -1
  52. package/docs/classes/UI.html +10 -5
  53. package/docs/classes/UiConfigRendererBlueprint.html +10 -5
  54. package/docs/index.html +16 -5
  55. package/lib/css/renderer.css +195 -23
  56. package/lib/css/renderer.css.map +1 -1
  57. package/lib/esm/ConfigObject.d.ts +2 -1
  58. package/lib/esm/ConfigObject.js +15 -9
  59. package/lib/esm/ConfigObject.js.map +1 -1
  60. package/lib/esm/UiConfigRendererBlueprint.d.ts +6 -4
  61. package/lib/esm/UiConfigRendererBlueprint.js +30 -17
  62. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  63. package/lib/esm/bpComponents/BPButtonComponent.d.ts +1 -0
  64. package/lib/esm/bpComponents/BPButtonComponent.js +4 -2
  65. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  66. package/lib/esm/bpComponents/BPColorInputComponent.d.ts +1 -0
  67. package/lib/esm/bpComponents/BPColorInputComponent.js +5 -3
  68. package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
  69. package/lib/esm/bpComponents/BPComponent.d.ts +3 -1
  70. package/lib/esm/bpComponents/BPComponent.js +15 -2
  71. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  72. package/lib/esm/bpComponents/BPContainerComponent.d.ts +1 -1
  73. package/lib/esm/bpComponents/BPContainerComponent.js +12 -2
  74. package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
  75. package/lib/esm/bpComponents/BPDropdownInputComponent.js +10 -5
  76. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  77. package/lib/esm/bpComponents/BPFileComponent.d.ts +8 -5
  78. package/lib/esm/bpComponents/BPFileComponent.js +18 -24
  79. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  80. package/lib/esm/bpComponents/BPFolderComponent.d.ts +9 -1
  81. package/lib/esm/bpComponents/BPFolderComponent.js +55 -12
  82. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  83. package/lib/esm/bpComponents/BPInputComponent.d.ts +2 -1
  84. package/lib/esm/bpComponents/BPInputComponent.js +2 -1
  85. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  86. package/lib/esm/bpComponents/BPLabelledComponent.js +2 -1
  87. package/lib/esm/bpComponents/BPLabelledComponent.js.map +1 -1
  88. package/lib/esm/bpComponents/BPNumberInputComponent.d.ts +3 -1
  89. package/lib/esm/bpComponents/BPNumberInputComponent.js +6 -1
  90. package/lib/esm/bpComponents/BPNumberInputComponent.js.map +1 -1
  91. package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
  92. package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
  93. package/lib/esm/bpComponents/BPSliderInputComponent.d.ts +1 -0
  94. package/lib/esm/bpComponents/BPSliderInputComponent.js +18 -6
  95. package/lib/esm/bpComponents/BPSliderInputComponent.js.map +1 -1
  96. package/lib/esm/bpComponents/BPTextInputComponent.js +1 -1
  97. package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
  98. package/lib/esm/bpComponents/BPToggleInputComponent.js +3 -2
  99. package/lib/esm/bpComponents/BPToggleInputComponent.js.map +1 -1
  100. package/lib/esm/bpComponents/BPTreeComponent.d.ts +20 -10
  101. package/lib/esm/bpComponents/BPTreeComponent.js +120 -26
  102. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  103. package/lib/esm/bpComponents/BPTreeFolderComponent.js +4 -3
  104. package/lib/esm/bpComponents/BPTreeFolderComponent.js.map +1 -1
  105. package/lib/esm/bpComponents/BPValueComponent.d.ts +4 -1
  106. package/lib/esm/bpComponents/BPValueComponent.js +19 -3
  107. package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
  108. package/lib/esm/bpComponents/BPVectorInputComponent.d.ts +1 -0
  109. package/lib/esm/bpComponents/BPVectorInputComponent.js +14 -8
  110. package/lib/esm/bpComponents/BPVectorInputComponent.js.map +1 -1
  111. package/lib/esm/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
  112. package/lib/esm/bpComponents/GetNumberTransformFunctions.js +14 -0
  113. package/lib/esm/bpComponents/GetNumberTransformFunctions.js.map +1 -0
  114. package/lib/esm/bpComponents/NumberUnits.d.ts +7 -0
  115. package/lib/esm/bpComponents/NumberUnits.js +101 -0
  116. package/lib/esm/bpComponents/NumberUnits.js.map +1 -0
  117. package/lib/esm/components/AppToaster.js.map +1 -1
  118. package/lib/esm/components/ConfigurationPanelComponent.js +6 -1
  119. package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
  120. package/lib/esm/components/DialogContext.d.ts +18 -10
  121. package/lib/esm/components/DialogContext.js +52 -33
  122. package/lib/esm/components/DialogContext.js.map +1 -1
  123. package/lib/esm/components/DraggableIcon.d.ts +1 -0
  124. package/lib/esm/components/DraggableIcon.js +7 -4
  125. package/lib/esm/components/DraggableIcon.js.map +1 -1
  126. package/lib/esm/components/ExtendedNumericInput.d.ts +13 -3
  127. package/lib/esm/components/ExtendedNumericInput.js +63 -18
  128. package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
  129. package/lib/esm/components/FileComponent.d.ts +3 -1
  130. package/lib/esm/components/FileComponent.js +19 -19
  131. package/lib/esm/components/FileComponent.js.map +1 -1
  132. package/lib/esm/components/InspectorStackComponent.d.ts +2 -1
  133. package/lib/esm/components/InspectorStackComponent.js +2 -2
  134. package/lib/esm/components/InspectorStackComponent.js.map +1 -1
  135. package/lib/esm/components/NumericInput.d.ts +76 -0
  136. package/lib/esm/components/NumericInput.js +301 -0
  137. package/lib/esm/components/NumericInput.js.map +1 -0
  138. package/lib/esm/components/Tree2.d.ts +52 -0
  139. package/lib/esm/components/Tree2.js +177 -0
  140. package/lib/esm/components/Tree2.js.map +1 -0
  141. package/lib/esm/components/TreeNode2.d.ts +43 -0
  142. package/lib/esm/components/TreeNode2.js +111 -0
  143. package/lib/esm/components/TreeNode2.js.map +1 -0
  144. package/lib/esm/components/VisualStyleContext.js +9 -3
  145. package/lib/esm/components/VisualStyleContext.js.map +1 -1
  146. package/lib/esm/components/axesIcons.d.ts +7 -0
  147. package/lib/esm/components/axesIcons.js +10 -0
  148. package/lib/esm/components/axesIcons.js.map +1 -0
  149. package/lib/esm/components/bpIconWrapper.d.ts +2 -2
  150. package/lib/esm/components/bpIconWrapper.js +2 -2
  151. package/lib/esm/components/bpIconWrapper.js.map +1 -1
  152. package/lib/esm/components/iconMapping.d.ts +198 -0
  153. package/lib/esm/components/iconMapping.js +202 -0
  154. package/lib/esm/components/iconMapping.js.map +1 -0
  155. package/lib/esm/components/loadingState.d.ts +4 -0
  156. package/lib/esm/components/loadingState.js +10 -0
  157. package/lib/esm/components/loadingState.js.map +1 -1
  158. package/lib/esm/components/shapesIcons.d.ts +100 -0
  159. package/lib/esm/components/shapesIcons.js +102 -0
  160. package/lib/esm/components/shapesIcons.js.map +1 -0
  161. package/lib/esm/components/treeTypes.d.ts +18 -0
  162. package/lib/esm/components/treeTypes.js +2 -0
  163. package/lib/esm/components/treeTypes.js.map +1 -0
  164. package/lib/esm/lib.d.ts +4 -1
  165. package/lib/esm/lib.js +4 -1
  166. package/lib/esm/lib.js.map +1 -1
  167. package/lib/esm/renderer.css.js +1 -0
  168. package/lib/esm/utils.d.ts +1 -0
  169. package/lib/esm/utils.js +19 -0
  170. package/lib/esm/utils.js.map +1 -0
  171. package/package.json +69 -13
  172. package/src/ConfigObject.tsx +25 -11
  173. package/src/UiConfigRendererBlueprint.tsx +31 -20
  174. package/src/bpComponents/BPButtonComponent.scss +5 -1
  175. package/src/bpComponents/BPButtonComponent.tsx +10 -3
  176. package/src/bpComponents/BPColorInputComponent.tsx +9 -3
  177. package/src/bpComponents/BPComponent.tsx +17 -4
  178. package/src/bpComponents/BPContainerComponent.tsx +13 -1
  179. package/src/bpComponents/BPDropdownInputComponent.tsx +11 -4
  180. package/src/bpComponents/BPFileComponent.tsx +55 -27
  181. package/src/bpComponents/BPFolderComponent.scss +36 -6
  182. package/src/bpComponents/BPFolderComponent.tsx +109 -18
  183. package/src/bpComponents/BPInputComponent.tsx +6 -2
  184. package/src/bpComponents/BPLabelledComponent.tsx +2 -2
  185. package/src/bpComponents/BPNumberInputComponent.tsx +14 -2
  186. package/src/bpComponents/BPPanelComponent.tsx +1 -1
  187. package/src/bpComponents/BPSliderInputComponent.tsx +40 -20
  188. package/src/bpComponents/BPTextInputComponent.tsx +1 -0
  189. package/src/bpComponents/BPToggleInputComponent.tsx +6 -3
  190. package/src/bpComponents/BPTreeComponent.tsx +125 -25
  191. package/src/bpComponents/BPTreeFolderComponent.tsx +3 -3
  192. package/src/bpComponents/BPValueComponent.tsx +31 -4
  193. package/src/bpComponents/BPVectorInputComponent.tsx +23 -20
  194. package/src/bpComponents/GetNumberTransformFunctions.tsx +14 -0
  195. package/src/bpComponents/NumberUnits.tsx +123 -0
  196. package/src/components/AppToaster.tsx +20 -0
  197. package/src/components/ConfigurationPanelComponent.tsx +14 -3
  198. package/src/components/DialogContext.tsx +125 -65
  199. package/src/components/DraggableIcon.tsx +6 -5
  200. package/src/components/ExtendedNumericInput.tsx +71 -19
  201. package/src/components/FileComponent.tsx +48 -25
  202. package/src/components/InspectorStackComponent.tsx +2 -2
  203. package/src/components/NumericInput.tsx +679 -0
  204. package/src/components/Tree2.tsx +344 -0
  205. package/src/components/TreeNode2.tsx +192 -0
  206. package/src/components/VisualStyleContext.tsx +10 -2
  207. package/src/components/axesIcons.tsx +116 -0
  208. package/src/components/bpIconWrapper.tsx +5 -4
  209. package/src/components/common.scss +17 -0
  210. package/src/components/iconMapping.ts +354 -0
  211. package/src/components/loadingState.tsx +9 -0
  212. package/src/components/shapesIcons.tsx +980 -0
  213. package/src/components/tree2.scss +69 -0
  214. package/src/components/treeTypes.ts +97 -0
  215. package/src/lib.ts +4 -1
  216. package/src/renderer.scss +83 -12
  217. package/src/utils.ts +34 -0
  218. package/tsconfig.json +1 -0
  219. package/dist/allPaths-EYaH0Usv.js +0 -23
  220. package/dist/index-0vU2D25U.js +0 -604
  221. package/dist/index-0vU2D25U.js.map +0 -1
  222. package/dist/index-JBvBPdy9.js +0 -604
  223. package/dist/index-JBvBPdy9.js.map +0 -1
  224. package/dist/index-OyL-zObJ.js +0 -12765
  225. package/dist/index-OyL-zObJ.js.map +0 -1
  226. package/lib/cjs/ConfigObject.d.ts +0 -18
  227. package/lib/cjs/ConfigObject.js +0 -82
  228. package/lib/cjs/ConfigObject.js.map +0 -1
  229. package/lib/cjs/UiConfigRendererBlueprint.d.ts +0 -13
  230. package/lib/cjs/UiConfigRendererBlueprint.js +0 -56
  231. package/lib/cjs/UiConfigRendererBlueprint.js.map +0 -1
  232. package/lib/cjs/bpComponents/BPButtonComponent.d.ts +0 -8
  233. package/lib/cjs/bpComponents/BPButtonComponent.js +0 -19
  234. package/lib/cjs/bpComponents/BPButtonComponent.js.map +0 -1
  235. package/lib/cjs/bpComponents/BPColorInputComponent.d.ts +0 -24
  236. package/lib/cjs/bpComponents/BPColorInputComponent.js +0 -127
  237. package/lib/cjs/bpComponents/BPColorInputComponent.js.map +0 -1
  238. package/lib/cjs/bpComponents/BPComponent.d.ts +0 -29
  239. package/lib/cjs/bpComponents/BPComponent.js +0 -59
  240. package/lib/cjs/bpComponents/BPComponent.js.map +0 -1
  241. package/lib/cjs/bpComponents/BPContainerComponent.d.ts +0 -21
  242. package/lib/cjs/bpComponents/BPContainerComponent.js +0 -54
  243. package/lib/cjs/bpComponents/BPContainerComponent.js.map +0 -1
  244. package/lib/cjs/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  245. package/lib/cjs/bpComponents/BPDropdownInputComponent.js +0 -43
  246. package/lib/cjs/bpComponents/BPDropdownInputComponent.js.map +0 -1
  247. package/lib/cjs/bpComponents/BPFileComponent.d.ts +0 -25
  248. package/lib/cjs/bpComponents/BPFileComponent.js +0 -69
  249. package/lib/cjs/bpComponents/BPFileComponent.js.map +0 -1
  250. package/lib/cjs/bpComponents/BPFolderComponent.d.ts +0 -16
  251. package/lib/cjs/bpComponents/BPFolderComponent.js +0 -39
  252. package/lib/cjs/bpComponents/BPFolderComponent.js.map +0 -1
  253. package/lib/cjs/bpComponents/BPInputComponent.d.ts +0 -11
  254. package/lib/cjs/bpComponents/BPInputComponent.js +0 -34
  255. package/lib/cjs/bpComponents/BPInputComponent.js.map +0 -1
  256. package/lib/cjs/bpComponents/BPLabelledComponent.d.ts +0 -8
  257. package/lib/cjs/bpComponents/BPLabelledComponent.js +0 -14
  258. package/lib/cjs/bpComponents/BPLabelledComponent.js.map +0 -1
  259. package/lib/cjs/bpComponents/BPNumberInputComponent.d.ts +0 -10
  260. package/lib/cjs/bpComponents/BPNumberInputComponent.js +0 -40
  261. package/lib/cjs/bpComponents/BPNumberInputComponent.js.map +0 -1
  262. package/lib/cjs/bpComponents/BPPanelComponent.d.ts +0 -16
  263. package/lib/cjs/bpComponents/BPPanelComponent.js +0 -35
  264. package/lib/cjs/bpComponents/BPPanelComponent.js.map +0 -1
  265. package/lib/cjs/bpComponents/BPSliderInputComponent.d.ts +0 -14
  266. package/lib/cjs/bpComponents/BPSliderInputComponent.js +0 -41
  267. package/lib/cjs/bpComponents/BPSliderInputComponent.js.map +0 -1
  268. package/lib/cjs/bpComponents/BPTextInputComponent.d.ts +0 -7
  269. package/lib/cjs/bpComponents/BPTextInputComponent.js +0 -19
  270. package/lib/cjs/bpComponents/BPTextInputComponent.js.map +0 -1
  271. package/lib/cjs/bpComponents/BPToggleInputComponent.d.ts +0 -8
  272. package/lib/cjs/bpComponents/BPToggleInputComponent.js +0 -22
  273. package/lib/cjs/bpComponents/BPToggleInputComponent.js.map +0 -1
  274. package/lib/cjs/bpComponents/BPTreeComponent.d.ts +0 -36
  275. package/lib/cjs/bpComponents/BPTreeComponent.js +0 -131
  276. package/lib/cjs/bpComponents/BPTreeComponent.js.map +0 -1
  277. package/lib/cjs/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  278. package/lib/cjs/bpComponents/BPTreeFolderComponent.js +0 -40
  279. package/lib/cjs/bpComponents/BPTreeFolderComponent.js.map +0 -1
  280. package/lib/cjs/bpComponents/BPValueComponent.d.ts +0 -16
  281. package/lib/cjs/bpComponents/BPValueComponent.js +0 -46
  282. package/lib/cjs/bpComponents/BPValueComponent.js.map +0 -1
  283. package/lib/cjs/bpComponents/BPVectorInputComponent.d.ts +0 -19
  284. package/lib/cjs/bpComponents/BPVectorInputComponent.js +0 -110
  285. package/lib/cjs/bpComponents/BPVectorInputComponent.js.map +0 -1
  286. package/lib/cjs/components/ConfigurationPanelComponent.d.ts +0 -4
  287. package/lib/cjs/components/ConfigurationPanelComponent.js +0 -30
  288. package/lib/cjs/components/ConfigurationPanelComponent.js.map +0 -1
  289. package/lib/cjs/components/DialogContext.d.ts +0 -48
  290. package/lib/cjs/components/DialogContext.js +0 -79
  291. package/lib/cjs/components/DialogContext.js.map +0 -1
  292. package/lib/cjs/components/DraggableIcon.d.ts +0 -19
  293. package/lib/cjs/components/DraggableIcon.js +0 -70
  294. package/lib/cjs/components/DraggableIcon.js.map +0 -1
  295. package/lib/cjs/components/ExtendedNumericInput.d.ts +0 -25
  296. package/lib/cjs/components/ExtendedNumericInput.js +0 -174
  297. package/lib/cjs/components/ExtendedNumericInput.js.map +0 -1
  298. package/lib/cjs/components/FileComponent.d.ts +0 -7
  299. package/lib/cjs/components/FileComponent.js +0 -49
  300. package/lib/cjs/components/FileComponent.js.map +0 -1
  301. package/lib/cjs/components/FormGroupComponent.d.ts +0 -6
  302. package/lib/cjs/components/FormGroupComponent.js +0 -16
  303. package/lib/cjs/components/FormGroupComponent.js.map +0 -1
  304. package/lib/cjs/components/InspectorStackComponent.d.ts +0 -4
  305. package/lib/cjs/components/InspectorStackComponent.js +0 -27
  306. package/lib/cjs/components/InspectorStackComponent.js.map +0 -1
  307. package/lib/cjs/components/VisualStyleContext.d.ts +0 -119
  308. package/lib/cjs/components/VisualStyleContext.js +0 -60
  309. package/lib/cjs/components/VisualStyleContext.js.map +0 -1
  310. package/lib/cjs/components/bpIconWrapper.d.ts +0 -2
  311. package/lib/cjs/components/bpIconWrapper.js +0 -9
  312. package/lib/cjs/components/bpIconWrapper.js.map +0 -1
  313. package/lib/cjs/components/loadingState.d.ts +0 -4
  314. package/lib/cjs/components/loadingState.js +0 -16
  315. package/lib/cjs/components/loadingState.js.map +0 -1
  316. package/lib/cjs/components/variableIcons.d.ts +0 -40
  317. package/lib/cjs/components/variableIcons.js +0 -46
  318. package/lib/cjs/components/variableIcons.js.map +0 -1
  319. package/lib/cjs/contexts.d.ts +0 -1
  320. package/lib/cjs/contexts.js +0 -3
  321. package/lib/cjs/contexts.js.map +0 -1
  322. package/lib/cjs/index.d.ts +0 -4
  323. package/lib/cjs/index.js +0 -9
  324. package/lib/cjs/index.js.map +0 -1
  325. package/lib/cjs/lib.d.ts +0 -32
  326. package/lib/cjs/lib.js +0 -49
  327. package/lib/cjs/lib.js.map +0 -1
  328. package/lib/cjs/threejs.d.ts +0 -2
  329. package/lib/cjs/threejs.js +0 -3
  330. package/lib/cjs/threejs.js.map +0 -1
  331. package/lib/esnext/ConfigObject.d.ts +0 -18
  332. package/lib/esnext/ConfigObject.js +0 -75
  333. package/lib/esnext/ConfigObject.js.map +0 -1
  334. package/lib/esnext/UiConfigRendererBlueprint.d.ts +0 -13
  335. package/lib/esnext/UiConfigRendererBlueprint.js +0 -52
  336. package/lib/esnext/UiConfigRendererBlueprint.js.map +0 -1
  337. package/lib/esnext/bpComponents/BPButtonComponent.d.ts +0 -8
  338. package/lib/esnext/bpComponents/BPButtonComponent.js +0 -15
  339. package/lib/esnext/bpComponents/BPButtonComponent.js.map +0 -1
  340. package/lib/esnext/bpComponents/BPColorInputComponent.d.ts +0 -24
  341. package/lib/esnext/bpComponents/BPColorInputComponent.js +0 -110
  342. package/lib/esnext/bpComponents/BPColorInputComponent.js.map +0 -1
  343. package/lib/esnext/bpComponents/BPComponent.d.ts +0 -29
  344. package/lib/esnext/bpComponents/BPComponent.js +0 -46
  345. package/lib/esnext/bpComponents/BPComponent.js.map +0 -1
  346. package/lib/esnext/bpComponents/BPContainerComponent.d.ts +0 -21
  347. package/lib/esnext/bpComponents/BPContainerComponent.js +0 -51
  348. package/lib/esnext/bpComponents/BPContainerComponent.js.map +0 -1
  349. package/lib/esnext/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  350. package/lib/esnext/bpComponents/BPDropdownInputComponent.js +0 -40
  351. package/lib/esnext/bpComponents/BPDropdownInputComponent.js.map +0 -1
  352. package/lib/esnext/bpComponents/BPFileComponent.d.ts +0 -25
  353. package/lib/esnext/bpComponents/BPFileComponent.js +0 -52
  354. package/lib/esnext/bpComponents/BPFileComponent.js.map +0 -1
  355. package/lib/esnext/bpComponents/BPFolderComponent.d.ts +0 -16
  356. package/lib/esnext/bpComponents/BPFolderComponent.js +0 -30
  357. package/lib/esnext/bpComponents/BPFolderComponent.js.map +0 -1
  358. package/lib/esnext/bpComponents/BPInputComponent.d.ts +0 -11
  359. package/lib/esnext/bpComponents/BPInputComponent.js +0 -19
  360. package/lib/esnext/bpComponents/BPInputComponent.js.map +0 -1
  361. package/lib/esnext/bpComponents/BPLabelledComponent.d.ts +0 -8
  362. package/lib/esnext/bpComponents/BPLabelledComponent.js +0 -13
  363. package/lib/esnext/bpComponents/BPLabelledComponent.js.map +0 -1
  364. package/lib/esnext/bpComponents/BPNumberInputComponent.d.ts +0 -10
  365. package/lib/esnext/bpComponents/BPNumberInputComponent.js +0 -21
  366. package/lib/esnext/bpComponents/BPNumberInputComponent.js.map +0 -1
  367. package/lib/esnext/bpComponents/BPPanelComponent.d.ts +0 -16
  368. package/lib/esnext/bpComponents/BPPanelComponent.js +0 -31
  369. package/lib/esnext/bpComponents/BPPanelComponent.js.map +0 -1
  370. package/lib/esnext/bpComponents/BPSliderInputComponent.d.ts +0 -14
  371. package/lib/esnext/bpComponents/BPSliderInputComponent.js +0 -39
  372. package/lib/esnext/bpComponents/BPSliderInputComponent.js.map +0 -1
  373. package/lib/esnext/bpComponents/BPTextInputComponent.d.ts +0 -7
  374. package/lib/esnext/bpComponents/BPTextInputComponent.js +0 -15
  375. package/lib/esnext/bpComponents/BPTextInputComponent.js.map +0 -1
  376. package/lib/esnext/bpComponents/BPToggleInputComponent.d.ts +0 -8
  377. package/lib/esnext/bpComponents/BPToggleInputComponent.js +0 -18
  378. package/lib/esnext/bpComponents/BPToggleInputComponent.js.map +0 -1
  379. package/lib/esnext/bpComponents/BPTreeComponent.d.ts +0 -36
  380. package/lib/esnext/bpComponents/BPTreeComponent.js +0 -111
  381. package/lib/esnext/bpComponents/BPTreeComponent.js.map +0 -1
  382. package/lib/esnext/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  383. package/lib/esnext/bpComponents/BPTreeFolderComponent.js +0 -23
  384. package/lib/esnext/bpComponents/BPTreeFolderComponent.js.map +0 -1
  385. package/lib/esnext/bpComponents/BPValueComponent.d.ts +0 -16
  386. package/lib/esnext/bpComponents/BPValueComponent.js +0 -29
  387. package/lib/esnext/bpComponents/BPValueComponent.js.map +0 -1
  388. package/lib/esnext/bpComponents/BPVectorInputComponent.d.ts +0 -19
  389. package/lib/esnext/bpComponents/BPVectorInputComponent.js +0 -93
  390. package/lib/esnext/bpComponents/BPVectorInputComponent.js.map +0 -1
  391. package/lib/esnext/components/ConfigurationPanelComponent.d.ts +0 -4
  392. package/lib/esnext/components/ConfigurationPanelComponent.js +0 -26
  393. package/lib/esnext/components/ConfigurationPanelComponent.js.map +0 -1
  394. package/lib/esnext/components/DialogContext.d.ts +0 -48
  395. package/lib/esnext/components/DialogContext.js +0 -55
  396. package/lib/esnext/components/DialogContext.js.map +0 -1
  397. package/lib/esnext/components/DraggableIcon.d.ts +0 -19
  398. package/lib/esnext/components/DraggableIcon.js +0 -62
  399. package/lib/esnext/components/DraggableIcon.js.map +0 -1
  400. package/lib/esnext/components/ExtendedNumericInput.d.ts +0 -25
  401. package/lib/esnext/components/ExtendedNumericInput.js +0 -151
  402. package/lib/esnext/components/ExtendedNumericInput.js.map +0 -1
  403. package/lib/esnext/components/FileComponent.d.ts +0 -7
  404. package/lib/esnext/components/FileComponent.js +0 -42
  405. package/lib/esnext/components/FileComponent.js.map +0 -1
  406. package/lib/esnext/components/FormGroupComponent.d.ts +0 -6
  407. package/lib/esnext/components/FormGroupComponent.js +0 -11
  408. package/lib/esnext/components/FormGroupComponent.js.map +0 -1
  409. package/lib/esnext/components/InspectorStackComponent.d.ts +0 -4
  410. package/lib/esnext/components/InspectorStackComponent.js +0 -23
  411. package/lib/esnext/components/InspectorStackComponent.js.map +0 -1
  412. package/lib/esnext/components/VisualStyleContext.d.ts +0 -119
  413. package/lib/esnext/components/VisualStyleContext.js +0 -53
  414. package/lib/esnext/components/VisualStyleContext.js.map +0 -1
  415. package/lib/esnext/components/bpIconWrapper.d.ts +0 -2
  416. package/lib/esnext/components/bpIconWrapper.js +0 -5
  417. package/lib/esnext/components/bpIconWrapper.js.map +0 -1
  418. package/lib/esnext/components/loadingState.d.ts +0 -4
  419. package/lib/esnext/components/loadingState.js +0 -12
  420. package/lib/esnext/components/loadingState.js.map +0 -1
  421. package/lib/esnext/components/variableIcons.d.ts +0 -40
  422. package/lib/esnext/components/variableIcons.js +0 -43
  423. package/lib/esnext/components/variableIcons.js.map +0 -1
  424. package/lib/esnext/contexts.d.ts +0 -1
  425. package/lib/esnext/contexts.js +0 -2
  426. package/lib/esnext/contexts.js.map +0 -1
  427. package/lib/esnext/index.d.ts +0 -4
  428. package/lib/esnext/index.js +0 -5
  429. package/lib/esnext/index.js.map +0 -1
  430. package/lib/esnext/lib.d.ts +0 -32
  431. package/lib/esnext/lib.js +0 -33
  432. package/lib/esnext/lib.js.map +0 -1
  433. package/lib/esnext/threejs.d.ts +0 -2
  434. package/lib/esnext/threejs.js +0 -2
  435. package/lib/esnext/threejs.js.map +0 -1
@@ -0,0 +1,344 @@
1
+ /*
2
+ * Copyright 2015 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * Changes:
17
+ * - Added support for drag and drop
18
+ *
19
+ */
20
+ import classNames from "classnames";
21
+ import * as React from "react";
22
+
23
+ import type {TreeEventHandler} from "@blueprintjs/core";
24
+ import {Classes, DISPLAYNAME_PREFIX, type Props} from "@blueprintjs/core";
25
+ import {TreeNode2} from "./TreeNode2";
26
+ import {TREE_NODE} from "@blueprintjs/core/lib/esnext/common/classes";
27
+ import { TreeNodeInfo } from "./treeTypes";
28
+
29
+ // eslint-disable-next-line @typescript-eslint/ban-types
30
+ export interface TreeProps<T = {}> extends Props {
31
+ /**
32
+ * Whether to use a compact appearance which reduces the visual padding around node content.
33
+ */
34
+ compact?: boolean;
35
+
36
+ /**
37
+ * The data specifying the contents and appearance of the tree.
38
+ */
39
+ contents: ReadonlyArray<TreeNodeInfo<T>>;
40
+
41
+ /**
42
+ * Invoked when a node is clicked anywhere other than the caret for expanding/collapsing the node.
43
+ */
44
+ onNodeClick?: TreeEventHandler<T>;
45
+
46
+ /**
47
+ * Invoked when caret of an expanded node is clicked.
48
+ */
49
+ onNodeCollapse?: TreeEventHandler<T>;
50
+
51
+ /**
52
+ * Invoked when a node is right-clicked or the context menu button is pressed on a focused node.
53
+ */
54
+ onNodeContextMenu?: TreeEventHandler<T>;
55
+
56
+ /**
57
+ * Invoked when a node is double-clicked. Be careful when using this in combination with
58
+ * an `onNodeClick` (single-click) handler, as the way this behaves can vary between browsers.
59
+ * See http://stackoverflow.com/q/5497073/3124288
60
+ */
61
+ onNodeDoubleClick?: TreeEventHandler<T>;
62
+
63
+ /**
64
+ * Invoked when the caret of a collapsed node is clicked.
65
+ */
66
+ onNodeExpand?: TreeEventHandler<T>;
67
+
68
+ /**
69
+ * Invoked when the mouse is moved over a node.
70
+ */
71
+ onNodeMouseEnter?: TreeEventHandler<T>;
72
+
73
+ /**
74
+ * Invoked when the mouse is moved out of a node.
75
+ */
76
+ onNodeMouseLeave?: TreeEventHandler<T>;
77
+
78
+ /**
79
+ * Invoked when a node is dropped onto another node.
80
+ */
81
+ onNodeDrop?: (source: TreeNodeInfo<T>, sourcePath: number[], target: TreeNodeInfo<T>, targetPath: number[], event: React.DragEvent<HTMLElement>, index?: number) => void;
82
+
83
+ /**
84
+ * Invoked when a node drag starts.
85
+ */
86
+ onNodeDragStart?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
87
+
88
+ /**
89
+ * Invoked when a node is dragged over another node.
90
+ */
91
+ onNodeDragOver?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
92
+
93
+ /**
94
+ * Invoked when a node drag ends.
95
+ */
96
+ onNodeDragEnd?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
97
+
98
+ /**
99
+ * Invoked when a dragged node enters another node.
100
+ */
101
+ onNodeDragEnter?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
102
+
103
+ /**
104
+ * Invoked when a dragged node leaves another node.
105
+ */
106
+ onNodeDragLeave?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
107
+
108
+ /**
109
+ * A function that determines whether a node can be dropped onto another node.
110
+ * @param source
111
+ * @param target
112
+ */
113
+ canDropNode?: (source: TreeNodeInfo<T>, sourcePath: number[], target: TreeNodeInfo<T>, targetPath: number[], index?: number) => boolean;
114
+ }
115
+
116
+ /**
117
+ * Tree component.
118
+ *
119
+ * @see https://blueprintjs.com/docs/#core/components/tree
120
+ */
121
+ // eslint-disable-next-line @typescript-eslint/ban-types
122
+ export class Tree2<T = {}> extends React.Component<TreeProps<T>> {
123
+ public static displayName = `${DISPLAYNAME_PREFIX}.Tree`;
124
+
125
+ public static ofType<U>() {
126
+ return Tree2 as new (props: TreeProps<U>) => Tree2<U>;
127
+ }
128
+
129
+ public static nodeFromPath<U>(
130
+ path: readonly number[],
131
+ treeNodes?: ReadonlyArray<TreeNodeInfo<U>>,
132
+ ): TreeNodeInfo<U> {
133
+ if (path.length === 1) {
134
+ return treeNodes![path[0]];
135
+ } else {
136
+ return Tree2.nodeFromPath(path.slice(1), treeNodes![path[0]].childNodes);
137
+ }
138
+ }
139
+
140
+ private nodeRefs: { [nodeId: string]: HTMLElement } = {};
141
+ private dragSource: { node: TreeNodeInfo<T>; path: number[] } | null = null;
142
+ private draggingNode?: { node: TreeNodeInfo<T>; path: number[] };
143
+ private dragOverNode?: { node: TreeNodeInfo<T>; path: number[]; currentTarget?: HTMLElement };
144
+ private rootRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();
145
+
146
+ public render() {
147
+ return (
148
+ <div
149
+ className={classNames(Classes.TREE, this.props.className, {
150
+ [Classes.COMPACT]: this.props.compact,
151
+ })}
152
+ ref={this.rootRef}
153
+ >
154
+ {this.renderNodes(this.props.contents, [], Classes.TREE_ROOT)}
155
+ </div>
156
+ );
157
+ }
158
+
159
+ /**
160
+ * Returns the underlying HTML element of the `Tree` node with an id of `nodeId`.
161
+ * This element does not contain the children of the node, only its label and controls.
162
+ * If the node is not currently mounted, `undefined` is returned.
163
+ */
164
+ public getNodeContentElement(nodeId: string | number): HTMLElement | undefined {
165
+ return this.nodeRefs[nodeId];
166
+ }
167
+ private renderNodeSpacer = (node: TreeNodeInfo<T>, path: number[], i: number)=> {
168
+ return <li className={Classes.TREE + "-drop-spacer"}
169
+ key={"drop-" + node.id + "-" + i}
170
+ >
171
+ <div
172
+ onDragOver={(e) => this.handleNodeDragOver(node, path, e, i)}
173
+ onDrop={(e) => this.handleNodeDrop(node, path, e, i)}
174
+ onDragEnter={(e) => this.handleNodeDragEnter(node, path, e, i)}
175
+ onDragLeave={(e) => this.handleNodeDragLeave(node, path, e, i)}
176
+ ></div>
177
+ </li>
178
+ }
179
+
180
+ private renderNodes(
181
+ treeNodes: ReadonlyArray<TreeNodeInfo<T>> | undefined,
182
+ currentPath?: number[],
183
+ className?: string,
184
+ parentNode?: TreeNodeInfo<T>,
185
+ ) {
186
+ if (treeNodes == null) {
187
+ return null;
188
+ }
189
+
190
+ const nodeItems = treeNodes.map((node, i) => {
191
+ const elementPath = currentPath!.concat(i);
192
+ const draggable = !!node.draggable;
193
+ const droppable = !!node.droppable;
194
+ const parentDroppable = !!(parentNode && parentNode.droppable);
195
+ return (<React.Fragment key={'wr-'+node.id}>
196
+ {parentDroppable && i === 0 && this.renderNodeSpacer(parentNode, elementPath, i)}
197
+ <TreeNode2<T>
198
+ {...node}
199
+ key={'node-'+node.id}
200
+ contentRef={this.handleContentRef}
201
+ depth={elementPath.length - 1}
202
+ onClick={this.handleNodeClick}
203
+ onContextMenu={this.handleNodeContextMenu}
204
+ onCollapse={this.handleNodeCollapse}
205
+ onDoubleClick={this.handleNodeDoubleClick}
206
+ onExpand={this.handleNodeExpand}
207
+ onMouseEnter={this.handleNodeMouseEnter}
208
+ onMouseLeave={this.handleNodeMouseLeave}
209
+ path={elementPath}
210
+ draggable={draggable}
211
+ onDragStart={draggable ? this.handleNodeDragStart : undefined}
212
+ onDragEnd={draggable ? this.handleNodeDragEnd : undefined}
213
+ onDragOver={droppable ? this.handleNodeDragOver : undefined}
214
+ onDrop={droppable ? this.handleNodeDrop : undefined}
215
+ onDragEnter={droppable ? this.handleNodeDragEnter : undefined}
216
+ onDragLeave={droppable ? this.handleNodeDragLeave : undefined}
217
+ >
218
+ {this.renderNodes(node.childNodes, elementPath, undefined, node)}
219
+ </TreeNode2>
220
+ {parentDroppable && i >= 0 && this.renderNodeSpacer(parentNode, elementPath, i + 1)}
221
+ </React.Fragment>)
222
+ });
223
+
224
+ return <ul className={classNames(Classes.TREE_NODE_LIST, className)}>{nodeItems}</ul>;
225
+ }
226
+
227
+ private handleContentRef = (node: TreeNodeInfo<T>, element: HTMLElement | null) => {
228
+ if (element != null) {
229
+ this.nodeRefs[node.id] = element;
230
+ } else {
231
+ // don't want our object to get bloated with old keys
232
+ delete this.nodeRefs[node.id];
233
+ }
234
+ };
235
+
236
+ private handleNodeCollapse = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
237
+ this.props.onNodeCollapse?.(node, path, e);
238
+ };
239
+
240
+ private handleNodeClick = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
241
+ this.props.onNodeClick?.(node, path, e);
242
+ };
243
+
244
+ private handleNodeContextMenu = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
245
+ this.props.onNodeContextMenu?.(node, path, e);
246
+ };
247
+
248
+ private handleNodeDoubleClick = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
249
+ this.props.onNodeDoubleClick?.(node, path, e);
250
+ };
251
+
252
+ private handleNodeExpand = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
253
+ this.props.onNodeExpand?.(node, path, e);
254
+ };
255
+
256
+ private handleNodeMouseEnter = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
257
+ this.props.onNodeMouseEnter?.(node, path, e);
258
+ };
259
+
260
+ private handleNodeMouseLeave = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
261
+ this.props.onNodeMouseLeave?.(node, path, e);
262
+ };
263
+
264
+ // Drag and drop handlers
265
+ private handleNodeDragStart = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => {
266
+ this.dragSource = { node, path };
267
+ this.draggingNode = { node, path };
268
+ this.rootRef?.current?.classList.add(Classes.TREE + "-dragging-node");
269
+ this.addNodeClass(node, TREE_NODE + "-dragging");
270
+ e.dataTransfer.effectAllowed = "move";
271
+ try {
272
+ e.dataTransfer.setData("application/json", JSON.stringify({ nodeId: node.id, path }));
273
+ } catch {
274
+ // ignore
275
+ }
276
+ this.props.onNodeDragStart?.(node, path, e);
277
+ };
278
+
279
+ private handleNodeDragOver = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, index?: number) => {
280
+ if (this.dragSource && this.props.canDropNode) {
281
+ const canDrop = this.props.canDropNode(this.dragSource.node, this.dragSource.path, node, path, index);
282
+ if (!canDrop) {
283
+ e.dataTransfer.dropEffect = "none";
284
+ e.preventDefault();
285
+ return;
286
+ }
287
+ }
288
+ const currentTarget = e.currentTarget as HTMLElement;
289
+ if ((this.dragOverNode?.node.id !== node.id || this.dragOverNode?.currentTarget !== currentTarget) && this.draggingNode?.node.id !== node.id) {
290
+ if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
291
+ this.dragOverNode = { node, path, currentTarget };
292
+ this.addNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
293
+ }
294
+ e.preventDefault();
295
+ e.dataTransfer.dropEffect = "move";
296
+ this.props.onNodeDragOver?.(node, path, e);
297
+ };
298
+
299
+ private handleNodeDrop = (targetNode: TreeNodeInfo<T>, targetPath: number[], e: React.DragEvent<HTMLElement>, index?: number) => {
300
+ e.preventDefault();
301
+ const source = this.dragSource
302
+ const canDrop = !source ? false : (this.props.canDropNode ? this.props.canDropNode(source.node, source.path, targetNode, targetPath, index) : true);
303
+ if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
304
+ if (this.draggingNode) this.removeNodeClass(this.draggingNode.node, TREE_NODE + "-dragging");
305
+ this.dragSource = null;
306
+ this.draggingNode = undefined;
307
+ this.rootRef?.current?.classList.remove(Classes.TREE + "-dragging-node");
308
+ this.dragOverNode = undefined;
309
+ if (canDrop && source && this.props.onNodeDrop) {
310
+ this.props.onNodeDrop(source.node, source.path, targetNode, targetPath, e, index);
311
+ }
312
+ };
313
+
314
+ private handleNodeDragEnd = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, _index?: number) => {
315
+ if (this.draggingNode) this.removeNodeClass(this.draggingNode.node, TREE_NODE + "-dragging");
316
+ if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
317
+ this.dragSource = null;
318
+ this.draggingNode = undefined;
319
+ this.rootRef?.current?.classList.remove(Classes.TREE + "-dragging-node");
320
+ this.dragOverNode = undefined;
321
+ this.props.onNodeDragEnd?.(node, path, e);
322
+ };
323
+
324
+ private handleNodeDragEnter = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, _index?: number) => {
325
+ this.props.onNodeDragEnter?.(node, path, e);
326
+ };
327
+
328
+ private handleNodeDragLeave = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, _index?: number) => {
329
+ if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
330
+ this.dragOverNode = undefined;
331
+ this.props.onNodeDragLeave?.(node, path, e);
332
+ };
333
+
334
+ private addNodeClass = (node: TreeNodeInfo<T>|number[], className: string, currentTarget?: HTMLElement) => {
335
+ const el = this.nodeRefs[!Array.isArray(node) ? node.id : Tree2.nodeFromPath(node, this.props.contents).id];
336
+ if (el) el.classList.add(className);
337
+ if(currentTarget) currentTarget.classList.add(className);
338
+ }
339
+ private removeNodeClass = (node: TreeNodeInfo<T>|number[], className: string, currentTarget?: HTMLElement) => {
340
+ const el = this.nodeRefs[!Array.isArray(node) ? node.id : Tree2.nodeFromPath(node, this.props.contents).id];
341
+ if (el) el.classList.remove(className);
342
+ if(currentTarget) currentTarget.classList.remove(className);
343
+ }
344
+ }
@@ -0,0 +1,192 @@
1
+ /*
2
+ * Copyright 2015 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ * Changes:
17
+ * - Added support for drag and drop
18
+ */
19
+
20
+ import classNames from "classnames";
21
+ import * as React from "react";
22
+
23
+ import {CaretRight} from "@blueprintjs/icons";
24
+
25
+ import type {TreeEventHandler, TreeNodeInfo} from "@blueprintjs/core";
26
+ import {Classes, Collapse, DISPLAYNAME_PREFIX, Icon} from "@blueprintjs/core";
27
+
28
+ // eslint-disable-next-line @typescript-eslint/ban-types
29
+ export interface TreeNodeProps<T = {}> extends TreeNodeInfo<T> {
30
+ children?: React.ReactNode;
31
+ contentRef?: (node: TreeNodeInfo<T>, element: HTMLDivElement | null) => void;
32
+ depth: number;
33
+ key?: string | number;
34
+ onClick?: TreeEventHandler<T>;
35
+ onCollapse?: TreeEventHandler<T>;
36
+ onContextMenu?: TreeEventHandler<T>;
37
+ onDoubleClick?: TreeEventHandler<T>;
38
+ onExpand?: TreeEventHandler<T>;
39
+ onMouseEnter?: TreeEventHandler<T>;
40
+ onMouseLeave?: TreeEventHandler<T>;
41
+ path: number[];
42
+ draggable?: boolean;
43
+ onDragStart?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
44
+ onDragOver?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
45
+ onDrop?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
46
+ onDragEnd?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
47
+ onDragEnter?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
48
+ onDragLeave?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
49
+ }
50
+
51
+ /**
52
+ * Tree node component.
53
+ *
54
+ * @see https://blueprintjs.com/docs/#core/components/tree.tree-node
55
+ */
56
+ // eslint-disable-next-line @typescript-eslint/ban-types
57
+ export class TreeNode2<T = {}> extends React.Component<TreeNodeProps<T>> {
58
+ public static displayName = `${DISPLAYNAME_PREFIX}.TreeNode`;
59
+
60
+ /** @deprecated no longer necessary now that the TypeScript parser supports type arguments on JSX element tags */
61
+ public static ofType<U>() {
62
+ return TreeNode2 as new (props: TreeNodeProps<U>) => TreeNode2<U>;
63
+ }
64
+
65
+ public render() {
66
+ const { children, className, disabled, icon, isExpanded, isSelected, label, draggable } = this.props;
67
+ const classes = classNames(
68
+ Classes.TREE_NODE,
69
+ {
70
+ [Classes.DISABLED]: disabled,
71
+ [Classes.TREE_NODE_SELECTED]: isSelected,
72
+ [Classes.TREE_NODE_EXPANDED]: isExpanded,
73
+ },
74
+ className,
75
+ );
76
+
77
+ const contentClasses = classNames(
78
+ Classes.TREE_NODE_CONTENT,
79
+ `${Classes.TREE_NODE_CONTENT}-${this.props.depth}`,
80
+ );
81
+
82
+ const eventHandlers =
83
+ disabled === true
84
+ ? {}
85
+ : {
86
+ onClick: this.handleClick,
87
+ onContextMenu: this.handleContextMenu,
88
+ onDoubleClick: this.handleDoubleClick,
89
+ onMouseEnter: this.handleMouseEnter,
90
+ onMouseLeave: this.handleMouseLeave,
91
+ draggable: draggable,
92
+ onDragStart: this.handleDragStart,
93
+ onDragOver: this.handleDragOver,
94
+ onDrop: this.handleDrop,
95
+ onDragEnd: this.handleDragEnd,
96
+ onDragEnter: this.handleDragEnter,
97
+ onDragLeave: this.handleDragLeave,
98
+ };
99
+
100
+ return (
101
+ <li className={classes}>
102
+ <div className={contentClasses} ref={this.handleContentRef} {...eventHandlers}>
103
+ {this.maybeRenderCaret()}
104
+ <Icon className={Classes.TREE_NODE_ICON} icon={icon} aria-hidden={true} tabIndex={-1} />
105
+ <span className={Classes.TREE_NODE_LABEL}>{label}</span>
106
+ {this.maybeRenderSecondaryLabel()}
107
+ </div>
108
+ <Collapse isOpen={isExpanded}>{children}</Collapse>
109
+ </li>
110
+ );
111
+ }
112
+
113
+ private maybeRenderCaret() {
114
+ const { children, isExpanded, disabled, hasCaret = React.Children.count(children) > 0 } = this.props;
115
+ if (hasCaret) {
116
+ const caretClasses = classNames(
117
+ Classes.TREE_NODE_CARET,
118
+ isExpanded ? Classes.TREE_NODE_CARET_OPEN : Classes.TREE_NODE_CARET_CLOSED,
119
+ );
120
+ return (
121
+ <CaretRight
122
+ title={isExpanded ? "Collapse group" : "Expand group"}
123
+ className={caretClasses}
124
+ onClick={disabled === true ? undefined : this.handleCaretClick}
125
+ />
126
+ );
127
+ }
128
+ return <span className={Classes.TREE_NODE_CARET_NONE} />;
129
+ }
130
+
131
+ private maybeRenderSecondaryLabel() {
132
+ if (this.props.secondaryLabel != null) {
133
+ return <span className={Classes.TREE_NODE_SECONDARY_LABEL}>{this.props.secondaryLabel}</span>;
134
+ } else {
135
+ return undefined;
136
+ }
137
+ }
138
+
139
+ private handleCaretClick = (e: React.MouseEvent<HTMLElement>) => {
140
+ e.stopPropagation();
141
+ const { isExpanded, onCollapse, onExpand } = this.props;
142
+ (isExpanded ? onCollapse : onExpand)?.(this.props, this.props.path, e);
143
+ };
144
+
145
+ private handleClick = (e: React.MouseEvent<HTMLDivElement>) => {
146
+ this.props.onClick?.(this.props, this.props.path, e);
147
+ };
148
+
149
+ private handleContentRef = (element: HTMLDivElement | null) => {
150
+ this.props.contentRef?.(this.props, element);
151
+ };
152
+
153
+ private handleContextMenu = (e: React.MouseEvent<HTMLDivElement>) => {
154
+ this.props.onContextMenu?.(this.props, this.props.path, e);
155
+ };
156
+
157
+ private handleDoubleClick = (e: React.MouseEvent<HTMLDivElement>) => {
158
+ this.props.onDoubleClick?.(this.props, this.props.path, e);
159
+ };
160
+
161
+ private handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {
162
+ this.props.onMouseEnter?.(this.props, this.props.path, e);
163
+ };
164
+
165
+ private handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {
166
+ this.props.onMouseLeave?.(this.props, this.props.path, e);
167
+ };
168
+
169
+ private handleDragStart = (e: React.DragEvent<HTMLDivElement>) => {
170
+ this.props.onDragStart?.(this.props, this.props.path, e);
171
+ };
172
+
173
+ private handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {
174
+ this.props.onDragOver?.(this.props, this.props.path, e);
175
+ };
176
+
177
+ private handleDrop = (e: React.DragEvent<HTMLDivElement>) => {
178
+ this.props.onDrop?.(this.props, this.props.path, e);
179
+ };
180
+
181
+ private handleDragEnd = (e: React.DragEvent<HTMLDivElement>) => {
182
+ this.props.onDragEnd?.(this.props, this.props.path, e);
183
+ };
184
+
185
+ private handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {
186
+ this.props.onDragEnter?.(this.props, this.props.path, e);
187
+ };
188
+
189
+ private handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {
190
+ this.props.onDragLeave?.(this.props, this.props.path, e);
191
+ };
192
+ }
@@ -30,14 +30,14 @@ const localStorageIds = {
30
30
  export function setupVisualStyle(){
31
31
  const [darkMode, setDarkMode] = React.useState(localStorage.getItem(localStorageIds.darkMode) !== (defaultVisualStyle.darkMode ? 'false' : 'true'))
32
32
  React.useEffect(() => {
33
- localStorage.setItem('bpUiDarkMode', darkMode ? 'true' : 'false')
33
+ localStorage.setItem(localStorageIds.darkMode, darkMode ? 'true' : 'false')
34
34
  const clas = Classes.DARK
35
35
  if(!darkMode) document.body.classList.remove(clas)
36
36
  else document.body.classList.add(clas)
37
37
  }, [darkMode])
38
38
  const [theme, setTheme] = React.useState(localStorage.getItem(localStorageIds.theme) || defaultVisualStyle.theme)
39
39
  React.useEffect(() => {
40
- localStorage.setItem('bpUiTheme', theme)
40
+ localStorage.setItem(localStorageIds.theme, theme)
41
41
  document.documentElement.classList.remove(...Object.keys(defaultVisualStyle.themes).map(k => k))
42
42
  document.documentElement.classList.add(theme)
43
43
  }, [theme])
@@ -60,6 +60,10 @@ export function ThemeSettingsMenuComponent() {
60
60
  // intent={intent}
61
61
  // labelElement={"⌘,"}
62
62
  roleStructure="menuitem"
63
+ popoverProps={{
64
+ hoverOpenDelay: 150,
65
+ hoverCloseDelay: 300,
66
+ }}
63
67
  children={
64
68
  <>
65
69
  <MenuItem icon="flash" text="Light Mode"
@@ -83,6 +87,10 @@ export function ThemeSettingsMenuComponent() {
83
87
  // intent={intent}
84
88
  // labelElement={"⌘,"}
85
89
  roleStructure="menuitem"
90
+ popoverProps={{
91
+ hoverOpenDelay: 150,
92
+ hoverCloseDelay: 300,
93
+ }}
86
94
  children={
87
95
  <>
88
96
  {Object.entries(visualStyle.themes).map(([key, value]) => (