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
package/package.json CHANGED
@@ -1,18 +1,43 @@
1
1
  {
2
2
  "name": "uiconfig-blueprint",
3
3
  "name:umd": "bpui",
4
- "version": "0.1.0-dev.1",
4
+ "version": "0.1.0-dev.11",
5
5
  "description": "Blueprint.js wrapper and custom components for web controls UI. To be used with uiconfig.",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",
8
+ "browser": "dist/index.js",
9
+ "types": "dist/index.d.ts",
8
10
  "source": "src/index.ts",
9
11
  "sideEffects": false,
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.mjs",
16
+ "require": "./dist/index.js",
17
+ "browser": "./dist/index.js"
18
+ },
19
+ "./lib/esm": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./lib/esm/index.js",
22
+ "require": "./dist/index.js"
23
+ },
24
+ "./lib/esm/*": {
25
+ "types": "./lib/esm/*.d.ts",
26
+ "import": "./lib/esm/*.js"
27
+ },
28
+ "./lib/css/*": {
29
+ "import": "./lib/css/*.css",
30
+ "require": "./lib/css/*.css"
31
+ },
32
+ "./package.json": "./package.json"
33
+ },
10
34
  "files": [
11
35
  "lib",
12
36
  "dist",
13
37
  "src",
14
38
  "docs",
15
- "tsconfig.json"
39
+ "tsconfig.json",
40
+ "README.md"
16
41
  ],
17
42
  "repository": {
18
43
  "type": "git",
@@ -35,22 +60,48 @@
35
60
  },
36
61
  "homepage": "https://github.com/repalash/uiconfig-blueprint#readme",
37
62
  "dependencies": {
38
- "@blueprintjs/core": "^5.7.2",
63
+ "ts-browser-helpers": "^0.18.0",
64
+ "uiconfig.js": "^0.1.6",
65
+ "@blueprintjs/icons": "^5.11.0",
66
+ "@blueprintjs/select": "^5.2.2",
67
+ "blueprint-styler": "^5.0.2",
68
+ "react-colorful": "^5.6.1"
69
+ },
70
+ "peerDependencies": {
71
+ "@blueprintjs/core": "^5.11.0",
39
72
  "@types/three": "^0.152.1",
40
- "ts-browser-helpers": "^0.8.0",
41
73
  "@types/webxr": "^0.5.10",
42
- "uiconfig.js": "^0.0.9",
43
- "@blueprintjs/icons": "^5.5.0",
44
- "@blueprintjs/select": "^5.0.20",
45
- "blueprint-styler": "^5.0.2",
46
74
  "@types/react": "^18.0.28",
47
75
  "@types/react-dom": "^18.0.11",
48
76
  "react": "^18.2.0",
49
77
  "react-dom": "^18.2.0"
50
78
  },
