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

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 (427) 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-Dhco1c7a.js +23 -0
  5. package/dist/{allPaths-EYaH0Usv.js.map → allPaths-Dhco1c7a.js.map} +1 -1
  6. package/dist/{allPathsLoader-UVZ15qNf.js → allPathsLoader-BNvrKJa2.js} +5 -5
  7. package/dist/{allPathsLoader-UVZ15qNf.js.map → allPathsLoader-BNvrKJa2.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 +79 -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-B1k4Miq7.js +671 -0
  37. package/dist/index-B1k4Miq7.js.map +1 -0
  38. package/dist/index-BvGAMcRo.js +671 -0
  39. package/dist/index-BvGAMcRo.js.map +1 -0
  40. package/dist/index-GANXo7JZ.js +13560 -0
  41. package/dist/index-GANXo7JZ.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-DGIXBgyZ.js} +6 -6
  47. package/dist/{splitPathsBySizeLoader-GhF5umHk.js.map → splitPathsBySizeLoader-DGIXBgyZ.js.map} +1 -1
  48. package/docs/assets/highlight.css +45 -17
  49. package/docs/assets/navigation.js +1 -1
  50. package/docs/assets/search.js +1 -1
  51. package/docs/classes/UI.html +10 -5
  52. package/docs/classes/UiConfigRendererBlueprint.html +10 -5
  53. package/docs/index.html +16 -5
  54. package/lib/css/renderer.css +189 -23
  55. package/lib/css/renderer.css.map +1 -1
  56. package/lib/esm/ConfigObject.d.ts +2 -1
  57. package/lib/esm/ConfigObject.js +15 -9
  58. package/lib/esm/ConfigObject.js.map +1 -1
  59. package/lib/esm/UiConfigRendererBlueprint.d.ts +6 -4
  60. package/lib/esm/UiConfigRendererBlueprint.js +30 -17
  61. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  62. package/lib/esm/bpComponents/BPButtonComponent.d.ts +1 -0
  63. package/lib/esm/bpComponents/BPButtonComponent.js +4 -2
  64. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  65. package/lib/esm/bpComponents/BPColorInputComponent.d.ts +1 -0
  66. package/lib/esm/bpComponents/BPColorInputComponent.js +4 -2
  67. package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
  68. package/lib/esm/bpComponents/BPComponent.d.ts +3 -1
  69. package/lib/esm/bpComponents/BPComponent.js +15 -2
  70. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  71. package/lib/esm/bpComponents/BPContainerComponent.d.ts +1 -1
  72. package/lib/esm/bpComponents/BPContainerComponent.js +12 -2
  73. package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
  74. package/lib/esm/bpComponents/BPDropdownInputComponent.js +7 -3
  75. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  76. package/lib/esm/bpComponents/BPFileComponent.d.ts +8 -5
  77. package/lib/esm/bpComponents/BPFileComponent.js +18 -24
  78. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  79. package/lib/esm/bpComponents/BPFolderComponent.d.ts +9 -1
  80. package/lib/esm/bpComponents/BPFolderComponent.js +55 -12
  81. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  82. package/lib/esm/bpComponents/BPInputComponent.d.ts +2 -1
  83. package/lib/esm/bpComponents/BPInputComponent.js +2 -1
  84. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  85. package/lib/esm/bpComponents/BPNumberInputComponent.d.ts +3 -1
  86. package/lib/esm/bpComponents/BPNumberInputComponent.js +6 -1
  87. package/lib/esm/bpComponents/BPNumberInputComponent.js.map +1 -1
  88. package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
  89. package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
  90. package/lib/esm/bpComponents/BPSliderInputComponent.d.ts +1 -0
  91. package/lib/esm/bpComponents/BPSliderInputComponent.js +18 -6
  92. package/lib/esm/bpComponents/BPSliderInputComponent.js.map +1 -1
  93. package/lib/esm/bpComponents/BPTextInputComponent.js +1 -1
  94. package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
  95. package/lib/esm/bpComponents/BPToggleInputComponent.js +3 -2
  96. package/lib/esm/bpComponents/BPToggleInputComponent.js.map +1 -1
  97. package/lib/esm/bpComponents/BPTreeComponent.d.ts +20 -10
  98. package/lib/esm/bpComponents/BPTreeComponent.js +120 -26
  99. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  100. package/lib/esm/bpComponents/BPTreeFolderComponent.js +4 -3
  101. package/lib/esm/bpComponents/BPTreeFolderComponent.js.map +1 -1
  102. package/lib/esm/bpComponents/BPValueComponent.d.ts +4 -1
  103. package/lib/esm/bpComponents/BPValueComponent.js +19 -3
  104. package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
  105. package/lib/esm/bpComponents/BPVectorInputComponent.d.ts +1 -0
  106. package/lib/esm/bpComponents/BPVectorInputComponent.js +14 -8
  107. package/lib/esm/bpComponents/BPVectorInputComponent.js.map +1 -1
  108. package/lib/esm/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
  109. package/lib/esm/bpComponents/GetNumberTransformFunctions.js +14 -0
  110. package/lib/esm/bpComponents/GetNumberTransformFunctions.js.map +1 -0
  111. package/lib/esm/bpComponents/NumberUnits.d.ts +7 -0
  112. package/lib/esm/bpComponents/NumberUnits.js +101 -0
  113. package/lib/esm/bpComponents/NumberUnits.js.map +1 -0
  114. package/lib/esm/components/AppToaster.js.map +1 -1
  115. package/lib/esm/components/ConfigurationPanelComponent.js +6 -1
  116. package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
  117. package/lib/esm/components/DialogContext.d.ts +18 -10
  118. package/lib/esm/components/DialogContext.js +52 -33
  119. package/lib/esm/components/DialogContext.js.map +1 -1
  120. package/lib/esm/components/DraggableIcon.d.ts +1 -0
  121. package/lib/esm/components/DraggableIcon.js +7 -4
  122. package/lib/esm/components/DraggableIcon.js.map +1 -1
  123. package/lib/esm/components/ExtendedNumericInput.d.ts +13 -3
  124. package/lib/esm/components/ExtendedNumericInput.js +62 -17
  125. package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
  126. package/lib/esm/components/FileComponent.d.ts +3 -1
  127. package/lib/esm/components/FileComponent.js +19 -19
  128. package/lib/esm/components/FileComponent.js.map +1 -1
  129. package/lib/esm/components/InspectorStackComponent.d.ts +2 -1
  130. package/lib/esm/components/InspectorStackComponent.js +2 -2
  131. package/lib/esm/components/InspectorStackComponent.js.map +1 -1
  132. package/lib/esm/components/NumericInput.d.ts +79 -0
  133. package/lib/esm/components/NumericInput.js +311 -0
  134. package/lib/esm/components/NumericInput.js.map +1 -0
  135. package/lib/esm/components/Tree2.d.ts +52 -0
  136. package/lib/esm/components/Tree2.js +177 -0
  137. package/lib/esm/components/Tree2.js.map +1 -0
  138. package/lib/esm/components/TreeNode2.d.ts +43 -0
  139. package/lib/esm/components/TreeNode2.js +111 -0
  140. package/lib/esm/components/TreeNode2.js.map +1 -0
  141. package/lib/esm/components/VisualStyleContext.js +9 -3
  142. package/lib/esm/components/VisualStyleContext.js.map +1 -1
  143. package/lib/esm/components/axesIcons.d.ts +7 -0
  144. package/lib/esm/components/axesIcons.js +10 -0
  145. package/lib/esm/components/axesIcons.js.map +1 -0
  146. package/lib/esm/components/bpIconWrapper.d.ts +2 -2
  147. package/lib/esm/components/bpIconWrapper.js +2 -2
  148. package/lib/esm/components/bpIconWrapper.js.map +1 -1
  149. package/lib/esm/components/iconMapping.d.ts +198 -0
  150. package/lib/esm/components/iconMapping.js +202 -0
  151. package/lib/esm/components/iconMapping.js.map +1 -0
  152. package/lib/esm/components/loadingState.d.ts +4 -0
  153. package/lib/esm/components/loadingState.js +10 -0
  154. package/lib/esm/components/loadingState.js.map +1 -1
  155. package/lib/esm/components/shapesIcons.d.ts +100 -0
  156. package/lib/esm/components/shapesIcons.js +102 -0
  157. package/lib/esm/components/shapesIcons.js.map +1 -0
  158. package/lib/esm/components/treeTypes.d.ts +18 -0
  159. package/lib/esm/components/treeTypes.js +2 -0
  160. package/lib/esm/components/treeTypes.js.map +1 -0
  161. package/lib/esm/lib.d.ts +4 -1
  162. package/lib/esm/lib.js +4 -1
  163. package/lib/esm/lib.js.map +1 -1
  164. package/lib/esm/renderer.css.js +1 -0
  165. package/package.json +62 -13
  166. package/src/ConfigObject.tsx +25 -11
  167. package/src/UiConfigRendererBlueprint.tsx +31 -20
  168. package/src/bpComponents/BPButtonComponent.scss +5 -1
  169. package/src/bpComponents/BPButtonComponent.tsx +9 -2
  170. package/src/bpComponents/BPColorInputComponent.tsx +8 -2
  171. package/src/bpComponents/BPComponent.tsx +17 -4
  172. package/src/bpComponents/BPContainerComponent.tsx +13 -1
  173. package/src/bpComponents/BPDropdownInputComponent.tsx +8 -2
  174. package/src/bpComponents/BPFileComponent.tsx +55 -27
  175. package/src/bpComponents/BPFolderComponent.scss +20 -6
  176. package/src/bpComponents/BPFolderComponent.tsx +105 -16
  177. package/src/bpComponents/BPInputComponent.tsx +6 -2
  178. package/src/bpComponents/BPNumberInputComponent.tsx +14 -2
  179. package/src/bpComponents/BPPanelComponent.tsx +1 -1
  180. package/src/bpComponents/BPSliderInputComponent.tsx +40 -20
  181. package/src/bpComponents/BPTextInputComponent.tsx +1 -0
  182. package/src/bpComponents/BPToggleInputComponent.tsx +6 -3
  183. package/src/bpComponents/BPTreeComponent.tsx +125 -25
  184. package/src/bpComponents/BPTreeFolderComponent.tsx +3 -3
  185. package/src/bpComponents/BPValueComponent.tsx +31 -4
  186. package/src/bpComponents/BPVectorInputComponent.tsx +23 -20
  187. package/src/bpComponents/GetNumberTransformFunctions.tsx +14 -0
  188. package/src/bpComponents/NumberUnits.tsx +123 -0
  189. package/src/components/AppToaster.tsx +20 -0
  190. package/src/components/ConfigurationPanelComponent.tsx +14 -3
  191. package/src/components/DialogContext.tsx +125 -65
  192. package/src/components/DraggableIcon.tsx +6 -5
  193. package/src/components/ExtendedNumericInput.tsx +70 -18
  194. package/src/components/FileComponent.tsx +48 -25
  195. package/src/components/InspectorStackComponent.tsx +2 -2
  196. package/src/components/NumericInput.tsx +679 -0
  197. package/src/components/Tree2.tsx +344 -0
  198. package/src/components/TreeNode2.tsx +192 -0
  199. package/src/components/VisualStyleContext.tsx +10 -2
  200. package/src/components/axesIcons.tsx +116 -0
  201. package/src/components/bpIconWrapper.tsx +5 -4
  202. package/src/components/common.scss +17 -0
  203. package/src/components/iconMapping.ts +354 -0
  204. package/src/components/loadingState.tsx +9 -0
  205. package/src/components/shapesIcons.tsx +980 -0
  206. package/src/components/tree2.scss +69 -0
  207. package/src/components/treeTypes.ts +97 -0
  208. package/src/lib.ts +4 -1
  209. package/src/renderer.scss +79 -11
  210. package/tsconfig.json +1 -0
  211. package/dist/allPaths-EYaH0Usv.js +0 -23
  212. package/dist/index-0vU2D25U.js +0 -604
  213. package/dist/index-0vU2D25U.js.map +0 -1
  214. package/dist/index-JBvBPdy9.js +0 -604
  215. package/dist/index-JBvBPdy9.js.map +0 -1
  216. package/dist/index-OyL-zObJ.js +0 -12765
  217. package/dist/index-OyL-zObJ.js.map +0 -1
  218. package/lib/cjs/ConfigObject.d.ts +0 -18
  219. package/lib/cjs/ConfigObject.js +0 -82
  220. package/lib/cjs/ConfigObject.js.map +0 -1
  221. package/lib/cjs/UiConfigRendererBlueprint.d.ts +0 -13
  222. package/lib/cjs/UiConfigRendererBlueprint.js +0 -56
  223. package/lib/cjs/UiConfigRendererBlueprint.js.map +0 -1
  224. package/lib/cjs/bpComponents/BPButtonComponent.d.ts +0 -8
  225. package/lib/cjs/bpComponents/BPButtonComponent.js +0 -19
  226. package/lib/cjs/bpComponents/BPButtonComponent.js.map +0 -1
  227. package/lib/cjs/bpComponents/BPColorInputComponent.d.ts +0 -24
  228. package/lib/cjs/bpComponents/BPColorInputComponent.js +0 -127
  229. package/lib/cjs/bpComponents/BPColorInputComponent.js.map +0 -1
  230. package/lib/cjs/bpComponents/BPComponent.d.ts +0 -29
  231. package/lib/cjs/bpComponents/BPComponent.js +0 -59
  232. package/lib/cjs/bpComponents/BPComponent.js.map +0 -1
  233. package/lib/cjs/bpComponents/BPContainerComponent.d.ts +0 -21
  234. package/lib/cjs/bpComponents/BPContainerComponent.js +0 -54
  235. package/lib/cjs/bpComponents/BPContainerComponent.js.map +0 -1
  236. package/lib/cjs/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  237. package/lib/cjs/bpComponents/BPDropdownInputComponent.js +0 -43
  238. package/lib/cjs/bpComponents/BPDropdownInputComponent.js.map +0 -1
  239. package/lib/cjs/bpComponents/BPFileComponent.d.ts +0 -25
  240. package/lib/cjs/bpComponents/BPFileComponent.js +0 -69
  241. package/lib/cjs/bpComponents/BPFileComponent.js.map +0 -1
  242. package/lib/cjs/bpComponents/BPFolderComponent.d.ts +0 -16
  243. package/lib/cjs/bpComponents/BPFolderComponent.js +0 -39
  244. package/lib/cjs/bpComponents/BPFolderComponent.js.map +0 -1
  245. package/lib/cjs/bpComponents/BPInputComponent.d.ts +0 -11
  246. package/lib/cjs/bpComponents/BPInputComponent.js +0 -34
  247. package/lib/cjs/bpComponents/BPInputComponent.js.map +0 -1
  248. package/lib/cjs/bpComponents/BPLabelledComponent.d.ts +0 -8
  249. package/lib/cjs/bpComponents/BPLabelledComponent.js +0 -14
  250. package/lib/cjs/bpComponents/BPLabelledComponent.js.map +0 -1
  251. package/lib/cjs/bpComponents/BPNumberInputComponent.d.ts +0 -10
  252. package/lib/cjs/bpComponents/BPNumberInputComponent.js +0 -40
  253. package/lib/cjs/bpComponents/BPNumberInputComponent.js.map +0 -1
  254. package/lib/cjs/bpComponents/BPPanelComponent.d.ts +0 -16
  255. package/lib/cjs/bpComponents/BPPanelComponent.js +0 -35
  256. package/lib/cjs/bpComponents/BPPanelComponent.js.map +0 -1
  257. package/lib/cjs/bpComponents/BPSliderInputComponent.d.ts +0 -14
  258. package/lib/cjs/bpComponents/BPSliderInputComponent.js +0 -41
  259. package/lib/cjs/bpComponents/BPSliderInputComponent.js.map +0 -1
  260. package/lib/cjs/bpComponents/BPTextInputComponent.d.ts +0 -7
  261. package/lib/cjs/bpComponents/BPTextInputComponent.js +0 -19
  262. package/lib/cjs/bpComponents/BPTextInputComponent.js.map +0 -1
  263. package/lib/cjs/bpComponents/BPToggleInputComponent.d.ts +0 -8
  264. package/lib/cjs/bpComponents/BPToggleInputComponent.js +0 -22
  265. package/lib/cjs/bpComponents/BPToggleInputComponent.js.map +0 -1
  266. package/lib/cjs/bpComponents/BPTreeComponent.d.ts +0 -36
  267. package/lib/cjs/bpComponents/BPTreeComponent.js +0 -131
  268. package/lib/cjs/bpComponents/BPTreeComponent.js.map +0 -1
  269. package/lib/cjs/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  270. package/lib/cjs/bpComponents/BPTreeFolderComponent.js +0 -40
  271. package/lib/cjs/bpComponents/BPTreeFolderComponent.js.map +0 -1
  272. package/lib/cjs/bpComponents/BPValueComponent.d.ts +0 -16
  273. package/lib/cjs/bpComponents/BPValueComponent.js +0 -46
  274. package/lib/cjs/bpComponents/BPValueComponent.js.map +0 -1
  275. package/lib/cjs/bpComponents/BPVectorInputComponent.d.ts +0 -19
  276. package/lib/cjs/bpComponents/BPVectorInputComponent.js +0 -110
  277. package/lib/cjs/bpComponents/BPVectorInputComponent.js.map +0 -1
  278. package/lib/cjs/components/ConfigurationPanelComponent.d.ts +0 -4
  279. package/lib/cjs/components/ConfigurationPanelComponent.js +0 -30
  280. package/lib/cjs/components/ConfigurationPanelComponent.js.map +0 -1
  281. package/lib/cjs/components/DialogContext.d.ts +0 -48
  282. package/lib/cjs/components/DialogContext.js +0 -79
  283. package/lib/cjs/components/DialogContext.js.map +0 -1
  284. package/lib/cjs/components/DraggableIcon.d.ts +0 -19
  285. package/lib/cjs/components/DraggableIcon.js +0 -70
  286. package/lib/cjs/components/DraggableIcon.js.map +0 -1
  287. package/lib/cjs/components/ExtendedNumericInput.d.ts +0 -25
  288. package/lib/cjs/components/ExtendedNumericInput.js +0 -174
  289. package/lib/cjs/components/ExtendedNumericInput.js.map +0 -1
  290. package/lib/cjs/components/FileComponent.d.ts +0 -7
  291. package/lib/cjs/components/FileComponent.js +0 -49
  292. package/lib/cjs/components/FileComponent.js.map +0 -1
  293. package/lib/cjs/components/FormGroupComponent.d.ts +0 -6
  294. package/lib/cjs/components/FormGroupComponent.js +0 -16
  295. package/lib/cjs/components/FormGroupComponent.js.map +0 -1
  296. package/lib/cjs/components/InspectorStackComponent.d.ts +0 -4
  297. package/lib/cjs/components/InspectorStackComponent.js +0 -27
  298. package/lib/cjs/components/InspectorStackComponent.js.map +0 -1
  299. package/lib/cjs/components/VisualStyleContext.d.ts +0 -119
  300. package/lib/cjs/components/VisualStyleContext.js +0 -60
  301. package/lib/cjs/components/VisualStyleContext.js.map +0 -1
  302. package/lib/cjs/components/bpIconWrapper.d.ts +0 -2
  303. package/lib/cjs/components/bpIconWrapper.js +0 -9
  304. package/lib/cjs/components/bpIconWrapper.js.map +0 -1
  305. package/lib/cjs/components/loadingState.d.ts +0 -4
  306. package/lib/cjs/components/loadingState.js +0 -16
  307. package/lib/cjs/components/loadingState.js.map +0 -1
  308. package/lib/cjs/components/variableIcons.d.ts +0 -40
  309. package/lib/cjs/components/variableIcons.js +0 -46
  310. package/lib/cjs/components/variableIcons.js.map +0 -1
  311. package/lib/cjs/contexts.d.ts +0 -1
  312. package/lib/cjs/contexts.js +0 -3
  313. package/lib/cjs/contexts.js.map +0 -1
  314. package/lib/cjs/index.d.ts +0 -4
  315. package/lib/cjs/index.js +0 -9
  316. package/lib/cjs/index.js.map +0 -1
  317. package/lib/cjs/lib.d.ts +0 -32
  318. package/lib/cjs/lib.js +0 -49
  319. package/lib/cjs/lib.js.map +0 -1
  320. package/lib/cjs/threejs.d.ts +0 -2
  321. package/lib/cjs/threejs.js +0 -3
  322. package/lib/cjs/threejs.js.map +0 -1
  323. package/lib/esnext/ConfigObject.d.ts +0 -18
  324. package/lib/esnext/ConfigObject.js +0 -75
  325. package/lib/esnext/ConfigObject.js.map +0 -1
  326. package/lib/esnext/UiConfigRendererBlueprint.d.ts +0 -13
  327. package/lib/esnext/UiConfigRendererBlueprint.js +0 -52
  328. package/lib/esnext/UiConfigRendererBlueprint.js.map +0 -1
  329. package/lib/esnext/bpComponents/BPButtonComponent.d.ts +0 -8
  330. package/lib/esnext/bpComponents/BPButtonComponent.js +0 -15
  331. package/lib/esnext/bpComponents/BPButtonComponent.js.map +0 -1
  332. package/lib/esnext/bpComponents/BPColorInputComponent.d.ts +0 -24
  333. package/lib/esnext/bpComponents/BPColorInputComponent.js +0 -110
  334. package/lib/esnext/bpComponents/BPColorInputComponent.js.map +0 -1
  335. package/lib/esnext/bpComponents/BPComponent.d.ts +0 -29
  336. package/lib/esnext/bpComponents/BPComponent.js +0 -46
  337. package/lib/esnext/bpComponents/BPComponent.js.map +0 -1
  338. package/lib/esnext/bpComponents/BPContainerComponent.d.ts +0 -21
  339. package/lib/esnext/bpComponents/BPContainerComponent.js +0 -51
  340. package/lib/esnext/bpComponents/BPContainerComponent.js.map +0 -1
  341. package/lib/esnext/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  342. package/lib/esnext/bpComponents/BPDropdownInputComponent.js +0 -40
  343. package/lib/esnext/bpComponents/BPDropdownInputComponent.js.map +0 -1
  344. package/lib/esnext/bpComponents/BPFileComponent.d.ts +0 -25
  345. package/lib/esnext/bpComponents/BPFileComponent.js +0 -52
  346. package/lib/esnext/bpComponents/BPFileComponent.js.map +0 -1
  347. package/lib/esnext/bpComponents/BPFolderComponent.d.ts +0 -16
  348. package/lib/esnext/bpComponents/BPFolderComponent.js +0 -30
  349. package/lib/esnext/bpComponents/BPFolderComponent.js.map +0 -1
  350. package/lib/esnext/bpComponents/BPInputComponent.d.ts +0 -11
  351. package/lib/esnext/bpComponents/BPInputComponent.js +0 -19
  352. package/lib/esnext/bpComponents/BPInputComponent.js.map +0 -1
  353. package/lib/esnext/bpComponents/BPLabelledComponent.d.ts +0 -8
  354. package/lib/esnext/bpComponents/BPLabelledComponent.js +0 -13
  355. package/lib/esnext/bpComponents/BPLabelledComponent.js.map +0 -1
  356. package/lib/esnext/bpComponents/BPNumberInputComponent.d.ts +0 -10
  357. package/lib/esnext/bpComponents/BPNumberInputComponent.js +0 -21
  358. package/lib/esnext/bpComponents/BPNumberInputComponent.js.map +0 -1
  359. package/lib/esnext/bpComponents/BPPanelComponent.d.ts +0 -16
  360. package/lib/esnext/bpComponents/BPPanelComponent.js +0 -31
  361. package/lib/esnext/bpComponents/BPPanelComponent.js.map +0 -1
  362. package/lib/esnext/bpComponents/BPSliderInputComponent.d.ts +0 -14
  363. package/lib/esnext/bpComponents/BPSliderInputComponent.js +0 -39
  364. package/lib/esnext/bpComponents/BPSliderInputComponent.js.map +0 -1
  365. package/lib/esnext/bpComponents/BPTextInputComponent.d.ts +0 -7
  366. package/lib/esnext/bpComponents/BPTextInputComponent.js +0 -15
  367. package/lib/esnext/bpComponents/BPTextInputComponent.js.map +0 -1
  368. package/lib/esnext/bpComponents/BPToggleInputComponent.d.ts +0 -8
  369. package/lib/esnext/bpComponents/BPToggleInputComponent.js +0 -18
  370. package/lib/esnext/bpComponents/BPToggleInputComponent.js.map +0 -1
  371. package/lib/esnext/bpComponents/BPTreeComponent.d.ts +0 -36
  372. package/lib/esnext/bpComponents/BPTreeComponent.js +0 -111
  373. package/lib/esnext/bpComponents/BPTreeComponent.js.map +0 -1
  374. package/lib/esnext/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  375. package/lib/esnext/bpComponents/BPTreeFolderComponent.js +0 -23
  376. package/lib/esnext/bpComponents/BPTreeFolderComponent.js.map +0 -1
  377. package/lib/esnext/bpComponents/BPValueComponent.d.ts +0 -16
  378. package/lib/esnext/bpComponents/BPValueComponent.js +0 -29
  379. package/lib/esnext/bpComponents/BPValueComponent.js.map +0 -1
  380. package/lib/esnext/bpComponents/BPVectorInputComponent.d.ts +0 -19
  381. package/lib/esnext/bpComponents/BPVectorInputComponent.js +0 -93
  382. package/lib/esnext/bpComponents/BPVectorInputComponent.js.map +0 -1
  383. package/lib/esnext/components/ConfigurationPanelComponent.d.ts +0 -4
  384. package/lib/esnext/components/ConfigurationPanelComponent.js +0 -26
  385. package/lib/esnext/components/ConfigurationPanelComponent.js.map +0 -1
  386. package/lib/esnext/components/DialogContext.d.ts +0 -48
  387. package/lib/esnext/components/DialogContext.js +0 -55
  388. package/lib/esnext/components/DialogContext.js.map +0 -1
  389. package/lib/esnext/components/DraggableIcon.d.ts +0 -19
  390. package/lib/esnext/components/DraggableIcon.js +0 -62
  391. package/lib/esnext/components/DraggableIcon.js.map +0 -1
  392. package/lib/esnext/components/ExtendedNumericInput.d.ts +0 -25
  393. package/lib/esnext/components/ExtendedNumericInput.js +0 -151
  394. package/lib/esnext/components/ExtendedNumericInput.js.map +0 -1
  395. package/lib/esnext/components/FileComponent.d.ts +0 -7
  396. package/lib/esnext/components/FileComponent.js +0 -42
  397. package/lib/esnext/components/FileComponent.js.map +0 -1
  398. package/lib/esnext/components/FormGroupComponent.d.ts +0 -6
  399. package/lib/esnext/components/FormGroupComponent.js +0 -11
  400. package/lib/esnext/components/FormGroupComponent.js.map +0 -1
  401. package/lib/esnext/components/InspectorStackComponent.d.ts +0 -4
  402. package/lib/esnext/components/InspectorStackComponent.js +0 -23
  403. package/lib/esnext/components/InspectorStackComponent.js.map +0 -1
  404. package/lib/esnext/components/VisualStyleContext.d.ts +0 -119
  405. package/lib/esnext/components/VisualStyleContext.js +0 -53
  406. package/lib/esnext/components/VisualStyleContext.js.map +0 -1
  407. package/lib/esnext/components/bpIconWrapper.d.ts +0 -2
  408. package/lib/esnext/components/bpIconWrapper.js +0 -5
  409. package/lib/esnext/components/bpIconWrapper.js.map +0 -1
  410. package/lib/esnext/components/loadingState.d.ts +0 -4
  411. package/lib/esnext/components/loadingState.js +0 -12
  412. package/lib/esnext/components/loadingState.js.map +0 -1
  413. package/lib/esnext/components/variableIcons.d.ts +0 -40
  414. package/lib/esnext/components/variableIcons.js +0 -43
  415. package/lib/esnext/components/variableIcons.js.map +0 -1
  416. package/lib/esnext/contexts.d.ts +0 -1
  417. package/lib/esnext/contexts.js +0 -2
  418. package/lib/esnext/contexts.js.map +0 -1
  419. package/lib/esnext/index.d.ts +0 -4
  420. package/lib/esnext/index.js +0 -5
  421. package/lib/esnext/index.js.map +0 -1
  422. package/lib/esnext/lib.d.ts +0 -32
  423. package/lib/esnext/lib.js +0 -33
  424. package/lib/esnext/lib.js.map +0 -1
  425. package/lib/esnext/threejs.d.ts +0 -2
  426. package/lib/esnext/threejs.js +0 -2
  427. package/lib/esnext/threejs.js.map +0 -1
