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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/README.md +27 -1
  2. package/dist/ConfigObject.d.ts +2 -1
  3. package/dist/UiConfigRendererBlueprint.d.ts +6 -4
  4. package/dist/allPaths-Dhco1c7a.js +23 -0
  5. package/dist/{allPaths-EYaH0Usv.js.map → allPaths-Dhco1c7a.js.map} +1 -1
  6. package/dist/{allPathsLoader-UVZ15qNf.js → allPathsLoader-BNvrKJa2.js} +5 -5
  7. package/dist/{allPathsLoader-UVZ15qNf.js.map → allPathsLoader-BNvrKJa2.js.map} +1 -1
  8. package/dist/bpComponents/BPButtonComponent.d.ts +1 -0
  9. package/dist/bpComponents/BPColorInputComponent.d.ts +1 -0
  10. package/dist/bpComponents/BPComponent.d.ts +3 -1
  11. package/dist/bpComponents/BPContainerComponent.d.ts +1 -1
  12. package/dist/bpComponents/BPFileComponent.d.ts +8 -5
  13. package/dist/bpComponents/BPFolderComponent.d.ts +9 -1
  14. package/dist/bpComponents/BPInputComponent.d.ts +2 -1
  15. package/dist/bpComponents/BPNumberInputComponent.d.ts +3 -1
  16. package/dist/bpComponents/BPSliderInputComponent.d.ts +1 -0
  17. package/dist/bpComponents/BPTreeComponent.d.ts +20 -10
  18. package/dist/bpComponents/BPValueComponent.d.ts +4 -1
  19. package/dist/bpComponents/BPVectorInputComponent.d.ts +1 -0
  20. package/dist/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
  21. package/dist/bpComponents/NumberUnits.d.ts +7 -0
  22. package/dist/components/DialogContext.d.ts +18 -10
  23. package/dist/components/DraggableIcon.d.ts +1 -0
  24. package/dist/components/ExtendedNumericInput.d.ts +13 -3
  25. package/dist/components/FileComponent.d.ts +3 -1
  26. package/dist/components/InspectorStackComponent.d.ts +2 -1
  27. package/dist/components/NumericInput.d.ts +79 -0
  28. package/dist/components/Tree2.d.ts +52 -0
  29. package/dist/components/TreeNode2.d.ts +43 -0
  30. package/dist/components/axesIcons.d.ts +7 -0
  31. package/dist/components/bpIconWrapper.d.ts +2 -2
  32. package/dist/components/iconMapping.d.ts +198 -0
  33. package/dist/components/loadingState.d.ts +4 -0
  34. package/dist/components/shapesIcons.d.ts +100 -0
  35. package/dist/components/treeTypes.d.ts +18 -0
  36. package/dist/index-B1k4Miq7.js +671 -0
  37. package/dist/index-B1k4Miq7.js.map +1 -0
  38. package/dist/index-BvGAMcRo.js +671 -0
  39. package/dist/index-BvGAMcRo.js.map +1 -0
  40. package/dist/index-GANXo7JZ.js +13560 -0
  41. package/dist/index-GANXo7JZ.js.map +1 -0
  42. package/dist/index.js +71 -36
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +3 -3
  45. package/dist/lib.d.ts +4 -1
  46. package/dist/{splitPathsBySizeLoader-GhF5umHk.js → splitPathsBySizeLoader-DGIXBgyZ.js} +6 -6
  47. package/dist/{splitPathsBySizeLoader-GhF5umHk.js.map → splitPathsBySizeLoader-DGIXBgyZ.js.map} +1 -1
  48. package/docs/assets/highlight.css +45 -17
  49. package/docs/assets/navigation.js +1 -1
  50. package/docs/assets/search.js +1 -1
  51. package/docs/classes/UI.html +10 -5
  52. package/docs/classes/UiConfigRendererBlueprint.html +10 -5
  53. package/docs/index.html +16 -5
  54. package/lib/css/renderer.css +189 -23
  55. package/lib/css/renderer.css.map +1 -1
  56. package/lib/esm/ConfigObject.d.ts +2 -1
  57. package/lib/esm/ConfigObject.js +15 -9
  58. package/lib/esm/ConfigObject.js.map +1 -1
  59. package/lib/esm/UiConfigRendererBlueprint.d.ts +6 -4
  60. package/lib/esm/UiConfigRendererBlueprint.js +30 -17
  61. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  62. package/lib/esm/bpComponents/BPButtonComponent.d.ts +1 -0
  63. package/lib/esm/bpComponents/BPButtonComponent.js +4 -2
  64. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  65. package/lib/esm/bpComponents/BPColorInputComponent.d.ts +1 -0
  66. package/lib/esm/bpComponents/BPColorInputComponent.js +4 -2
  67. package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
  68. package/lib/esm/bpComponents/BPComponent.d.ts +3 -1
  69. package/lib/esm/bpComponents/BPComponent.js +15 -2
  70. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  71. package/lib/esm/bpComponents/BPContainerComponent.d.ts +1 -1
  72. package/lib/esm/bpComponents/BPContainerComponent.js +12 -2
  73. package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
  74. package/lib/esm/bpComponents/BPDropdownInputComponent.js +7 -3
  75. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  76. package/lib/esm/bpComponents/BPFileComponent.d.ts +8 -5
  77. package/lib/esm/bpComponents/BPFileComponent.js +18 -24
  78. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  79. package/lib/esm/bpComponents/BPFolderComponent.d.ts +9 -1
  80. package/lib/esm/bpComponents/BPFolderComponent.js +55 -12
  81. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  82. package/lib/esm/bpComponents/BPInputComponent.d.ts +2 -1
  83. package/lib/esm/bpComponents/BPInputComponent.js +2 -1
  84. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  85. package/lib/esm/bpComponents/BPNumberInputComponent.d.ts +3 -1
  86. package/lib/esm/bpComponents/BPNumberInputComponent.js +6 -1
  87. package/lib/esm/bpComponents/BPNumberInputComponent.js.map +1 -1
  88. package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
  89. package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
  90. package/lib/esm/bpComponents/BPSliderInputComponent.d.ts +1 -0
  91. package/lib/esm/bpComponents/BPSliderInputComponent.js +18 -6
  92. package/lib/esm/bpComponents/BPSliderInputComponent.js.map +1 -1
  93. package/lib/esm/bpComponents/BPTextInputComponent.js +1 -1
  94. package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
  95. package/lib/esm/bpComponents/BPToggleInputComponent.js +3 -2
  96. package/lib/esm/bpComponents/BPToggleInputComponent.js.map +1 -1
  97. package/lib/esm/bpComponents/BPTreeComponent.d.ts +20 -10
  98. package/lib/esm/bpComponents/BPTreeComponent.js +120 -26
  99. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  100. package/lib/esm/bpComponents/BPTreeFolderComponent.js +4 -3
  101. package/lib/esm/bpComponents/BPTreeFolderComponent.js.map +1 -1
  102. package/lib/esm/bpComponents/BPValueComponent.d.ts +4 -1
  103. package/lib/esm/bpComponents/BPValueComponent.js +19 -3
  104. package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
  105. package/lib/esm/bpComponents/BPVectorInputComponent.d.ts +1 -0
  106. package/lib/esm/bpComponents/BPVectorInputComponent.js +14 -8
  107. package/lib/esm/bpComponents/BPVectorInputComponent.js.map +1 -1
  108. package/lib/esm/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
  109. package/lib/esm/bpComponents/GetNumberTransformFunctions.js +14 -0
  110. package/lib/esm/bpComponents/GetNumberTransformFunctions.js.map +1 -0
  111. package/lib/esm/bpComponents/NumberUnits.d.ts +7 -0
  112. package/lib/esm/bpComponents/NumberUnits.js +101 -0
  113. package/lib/esm/bpComponents/NumberUnits.js.map +1 -0
  114. package/lib/esm/components/AppToaster.js.map +1 -1
  115. package/lib/esm/components/ConfigurationPanelComponent.js +6 -1
  116. package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
  117. package/lib/esm/components/DialogContext.d.ts +18 -10
  118. package/lib/esm/components/DialogContext.js +52 -33
  119. package/lib/esm/components/DialogContext.js.map +1 -1
  120. package/lib/esm/components/DraggableIcon.d.ts +1 -0
  121. package/lib/esm/components/DraggableIcon.js +7 -4
  122. package/lib/esm/components/DraggableIcon.js.map +1 -1
  123. package/lib/esm/components/ExtendedNumericInput.d.ts +13 -3
  124. package/lib/esm/components/ExtendedNumericInput.js +62 -17
  125. package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
  126. package/lib/esm/components/FileComponent.d.ts +3 -1
  127. package/lib/esm/components/FileComponent.js +19 -19
  128. package/lib/esm/components/FileComponent.js.map +1 -1
  129. package/lib/esm/components/InspectorStackComponent.d.ts +2 -1
  130. package/lib/esm/components/InspectorStackComponent.js +2 -2
  131. package/lib/esm/components/InspectorStackComponent.js.map +1 -1
  132. package/lib/esm/components/NumericInput.d.ts +79 -0
  133. package/lib/esm/components/NumericInput.js +311 -0
  134. package/lib/esm/components/NumericInput.js.map +1 -0
  135. package/lib/esm/components/Tree2.d.ts +52 -0
  136. package/lib/esm/components/Tree2.js +177 -0
  137. package/lib/esm/components/Tree2.js.map +1 -0
  138. package/lib/esm/components/TreeNode2.d.ts +43 -0
  139. package/lib/esm/components/TreeNode2.js +111 -0
  140. package/lib/esm/components/TreeNode2.js.map +1 -0
  141. package/lib/esm/components/VisualStyleContext.js +9 -3
  142. package/lib/esm/components/VisualStyleContext.js.map +1 -1
  143. package/lib/esm/components/axesIcons.d.ts +7 -0
  144. package/lib/esm/components/axesIcons.js +10 -0
  145. package/lib/esm/components/axesIcons.js.map +1 -0
  146. package/lib/esm/components/bpIconWrapper.d.ts +2 -2
  147. package/lib/esm/components/bpIconWrapper.js +2 -2
  148. package/lib/esm/components/bpIconWrapper.js.map +1 -1
  149. package/lib/esm/components/iconMapping.d.ts +198 -0
  150. package/lib/esm/components/iconMapping.js +202 -0
  151. package/lib/esm/components/iconMapping.js.map +1 -0
  152. package/lib/esm/components/loadingState.d.ts +4 -0
  153. package/lib/esm/components/loadingState.js +10 -0
  154. package/lib/esm/components/loadingState.js.map +1 -1
  155. package/lib/esm/components/shapesIcons.d.ts +100 -0
  156. package/lib/esm/components/shapesIcons.js +102 -0
  157. package/lib/esm/components/shapesIcons.js.map +1 -0
  158. package/lib/esm/components/treeTypes.d.ts +18 -0
  159. package/lib/esm/components/treeTypes.js +2 -0
  160. package/lib/esm/components/treeTypes.js.map +1 -0
  161. package/lib/esm/lib.d.ts +4 -1
  162. package/lib/esm/lib.js +4 -1
  163. package/lib/esm/lib.js.map +1 -1
  164. package/lib/esm/renderer.css.js +1 -0
  165. package/package.json +62 -13
  166. package/src/ConfigObject.tsx +25 -11
  167. package/src/UiConfigRendererBlueprint.tsx +31 -20
  168. package/src/bpComponents/BPButtonComponent.scss +5 -1
  169. package/src/bpComponents/BPButtonComponent.tsx +9 -2
  170. package/src/bpComponents/BPColorInputComponent.tsx +8 -2
  171. package/src/bpComponents/BPComponent.tsx +17 -4
  172. package/src/bpComponents/BPContainerComponent.tsx +13 -1
  173. package/src/bpComponents/BPDropdownInputComponent.tsx +8 -2
  174. package/src/bpComponents/BPFileComponent.tsx +55 -27
  175. package/src/bpComponents/BPFolderComponent.scss +20 -6
  176. package/src/bpComponents/BPFolderComponent.tsx +105 -16
  177. package/src/bpComponents/BPInputComponent.tsx +6 -2
  178. package/src/bpComponents/BPNumberInputComponent.tsx +14 -2
  179. package/src/bpComponents/BPPanelComponent.tsx +1 -1
  180. package/src/bpComponents/BPSliderInputComponent.tsx +40 -20
  181. package/src/bpComponents/BPTextInputComponent.tsx +1 -0
  182. package/src/bpComponents/BPToggleInputComponent.tsx +6 -3
  183. package/src/bpComponents/BPTreeComponent.tsx +125 -25
  184. package/src/bpComponents/BPTreeFolderComponent.tsx +3 -3
  185. package/src/bpComponents/BPValueComponent.tsx +31 -4
  186. package/src/bpComponents/BPVectorInputComponent.tsx +23 -20
  187. package/src/bpComponents/GetNumberTransformFunctions.tsx +14 -0
  188. package/src/bpComponents/NumberUnits.tsx +123 -0
  189. package/src/components/AppToaster.tsx +20 -0
  190. package/src/components/ConfigurationPanelComponent.tsx +14 -3
  191. package/src/components/DialogContext.tsx +125 -65
  192. package/src/components/DraggableIcon.tsx +6 -5
  193. package/src/components/ExtendedNumericInput.tsx +70 -18
  194. package/src/components/FileComponent.tsx +48 -25
  195. package/src/components/InspectorStackComponent.tsx +2 -2
  196. package/src/components/NumericInput.tsx +679 -0
  197. package/src/components/Tree2.tsx +344 -0
  198. package/src/components/TreeNode2.tsx +192 -0
  199. package/src/components/VisualStyleContext.tsx +10 -2
  200. package/src/components/axesIcons.tsx +116 -0
  201. package/src/components/bpIconWrapper.tsx +5 -4
  202. package/src/components/common.scss +17 -0
  203. package/src/components/iconMapping.ts +354 -0
  204. package/src/components/loadingState.tsx +9 -0
  205. package/src/components/shapesIcons.tsx +980 -0
  206. package/src/components/tree2.scss +69 -0
  207. package/src/components/treeTypes.ts +97 -0
  208. package/src/lib.ts +4 -1
  209. package/src/renderer.scss +79 -11
  210. package/tsconfig.json +1 -0
  211. package/dist/allPaths-EYaH0Usv.js +0 -23
  212. package/dist/index-0vU2D25U.js +0 -604
  213. package/dist/index-0vU2D25U.js.map +0 -1
  214. package/dist/index-JBvBPdy9.js +0 -604
  215. package/dist/index-JBvBPdy9.js.map +0 -1
  216. package/dist/index-OyL-zObJ.js +0 -12765
  217. package/dist/index-OyL-zObJ.js.map +0 -1
  218. package/lib/cjs/ConfigObject.d.ts +0 -18
  219. package/lib/cjs/ConfigObject.js +0 -82
  220. package/lib/cjs/ConfigObject.js.map +0 -1
  221. package/lib/cjs/UiConfigRendererBlueprint.d.ts +0 -13
  222. package/lib/cjs/UiConfigRendererBlueprint.js +0 -56
  223. package/lib/cjs/UiConfigRendererBlueprint.js.map +0 -1
  224. package/lib/cjs/bpComponents/BPButtonComponent.d.ts +0 -8
  225. package/lib/cjs/bpComponents/BPButtonComponent.js +0 -19
  226. package/lib/cjs/bpComponents/BPButtonComponent.js.map +0 -1
  227. package/lib/cjs/bpComponents/BPColorInputComponent.d.ts +0 -24
  228. package/lib/cjs/bpComponents/BPColorInputComponent.js +0 -127
  229. package/lib/cjs/bpComponents/BPColorInputComponent.js.map +0 -1
  230. package/lib/cjs/bpComponents/BPComponent.d.ts +0 -29
  231. package/lib/cjs/bpComponents/BPComponent.js +0 -59
  232. package/lib/cjs/bpComponents/BPComponent.js.map +0 -1
  233. package/lib/cjs/bpComponents/BPContainerComponent.d.ts +0 -21
  234. package/lib/cjs/bpComponents/BPContainerComponent.js +0 -54
  235. package/lib/cjs/bpComponents/BPContainerComponent.js.map +0 -1
  236. package/lib/cjs/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  237. package/lib/cjs/bpComponents/BPDropdownInputComponent.js +0 -43
  238. package/lib/cjs/bpComponents/BPDropdownInputComponent.js.map +0 -1
  239. package/lib/cjs/bpComponents/BPFileComponent.d.ts +0 -25
  240. package/lib/cjs/bpComponents/BPFileComponent.js +0 -69
  241. package/lib/cjs/bpComponents/BPFileComponent.js.map +0 -1
  242. package/lib/cjs/bpComponents/BPFolderComponent.d.ts +0 -16
  243. package/lib/cjs/bpComponents/BPFolderComponent.js +0 -39
  244. package/lib/cjs/bpComponents/BPFolderComponent.js.map +0 -1
  245. package/lib/cjs/bpComponents/BPInputComponent.d.ts +0 -11
  246. package/lib/cjs/bpComponents/BPInputComponent.js +0 -34
  247. package/lib/cjs/bpComponents/BPInputComponent.js.map +0 -1
  248. package/lib/cjs/bpComponents/BPLabelledComponent.d.ts +0 -8
  249. package/lib/cjs/bpComponents/BPLabelledComponent.js +0 -14
  250. package/lib/cjs/bpComponents/BPLabelledComponent.js.map +0 -1
  251. package/lib/cjs/bpComponents/BPNumberInputComponent.d.ts +0 -10
  252. package/lib/cjs/bpComponents/BPNumberInputComponent.js +0 -40
  253. package/lib/cjs/bpComponents/BPNumberInputComponent.js.map +0 -1
  254. package/lib/cjs/bpComponents/BPPanelComponent.d.ts +0 -16
  255. package/lib/cjs/bpComponents/BPPanelComponent.js +0 -35
  256. package/lib/cjs/bpComponents/BPPanelComponent.js.map +0 -1
  257. package/lib/cjs/bpComponents/BPSliderInputComponent.d.ts +0 -14
  258. package/lib/cjs/bpComponents/BPSliderInputComponent.js +0 -41
  259. package/lib/cjs/bpComponents/BPSliderInputComponent.js.map +0 -1
  260. package/lib/cjs/bpComponents/BPTextInputComponent.d.ts +0 -7
  261. package/lib/cjs/bpComponents/BPTextInputComponent.js +0 -19
  262. package/lib/cjs/bpComponents/BPTextInputComponent.js.map +0 -1
  263. package/lib/cjs/bpComponents/BPToggleInputComponent.d.ts +0 -8
  264. package/lib/cjs/bpComponents/BPToggleInputComponent.js +0 -22
  265. package/lib/cjs/bpComponents/BPToggleInputComponent.js.map +0 -1
  266. package/lib/cjs/bpComponents/BPTreeComponent.d.ts +0 -36
  267. package/lib/cjs/bpComponents/BPTreeComponent.js +0 -131
  268. package/lib/cjs/bpComponents/BPTreeComponent.js.map +0 -1
  269. package/lib/cjs/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  270. package/lib/cjs/bpComponents/BPTreeFolderComponent.js +0 -40
  271. package/lib/cjs/bpComponents/BPTreeFolderComponent.js.map +0 -1
  272. package/lib/cjs/bpComponents/BPValueComponent.d.ts +0 -16
  273. package/lib/cjs/bpComponents/BPValueComponent.js +0 -46
  274. package/lib/cjs/bpComponents/BPValueComponent.js.map +0 -1
  275. package/lib/cjs/bpComponents/BPVectorInputComponent.d.ts +0 -19
  276. package/lib/cjs/bpComponents/BPVectorInputComponent.js +0 -110
  277. package/lib/cjs/bpComponents/BPVectorInputComponent.js.map +0 -1
  278. package/lib/cjs/components/ConfigurationPanelComponent.d.ts +0 -4
  279. package/lib/cjs/components/ConfigurationPanelComponent.js +0 -30
  280. package/lib/cjs/components/ConfigurationPanelComponent.js.map +0 -1
  281. package/lib/cjs/components/DialogContext.d.ts +0 -48
  282. package/lib/cjs/components/DialogContext.js +0 -79
  283. package/lib/cjs/components/DialogContext.js.map +0 -1
  284. package/lib/cjs/components/DraggableIcon.d.ts +0 -19
  285. package/lib/cjs/components/DraggableIcon.js +0 -70
  286. package/lib/cjs/components/DraggableIcon.js.map +0 -1
  287. package/lib/cjs/components/ExtendedNumericInput.d.ts +0 -25
  288. package/lib/cjs/components/ExtendedNumericInput.js +0 -174
  289. package/lib/cjs/components/ExtendedNumericInput.js.map +0 -1
  290. package/lib/cjs/components/FileComponent.d.ts +0 -7
  291. package/lib/cjs/components/FileComponent.js +0 -49
  292. package/lib/cjs/components/FileComponent.js.map +0 -1
  293. package/lib/cjs/components/FormGroupComponent.d.ts +0 -6
  294. package/lib/cjs/components/FormGroupComponent.js +0 -16
  295. package/lib/cjs/components/FormGroupComponent.js.map +0 -1
  296. package/lib/cjs/components/InspectorStackComponent.d.ts +0 -4
  297. package/lib/cjs/components/InspectorStackComponent.js +0 -27
  298. package/lib/cjs/components/InspectorStackComponent.js.map +0 -1
  299. package/lib/cjs/components/VisualStyleContext.d.ts +0 -119
  300. package/lib/cjs/components/VisualStyleContext.js +0 -60
  301. package/lib/cjs/components/VisualStyleContext.js.map +0 -1
  302. package/lib/cjs/components/bpIconWrapper.d.ts +0 -2
  303. package/lib/cjs/components/bpIconWrapper.js +0 -9
  304. package/lib/cjs/components/bpIconWrapper.js.map +0 -1
  305. package/lib/cjs/components/loadingState.d.ts +0 -4
  306. package/lib/cjs/components/loadingState.js +0 -16
  307. package/lib/cjs/components/loadingState.js.map +0 -1
  308. package/lib/cjs/components/variableIcons.d.ts +0 -40
  309. package/lib/cjs/components/variableIcons.js +0 -46
  310. package/lib/cjs/components/variableIcons.js.map +0 -1
  311. package/lib/cjs/contexts.d.ts +0 -1
  312. package/lib/cjs/contexts.js +0 -3
  313. package/lib/cjs/contexts.js.map +0 -1
  314. package/lib/cjs/index.d.ts +0 -4
  315. package/lib/cjs/index.js +0 -9
  316. package/lib/cjs/index.js.map +0 -1
  317. package/lib/cjs/lib.d.ts +0 -32
  318. package/lib/cjs/lib.js +0 -49
  319. package/lib/cjs/lib.js.map +0 -1
  320. package/lib/cjs/threejs.d.ts +0 -2
  321. package/lib/cjs/threejs.js +0 -3
  322. package/lib/cjs/threejs.js.map +0 -1
  323. package/lib/esnext/ConfigObject.d.ts +0 -18
  324. package/lib/esnext/ConfigObject.js +0 -75
  325. package/lib/esnext/ConfigObject.js.map +0 -1
  326. package/lib/esnext/UiConfigRendererBlueprint.d.ts +0 -13
  327. package/lib/esnext/UiConfigRendererBlueprint.js +0 -52
  328. package/lib/esnext/UiConfigRendererBlueprint.js.map +0 -1
  329. package/lib/esnext/bpComponents/BPButtonComponent.d.ts +0 -8
  330. package/lib/esnext/bpComponents/BPButtonComponent.js +0 -15
  331. package/lib/esnext/bpComponents/BPButtonComponent.js.map +0 -1
  332. package/lib/esnext/bpComponents/BPColorInputComponent.d.ts +0 -24
  333. package/lib/esnext/bpComponents/BPColorInputComponent.js +0 -110
  334. package/lib/esnext/bpComponents/BPColorInputComponent.js.map +0 -1
  335. package/lib/esnext/bpComponents/BPComponent.d.ts +0 -29
  336. package/lib/esnext/bpComponents/BPComponent.js +0 -46
  337. package/lib/esnext/bpComponents/BPComponent.js.map +0 -1
  338. package/lib/esnext/bpComponents/BPContainerComponent.d.ts +0 -21
  339. package/lib/esnext/bpComponents/BPContainerComponent.js +0 -51
  340. package/lib/esnext/bpComponents/BPContainerComponent.js.map +0 -1
  341. package/lib/esnext/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  342. package/lib/esnext/bpComponents/BPDropdownInputComponent.js +0 -40
  343. package/lib/esnext/bpComponents/BPDropdownInputComponent.js.map +0 -1
  344. package/lib/esnext/bpComponents/BPFileComponent.d.ts +0 -25
  345. package/lib/esnext/bpComponents/BPFileComponent.js +0 -52
  346. package/lib/esnext/bpComponents/BPFileComponent.js.map +0 -1
  347. package/lib/esnext/bpComponents/BPFolderComponent.d.ts +0 -16
  348. package/lib/esnext/bpComponents/BPFolderComponent.js +0 -30
  349. package/lib/esnext/bpComponents/BPFolderComponent.js.map +0 -1
  350. package/lib/esnext/bpComponents/BPInputComponent.d.ts +0 -11
  351. package/lib/esnext/bpComponents/BPInputComponent.js +0 -19
  352. package/lib/esnext/bpComponents/BPInputComponent.js.map +0 -1
  353. package/lib/esnext/bpComponents/BPLabelledComponent.d.ts +0 -8
  354. package/lib/esnext/bpComponents/BPLabelledComponent.js +0 -13
  355. package/lib/esnext/bpComponents/BPLabelledComponent.js.map +0 -1
  356. package/lib/esnext/bpComponents/BPNumberInputComponent.d.ts +0 -10
  357. package/lib/esnext/bpComponents/BPNumberInputComponent.js +0 -21
  358. package/lib/esnext/bpComponents/BPNumberInputComponent.js.map +0 -1
  359. package/lib/esnext/bpComponents/BPPanelComponent.d.ts +0 -16
  360. package/lib/esnext/bpComponents/BPPanelComponent.js +0 -31
  361. package/lib/esnext/bpComponents/BPPanelComponent.js.map +0 -1
  362. package/lib/esnext/bpComponents/BPSliderInputComponent.d.ts +0 -14
  363. package/lib/esnext/bpComponents/BPSliderInputComponent.js +0 -39
  364. package/lib/esnext/bpComponents/BPSliderInputComponent.js.map +0 -1
  365. package/lib/esnext/bpComponents/BPTextInputComponent.d.ts +0 -7
  366. package/lib/esnext/bpComponents/BPTextInputComponent.js +0 -15
  367. package/lib/esnext/bpComponents/BPTextInputComponent.js.map +0 -1
  368. package/lib/esnext/bpComponents/BPToggleInputComponent.d.ts +0 -8
  369. package/lib/esnext/bpComponents/BPToggleInputComponent.js +0 -18
  370. package/lib/esnext/bpComponents/BPToggleInputComponent.js.map +0 -1
  371. package/lib/esnext/bpComponents/BPTreeComponent.d.ts +0 -36
  372. package/lib/esnext/bpComponents/BPTreeComponent.js +0 -111
  373. package/lib/esnext/bpComponents/BPTreeComponent.js.map +0 -1
  374. package/lib/esnext/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  375. package/lib/esnext/bpComponents/BPTreeFolderComponent.js +0 -23
  376. package/lib/esnext/bpComponents/BPTreeFolderComponent.js.map +0 -1
  377. package/lib/esnext/bpComponents/BPValueComponent.d.ts +0 -16
  378. package/lib/esnext/bpComponents/BPValueComponent.js +0 -29
  379. package/lib/esnext/bpComponents/BPValueComponent.js.map +0 -1
  380. package/lib/esnext/bpComponents/BPVectorInputComponent.d.ts +0 -19
  381. package/lib/esnext/bpComponents/BPVectorInputComponent.js +0 -93
  382. package/lib/esnext/bpComponents/BPVectorInputComponent.js.map +0 -1
  383. package/lib/esnext/components/ConfigurationPanelComponent.d.ts +0 -4
  384. package/lib/esnext/components/ConfigurationPanelComponent.js +0 -26
  385. package/lib/esnext/components/ConfigurationPanelComponent.js.map +0 -1
  386. package/lib/esnext/components/DialogContext.d.ts +0 -48
  387. package/lib/esnext/components/DialogContext.js +0 -55
  388. package/lib/esnext/components/DialogContext.js.map +0 -1
  389. package/lib/esnext/components/DraggableIcon.d.ts +0 -19
  390. package/lib/esnext/components/DraggableIcon.js +0 -62
  391. package/lib/esnext/components/DraggableIcon.js.map +0 -1
  392. package/lib/esnext/components/ExtendedNumericInput.d.ts +0 -25
  393. package/lib/esnext/components/ExtendedNumericInput.js +0 -151
  394. package/lib/esnext/components/ExtendedNumericInput.js.map +0 -1
  395. package/lib/esnext/components/FileComponent.d.ts +0 -7
  396. package/lib/esnext/components/FileComponent.js +0 -42
  397. package/lib/esnext/components/FileComponent.js.map +0 -1
  398. package/lib/esnext/components/FormGroupComponent.d.ts +0 -6
  399. package/lib/esnext/components/FormGroupComponent.js +0 -11
  400. package/lib/esnext/components/FormGroupComponent.js.map +0 -1
  401. package/lib/esnext/components/InspectorStackComponent.d.ts +0 -4
  402. package/lib/esnext/components/InspectorStackComponent.js +0 -23
  403. package/lib/esnext/components/InspectorStackComponent.js.map +0 -1
  404. package/lib/esnext/components/VisualStyleContext.d.ts +0 -119
  405. package/lib/esnext/components/VisualStyleContext.js +0 -53
  406. package/lib/esnext/components/VisualStyleContext.js.map +0 -1
  407. package/lib/esnext/components/bpIconWrapper.d.ts +0 -2
  408. package/lib/esnext/components/bpIconWrapper.js +0 -5
  409. package/lib/esnext/components/bpIconWrapper.js.map +0 -1
  410. package/lib/esnext/components/loadingState.d.ts +0 -4
  411. package/lib/esnext/components/loadingState.js +0 -12
  412. package/lib/esnext/components/loadingState.js.map +0 -1
  413. package/lib/esnext/components/variableIcons.d.ts +0 -40
  414. package/lib/esnext/components/variableIcons.js +0 -43
  415. package/lib/esnext/components/variableIcons.js.map +0 -1
  416. package/lib/esnext/contexts.d.ts +0 -1
  417. package/lib/esnext/contexts.js +0 -2
  418. package/lib/esnext/contexts.js.map +0 -1
  419. package/lib/esnext/index.d.ts +0 -4
  420. package/lib/esnext/index.js +0 -5
  421. package/lib/esnext/index.js.map +0 -1
  422. package/lib/esnext/lib.d.ts +0 -32
  423. package/lib/esnext/lib.js +0 -33
  424. package/lib/esnext/lib.js.map +0 -1
  425. package/lib/esnext/threejs.d.ts +0 -2
  426. package/lib/esnext/threejs.js +0 -2
  427. package/lib/esnext/threejs.js.map +0 -1