79
+ "peerDependenciesMeta": {
80
+ "@blueprintjs/core": {
81
+ "optional": true
82
+ },
83
+ "@types/three": {
84
+ "optional": true
85
+ },
86
+ "@types/webxr": {
87
+ "optional": true
88
+ },
89
+ "@types/react": {
90
+ "optional": true
91
+ },
92
+ "@types/react-dom": {
93
+ "optional": true
94
+ },
95
+ "react": {
96
+ "optional": true
97
+ },
98
+ "react-dom": {
99
+ "optional": true
100
+ }
101
+ },
51
102
  "//": {
52
- "dependencies": {
53
- "uiconfig.js": "^0.0.9"
103
+ "devDependencies": {
104
+ "uiconfig.js": "^0.0.12"
54
105
  },
55
106
  "local_dependencies": {
56
107
  "uiconfig.js": "file:./../uiconfig/"
@@ -63,7 +114,5 @@
63
114
  "browserslist": [
64
115
  "defaults"
65
116
  ],
66
- "type": "module",
67
- "browser": "dist/index.js",
68
- "types": "dist/index.d.ts"
117
+ "type": "module"
69
118
  }
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import {Class, PartialRecord} from "ts-browser-helpers";
2
+ import {Class, getOrCall, PartialRecord} from "ts-browser-helpers";
3
3
  import {BPComponentProps, BPComponentState, UiConfigRendererContext} from "./bpComponents/BPComponent";
4
4
  import {BPFolderComponent, FolderHeadCard} from "./bpComponents/BPFolderComponent";
5
5
  import {BPTextInputComponent} from "./bpComponents/BPTextInputComponent";
@@ -13,7 +13,6 @@ import {BPPanelComponent} from "./bpComponents/BPPanelComponent";
13
13
  import {BPTreeFolderComponent} from "./bpComponents/BPTreeFolderComponent";
14
14
  import {UiObjectConfig} from 'uiconfig.js'
15
15
  import {BPColorInputComponent} from './bpComponents/BPColorInputComponent'
16
- import {BPFileComponent} from "./bpComponents/BPFileComponent";
17
16
  import {BPVectorInputComponent} from './bpComponents/BPVectorInputComponent'
18
17
  // import {BPVectorInputComponent} from "./bpComponents/BPVectorInputComponent";
19
18
  // import {BPFileComponent} from "./bpComponents/BPFileComponent";
@@ -21,13 +20,14 @@ import {BPVectorInputComponent} from './bpComponents/BPVectorInputComponent'
21
20
  // import {BPHierarchyComponent} from "./bpComponents/BPHierarchyComponent";
22
21
 
23
22
  export type UiConfigTypes = 'input' | 'button' | 'folder' | 'checkbox' | 'toggle' |
24
- 'dropdown' | 'slider' | 'color' | 'image' | 'number' | 'panel' | 'tree' | 'hierarchy' |
25
- 'vec' | 'vec2' | 'vec3' | 'vec4' | 'monitor'
23
+ 'dropdown' | 'slider' | 'color' | 'image' | 'number' | 'panel' | 'tree' | 'hierarchy' | 'materials' | 'textures' |
24
+ 'vec' | 'vec2' | 'vec3' | 'vec4' | 'monitor' | 'vector'
26
25
 
27
26
  export interface ConfigProps extends PanelActions {
28
27
  config: UiObjectConfig;
29
28
  isPanel?: boolean,
30
29
  level?: number,
30
+ className?: string
31
31
  }
32
32
 
33
33
  export const ConfigObjectGenerators: PartialRecord<UiConfigTypes, Class<React.Component<BPComponentProps<any>, BPComponentState>>> = {
@@ -44,11 +44,12 @@ export const ConfigObjectGenerators: PartialRecord<UiConfigTypes, Class<React.Co
44
44
  slider: BPSliderInputComponent,
45
45
  tree: BPTreeFolderComponent,
46
46
  color: BPColorInputComponent,
47
- image: BPFileComponent,
47
+ // image: BPFileComponent,
48
48
  vec: BPVectorInputComponent,
49
49
  vec2: BPVectorInputComponent,
50
50
  vec3: BPVectorInputComponent,
51
51
  vec4: BPVectorInputComponent,
52
+ vector: BPVectorInputComponent,
52
53
  // hierarchy: BPHierarchyComponent,
53
54
  }
54
55
 
@@ -58,10 +59,14 @@ export class ConfigObject extends React.Component<ConfigProps, {}> {
58
59
  state = {}
59
60
 
60
61
  render() {
62
+ if (!this.props.config || !this.props.config.type) return (<div key={this.props.config.uuid} className={this.props.className}></div>)
61
63
  this.context.methods.initUiConfig(this.props.config)
62
- if (!this.props.config.type) return (<div key={this.props.config.uuid}></div>)
64
+
65
+ const order = this.props.config.order ? getOrCall(this.props.config.order, this.props.config) ?? undefined : undefined
66
+ const orderStyle = {order: order && typeof order === 'string' ? parseInt(order): order}
67
+
63
68
  let type = this.props.config.type as any as UiConfigTypes
64
- const val = this.context.methods.getValue(this.props.config)
69
+ const val = this.context.methods.getRawValue(this.props.config)
65
70
 
66
71
  // hacks
67
72
  if (type === 'input' && typeof val === 'number') this.props.config.type = type = 'number'
@@ -75,9 +80,15 @@ export class ConfigObject extends React.Component<ConfigProps, {}> {
75
80
  let BPComp = ConfigObjectGenerators[type]
76
81
  if (type === 'panel' && !this.props.isPanel) {
77
82
  const label = this.context.methods.getLabel(this.props.config)
83
+ const children = this.context.methods.getChildren(this.props.config)
84
+ const enabledToggle = children[0] && this.context.methods.getLabel(children[0]).toLowerCase() === 'enabled' ? children[0] : undefined
85
+ enabledToggle && (enabledToggle.hidden = true)
78
86
  return (
79
- <div key={this.props.config.uuid}>
80
- <FolderHeadCard label={label} minimal={false} open={false} onClick={() => {
87
+ <div key={this.props.config.uuid} style={orderStyle} className={this.props.className}>
88
+ <FolderHeadCard
89
+ enabled={enabledToggle ? this.context.methods.getRawValue(enabledToggle) : undefined}
90
+ onEnabledChange={(e) => enabledToggle && this.context.methods.setValue(enabledToggle, e.target.checked, {}).then(() => this.setState(this.state))}
91
+ level={0} label={label} minimal={false} open={false} onClick={() => {
81
92
  this.props.openPanel<{ config: UiObjectConfig<any> }>({
82
93
  props: {config: this.props.config},
83
94
  title: label,
@@ -92,9 +103,12 @@ export class ConfigObject extends React.Component<ConfigProps, {}> {
92
103
  )
93
104
  }
94
105
  if (BPComp) {
95
- return (<div key={this.props.config.uuid}><BPComp {...{...this.props, isPanel: undefined}} /></div>)
106
+ return (<div key={this.props.config.uuid} style={orderStyle} className={this.props.className}><BPComp {...{...this.props, isPanel: undefined}} /></div>)
96
107
  }
97
- return (<div key={this.props.config.uuid}>Unknown type: {this.props.config.type}</div>)
108
+ return (<div key={this.props.config.uuid} style={orderStyle} className={this.props.className}>
109
+ {/*Unknown type: {this.props.config.type}*/}
110
+ </div>)
111
+ // return null
98
112
 
99
113
  // let uiRef: React.FC | BPUiRef<any> | null = this.props.uiConfig.uiRef
100
114
  // if (uiRef) {
@@ -1,5 +1,5 @@
1
- import {createDiv, createStyles, css} from "ts-browser-helpers";
2
- import {UiConfigRendererBase, UiObjectConfig} from "uiconfig.js";
1
+ import {createDiv, createStyles, css, JSUndoManager} from "ts-browser-helpers";
2
+ import {UiConfigRenderer, UiObjectConfig} from "uiconfig.js";
3
3
  import React from 'react'
4
4
  import {createRoot, Root} from 'react-dom/client'
5
5
  import {ConfigurationPanelComponent} from './components/ConfigurationPanelComponent'
@@ -9,32 +9,43 @@ import rendererCss from './renderer.scss?inline' // for rollup build remove ?inl
9
9
  import {FocusStyleManager} from '@blueprintjs/core'
10
10
  import {THREE} from "./threejs";
11
11
 
12
- export class UiConfigRendererBlueprint extends UiConfigRendererBase<Root> {
13
-
14
- constructor(container: HTMLElement = document.body, {autoPostFrame = true} = {}) {
15
- super(container, autoPostFrame);
12
+ export class UiConfigRendererBlueprint extends UiConfigRenderer {
13
+ constructor(container: HTMLElement = document.body, {autoPostFrame = true} = {}, undoManager?: JSUndoManager|false) {
14
+ super(container, autoPostFrame, undefined, undoManager);
16
15
  // this._root.expanded = expanded
17
-
18
16
  }
19
17
 
18
+ protected _root: Root
19
+
20
20
  protected _createUiContainer(): HTMLDivElement {
21
21
  FocusStyleManager.onlyShowFocusOnTabs();
22
22
 
23
23
  const container = createDiv({id: 'blueprintUiContainer', addToBody: false})
24
24
  createStyles(css`
25
- :root{
26
- --blueprint-ui-container-width: 300px;
27
- }
28
- @media only screen and (min-width: 1500px) {
29
- :root{
30
- --blueprint-ui-container-width: 400px;
25
+ :root {
26
+ --blueprint-ui-container-width: 300px;
31
27
  }
32
- }
33
- @media only screen and (min-width: 2500px) {
34
- :root{
35
- --blueprint-ui-container-width: 500px;
28
+
29
+ @media only screen and (min-width: 1500px) {
30
+ :root {
31
+ --blueprint-ui-container-width: 400px;
32
+ }
33
+ }
34
+ @media only screen and (min-width: 2500px) {
35
+ :root {
36
+ --blueprint-ui-container-width: 500px;
37
+ }
38
+ }
39
+
40
+ @media only screen and (min-width: 600px) {
41
+ #blueprintUiContainer {
42
+ min-width: var(--blueprint-ui-container-width);
43
+ min-height: 200px;
44
+ max-height: 100%;
45
+ max-width: 100%;
46
+ resize: both;
47
+ }
36
48
  }
37
- }
38
49
  `)
39
50
  createStyles(rendererCss)
40
51
 
@@ -65,8 +76,8 @@ export class UiConfigRendererBlueprint extends UiConfigRendererBase<Root> {
65
76
  // eslint-disable-next-line @typescript-eslint/naming-convention
66
77
  THREE: THREE|undefined = (window as any).THREE
67
78
 
68
- dispose() {
69
- // todo
79
+ unmount() {
80
+ this._root?.unmount()
70
81
  }
71
82
 
72
83
  }
@@ -2,8 +2,12 @@
2
2
  .bpButtonComponent {
3
3
  //width: 100%;
4
4
  display: flex;
5
+ flex: 1 1;
5
6
  justify-content: center;
6
- flex-basis: 50%;
7
+ //min-width: 50%;
7
8
  margin: 2px 0;
8
9
  width: max-content;
10
+
11
+ height: auto;
12
+ align-self: stretch;
9
13
  }
@@ -1,8 +1,9 @@
1
1
  import {BPComponentProps, UiConfigRendererContextType} from "./BPComponent";
2
2
  import React from "react";
3
3
  import {BPLabelledComponent, BPLabelledComponentState} from "./BPLabelledComponent";
4
- import {Button} from "@blueprintjs/core";
4
+ import {Button, Intent} from "@blueprintjs/core";
5
5
 
6
+ // @ts-ignore
6
7
  export class BPButtonComponent extends BPLabelledComponent<()=>void, BPLabelledComponentState> {
7
8
  constructor(props: BPComponentProps<()=>void>, context: UiConfigRendererContextType) {
8
9
  super(props, context, {label: 'Button'});
@@ -13,12 +14,18 @@ export class BPButtonComponent extends BPLabelledComponent<()=>void, BPLabelledC
13
14
  this.context.methods.clickButton(this.props.config, {args: [event]})
14
15
  }
15
16
 
17
+ protected flexBasis = "50%"
18
+
16
19
  render() {
17
20
  return !this.state.hidden ? (
18
- <div className="bpButtonComponent xPaddedContent">
21
+ <div className="bpButtonComponent xPaddedContent"
22
+ style={{flexBasis: this.state.baseWidth ?? this.flexBasis}}
23
+ >
19
24
  <Button className="bpButton"
20
25
  disabled={this.state.disabled}
26
+ intent={Intent.PRIMARY}
21
27
  // small={true}
28
+ fill={true}
22
29
  text={this.state.label} style={{}} onClick={this.onClick}/>
23
30
  </div>
24
31
  ) : null
@@ -20,7 +20,7 @@ export class BPColorInputComponent extends BPValueComponent<ColorRepresentation,
20
20
  constructor(props: BPComponentProps<ColorRepresentation>, context: UiConfigRendererContextType) {
21
21
  super(props, context, {
22
22
  label: 'Color',
23
- value: "#000000",
23
+ value: '#000000',
24
24
  mode: 'number',
25
25
  srgbConvert: false,
26
26
  });
@@ -95,11 +95,17 @@ export class BPColorInputComponent extends BPValueComponent<ColorRepresentation,
95
95
  document.addEventListener('mouseup', this._mouseUp)
96
96
  }
97
97
 
98
+ protected flexBasis = "100%"
99
+
98
100
  render() {
99
101
  return !this.state.hidden ? (
100
- <FormGroupComponent label={this.state.label}>
102
+ <FormGroupComponent
103
+ label={this.state.label}
104
+ flexBasis={this.state.baseWidth ?? this.flexBasis}
105
+ >
101
106
  <InputGroup inputRef={this._inputRef}
102
107
  disabled={this.state.disabled} readOnly={this.state.readOnly}
108
+ fill={true}
103
109
  leftElement={(
104
110
  <Popover
105
111
  popoverClassName={'color-picker-popover'}
@@ -12,6 +12,7 @@ export type BPComponentState = {
12
12
  hidden?: boolean
13
13
  disabled?: boolean
14
14
  readOnly?: boolean // same as disabled(for most inputs)
15
+ baseWidth?: string // for flexBasis, can be a number or a string like '50%' or '100px'
15
16
  }
16
17
  export interface UiConfigRendererBaseBp extends UiConfigRendererBase{
17
18
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -20,7 +21,7 @@ export interface UiConfigRendererBaseBp extends UiConfigRendererBase{
20
21
 
21
22
  export const UiConfigRendererContext = createContext<UiConfigRendererBaseBp>(null as any)
22
23
  export type UiConfigRendererContextType = React.ContextType<typeof UiConfigRendererContext>
23
- export abstract class BPComponent<TValue, TState, TProps extends BPComponentProps<TValue> = BPComponentProps<TValue>> extends React.Component<TProps, TState> {
24
+ export abstract class BPComponent<TValue, TState extends BPComponentState, TProps extends BPComponentProps<TValue> = BPComponentProps<TValue>> extends React.Component<TProps, TState> {
24
25
  static contextType = UiConfigRendererContext
25
26
  declare context: UiConfigRendererContextType
26
27
 
@@ -28,6 +29,7 @@ export abstract class BPComponent<TValue, TState, TProps extends BPComponentProp
28
29
  super(props, context);
29
30
  this.state = this.getUpdatedState(state)
30
31
  // this.state = state
32
+ this.setState = this.setState.bind(this)
31
33
  }
32
34
 
33
35
  /**
@@ -38,16 +40,27 @@ export abstract class BPComponent<TValue, TState, TProps extends BPComponentProp
38
40
  return new Promise<void>(resolve => this.setState(state, resolve))
39
41
  }
40
42
 
43
+ keyVersion = 0
44
+
41
45
  /**
42
46
  * This is called to get the updated state from the config, copy any values/properties from the config to the state here
43
47
  * @param state - the current state
44
48
  */
45
49
  getUpdatedState(state: TState): TState{
50
+ const hidden = getOrCall(this.props.config.hidden) ?? false
51
+ const disabled = getOrCall(this.props.config.disabled) ?? false
52
+ const readOnly = getOrCall(this.props.config.readOnly) ?? false
53
+ const baseWidth = getOrCall(this.props.config.baseWidth) ?? undefined
54
+ if(hidden !== state.hidden
55
+ || disabled !== state.disabled
56
+ || readOnly !== state.readOnly
57
+ ) this.keyVersion++
46
58
  return {
47
59
  ...state,
48
- hidden: getOrCall(this.props.config.hidden) ?? false,
49
- disabled: getOrCall(this.props.config.disabled) ?? false,
50
- readOnly: getOrCall(this.props.config.readOnly) ?? false,
60
+ hidden,
61
+ disabled,
62
+ readOnly,
63
+ baseWidth
51
64
  }
52
65
  }
53
66
 
@@ -16,6 +16,7 @@ export class BPContainerComponent<TState extends BPContainerComponentState=BPCon
16
16
  }
17
17
 
18
18
  protected _registerChild(child: UiObjectConfig) {
19
+ // if(Object.keys(child).length)
19
20
  child.parentOnChange = this._childParentOnChange
20
21
  if(child.property === undefined &&
21
22
  child.value === undefined &&
@@ -28,7 +29,7 @@ export class BPContainerComponent<TState extends BPContainerComponentState=BPCon
28
29
 
29
30
  protected _unregisterChild(child: UiObjectConfig) {
30
31
  if (child.parentOnChange !== this._childParentOnChange)
31
- child.parentOnChange = undefined
32
+ delete child.parentOnChange
32
33
  if(Array.isArray(child.property) &&
33
34
  (child.property === this.props.config.property ||
34
35
  (child.property[0] === this.props.config &&
@@ -44,6 +45,17 @@ export class BPContainerComponent<TState extends BPContainerComponentState=BPCon
44
45
  getUpdatedState(state: TState) {
45
46
  const oldChildren = state.children
46
47
  const newChildren = this.context.methods.getChildren(this.props.config)
48
+ .flatMap(c=>{
49
+ if(c.type === 'folder' &&
50
+ c.unwrapContents === true
51
+ ){
52
+ const children2 = this.context.methods.getChildren(c)
53
+ const enabledToggle = children2[0] && this.context.methods.getBinding(children2[0])[1] === 'enabled' ? children2[0] : undefined
54
+ enabledToggle && (enabledToggle.hidden = true)
55
+ return children2
56
+ }
57
+ return c
58
+ })
47
59
  const removed = oldChildren.filter(c => !newChildren.includes(c))
48
60
  const added = newChildren.filter(c => !oldChildren.includes(c))
49
61
  // console.warn(this, this._registerChild, this._childParentOnChange, added, removed)
@@ -59,8 +59,14 @@ export class BPDropdownInputComponent extends BPInputComponent<string|number, BP
59
59
  activeItem={item}
60
60
  key={this.props.config.uuid}
61
61
  disabled={this.state.disabled}
62
+ fill={true}
62
63
  popoverProps={{
63
- minimal: true
64
+ minimal: true,
65
+ }}
66
+ popoverTargetProps={{
67
+ style: {
68
+ height: "var(--pt-input-height)",
69
+ }
64
70
  }}
65
71
  noResults={<MenuItem disabled={true} text="No results." roleStructure="listoption" />}
66
72
  items={this.state.options}
@@ -72,7 +78,7 @@ export class BPDropdownInputComponent extends BPInputComponent<string|number, BP
72
78
  >
73
79
  {/* children become the popover target; render value here */}
74
80
  <Button rightIcon="double-caret-vertical" small={true}
75
- style={{whiteSpace: 'nowrap', textOverflow: "ellipsis"}}>{item.label}</Button>
81
+ style={{whiteSpace: 'nowrap', textOverflow: "ellipsis", height: "100%"}}>{item.label}</Button>
76
82
  </Select>
77
83
  )
78
84
  }
@@ -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
  }
@@ -29,7 +29,7 @@
29
29
  background-color: $light-gray4 !important;
30
30
  }
31
31
  .bp5-dark .folder-card {
32
- background-color: $dark-gray3 !important;
32
+ background-color: $dark-gray1 !important;
33
33
  }
34
34
 
35
35
 
@@ -58,16 +58,25 @@
58
58
  &:active {
59
59
  background-color: $gray4 !important;
60
60
  }
61
+
62
+ .bp5-button-text {
63
+ text-align: left;
64
+ flex: 1 1 auto;
65
+ }
61
66
  }
62
67
  .bp5-dark .folder-trigger-button {
63
68
  background-color: $dark-gray1 !important;
64
69
 
65
70
  &:hover {
66
- background-color: $dark-gray3 !important;
71
+ background-color: $dark-gray2 !important;
67
72
  }
68
73
 
69
74
  &:active {
70
- background-color: $dark-gray5 !important;
75
+ background-color: $dark-gray2 !important;
76
+ }
77
+
78
+ &.folder-trigger-button-expanded{
79
+ background-color: $dark-gray2 !important;
71
80
  }
72
81
  }
73
82
 
@@ -83,7 +92,12 @@
83
92
  flex-direction: row;
84
93
 
85
94
  > .folder-trigger-button {
86
- margin-right: $pt-grid-size;
95
+ //margin-right: $pt-grid-size;
96
+ margin-right: 6px;
97
+ //margin-left: $pt-grid-size;
98
+ padding-top: 6px;
99
+ padding-bottom: 6px;
100
+ min-height: 36px;
87
101
  }
88
102
  }
89
103
 
@@ -92,7 +106,7 @@
92
106
  align-items: center;
93
107
  justify-content: space-between;
94
108
  flex-direction: row;
95
- box-shadow: 0 1px $pt-divider-black;
109
+ //box-shadow: 0 1px $pt-divider-black;
96
110
  //z-index: 1;
97
111
 
98
112
  > button {
@@ -100,7 +114,7 @@
100
114
  }
101
115
 
102
116
  .bp5-dark & {
103
- box-shadow: 0 1px $pt-dark-divider-white;
117
+ //box-shadow: 0 1px $pt-dark-divider-white;
104
118
  //background-color: $dark-gray1;
105
119
  }
106
120
  }