@@ -1,10 +1,13 @@
1
- import React, {DOMAttributes} from "react";
1
+ import React, {ChangeEventHandler, DOMAttributes} from "react";
2
2
  import {BPComponentProps, UiConfigRendererContextType} from "./BPComponent";
3
- import {Button, Collapse, Icon, Intent} from "@blueprintjs/core";
3
+ import {Button, Checkbox, Collapse, Icon, Intent} from "@blueprintjs/core";
4
4
  import {ConfigObject} from "../ConfigObject";
5
5
  import {PanelActions} from "@blueprintjs/core/lib/esm/components/panel-stack2/panelTypes";
6
6
  import {safeSetProperty} from 'ts-browser-helpers'
7
7
  import {BPContainerComponent, BPContainerComponentState} from './BPContainerComponent'
8
+ import classNames from "classnames";
9
+ import {Classes} from "@blueprintjs/core/src/common";
10
+ import {AnimationStates} from "@blueprintjs/core/lib/esm/components/collapse/collapse";
8
11
 
9
12
  export type BPFolderComponentState = BPContainerComponentState & {
10
13
  }
@@ -21,31 +24,39 @@ export class BPFolderComponent extends BPContainerComponent<BPFolderComponentSta
21
24
  safeSetProperty(this.props.config, "expanded", e, true)
