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
@@ -7,50 +7,57 @@ type StateValue = string | File | null
7
7
  type FileImportType = any
8
8
  export type BPFileComponentState = BPValueComponentState<StateValue> & {
9
9
  mode: 'url'|'file',
10
+ preview?: string,
10
11
  }
11
12
 
12
13
  type BPFileComponentExtras = {fileLoader?: {load: (v: string|File|{path: string, file: File|Blob})=>Promise<FileImportType>}}
13
14
  type BPFileComponentContextType = UiConfigRendererContextType & BPFileComponentExtras
14
15
 
15
- export class BPFileComponent extends BPValueComponent<FileImportType | null, BPFileComponentState, StateValue> {
16
+ // todo make this abstract?
17
+ // @ts-ignore
18
+ export class BPFileComponent<T extends FileImportType=FileImportType, TP = {}> extends BPValueComponent<T | null, BPFileComponentState, StateValue> {
16
19
  declare context: BPFileComponentContextType
17
- declare props: BPComponentProps<FileImportType | null> & BPFileComponentExtras
18
- constructor(props: BPComponentProps<FileImportType | null> & BPFileComponentExtras, context: BPFileComponentContextType) {
20
+ declare props: BPComponentProps<T | null> & BPFileComponentExtras & TP
21
+ constructor(props: BPComponentProps<T | null> & BPFileComponentExtras & TP, context: BPFileComponentContextType) {
19
22
  super(props, context, {
20
- mode: 'file',
23
+ mode: 'url',
21
24
  value: null,
22
25
  label: 'File'
23
26
  });
24
27
  if(!context.fileLoader && !props.fileLoader) throw new Error('BPFileComponent requires fileLoader to be available in context')
25
28
  }
26
29
 
27
- convertValueToState(val: FileImportType | null, state: BPFileComponentState): BPFileComponentState {
28
- let mode: BPFileComponentState['mode'] = state.mode
29
- let value = state.value
30
- if (val) { // todo: move to subclass in threepipe
31
- if (val.userData) {
32
- if (val.userData.__sourceBlob) {
33
- value = val.userData.__sourceBlob
34
- mode = 'file'
35
- } else if (val.userData.rootPath?.length) {
36
- value = val.userData.rootPath
37
- mode = 'url'
38
- }
39
- }
40
- }
41
- return {...state, mode, value}
30
+ // reimplemented in subclass
31
+ convertValueToState(_val: T | null, _state: BPFileComponentState): BPFileComponentState {
32
+ throw new Error('Not Implemented')
33
+ // let mode: BPFileComponentState['mode'] = state.mode
34
+ // let value = state.value
35
+ // if (val) {
36
+ // if (val.userData) {
37
+ // if (val.userData.__sourceBlob) {
38
+ // value = val.userData.__sourceBlob
39
+ // mode = 'file'
40
+ // } else if (val.userData.rootPath?.length) {
41
+ // value = val.userData.rootPath
42
+ // mode = 'url'
43
+ // }
44
+ // }
45
+ // }
46
+ // return {...state, mode, value}
42
47
  }
43
48
 
44
- async convertStateToValue(state: BPFileComponentState): Promise<FileImportType|null> {
49
+ async convertStateToValue(state: BPFileComponentState): Promise<T|null> {
45
50
  const value = state.value
46
51
  let val: any
52
+ const last = this.context.methods.getRawValue(this.props.config as any) ?? null
53
+ const lastState = this.convertValueToState(last as any, {...this.state, value: null})
47
54
  if (value === null) {
48
55
  val = null
49
56
  } else if (typeof value === 'string') {
50
- val = await (this.context.fileLoader ?? this.props.fileLoader)!.load(value);
57
+ val = value === lastState.value ? last : await (this.context.fileLoader ?? this.props.fileLoader)!.load(value);
51
58
  } else {
52
59
  // todo handle blob with no name
53
- val = await (this.context.fileLoader ?? this.props.fileLoader)!.load({path: value.name || 'file', file: value});
60
+ val = value === lastState.value ? last : await (this.context.fileLoader ?? this.props.fileLoader)!.load({path: value.name || 'file', file: value});
54
61
  }
55
62
  // console.log(val)
56
63
  return val;
@@ -60,12 +67,33 @@ export class BPFileComponent extends BPValueComponent<FileImportType | null, BPF
60
67
  // return super.doesNeedRefresh(state);
61
68
  // }
62
69
 
70
+ renderPreviewSlot() {
71
+ return <img src={"https://threepipe.org/logo.svg"}
72
+ style={{width: "100%", maxHeight: "80px", objectFit: "contain"}}/>
73
+ }
74
+
75
+ // async updateStateValue(state: BPFileComponentState, last?: boolean): Promise<void> {
76
+ // if(state.value !== this.state.value && state.preview) delete state.preview
77
+ // return super.updateStateValue(state, last);
78
+ // }
79
+
80
+ protected flexBasis = "100%"
81
+
63
82
  render() {
64
- return !this.state.hidden ? (
65
- <FormGroupComponent label={this.state.label} flexBasis={"100%"} disabled={this.state.disabled}>
66
- <FileComponent state={this.state} onChange={(s) => {
67
- this.updateStateValue({...this.state, ...s}); // todo: set loading while this promise is happening.
68
- }} key={this.props.config.uuid}/>
83
+ let show = !this.state.hidden
84
+ // todo - document hideOnEmpty. it hides the whole component if there is no value and no preview. (used in SSReflectionPlugin)
85
+ if (show && this.props.config.hideOnEmpty && !this.state.preview && !this.state.value) {
86
+ show = false
87
+ }
88
+ return show ? (
89
+ <FormGroupComponent
90
+ label={this.state.label}
91
+ disabled={this.state.disabled}
92
+ flexBasis={this.state.baseWidth ?? this.flexBasis}
93
+ >
94
+ <FileComponent previewSlot={this.renderPreviewSlot()} state={this.state} onChange={(s) =>
95
+ this.updateStateValue({...this.state, preview: undefined, ...s}) // todo: set loading while this promise is happening.
96
+ } key={this.props.config.uuid}/>
69
97
  </FormGroupComponent>
70
98
  ) : null
71
99
  }
@@ -27,9 +27,13 @@
27
27
  display: flex;
28
28
  flex-direction: column;
29
29
  background-color: $light-gray4 !important;
30
+
31
+
32
+ //border-top: #7c7c7c7c 1px solid !important;
33
+ //border-bottom: #7c7c7c7c 1px solid !important;
30
34
  }
31
35
  .bp5-dark .folder-card {
32
- background-color: $dark-gray3 !important;
36
+ background-color: $dark-gray1 !important;
33
37
  }
34
38
 
35
39
 
@@ -44,6 +48,9 @@
44
48
 
45
49
 
46
50
  .folder-trigger-button {
51
+ font-size: 12px !important;
52
+ font-weight: 550 !important;
53
+
47
54
  margin-top: 1px;
48
55
  display: flex;
49
56
  align-items: center;
@@ -58,16 +65,25 @@
58
65
  &:active {
59
66
  background-color: $gray4 !important;
60
67
  }
68
+
69
+ .bp5-button-text {
70
+ text-align: left;
71
+ flex: 1 1 auto;
72
+ }
61
73
  }
62
74
  .bp5-dark .folder-trigger-button {
63
75
  background-color: $dark-gray1 !important;
64
76
 
65
77
  &:hover {
66
- background-color: $dark-gray3 !important;
78
+ background-color: $dark-gray2 !important;
67
79
  }
68
80
 
69
81
  &:active {
70
- background-color: $dark-gray5 !important;
82
+ background-color: $dark-gray2 !important;
83
+ }
84
+
85
+ &.folder-trigger-button-expanded{
86
+ //background-color: $dark-gray2 !important;
71
87
  }
72
88
  }
73
89
 
@@ -83,7 +99,12 @@
83
99
  flex-direction: row;
84
100
 
85
101
  > .folder-trigger-button {
86
- margin-right: $pt-grid-size;
102
+ //margin-right: $pt-grid-size;
103
+ margin-right: 6px;
104
+ //margin-left: $pt-grid-size;
105
+ padding-top: 6px;
106
+ padding-bottom: 6px;
107
+ min-height: 36px;
87
108
  }
88
109
  }
89
110
 
@@ -92,7 +113,7 @@
92
113
  align-items: center;
93
114
  justify-content: space-between;
94
115
  flex-direction: row;
95
- box-shadow: 0 1px $pt-divider-black;
116
+ //box-shadow: 0 1px $pt-divider-black;
96
117
  //z-index: 1;
97
118
 
98
119
  > button {
@@ -100,8 +121,17 @@
100
121
  }
101
122
 
102
123
  .bp5-dark & {
103
- box-shadow: 0 1px $pt-dark-divider-white;
124
+ //box-shadow: 0 1px $pt-dark-divider-white;
104
125
  //background-color: $dark-gray1;
105
126
  }
106
127
  }
107
128
 
129
+ .folder-card{
130
+ .bp5-input-group .bp5-input{
131
+ font-size: var(--pt-font-size-small);
132
+ }
133
+
134
+ .bp5-button{
135
+ font-size: var(--pt-font-size-small);
136
+ }
137
+ }
@@ -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,101 @@ 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"}}
79
- 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
- }}/>
85
- )}>{props.label}
92
+ style={props.level ? {marginLeft: "6px"} : {fontSize: "0.95rem", paddingTop: "8px", paddingBottom: "8px"}}
93
+ // intent={props.open ? Intent.PRIMARY : Intent.NONE}
94
+ intent={Intent.NONE}
95
+ // icon={props.enabled !== undefined && <span style={{minWidth: '20px'}}></span>} // adding a span here will center the text in the button
96
+ icon={(
97
+ <>
98
+ <Icon icon="caret-right" style={{
99
+ rotate: props.open ? "90deg" : "0deg",
100
+ transition: "rotate 0.25s ease-in-out"
101
+ }}/>
102
+ </>
103
+ )}
104
+ >{props.label}
86
105
  </Button>