@@ -1,30 +1,52 @@
1
1
  import {BPComponentProps, UiConfigRendererContextType} from "./BPComponent";
2
2
  import {BPLabelledComponent, BPLabelledComponentState} from "./BPLabelledComponent";
3
+ import {equalsPrimitive, PrimitiveVal} from "uiconfig.js";
3
4
 
4
5
  export type BPValueComponentState<TStateValue> = BPLabelledComponentState & {
5
6
  value: TStateValue
6
7
  }
7
8
 
8
- export abstract class BPValueComponent<TValue, TState extends BPValueComponentState<TStateValue>, TStateValue> extends BPLabelledComponent<TValue, TState> {
9
+ export abstract class BPValueComponent<TValue extends PrimitiveVal, TState extends BPValueComponentState<TStateValue>, TStateValue> extends BPLabelledComponent<TValue, TState> {
9
10
 
10
11
  protected constructor(props: BPComponentProps<TValue>, context: UiConfigRendererContextType, state: TState) {
11
12
  super(props, context, state);
13
+ this.setValue = this.setValue.bind(this)
12
14
  }
13
15
 
14
16
  abstract convertValueToState(value: TValue, state: TState): TState;
15
17
 
16
18
  abstract convertStateToValue(state: TState): Promise<TValue>;
17
19
 
20
+ // this should be state.value ideally which is initialValue in parent component
21
+ // a separate variable is made here so that it can be undefined in the beginning.
22
+ private _lastValRef: TValue | undefined
23
+
18
24
  getUpdatedState(state: TState): TState {
19
- const val = this.context.methods.getValue(this.props.config)
25
+ const val = this.context.methods.getValue<TValue>(this.props.config, this._lastValRef, false) // this has to be false otherwise the children component will rerender everytime. like sliders
26
+ if(this._lastValRef !== undefined && val !== undefined){
27
+ // changed from outside, so we need to update the children
28
+ this.keyVersion++
29
+ }
30
+ this._lastValRef = val
31
+ // console.log('getUpdatedState', val);
20
32
  state = super.getUpdatedState(state)
21
- return val ? this.convertValueToState(val, state) : state
33
+ state = val !== undefined ? this.convertValueToState(val, state) : state
34
+ return state
22
35
  }
23
36
 
24
37
  protected _previousLast = false
25
38
 
39
+ // is this really required?
26
40
  doesNeedRefresh(state: TState, _last?: boolean): boolean {
27
- return this._previousLast !== _last || this.state.value !== state.value
41
+ const needsRefresh = this._previousLast !== _last || !equals(this.state.value, state.value);
42
+ this._previousLast = _last ?? true;
43
+ // console.log('doesNeedRefresh', needsRefresh, this.state.value, state.value);
44
+ return needsRefresh;
45
+ }
46
+
47
+ setState(state: TState, callback?: () => void) {
48
+ // this.keyVersion++ // dont in getUpdatedState
49
+ super.setState(state, callback);
28
50
  }
29
51
 
30
52
  async setValue(value: TStateValue, last?: boolean) {
@@ -39,8 +61,13 @@ export abstract class BPValueComponent<TValue, TState extends BPValueComponentSt
39
61
  return
40
62
  }
41
63
  let val = await this.convertStateToValue(state)
64
+ this._lastValRef = val
42
65
  await this.context.methods.setValue(this.props.config, val, {last}, this.forceOnChange)
43
66
  await this.refreshConfigState(state)
44
67
  }
45
68
 
46
69
  }