22
25
  // if (e) this.state.children.forEach(c => Array.isArray(c) ? null : c.uiRefresh?.("postFrame", true, 1)) // todo: handle array and functions
23
26
  }
24
-
27
+ const children = this.state.children
28
+ const enabledToggle = children[0] && this.context.methods.getBinding(children[0])[1] === 'enabled' ? children[0] : undefined
29
+ enabledToggle && (enabledToggle.hidden = true)
25
30
  return !this.state.hidden ? (
26
31
  <FolderHeadCard
27
32
  key={this.props.config.uuid}
28
33
  open={this.state.expanded}
29
34
  disabled={this.state.disabled}
35
+ level={this.props.level ?? 0}
30
36
  minimal={(this.props.level ?? 0) > 0}
31
37
  onClick={() => {
32
38
  if(this.state.readOnly) return
33
39
  setExpanded(!this.state.expanded)
34
40
  }}
35
41
  label={this.state.label}
42
+ enabled={enabledToggle ? this.context.methods.getRawValue(enabledToggle) : undefined}
43
+ onEnabledChange={(e) => enabledToggle && this.context.methods.setValue(enabledToggle, e.target.checked, {}).then(() => this.setState(this.state))}
36
44
  >
37
- <Collapse isOpen={this.state.expanded} keepChildrenMounted={false}>
38
- <div className="folder-children" style={{listStyleType: "none", paddingLeft: "0"}}>
39
- {this.state.children.map((c, i) => <ConfigObject key={'c' + i} {...this.props} config={c}
40
- level={(this.props.level ?? 0) + 1}/>)}
45
+ <Collapse2 isOpen={this.state.expanded} keepChildrenMounted={true} transitionDuration={300}>
46
+ <div className="folder-children" style={{listStyleType: "none", paddingLeft: this.props.level??0 > 2 ? "6px" : 0}}> {/*todo use parameter instead of const 6*/}
47
+ {children.map((c, i) =>
48
+ <ConfigObject key={'c' + i} {...this.props} config={c}
49
+ level={(this.props.level ?? 0) + 1}/>
50
+ )}
41
51
  </div>
42
- </Collapse>
52
+ </Collapse2>
43
53
  </FolderHeadCard>
44
54
  ) : null