106
+ {hasEnabled && <Checkbox
107
+ style={{margin: 0, position: 'absolute', left: '10px'}}
108
+ large inline
109
+ defaultChecked={props.enabled}
110
+ onChange={props.onEnabledChange}
111
+ disabled={props.disabled}
112
+ onClick={(e) => e.stopPropagation()}
113
+ />}
87
114
  </div>
88
115
  {props.children}
89
116
  </div>
90
117
  )
91
118
  }
119
+
120
+ export class Collapse2 extends Collapse{
121
+ private contentsRefHandler2 = (el: HTMLElement | null) => {
122
+ // @ts-ignore
123
+ this.contents = el;
124
+ // @ts-ignore
125
+ if (this.contents != null) {
126
+ // @ts-ignore
127
+ const height = this.contents.clientHeight;
128
+ this.setState({
129
+ animationState: this.props.isOpen ? AnimationStates.OPEN : AnimationStates.CLOSED,
130
+ height: height === 0 ? undefined : `${height}px`,
131
+ heightWhenOpen: height === 0 ? undefined : height,
132
+ });
133
+ }
134
+ };
135
+
136
+ public render() {
137
+ const isContentVisible = this.state.animationState !== AnimationStates.CLOSED;
138
+ const shouldRenderChildren = isContentVisible || this.props.keepChildrenMounted;
139
+ // const displayWithTransform = isContentVisible && this.state.animationState !== AnimationStates.CLOSING;
140
+ const isAutoHeight = this.state.height === "auto";
141
+
142
+ const containerStyle = {
143
+ height: isContentVisible ? this.state.height : undefined,
144
+ overflowY: isAutoHeight ? "visible" : undefined,
145
+ // transitions don't work with height: auto
146
+ transition: isAutoHeight ? "none" : undefined,
147
+ };
148
+
149
+ const contentsStyle = {
150
+ // only use heightWhenOpen while closing
151
+ // transform: displayWithTransform ? "translateY(0)" : `translateY(-${this.state.heightWhenOpen}px)`,
152
+ // transitions don't work with height: auto
153
+ // transition: isAutoHeight ? "none" : undefined,
154
+ display: "block", // for opacity animation
155
+ visibility: isContentVisible ? "visible" : "hidden",
156
+ opacity: this.state.animationState === AnimationStates.CLOSING || this.state.animationState === AnimationStates.CLOSED ? 0.1 : 1,
157
+ } as React.CSSProperties;
158
+
159
+ // if(isContentVisible && !isAutoHeight && this.state.heightWhenOpen && this.state.height){
160
+ // const h = parseInt(this.state.height)
161
+ // contentsStyle.opacity = h / this.state.heightWhenOpen;
162
+ // console.log(contentsStyle.opacity)
163
+ // }
164
+
165
+ return React.createElement(
166
+ this.props.component!,
167
+ {
168
+ className: classNames(Classes.COLLAPSE, this.props.className),
169
+ style: containerStyle,
170
+ },
171
+ <div
172
+ className={Classes.COLLAPSE_BODY}
173
+ ref={this.contentsRefHandler2}
174
+ style={contentsStyle}
175
+ aria-hidden={!isContentVisible}
176
+ >
177
+ {shouldRenderChildren ? this.props.children : null}
178
+ </div>,
179
+ );
180
+ }
181
+
182
+ }
@@ -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
@@ -1,4 +1,5 @@
1
1
  import {BPComponent, BPComponentProps, BPComponentState, UiConfigRendererContextType} from "./BPComponent";
2
+ import {cleanLabel} from "../utils";
2
3
 
3
4
  export type BPLabelledComponentState = BPComponentState & {
4
5
  label: string
@@ -12,8 +13,7 @@ export abstract class BPLabelledComponent<TValue, TState, TProps extends BPCompo
12
13
  getUpdatedState(state: TState & BPLabelledComponentState): TState & BPLabelledComponentState {
13
14
  return super.getUpdatedState({
14
15
  ...state,
15
- label: this.context.methods.getLabel(this.props.config) || state.label,
16
+ label: cleanLabel(this.context.methods.getLabel(this.props.config)) || state.label,
16
17
  })
17
18
  }
18
-
19
19
  }
@@ -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