70
+
71
+ function equals(a: any, b: any){
72
+ return equalsPrimitive(a, b)
73
+ }
@@ -6,12 +6,14 @@ import type {Vector2, Vector3, Vector4} from "three";
6
6
  import {ExtendedNumericInput} from "../components/ExtendedNumericInput";
7
7
  import {wIcon3, xIcon3, yIcon3, zIcon3} from "../components/variableIcons";
8
8
  import {getOrCall} from 'ts-browser-helpers'
9
+ import {getNumberTransformFunctions} from "./GetNumberTransformFunctions";
9
10
 
10
11
  export type BPVectorComponentState = BPValueComponentState<Vector2|Vector3|Vector4> & {
11
12
  min: number,
12
13
  max: number,
13
14
  step: number,
14
15
  components: 1|2|3|4,
16
+ unit?: string,
15
17
  }
16
18
 
17
19
  export class BPVectorInputComponent extends BPInputComponent<Vector2|Vector3|Vector4, BPVectorComponentState> {
@@ -73,21 +75,34 @@ export class BPVectorInputComponent extends BPInputComponent<Vector2|Vector3|Vec
73
75
  let ret = []
74
76
  if (!this.state.value) return <></>;
75
77
 
78
+ const unit = this.props.config.unit as string|undefined; // todo add to uiconfig, getOrCall
79
+ const unitType = this.props.config.unitType as string|undefined; // todo add to uiconfig, getOrCall
80
+ const targetUnit = this.state.unit || unit
81
+ const transformValue = getNumberTransformFunctions(unit, unitType, targetUnit);
82
+
83
+ const props = {
84
+ disabled: this.state.disabled,
85
+ readOnly: this.state.readOnly,
86
+ min: this.state.min,
87
+ max: this.state.max,
88
+ stepSize: this.state.step,
89
+ minorStepSize: this.state.step / 10,
90
+ majorStepSize: this.state.step * 10,
91
+ buttonPosition: "none",
92
+ ...transformValue,
93
+ } as const
94
+
76
95
  // console.warn(this.state.value)
77
96
  if (this.state.components > 0) {
78
97
  const x = (
79
98
  <ExtendedNumericInput
80
99
  style={{maxWidth: "8rem", minWidth: "2rem"}}
81
- disabled={this.state.disabled} readOnly={this.state.readOnly}
82
100
  // defaultValue={state}
83
101
  leftIcon={xIcon3}
84
102
  value={this.state.value.x}
85
103
  key={this.props.config.uuid + '_x'}
86
104
  ref={this._inputs[0]}
87
- min={this.state.min} max={this.state.max} stepSize={this.state.step}
88
- minorStepSize={this.state.step / 10}
89
- majorStepSize={this.state.step * 10}
90
- buttonPosition="none"
105
+ {...props}
91
106
  onChange2={(v, last) => {
92
107
  this.state.value.x = v
93
108
  this.setValue(this.state.value, last) // todo: does need refresh?
@@ -100,15 +115,11 @@ export class BPVectorInputComponent extends BPInputComponent<Vector2|Vector3|Vec
100
115
  <ExtendedNumericInput
101
116
  style={{maxWidth: "8rem", minWidth: "2rem"}}
102
117
  // defaultValue={state}
103
- disabled={this.state.disabled} readOnly={this.state.readOnly}
104
118
  value={this.state.value.y}
105
119
  leftIcon={yIcon3}
106
120
  key={this.props.config.uuid + '_y'}
107
121
  ref={this._inputs[1]}
108
- min={this.state.min} max={this.state.max} stepSize={this.state.step}
109
- minorStepSize={this.state.step / 10}
110
- majorStepSize={this.state.step * 10}
111
- buttonPosition="none"
122
+ {...props}
112
123
  onChange2={(v, last) => {
113
124
  this.state.value.y = v
114
125
  this.setValue(this.state.value, last) // todo: does need refresh?
@@ -121,15 +132,11 @@ export class BPVectorInputComponent extends BPInputComponent<Vector2|Vector3|Vec
121
132
  <ExtendedNumericInput
122
133
  style={{maxWidth: "8rem", minWidth: "2rem"}}
123
134
  // defaultValue={state}
124
- disabled={this.state.disabled} readOnly={this.state.readOnly}
125
135
  value={(this.state.value as Vector3|Vector4).z}
126
136
  key={this.props.config.uuid + '_z'}
127
137
  leftIcon={zIcon3}
128
- min={this.state.min} max={this.state.max} stepSize={this.state.step}
129
138
  ref={this._inputs[2]}
130
- minorStepSize={this.state.step / 10}
131
- majorStepSize={this.state.step * 10}
132
- buttonPosition="none"
139
+ {...props}
133
140
  onChange2={(v, last) => {
134
141
  (this.state.value as Vector3 | Vector4).z = v
135
142
  this.setValue(this.state.value, last) // todo: does need refresh?
@@ -142,15 +149,11 @@ export class BPVectorInputComponent extends BPInputComponent<Vector2|Vector3|Vec
142
149
  <ExtendedNumericInput
143
150
  style={{maxWidth: "8rem", minWidth: "2rem"}}
144
151
  // defaultValue={state}
145
- disabled={this.state.disabled} readOnly={this.state.readOnly}
146
152
  value={(this.state.value as Vector4).w}
147
153
  key={this.props.config.uuid + '_w'}
148
154
  leftIcon={wIcon3}
149
155
  ref={this._inputs[3]}
150
- min={this.state.min} max={this.state.max} stepSize={this.state.step}
151
- minorStepSize={this.state.step / 10}
152
- majorStepSize={this.state.step * 10}
153
- buttonPosition="none"
156
+ {...props}
154
157
  onChange2={(v, last) => {
155
158
  (this.state.value as Vector4).w = v
156
159
  this.setValue(this.state.value, last) // todo: does need refresh?
@@ -0,0 +1,14 @@
1
+ import {NumberUnits} from "./NumberUnits";
2
+
3
+ export function getNumberTransformFunctions(unit: string | undefined, unitType1: string | undefined, targetUnit: string | undefined) {
4
+ const unitType = unit ? Object.entries(NumberUnits).find(([k, v]) => !!v[unit] && (!unitType1 || k === unitType1)) : undefined
5
+ const target = targetUnit !== unit && unitType && targetUnit ? unitType[1][targetUnit] : undefined
6
+ const source = targetUnit !== unit && unitType && unit ? unitType[1][unit] : undefined
7
+ const transformValue = target && source ?
8
+ (v: number) => target.from(source.to(v)) :
9
+ undefined;
10
+ const invTransformValue = target && source ?
11
+ (v: number) => source.from(target.to(v)) :
12
+ undefined;
13
+ return {transformValue, invTransformValue};
14
+ }
@@ -0,0 +1,123 @@
1
+ export interface NumberUnit{
2
+ name: string;
3
+ symbol: string;
4
+ from: (value: number) => number;
5
+ to: (value: number) => number;
6
+ }
7
+ export const NumberUnits: Record<string, Record<string, NumberUnit>> = {
8
+ 'distance': {
9
+ 'm': {
10
+ 'name': 'Meters',
11
+ 'symbol': 'm',
12
+ from: (v: number) => v,
13
+ to: (v: number) => v,
14
+ },
15
+ 'cm': {
16
+ 'name': 'Centimeters',
17
+ 'symbol': 'cm',
18
+ from: (v: number) => v / 100,
19
+ to: (v: number) => v * 100,
20
+ },
21
+ 'mm': {
22
+ 'name': 'Millimeters',
23
+ 'symbol': 'mm',
24
+ from: (v: number) => v / 1000,
25
+ to: (v: number) => v * 1000,
26
+ },
27
+ 'in': {
28
+ 'name': 'Inches',
29
+ 'symbol': 'in',
30
+ from: (v: number) => v * 0.0254,
31
+ to: (v: number) => v / 0.0254,
32
+ },
33
+ 'ft': {
34
+ 'name': 'Feet',
35
+ 'symbol': 'ft',
36
+ from: (v: number) => v * 0.3048,
37
+ to: (v: number) => v / 0.3048,
38
+ },
39
+ 'km': {
40
+ 'name': 'Kilometers',
41
+ 'symbol': 'km',
42
+ from: (v: number) => v * 1000,
43
+ to: (v: number) => v / 1000,
44
+ },
45
+ 'mi': {
46
+ 'name': 'Miles',
47
+ 'symbol': 'mi',
48
+ from: (v: number) => v * 1609.34,
49
+ to: (v: number) => v / 1609.34,
50
+ },
51
+ },
52
+ 'angle': {
53
+ 'rad': {
54
+ 'name': 'Radians',
55
+ 'symbol': 'rad',
56
+ from: (v: number) => v,
57
+ to: (v: number) => v,
58
+ },
59
+ 'deg': {
60
+ 'name': 'Degrees',
61
+ 'symbol': 'deg',
62
+ from: (v: number) => v * Math.PI / 180,
63
+ to: (v: number) => v * 180 / Math.PI,
64
+ },
65
+ 'grad': {
66
+ 'name': 'Gradians',
67
+ 'symbol': 'grad',
68
+ from: (v: number) => v * Math.PI / 200,
69
+ to: (v: number) => v * 200 / Math.PI,
70
+ },
71
+ },
72
+ 'temperature': {
73
+ 'celsius': {
74
+ 'name': 'Celsius',
75
+ 'symbol': '°C',
76
+ from: (v: number) => v,
77
+ to: (v: number) => v,
78
+ },
79
+ 'fahrenheit': {
80
+ 'name': 'Fahrenheit',
81
+ 'symbol': '°F',
82
+ from: (v: number) => (v - 32) * 5 / 9,
83
+ to: (v: number) => v * 9 / 5 + 32,
84
+ },
85
+ 'kelvin': {
86
+ 'name': 'Kelvin',
87
+ 'symbol': 'K',
88
+ from: (v: number) => v - 273.15,
89
+ to: (v: number) => v + 273.15,
90
+ },
91
+ },
92
+ 'pixel': {
93
+ 'px': {
94
+ 'name': 'Pixels',
95
+ 'symbol': 'px',
96
+ from: (v: number) => v,
97
+ to: (v: number) => v,
98
+ },
99
+ 'dp': {
100
+ 'name': 'Density-independent Pixels',
101
+ 'symbol': 'dp',
102
+ from: (v: number) => v * window.devicePixelRatio,
103
+ to: (v: number) => v / window.devicePixelRatio,
104
+ },
105
+ // todo
106
+ // 'sp': {
107
+ // 'name': 'Scale-independent Pixels',
108
+ // 'symbol': 'sp',
109
+ // from: (v: number) => {
110
+ // const fontSize = parseFloat(getComputedStyle(document.documentElement).fontSize) / 16;
111
+ // return v * fontSize * window.devicePixelRatio;
112
+ // }
113
+ // },
114
+ // 'rem': {
115
+ // 'name': 'Root em',
116
+ // 'symbol': 'rem',
117
+ // from: (v: number) => {
118
+ // const fontSize = parseFloat(getComputedStyle(document.documentElement).fontSize) / 16;
119
+ // return v * fontSize * window.devicePixelRatio;
120
+ // }
121
+ // }
122
+ }
123
+ }
@@ -8,6 +8,26 @@ import {OverlayToaster, Toaster} from "@blueprintjs/core";
8
8
 
9
9
  // hack for blueprint 5, remove in blueprint 6
10
10
  export const AppToasterRef = {ref: null as Toaster | null}
11
+
12
+ /**
13
+ * Usage
14
+ * ```
15
+ * AppToaster().show({
16
+ * message: 'Message',
17
+ * intent: 'primary',
18
+ * icon: "tick",
19
+ * isCloseButtonShown: false,
20
+ * // action: {
21
+ * // onClick: () => {},
22
+ * // text: "Cancel",
23
+ * // },
24
+ * timeout: 5000,
25
+ * }, 'toast-id')
26
+ *
27
+ * AppToaster().dismiss('toast-id')
28
+ * ```
29
+ *
30
+ */
11
31
  export const AppToaster = ()=>AppToasterRef.ref ?? {show: ()=>{}, dismiss: ()=>{}} as any as Toaster
12
32
 
13
33
  /**
@@ -31,6 +31,7 @@ export function ConfigurationPanelComponent({config}: { config: UiObjectConfig<a
31
31
  } as Panel<{ config: UiObjectConfig }>
32
32
  }, [config])
33
33
  const [currentPanelStack, setCurrentPanelStack] = React.useState<Array<Panel<{ config: UiObjectConfig }>>>([stackItem()]);
34
+ const [isMinimized, setIsMinimized] = React.useState(false);
34
35
 
35
36
  React.useEffect(() => {
36
37
  setCurrentPanelStack([stackItem()])
@@ -40,7 +41,7 @@ export function ConfigurationPanelComponent({config}: { config: UiObjectConfig<a
40
41
 
41
42
  return (
42
43
  <VisualStyleContext.Provider value={{...defaultVisualStyle, ...style}}>
43
- <Card id="bpInspectorCard" className={style.darkMode?Classes.DARK:""} style={{height: "100%", flexGrow: "1", position: "relative"}}>
44
+ <Card className={`bpInspectorCard ${style.darkMode?Classes.DARK:""}`} style={{display: isMinimized ? 'none' : 'block'}}>
44
45
  <PanelStack2 className="inspectorPanelStack"
45
46
  showPanelHeader={true}
46
47
  renderActivePanelOnly={true}
@@ -48,16 +49,26 @@ export function ConfigurationPanelComponent({config}: { config: UiObjectConfig<a
48
49
  onClose={() => setCurrentPanelStack(currentPanelStack.slice(0, -1))}
49
50
  stack={currentPanelStack}/>
50
51
  <div className={"bpPanelStackHeaderOverlay " + Classes.PANEL_STACK2_HEADER}>
51
- <Popover targetProps={{style: {position: "absolute", right: "5px"}}}
52
+ <Popover targetProps={{style: {position: "absolute", right: "30px"}}}
52
53
  minimal={true}
53
54
  targetTagName={"div"}
54
55
  content={
55
56
  <ThemeSettingsMenuComponent/>
56
57
  } placement="bottom">
57
- <Button icon="cog" small minimal text="" />
58
+ <Button icon="more" small minimal text="" />
58
59
  </Popover>
60
+ <Button icon="minus" small minimal text="" style={{position: "absolute", right: "5px"}}
61
+ onClick={() => {
62
+ setIsMinimized(!isMinimized);
63
+ }}
64
+ />
59
65
  </div>
60
66
  </Card>
67
+ {isMinimized && <Button icon="cog" small text="Configuration" style={{position: "absolute", right: "5px"}}
68
+ onClick={() => {
69
+ setIsMinimized(!isMinimized);
70
+ }}
71
+ />}
61
72
  </VisualStyleContext.Provider>
62
73
  )
63
74
  }
@@ -23,10 +23,20 @@ export function setupDialog(){
23
23
  setDialog({...dialog, isOpen: true, ...d})
24
24
  }, [dialog, setDialog])
25
25
  const close = useCallback(()=>setDialog({...dialog, isOpen: false}), [dialog, setDialog])
26
- return {dialog, open, close, setDialog}
26
+ const setDialogState = useCallback((state: any)=>{
27
+ setDialog({...dialog, state})
28
+ }, [dialog, setDialog])
29
+ return {dialog, open, close, setDialog, state: dialog.state, setState: setDialogState}
27
30
  }
28
- export const DialogContext = createContext<{dialog: DialogStateType, open: (d: Partial<DialogStateType>)=>void, close: ()=>void, setDialog: Dispatch<SetStateAction<DialogStateType>>}>(
29
- {dialog: defaultDialogContext, open: ()=>{}, close: ()=>{}, setDialog: ()=>{}}
31
+ export const DialogContext = createContext<{
32
+ dialog: DialogStateType,
33
+ open: (d: Partial<DialogStateType>)=>void,
34
+ close: ()=>void,
35
+ setDialog: Dispatch<SetStateAction<DialogStateType>>,
36
+ setState: Dispatch<SetStateAction<any>>,
37
+ state: any
38
+ }>(
39
+ {dialog: defaultDialogContext, open: ()=>{}, close: ()=>{}, setDialog: ()=>{}, setState: ()=>{}, state: {}}
30
40
  )
31
41
  export const useDialog = () => useContext(DialogContext)
32
42
 
@@ -48,6 +58,21 @@ export function DialogComponent(){
48
58
  </Dialog>)
49
59
  }
50
60
 
61
+ interface DialogPromptState {
62
+ value: string,
63
+ intent: Intent,
64
+ helperText: string,
65
+ }
66
+ interface DialogPromptProps extends Partial<DialogStateType>{
67
+ closeButtonText?: string,
68
+ submitButtonText?: string,
69
+ message?: string,
70
+ placeholder?: string,
71
+ value?: string,
72
+ showInput?: boolean,
73
+ onClose?: (value: string)=>boolean|undefined|Promise<boolean|undefined>, // does not close if false
74
+ onSubmit?: (value: string)=>boolean|undefined|any|Promise<boolean|undefined|any>, // does not close if false
75
+ }
51
76
  /**
52
77
  * Usage:
53
78
  * ```tsx
@@ -66,9 +91,6 @@ export function DialogComponent(){
66
91
  */
67
92
  export function useDialogPrompt(){
68
93
  const {open, close} = useDialog()
69
- const {loadingState, updateLoading} = useLoadingState()
70
- const [intent, setIntent] = useState<Intent>(Intent.NONE)
71
- const [helperText, setHelperText] = useState('')
72
94
  const prompt = useCallback(({
73
95
  closeButtonText = 'Close',
74
96
  submitButtonText = 'Okay',
@@ -77,74 +99,112 @@ export function useDialogPrompt(){
77
99
  value = '',
78
100
  showInput = true,
79
101
  onClose, onSubmit,
80
- ...props}: Partial<DialogStateType> &
81
- {
82
- closeButtonText?: string,
83
- submitButtonText?: string,
84
- message?: string,
85
- placeholder?: string,
86
- value?: string,
87
- showInput?: boolean,
88
- onClose?: (value: string)=>boolean|undefined|Promise<boolean|undefined>, // does not close if false
89
- onSubmit?: (value: string)=>boolean|undefined|any|Promise<boolean|undefined|any>, // does not close if false
90
- }) => {
102
+ ...props}: DialogPromptProps) => {
91
103
  return new Promise<string|null>((resolve)=>{
92
- const state = {value}
93
- const doClose = async()=> {
94
- if (onClose && (await onClose(state.value)) !== false) return
95
- close()
96
- resolve(null)
97
- }
98
- const doSubmit = async()=> {
99
- if (onSubmit) {
100
- const res = await onSubmit(state.value)
101
- if(res.error){
102
- setIntent(Intent.DANGER)
103
- setHelperText(res.error)
104
- }
105
- if(res !== false) return
106
- }
107
- close()
108
- resolve(state.value)
109
- }
110
104
  open({
111
105
  canClose: false,
112
106
  ...props,
113
- state,
107
+ state: {
108
+ value,
109
+ intent: Intent.NONE,
110
+ helperText: '',
111
+ } as DialogPromptState,
114
112
  content: (
115
- <FormGroup
116
- helperText={helperText||undefined}
117
- intent={intent}
118
- label={message}
119
- labelFor="dialog-prompt-text-input"
120
- >
121
- <InputGroup
122
- intent={intent}
123
- id="dialog-prompt-text-input"
124
- placeholder={placeholder}
125
- defaultValue={state.value}
126
- style={{display: showInput ? 'block' : 'none'}}
127
- onChange={(e: any) => {
128
- state.value = e.target.value
129
- if(helperText) setHelperText('')
130
- if(intent !== Intent.NONE) setIntent(Intent.NONE)
131
- }} // todo: submit on enter
132
- />
133
- </FormGroup>
113
+ <DialogPromptContent message={message} showInput={showInput} placeholder={placeholder}/>
134
114
  ),
135
115
  actions: (
136
- <>
137
- <Button text={closeButtonText}
138
- loading={loadingState['popup-close']}
139
- onClick={() => updateLoading('popup-close', doClose())}/>
140
- <Button text={submitButtonText}
141
- intent="primary"
142
- loading={loadingState['popup-submit']}
143
- onClick={() => updateLoading('popup-submit', doSubmit())}/>
144
- </>
116
+ <DialogPromptButtons closeButtonText={closeButtonText} submitButtonText={submitButtonText} onClose={onClose} onSubmit={onSubmit} resolve={resolve}/>
145
117
  ),
146
118
  })
147
119
  })
148
- }, [open, close, loadingState, updateLoading])
120
+ }, [open, close])
149
121
  return {prompt, close}
150
122
  }
123
+
124
+ function DialogPromptButtons({
125
+ closeButtonText = 'Close',
126
+ submitButtonText = 'Okay',
127
+ onClose, onSubmit, resolve
128
+ }:{
129
+ closeButtonText?: string,
130
+ submitButtonText?: string,
131
+ onClose?: (value: string)=>boolean|undefined|Promise<boolean|undefined>, // does not close if false
132
+ onSubmit?: (value: string)=>boolean|undefined|{error: string}|Promise<boolean|undefined|{error: string}>, // does not close if false
133
+ resolve: (value: string|null)=>void,
134
+ }){
135
+ const {loadingState, updateLoading} = useLoadingState()
136
+ const {state, setState, close} = useDialog() as {state: DialogPromptState, setState: Dispatch<SetStateAction<DialogPromptState>>, close: ()=>void}
137
+ const doClose = async()=> {
138
+ if (onClose && (await onClose(state.value)) !== true) return
139
+ close()
140
+ resolve(null)
141
+ }
142
+ const doSubmit = async()=> {
143
+ if (onSubmit) {
144
+ const res = await onSubmit(state.value)
145
+ if(res && (res as any).error){
146
+ setState({...state, intent: Intent.DANGER, helperText: (res as any).error})
147
+ }
148
+ if(res !== true) return
149
+ }
150
+ close()
151
+ resolve(state.value)
152
+ }
153
+ return <>
154
+ <Button text={closeButtonText}
155
+ loading={loadingState['popup-close']}
156
+ onClick={() => updateLoading('popup-close', doClose())}/>
157
+ <Button text={submitButtonText}
158
+ intent="primary"
159
+ data-dialog-submit="true"
160
+ loading={loadingState['popup-submit']}
161
+ onClick={() => updateLoading('popup-submit', doSubmit())}/>
162
+ </>
163
+
164
+ }
165
+
166
+ function DialogPromptContent({
167
+ message = 'Enter some text: ',
168
+ placeholder = '',
169
+ showInput = true,
170
+ }: {
171
+ message?: string,
172
+ placeholder?: string,
173
+ showInput?: boolean,
174
+ }){
175
+ const {state, setState} = useDialog() as {state: DialogPromptState, setState: Dispatch<SetStateAction<DialogPromptState>>}
176
+ const {loadingState} = useLoadingState()
177
+
178
+ const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
179
+ if (e.key === 'Enter') {
180
+ // Get the submit button using the data attribute and simulate a click
181
+ const submitButton = document.querySelector('[data-dialog-submit="true"]') as HTMLButtonElement;
182
+ if (submitButton && !loadingState['popup-submit']) {
183
+ submitButton.click();
184
+ }
185
+ }
186
+ }
187
+
188
+ return <FormGroup
189
+ helperText={state.helperText||undefined}
190
+ intent={state.intent}
191
+ label={message}
192
+ labelFor="dialog-prompt-text-input"
193
+ >
194
+ <InputGroup
195
+ intent={state.intent}
196
+ id="dialog-prompt-text-input"
197
+ placeholder={placeholder}
198
+ defaultValue={state.value}
199
+ style={{display: showInput ? 'block' : 'none'}}
200
+ autoFocus={true}
201
+ onChange={(e: any) => {
202
+ state.value = e.target.value
203
+ state.helperText = ''
204
+ state.intent = Intent.NONE
205
+ setState({...state})
206
+ }}
207
+ onKeyDown={handleKeyDown}
208
+ />
209
+ </FormGroup>
210
+ }
@@ -2,13 +2,13 @@ import * as React from "react";
2
2
  import {Icon, IconName, MaybeElement} from "@blueprintjs/core";
3
3
 
4
4
  // todo: bounds and stepsize
5
- export class DraggableIcon extends React.Component<{ icon: IconName | MaybeElement, size?: number, value: number, stepSize?: number, small?: boolean, onChange: (v: number, last?: boolean) => void }> {
5
+ export class DraggableIcon extends React.Component<{ icon: IconName | MaybeElement, size?: number, value: number, stepSize?: number, small?: boolean, disabled?: boolean, onChange: (v: number, last?: boolean) => void }> {
6
6
  private cursor = 'auto'
7
7
  private dragStartOffset = -Infinity
8
8
  private dragStartValue = -Infinity
9
9
  private lastValue = -Infinity
10
10
  private removeEvents = () => {
11
- if (isFinite(this.lastValue)) this.props.onChange(this.lastValue)
11
+ if (isFinite(this.lastValue) && !this.props.disabled) this.props.onChange(this.lastValue)
12
12
  this.lastValue = -Infinity
13
13
  this.dragStartOffset = -Infinity
14
14
  this.dragStartValue = -Infinity
@@ -42,7 +42,7 @@ export class DraggableIcon extends React.Component<{ icon: IconName | MaybeEleme
42
42
  let val = this.dragStartValue - off;
43
43
  // val = Math.min(props.max, Math.max(props.min, val)); // todo
44
44
  val = Number(val.toFixed(Math.max(1, -Math.log10(stepSize / 10)))); // clip decimal places depending on step size
45
- this.props.onChange(val, false)
45
+ if(!this.props.disabled) this.props.onChange(val, false)
46
46
  this.lastValue = val;
47
47
  }
48
48
  } else {
@@ -55,9 +55,10 @@ export class DraggableIcon extends React.Component<{ icon: IconName | MaybeEleme
55
55
  // const [dragging, setDragging] = React.useState(false)
56
56
 
57
57
  return (
58
- <div style={{cursor: 'ew-resize', marginLeft: "6px", marginRight: "6px", marginTop: this.props.small ? "3px" : "6px", marginBottom: this.props.small ? "3px" : "6px"}}
58
+ <div style={{cursor: !this.props.disabled ? 'ew-resize': 'auto', marginLeft: "6px", marginRight: "6px", marginTop: this.props.small ? "3px" : "6px", marginBottom: this.props.small ? "3px" : "6px"}}
59
59
  onMouseDown={(ev) => {
60
60
  // if(dragging) return
61
+ if(this.props.disabled) return
61
62
  this.dragStartOffset = ev.clientX
62
63
  this.dragStartValue = this.props.value
63
64
  ev.stopPropagation()
@@ -69,7 +70,7 @@ export class DraggableIcon extends React.Component<{ icon: IconName | MaybeEleme
69
70
  // setDragging(true)
70
71
  }}
71
72
  >
72
- <Icon icon={this.props.icon} size={this.props.size}/>
73
+ <Icon icon={this.props.icon} size={this.props.size} aria-disabled={this.props.disabled} />
73
74
  </div>
74
75
  )
75
76
  }