45
55
  }
46
56
  }
47
57
 
48
- export const FolderHeadCard: React.FC<React.PropsWithChildren<{ open: boolean, label: string, minimal: boolean, disabled?: boolean, onClick: DOMAttributes<HTMLElement>['onClick'] }>> = (props) => {
58
+ export const FolderHeadCard: React.FC<React.PropsWithChildren<{ open: boolean, label: string, minimal: boolean, level: number, disabled?: boolean, enabled?: boolean, onEnabledChange?: ChangeEventHandler<HTMLInputElement>, onClick: DOMAttributes<HTMLElement>['onClick'] }>> = (props) => {
59
+ const hasEnabled = (props.enabled !== undefined)
49
60
  return (
50
61
  <div
51
62
  // interactive={!props.open}
@@ -71,21 +82,99 @@ export const FolderHeadCard: React.FC<React.PropsWithChildren<{ open: boolean, l
71
82
  {/*</Button>*/}
72
83
 
73
84
  <Button
74
- className="folder-trigger-button" fill={!props.minimal} onClick={props.onClick}
85
+ className={"folder-trigger-button " + (props.open ? "folder-trigger-button-expanded" : "")}
86
+ // fill={!props.minimal}
87
+ fill={true}
88
+ onClick={props.onClick}
75
89
  minimal={true}
76
90
  disabled={props.disabled}
77
91
  small={props.minimal}
78
- style={props.minimal ? {} : {fontSize: "0.95rem", paddingTop: "8px", paddingBottom: "8px"}}
92
+ style={props.level ? {marginLeft: "6px"} : {fontSize: "0.95rem", paddingTop: "8px", paddingBottom: "8px"}}
79
93
  intent={props.open ? Intent.PRIMARY : Intent.NONE}
80
- rightIcon={(
81
- <Icon icon="chevron-right" style={{
82
- rotate: props.open ? "90deg" : "0deg",
83
- transition: "rotate 0.25s ease-in-out"
84
- }}/>
94
+ // icon={props.enabled !== undefined && <span style={{minWidth: '20px'}}></span>} // adding a span here will center the text in the button
95
+ icon={(
96
+ <>
97
+ <Icon icon="caret-right" style={{
98
+ rotate: props.open ? "90deg" : "0deg",
99
+ transition: "rotate 0.25s ease-in-out"
100
+ }}/>
101
+ </>
85
102
  )}>{props.label}
86
103
  </Button>
104
+ {hasEnabled && <Checkbox
105
+ style={{margin: 0, position: 'absolute', left: '10px'}}
106
+ large inline
107
+ defaultChecked={props.enabled}
108
+ onChange={props.onEnabledChange}
109
+ disabled={props.disabled}
110
+ onClick={(e) => e.stopPropagation()}
111
+ />}
87
112
  </div>
88
113
  {props.children}
89
114
  </div>
90
115
  )
91
116
  }
117
+
118
+ export class Collapse2 extends Collapse{
119
+ private contentsRefHandler2 = (el: HTMLElement | null) => {
120
+ // @ts-ignore
121
+ this.contents = el;
122
+ // @ts-ignore
123
+ if (this.contents != null) {
124
+ // @ts-ignore
125
+ const height = this.contents.clientHeight;
126
+ this.setState({
127
+ animationState: this.props.isOpen ? AnimationStates.OPEN : AnimationStates.CLOSED,
128
+ height: height === 0 ? undefined : `${height}px`,
129
+ heightWhenOpen: height === 0 ? undefined : height,
130
+ });
131
+ }
132
+ };
133
+
134
+ public render() {
135
+ const isContentVisible = this.state.animationState !== AnimationStates.CLOSED;
136
+ const shouldRenderChildren = isContentVisible || this.props.keepChildrenMounted;
137
+ // const displayWithTransform = isContentVisible && this.state.animationState !== AnimationStates.CLOSING;
138
+ const isAutoHeight = this.state.height === "auto";
139
+
140
+ const containerStyle = {
141
+ height: isContentVisible ? this.state.height : undefined,
142
+ overflowY: isAutoHeight ? "visible" : undefined,
143
+ // transitions don't work with height: auto
144
+ transition: isAutoHeight ? "none" : undefined,
145
+ };
146
+
147
+ const contentsStyle = {
148
+ // only use heightWhenOpen while closing
149
+ // transform: displayWithTransform ? "translateY(0)" : `translateY(-${this.state.heightWhenOpen}px)`,
150
+ // transitions don't work with height: auto
151
+ // transition: isAutoHeight ? "none" : undefined,
152
+ display: "block", // for opacity animation
153
+ visibility: isContentVisible ? "visible" : "hidden",
154
+ opacity: this.state.animationState === AnimationStates.CLOSING || this.state.animationState === AnimationStates.CLOSED ? 0.1 : 1,
155
+ } as React.CSSProperties;
156
+
157
+ // if(isContentVisible && !isAutoHeight && this.state.heightWhenOpen && this.state.height){
158
+ // const h = parseInt(this.state.height)
159
+ // contentsStyle.opacity = h / this.state.heightWhenOpen;
160
+ // console.log(contentsStyle.opacity)
161
+ // }
162
+
163
+ return React.createElement(
164
+ this.props.component!,
165
+ {
166
+ className: classNames(Classes.COLLAPSE, this.props.className),
167
+ style: containerStyle,
168
+ },
169
+ <div
170
+ className={Classes.COLLAPSE_BODY}
171
+ ref={this.contentsRefHandler2}
172
+ style={contentsStyle}
173
+ aria-hidden={!isContentVisible}
174
+ >
175
+ {shouldRenderChildren ? this.props.children : null}
176
+ </div>,
177
+ );
178
+ }
179
+
180
+ }
@@ -2,9 +2,10 @@ import {BPValueComponent, BPValueComponentState} from "./BPValueComponent";
2
2
  import {BPComponentProps, UiConfigRendererContextType} from "./BPComponent";
3
3
  import {ReactNode} from "react";
4
4
  import {FormGroupComponent} from "../components/FormGroupComponent";
5
+ import {PrimitiveVal} from "uiconfig.js";
5
6
 
6
7
  export abstract class BPInputComponent<
7
- TStateValue, TState extends BPValueComponentState<TStateValue> = BPValueComponentState<TStateValue>>
8
+ TStateValue extends PrimitiveVal, TState extends BPValueComponentState<TStateValue> = BPValueComponentState<TStateValue>>
8
9
  extends BPValueComponent<TStateValue, TState, TStateValue> {
9
10
 
10
11
  protected constructor(props: BPComponentProps<TStateValue>, context: UiConfigRendererContextType, state: TState) {
@@ -25,7 +26,10 @@ export abstract class BPInputComponent<
25
26
 
26
27
  render() {
27
28
  return !this.state.hidden ? (
28
- <FormGroupComponent disabled={this.state.disabled} label={this.state.label} flexBasis={this.flexBasis}>
29
+ <FormGroupComponent disabled={this.state.disabled}
30
+ label={this.state.label}
31
+ flexBasis={this.state.baseWidth ?? this.flexBasis}
32
+ >
29
33
  {this.renderInput()}
30
34
  </FormGroupComponent>
31
35
  ) : null
@@ -3,8 +3,9 @@ import {BPComponentProps, UiConfigRendererContextType} from "./BPComponent";
3
3
  import {BPInputComponent} from "./BPInputComponent";
4
4
  import {ExtendedNumericInput} from "../components/ExtendedNumericInput";
5
5
  import {BPValueComponentState} from "./BPValueComponent";
6
+ import {getNumberTransformFunctions} from "./GetNumberTransformFunctions";
6
7
 
7
- export class BPNumberInputComponent extends BPInputComponent<number> {
8
+ export class BPNumberInputComponent extends BPInputComponent<number, BPValueComponentState<number>&{unit?: string}> {
8
9
  constructor(props: BPComponentProps<number>, context: UiConfigRendererContextType) {
9
10
  super(props, context, {value: 0, label: 'Number'});
10
11
  }
@@ -21,15 +22,26 @@ export class BPNumberInputComponent extends BPInputComponent<number> {
21
22
  }
22
23
 
23
24
  renderInput() {
25
+
26
+ const unit = this.props.config.unit as string|undefined; // todo add to uiconfig, getOrCall
27
+ const unitType = this.props.config.unitType as string|undefined; // todo add to uiconfig, getOrCall
28
+ const targetUnit = this.state.unit || unit
29
+ const {transformValue, invTransformValue} = getNumberTransformFunctions(unit, unitType, targetUnit);
30
+
24
31
  return (
25
32
  <ExtendedNumericInput
26
33
  className="numericInput"
27
34
  disabled={this.state.disabled}
28
35
  readOnly={this.state.readOnly}
29
36
  defaultValue={this.state.value}
37
+ fill={true}
30
38
  ref={this._inputs[0]}
31
39
  key={this.props.config.uuid}
32
- onChange2={this._onChange} fill={false}/>
40
+ onChange2={this._onChange}
41
+ transformValue={transformValue}
42
+ invTransformValue={invTransformValue}
43
+ />
33
44
  )
34
45
  }
35
46
  }
47
+
@@ -42,7 +42,7 @@ export class BPPanelComponent extends BPContainerComponent<BPPanelComponentState
42
42
  <div
43
43
  key={this.props.config.uuid}
44
44
  className="folder-children" style={{listStyleType: "none", paddingLeft: "0"}}>
45
- {this.state.children.map((c, i) => <ConfigObject key={'c' + i} {...this.props} config={c}/>)}
45
+ {this.state.children.map((c, i) => c ? <ConfigObject key={'c' + i} {...this.props} config={c}/> : null)}
46
46
  </div>
47
47
  ) : null
48
48
  }
@@ -1,13 +1,16 @@
1
1
  import {BPComponentProps, UiConfigRendererContextType} from "./BPComponent";
2
- import {NumericInput, Slider} from "@blueprintjs/core";
2
+ import {Slider} from "@blueprintjs/core";
3
3
  import {BPInputComponent} from "./BPInputComponent";
4
4
  import {BPValueComponentState} from "./BPValueComponent";
5
5
  import {getOrCall} from "ts-browser-helpers";
6
+ import {ExtendedNumericInput} from "../components/ExtendedNumericInput";
7
+ import {getNumberTransformFunctions} from "./GetNumberTransformFunctions";
6
8
 
7
9
  export type BPSliderComponentState = BPValueComponentState<number> & {
8
10
  min: number,
9
11
  max: number,
10
12
  step: number
13
+ unit?: string,
11
14
  }
12
15
 
13
16
  export class BPSliderInputComponent extends BPInputComponent<number, BPSliderComponentState> {
@@ -35,36 +38,53 @@ export class BPSliderInputComponent extends BPInputComponent<number, BPSliderCom
35
38
  flexBasis = "75%"
36
39
 
37
40
  renderInput() {
38
- return [(
39
- <Slider
41
+
42
+ const unit = this.props.config.unit as string|undefined; // todo add to uiconfig, getOrCall
43
+ const unitType = this.props.config.unitType as string|undefined; // todo add to uiconfig, getOrCall
44
+ const targetUnit = this.state.unit || unit
45
+ const {transformValue, invTransformValue} = getNumberTransformFunctions(unit, unitType, targetUnit);
46
+
47
+ const invTransformValue_ = invTransformValue || ((v: number) => v);
48
+ const transformValue_ = transformValue || ((v: number) => v);
49
+ return [(<ExtendedNumericInput
50
+ style={{maxWidth: "4rem", minWidth: "3rem"}}
51
+ // defaultValue={state}
52
+ disabled={this.state.disabled} readOnly={this.state.readOnly}
40
53
  value={Math.min(this.state.max, Math.max(this.state.min, this.state.value))}
54
+ key={this.props.config.uuid + '_input'}
55
+ min={this.state.min} max={this.state.max}
56
+ stepSize={this.state.step}
57
+ minorStepSize={this.state.step/10}
58
+ majorStepSize={this.state.step*10}
59
+ buttonPosition="none"
60
+ draggableIcon={false}
61
+ transformValue={transformValue}
62
+ invTransformValue={invTransformValue}
63
+ onChange2={(v, last) => {
64
+ if(this.state.readOnly) return
65
+ this.setValue(v, last)
66
+ }}
67
+ />), (
68
+ <Slider
69
+ value={invTransformValue_(Math.min(this.state.max, Math.max(this.state.min, this.state.value)))}
41
70
  key={this.props.config.uuid + '_slider'}
42
71
  disabled={this.state.disabled}
43
- min={this.state.min} max={this.state.max} stepSize={this.state.step}
72
+ min={invTransformValue_(this.state.min)}
73
+ max={invTransformValue_(this.state.max)}
74
+ stepSize={invTransformValue_(this.state.step)}
44
75
  labelRenderer={false}
45
76
  // labelStepSize={(max - min)}
46
77
  // labelValues={[]}
47
78
  onChange={(v) => {
48
79
  if(this.state.readOnly) return
49
- this.setValue(v)
80
+ this.setValue(transformValue_(v), false)
50
81
  }}
51
- />
52
- ),(
53
- <NumericInput
54
- style={{maxWidth: "4rem", minWidth: "3rem"}}
55
- // defaultValue={state}
56
- disabled={this.state.disabled}
57
- value={Math.min(this.state.max, Math.max(this.state.min, this.state.value))}
58
- key={this.props.config.uuid + '_input'}
59
- min={this.state.min} max={this.state.max} stepSize={this.state.step}
60
- minorStepSize={this.state.step/10}
61
- majorStepSize={this.state.step*10}
62
- buttonPosition="none"
63
- onValueChange={(v) => {
82
+ onRelease={(v) => {
64
83
  if(this.state.readOnly) return
65
- this.setValue(v)
84
+ this.setValue(transformValue_(v), true)
66
85
  }}
67
- />)
86
+ />
87
+ ),
68
88
  ]
69
89
  }
70
90
  }
@@ -20,6 +20,7 @@ export class BPTextInputComponent extends BPInputComponent<string> {
20
20
  disabled={this.state.disabled}
21
21
  readOnly={this.state.readOnly}
22
22
  key={this.props.config.uuid}
23
+ fill={true}
23
24
  onChange={this._onChange}/>
24
25
  )
25
26
  }
@@ -16,14 +16,17 @@ export class BPToggleInputComponent extends BPInputComponent<boolean> {
16
16
  return (
17
17
  <Switch alignIndicator="right" defaultChecked={this.state.value}
18
18
  disabled={this.state.disabled} readOnly={this.state.readOnly}
19
- label={this.state.label} onChange={this._onChange}
20
- className="switch" innerLabelChecked="on" innerLabel="off"/>
19
+ labelElement={(<span className={"bp5-label"} title={this.state.label}>{this.state.label}</span>)} onChange={this._onChange}
20
+ inline={false} large={false}
21
+ className="switch"/>
21
22
  )
22
23
  }
23
24
 
24
25
  render() {
25
26
  return !this.state.hidden ? (
26
- <div className="xPaddedContent folderContent" style={{flexBasis: "100%"}}>
27
+ <div className="xPaddedContent folderContent"
28
+ style={{flexBasis: this.state.baseWidth ?? this.flexBasis}}
29
+ >
27
30
  {this.renderInput()}
28
31
  </div>
29
32
  ) : null
@@ -1,15 +1,17 @@
1
+ import {Tree2} from "../components/Tree2";
1
2
  import {BPComponent, BPComponentProps, BPComponentState, UiConfigRendererContextType} from "./BPComponent";
2
- import {Tree, TreeNodeInfo} from "@blueprintjs/core";
3
+ import {TreeNodeInfo} from "@blueprintjs/core";
4
+ import React from "react";
3
5
 
4
6
  export type BPTreeComponentState<T = {}> = BPComponentState & {
5
7
  nodes: TreeNodeInfo<T>[]
6
8
  }
7
9
 
8
10
  // https://github.com/palantir/blueprint/blob/develop/packages/docs-app/src/examples/core-examples/treeExample.tsx
9
- type NodePath = number[];
11
+ type NodePath = (string|number)[];
10
12
 
11
- export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPComponent<TConfigVal, BPTreeComponentState<T>> {
12
- constructor(props: BPComponentProps<TConfigVal>, context: UiConfigRendererContextType) {
13
+ export abstract class BPTreeComponent<T = {}, TConfigVal extends any /*|PrimitiveVal|void*/ = void> extends BPComponent<TConfigVal, BPTreeComponentState<T>, BPComponentProps<TConfigVal> & {className: string}> {
14
+ constructor(props: BPComponentProps<TConfigVal> & {className: string}, context: UiConfigRendererContextType) {
13
15
  super(props, context, {nodes: []});
14
16
  }
15
17
 
@@ -32,10 +34,10 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
32
34
 
33
35
  protected abstract _getRootNodes(): T[]
34
36
 
35
- protected async _onNodeClick(_id: string | number, _path: number[]) {
37
+ protected async _onNodeClick(_id: string | number) {
36
38
  }
37
39
 
38
- protected async _onNodeDoubleClick(_id: string | number, _path: number[]) {
40
+ protected async _onNodeDoubleClick(_id: string | number) {
39
41
  }
40
42
 
41
43
  protected _cloneNodes(callback?: (t:TreeNodeInfo<T>)=>void, state?: TreeNodeInfo<T>[]): TreeNodeInfo<T>[] {
@@ -50,30 +52,39 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
50
52
  })
51
53
  }
52
54
 
53
- protected _forEachNode<T>(nodes: TreeNodeInfo<T>[] | undefined, callback: (node: TreeNodeInfo<T>) => void) {
55
+ protected _getNodePath(id: string, nodes?: TreeNodeInfo<T>[]): NodePath {
56
+ let path1: NodePath|null = null
57
+ this._forEachNode(nodes ?? this.state.nodes, (node, path) => {
58
+ if (node.id === id) path1 = path
59
+ })
60
+ return path1 ?? []
61
+ }
62
+
63
+ protected _forEachNode<T>(nodes: TreeNodeInfo<T>[] | undefined, callback: (node: TreeNodeInfo<T>, path: NodePath) => void, path: NodePath = []) {
54
64
  if (nodes === undefined) {
55
65
  return nodes;
56
66
  }
57
67
  for (const node of nodes) {
58
- callback(node);
59
- this._forEachNode(node.childNodes, callback);
68
+ callback(node, path);
69
+ this._forEachNode(node.childNodes, callback, [...path, node.id]);
60
70
  }
61
71
  return nodes
62
72
  }
63
- protected _forNodeAtPath<T>(nodes: TreeNodeInfo<T>[], path: NodePath, callback: (node: TreeNodeInfo<T>) => void) {
64
- callback(Tree.nodeFromPath(path, nodes));
65
- }
66
73
 
67
- protected async _onNodeExpandCollapse(_id: string | number, _path: number[]) {
74
+ // protected _forNodeAtPath<T>(nodes: TreeNodeInfo<T>[], path: NodePath, callback: (node: TreeNodeInfo<T>) => void) {
75
+ // callback(Tree.nodeFromPath(path, nodes));
76
+ // }
77
+
78
+ protected async _onNodeExpandCollapse(_id: string | number, expanded?: boolean) {
68
79
  const nodes = this._cloneNodes()
69
80
  const node = this._infoMap.get(_id)
70
81
  if (!node) return
71
- node.isExpanded = !node.isExpanded
82
+ node.isExpanded = expanded ?? !node.isExpanded
72
83
  // forNodeAtPath(nodes, _path, node => (node.isExpanded = !node.isExpanded));
73
84
  await this.setStatePromise({...this.state, nodes})
74
85
  }
75
86
 
76
- protected async _onNodeContextMenu(_id: string | number, _path: number[]) {
87
+ protected async _onNodeContextMenu(_id: string | number) {
77
88
  }
78
89
 
79
90
  protected buildData(data: TreeNodeInfo<T>[], obj: T, _?: any, _2?: any) {
@@ -103,8 +114,21 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
103
114
  return this.setStatePromise({...this.state, nodes})
104
115
  }
105
116
 
106
- async setSelected(id?: string) {
107
- const nodes = this._cloneNodes(n => n.isSelected = n.id === id)
117
+ async setSelected(id?: string|string[], expand = false) {
118
+ const nodes =
119
+ Array.isArray(id) ?
120
+ this._cloneNodes(n => n.isSelected = id.includes(n.id as any)) :
121
+ this._cloneNodes(n => n.isSelected = n.id === id)
122
+ if(expand && id!==undefined){
123
+ const ids = Array.isArray(id) ? id : [id]
124
+ for (const id1 of ids) {
125
+ const parents = this._getNodePath(id1, nodes)
126
+ for (let i = 0; i < parents.length; i++) {
127
+ const node = this._infoMap.get(parents[i])
128
+ if(node) node.isExpanded = true
129
+ }
130
+ }
131
+ }
108
132
  return this.setStatePromise({...this.state, nodes})
109
133
  }
110
134
 
@@ -116,28 +140,104 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
116
140
  super.componentWillUnmount();
117
141
  }
118
142
 
143
+ findSelectedNode(nodes?: TreeNodeInfo<T>[]): TreeNodeInfo<T> | undefined {
144
+ if (!nodes) nodes = this.state.nodes
145
+ for (const node of nodes) {
146
+ if (node.isSelected) return node
147
+ if (node.childNodes) {
148
+ const res = this.findSelectedNode(node.childNodes)
149
+ if (res) return res
150
+ }
151
+ }
152
+ }
153
+ getFlatNodes(onlyVisible = false, nodes?: TreeNodeInfo<T>[], res: TreeNodeInfo<T>[] = []): TreeNodeInfo<T>[] {
154
+ if (!nodes) nodes = this.state.nodes
155
+ for (const node of nodes) {
156
+ res.push(node)
157
+ if (node.childNodes && (!onlyVisible || node.isExpanded)) this.getFlatNodes(onlyVisible, node.childNodes, res)
158
+ }
159
+ return res
160
+ }
161
+
162
+ protected _handleKeyDown(e: React.KeyboardEvent) {
163
+ const nodes = this.getFlatNodes(true)
164
+ let current, next, previous;
165
+ for (let i = 0; i < nodes.length; i++) {
166
+ const node = nodes[i]
167
+ if (node.isSelected) {
168
+ current = node
169
+ next = i < nodes.length - 1 ? nodes[i + 1] : undefined
170
+ previous = i > 0 ? nodes[i - 1] : undefined
171
+ break
172
+ }
173
+ }
174
+ switch (e.key) {
175
+ case "ArrowUp":
176
+ if (previous) this._onNodeClick(previous.id)
177
+ break
178
+ case "ArrowDown":
179
+ if (next) this._onNodeClick(next.id)
180
+ break
181
+ case "ArrowRight":
182
+ if (current) this._onNodeExpandCollapse(current.id, true)
183
+ break
184
+ case "ArrowLeft":
185
+ if (current) this._onNodeExpandCollapse(current.id, false)
186
+ break
187
+ case "Escape":
188
+ if (current) this._onNodeClick(current.id)
189
+ break
190
+ case "Enter":
191
+ if (current) this._onNodeDoubleClick(current.id)
192
+ break
193
+ default:
194
+ return
195
+ }
196
+ e.preventDefault()
197
+ e.stopPropagation()
198
+ }
199
+
200
+ protected _canDropNode(_sourceNode: TreeNodeInfo<T>, _sourcePath: NodePath, _targetNode: TreeNodeInfo<T>, _targetPath: NodePath, _index?: number) {
201
+ return true
202
+ }
203
+ protected _onDropNode(_sourceNode: TreeNodeInfo<T>, _sourcePath: NodePath, _targetNode: TreeNodeInfo<T>, _targetPath: NodePath, _e?: React.DragEvent, _index?: number) {
204
+ return
205
+ }
206
+
119
207
  render() {
120
- const TreeT = Tree.ofType<T>()
208
+ const TreeT = Tree2.ofType<T>()
121
209
  return !this.state.hidden ? (
210
+ <div
211
+ style={{width: "100%", height: "100%"}}
212
+ onKeyDown={e => this._handleKeyDown(e)}
213
+ tabIndex={0}
214
+ >
122
215
  <TreeT
123
216
  contents={this.state.nodes}
124
- className="folderContent"
217
+ className={"folderContent " + (this.props.className||'')}
218
+ canDropNode={(node, path, targetNode, targetPath, index) => {
219
+ return this._canDropNode(node, path, targetNode, targetPath, index)
220
+ }}
221
+ onNodeDrop={(node, path, targetNode, targetPath, e, index) => {
222
+ // console.log(node, path, targetNode, targetPath, e);
223
+ this._onDropNode(node, path, targetNode, targetPath, e, index)
224
+ }}
125
225
  onNodeExpand={(node, _path, _e) => {
126
- this._onNodeExpandCollapse(node.id, _path)
226
+ this._onNodeExpandCollapse(node.id)
127
227
  }}
128
228
  onNodeCollapse={(node, _path, _e) => {
129
- this._onNodeExpandCollapse(node.id, _path)
229
+ this._onNodeExpandCollapse(node.id)
130
230
  }}
131
231
  onNodeClick={(node, _path, _e) => {
132
- this._onNodeClick(node.id, _path)
232
+ this._onNodeClick(node.id)
133
233
  }}
134
234
  onNodeDoubleClick={(node, _path, _e) => {
135
- this._onNodeDoubleClick(node.id, _path)
235
+ this._onNodeDoubleClick(node.id)
136
236
  }}
137
237
  onNodeContextMenu={(node, _path, _e) => {
138
- this._onNodeContextMenu(node.id, _path)
238
+ this._onNodeContextMenu(node.id)
139
239
  }}
140
- />
240
+ /></div>
141
241
  ) : null
142
242
  }
143
243
  }
@@ -1,13 +1,13 @@
1
- import {v4} from "uuid";
2
1
  import {TreeNodeInfo} from "@blueprintjs/core";
3
2
  import {BPTreeComponent} from "./BPTreeComponent";
4
3
  import {UiObjectConfig} from 'uiconfig.js'
5
- import {getOrCall} from 'ts-browser-helpers'
4
+ import {getOrCall, uuidV4} from 'ts-browser-helpers'
6
5
 
7
6
  export class BPTreeFolderComponent extends BPTreeComponent<UiObjectConfig> {
8
7
 
9
8
  protected _getNodeId(obj: UiObjectConfig) {
10
- return obj.uuid || v4();
9
+ if(!obj.uuid) obj.uuid = uuidV4();
10
+ return obj.uuid;
11
11
  }
12
12
 
13
13
  protected _updateNodeInfo(node: TreeNodeInfo<UiObjectConfig>, obj: UiObjectConfig) {