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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +27 -1
  2. package/dist/ConfigObject.d.ts +2 -1
  3. package/dist/UiConfigRendererBlueprint.d.ts +6 -4
  4. package/dist/allPaths-DtaFoocb.js +23 -0
  5. package/dist/{allPaths-EYaH0Usv.js.map → allPaths-DtaFoocb.js.map} +1 -1
  6. package/dist/{allPathsLoader-UVZ15qNf.js → allPathsLoader-B5mUU0us.js} +5 -5
  7. package/dist/{allPathsLoader-UVZ15qNf.js.map → allPathsLoader-B5mUU0us.js.map} +1 -1
  8. package/dist/bpComponents/BPButtonComponent.d.ts +1 -0
  9. package/dist/bpComponents/BPColorInputComponent.d.ts +1 -0
  10. package/dist/bpComponents/BPComponent.d.ts +3 -1
  11. package/dist/bpComponents/BPContainerComponent.d.ts +1 -1
  12. package/dist/bpComponents/BPFileComponent.d.ts +8 -5
  13. package/dist/bpComponents/BPFolderComponent.d.ts +9 -1
  14. package/dist/bpComponents/BPInputComponent.d.ts +2 -1
  15. package/dist/bpComponents/BPNumberInputComponent.d.ts +3 -1
  16. package/dist/bpComponents/BPSliderInputComponent.d.ts +1 -0
  17. package/dist/bpComponents/BPTreeComponent.d.ts +20 -10
  18. package/dist/bpComponents/BPValueComponent.d.ts +4 -1
  19. package/dist/bpComponents/BPVectorInputComponent.d.ts +1 -0
  20. package/dist/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
  21. package/dist/bpComponents/NumberUnits.d.ts +7 -0
  22. package/dist/components/DialogContext.d.ts +18 -10
  23. package/dist/components/DraggableIcon.d.ts +1 -0
  24. package/dist/components/ExtendedNumericInput.d.ts +13 -3
  25. package/dist/components/FileComponent.d.ts +3 -1
  26. package/dist/components/InspectorStackComponent.d.ts +2 -1
  27. package/dist/components/NumericInput.d.ts +76 -0
  28. package/dist/components/Tree2.d.ts +52 -0
  29. package/dist/components/TreeNode2.d.ts +43 -0
  30. package/dist/components/axesIcons.d.ts +7 -0
  31. package/dist/components/bpIconWrapper.d.ts +2 -2
  32. package/dist/components/iconMapping.d.ts +198 -0
  33. package/dist/components/loadingState.d.ts +4 -0
  34. package/dist/components/shapesIcons.d.ts +100 -0
  35. package/dist/components/treeTypes.d.ts +18 -0
  36. package/dist/index-BPcAfGYu.js +13583 -0
  37. package/dist/index-BPcAfGYu.js.map +1 -0
  38. package/dist/index-BsXaCp6n.js +671 -0
  39. package/dist/index-BsXaCp6n.js.map +1 -0
  40. package/dist/index-CIFbDQFr.js +671 -0
  41. package/dist/index-CIFbDQFr.js.map +1 -0
  42. package/dist/index.js +71 -36
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +3 -3
  45. package/dist/lib.d.ts +4 -1
  46. package/dist/{splitPathsBySizeLoader-GhF5umHk.js → splitPathsBySizeLoader-BGjtD8Dg.js} +6 -6
  47. package/dist/{splitPathsBySizeLoader-GhF5umHk.js.map → splitPathsBySizeLoader-BGjtD8Dg.js.map} +1 -1
  48. package/dist/utils.d.ts +1 -0
  49. package/docs/assets/highlight.css +45 -17
  50. package/docs/assets/navigation.js +1 -1
  51. package/docs/assets/search.js +1 -1
  52. package/docs/classes/UI.html +10 -5
  53. package/docs/classes/UiConfigRendererBlueprint.html +10 -5
  54. package/docs/index.html +16 -5
  55. package/lib/css/renderer.css +195 -23
  56. package/lib/css/renderer.css.map +1 -1
  57. package/lib/esm/ConfigObject.d.ts +2 -1
  58. package/lib/esm/ConfigObject.js +15 -9
  59. package/lib/esm/ConfigObject.js.map +1 -1
  60. package/lib/esm/UiConfigRendererBlueprint.d.ts +6 -4
  61. package/lib/esm/UiConfigRendererBlueprint.js +30 -17
  62. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  63. package/lib/esm/bpComponents/BPButtonComponent.d.ts +1 -0
  64. package/lib/esm/bpComponents/BPButtonComponent.js +4 -2
  65. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  66. package/lib/esm/bpComponents/BPColorInputComponent.d.ts +1 -0
  67. package/lib/esm/bpComponents/BPColorInputComponent.js +5 -3
  68. package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
  69. package/lib/esm/bpComponents/BPComponent.d.ts +3 -1
  70. package/lib/esm/bpComponents/BPComponent.js +15 -2
  71. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  72. package/lib/esm/bpComponents/BPContainerComponent.d.ts +1 -1
  73. package/lib/esm/bpComponents/BPContainerComponent.js +12 -2
  74. package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
  75. package/lib/esm/bpComponents/BPDropdownInputComponent.js +10 -5
  76. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  77. package/lib/esm/bpComponents/BPFileComponent.d.ts +8 -5
  78. package/lib/esm/bpComponents/BPFileComponent.js +18 -24
  79. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  80. package/lib/esm/bpComponents/BPFolderComponent.d.ts +9 -1
  81. package/lib/esm/bpComponents/BPFolderComponent.js +55 -12
  82. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  83. package/lib/esm/bpComponents/BPInputComponent.d.ts +2 -1
  84. package/lib/esm/bpComponents/BPInputComponent.js +2 -1
  85. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  86. package/lib/esm/bpComponents/BPLabelledComponent.js +2 -1
  87. package/lib/esm/bpComponents/BPLabelledComponent.js.map +1 -1
  88. package/lib/esm/bpComponents/BPNumberInputComponent.d.ts +3 -1
  89. package/lib/esm/bpComponents/BPNumberInputComponent.js +6 -1
  90. package/lib/esm/bpComponents/BPNumberInputComponent.js.map +1 -1
  91. package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
  92. package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
  93. package/lib/esm/bpComponents/BPSliderInputComponent.d.ts +1 -0
  94. package/lib/esm/bpComponents/BPSliderInputComponent.js +18 -6
  95. package/lib/esm/bpComponents/BPSliderInputComponent.js.map +1 -1
  96. package/lib/esm/bpComponents/BPTextInputComponent.js +1 -1
  97. package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
  98. package/lib/esm/bpComponents/BPToggleInputComponent.js +3 -2
  99. package/lib/esm/bpComponents/BPToggleInputComponent.js.map +1 -1
  100. package/lib/esm/bpComponents/BPTreeComponent.d.ts +20 -10
  101. package/lib/esm/bpComponents/BPTreeComponent.js +120 -26
  102. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  103. package/lib/esm/bpComponents/BPTreeFolderComponent.js +4 -3
  104. package/lib/esm/bpComponents/BPTreeFolderComponent.js.map +1 -1
  105. package/lib/esm/bpComponents/BPValueComponent.d.ts +4 -1
  106. package/lib/esm/bpComponents/BPValueComponent.js +19 -3
  107. package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
  108. package/lib/esm/bpComponents/BPVectorInputComponent.d.ts +1 -0
  109. package/lib/esm/bpComponents/BPVectorInputComponent.js +14 -8
  110. package/lib/esm/bpComponents/BPVectorInputComponent.js.map +1 -1
  111. package/lib/esm/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
  112. package/lib/esm/bpComponents/GetNumberTransformFunctions.js +14 -0
  113. package/lib/esm/bpComponents/GetNumberTransformFunctions.js.map +1 -0
  114. package/lib/esm/bpComponents/NumberUnits.d.ts +7 -0
  115. package/lib/esm/bpComponents/NumberUnits.js +101 -0
  116. package/lib/esm/bpComponents/NumberUnits.js.map +1 -0
  117. package/lib/esm/components/AppToaster.js.map +1 -1
  118. package/lib/esm/components/ConfigurationPanelComponent.js +6 -1
  119. package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
  120. package/lib/esm/components/DialogContext.d.ts +18 -10
  121. package/lib/esm/components/DialogContext.js +52 -33
  122. package/lib/esm/components/DialogContext.js.map +1 -1
  123. package/lib/esm/components/DraggableIcon.d.ts +1 -0
  124. package/lib/esm/components/DraggableIcon.js +7 -4
  125. package/lib/esm/components/DraggableIcon.js.map +1 -1
  126. package/lib/esm/components/ExtendedNumericInput.d.ts +13 -3
  127. package/lib/esm/components/ExtendedNumericInput.js +63 -18
  128. package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
  129. package/lib/esm/components/FileComponent.d.ts +3 -1
  130. package/lib/esm/components/FileComponent.js +19 -19
  131. package/lib/esm/components/FileComponent.js.map +1 -1
  132. package/lib/esm/components/InspectorStackComponent.d.ts +2 -1
  133. package/lib/esm/components/InspectorStackComponent.js +2 -2
  134. package/lib/esm/components/InspectorStackComponent.js.map +1 -1
  135. package/lib/esm/components/NumericInput.d.ts +76 -0
  136. package/lib/esm/components/NumericInput.js +301 -0
  137. package/lib/esm/components/NumericInput.js.map +1 -0
  138. package/lib/esm/components/Tree2.d.ts +52 -0
  139. package/lib/esm/components/Tree2.js +177 -0
  140. package/lib/esm/components/Tree2.js.map +1 -0
  141. package/lib/esm/components/TreeNode2.d.ts +43 -0
  142. package/lib/esm/components/TreeNode2.js +111 -0
  143. package/lib/esm/components/TreeNode2.js.map +1 -0
  144. package/lib/esm/components/VisualStyleContext.js +9 -3
  145. package/lib/esm/components/VisualStyleContext.js.map +1 -1
  146. package/lib/esm/components/axesIcons.d.ts +7 -0
  147. package/lib/esm/components/axesIcons.js +10 -0
  148. package/lib/esm/components/axesIcons.js.map +1 -0
  149. package/lib/esm/components/bpIconWrapper.d.ts +2 -2
  150. package/lib/esm/components/bpIconWrapper.js +2 -2
  151. package/lib/esm/components/bpIconWrapper.js.map +1 -1
  152. package/lib/esm/components/iconMapping.d.ts +198 -0
  153. package/lib/esm/components/iconMapping.js +202 -0
  154. package/lib/esm/components/iconMapping.js.map +1 -0
  155. package/lib/esm/components/loadingState.d.ts +4 -0
  156. package/lib/esm/components/loadingState.js +10 -0
  157. package/lib/esm/components/loadingState.js.map +1 -1
  158. package/lib/esm/components/shapesIcons.d.ts +100 -0
  159. package/lib/esm/components/shapesIcons.js +102 -0
  160. package/lib/esm/components/shapesIcons.js.map +1 -0
  161. package/lib/esm/components/treeTypes.d.ts +18 -0
  162. package/lib/esm/components/treeTypes.js +2 -0
  163. package/lib/esm/components/treeTypes.js.map +1 -0
  164. package/lib/esm/lib.d.ts +4 -1
  165. package/lib/esm/lib.js +4 -1
  166. package/lib/esm/lib.js.map +1 -1
  167. package/lib/esm/renderer.css.js +1 -0
  168. package/lib/esm/utils.d.ts +1 -0
  169. package/lib/esm/utils.js +19 -0
  170. package/lib/esm/utils.js.map +1 -0
  171. package/package.json +69 -13
  172. package/src/ConfigObject.tsx +25 -11
  173. package/src/UiConfigRendererBlueprint.tsx +31 -20
  174. package/src/bpComponents/BPButtonComponent.scss +5 -1
  175. package/src/bpComponents/BPButtonComponent.tsx +10 -3
  176. package/src/bpComponents/BPColorInputComponent.tsx +9 -3
  177. package/src/bpComponents/BPComponent.tsx +17 -4
  178. package/src/bpComponents/BPContainerComponent.tsx +13 -1
  179. package/src/bpComponents/BPDropdownInputComponent.tsx +11 -4
  180. package/src/bpComponents/BPFileComponent.tsx +55 -27
  181. package/src/bpComponents/BPFolderComponent.scss +36 -6
  182. package/src/bpComponents/BPFolderComponent.tsx +109 -18
  183. package/src/bpComponents/BPInputComponent.tsx +6 -2
  184. package/src/bpComponents/BPLabelledComponent.tsx +2 -2
  185. package/src/bpComponents/BPNumberInputComponent.tsx +14 -2
  186. package/src/bpComponents/BPPanelComponent.tsx +1 -1
  187. package/src/bpComponents/BPSliderInputComponent.tsx +40 -20
  188. package/src/bpComponents/BPTextInputComponent.tsx +1 -0
  189. package/src/bpComponents/BPToggleInputComponent.tsx +6 -3
  190. package/src/bpComponents/BPTreeComponent.tsx +125 -25
  191. package/src/bpComponents/BPTreeFolderComponent.tsx +3 -3
  192. package/src/bpComponents/BPValueComponent.tsx +31 -4
  193. package/src/bpComponents/BPVectorInputComponent.tsx +23 -20
  194. package/src/bpComponents/GetNumberTransformFunctions.tsx +14 -0
  195. package/src/bpComponents/NumberUnits.tsx +123 -0
  196. package/src/components/AppToaster.tsx +20 -0
  197. package/src/components/ConfigurationPanelComponent.tsx +14 -3
  198. package/src/components/DialogContext.tsx +125 -65
  199. package/src/components/DraggableIcon.tsx +6 -5
  200. package/src/components/ExtendedNumericInput.tsx +71 -19
  201. package/src/components/FileComponent.tsx +48 -25
  202. package/src/components/InspectorStackComponent.tsx +2 -2
  203. package/src/components/NumericInput.tsx +679 -0
  204. package/src/components/Tree2.tsx +344 -0
  205. package/src/components/TreeNode2.tsx +192 -0
  206. package/src/components/VisualStyleContext.tsx +10 -2
  207. package/src/components/axesIcons.tsx +116 -0
  208. package/src/components/bpIconWrapper.tsx +5 -4
  209. package/src/components/common.scss +17 -0
  210. package/src/components/iconMapping.ts +354 -0
  211. package/src/components/loadingState.tsx +9 -0
  212. package/src/components/shapesIcons.tsx +980 -0
  213. package/src/components/tree2.scss +69 -0
  214. package/src/components/treeTypes.ts +97 -0
  215. package/src/lib.ts +4 -1
  216. package/src/renderer.scss +83 -12
  217. package/src/utils.ts +34 -0
  218. package/tsconfig.json +1 -0
  219. package/dist/allPaths-EYaH0Usv.js +0 -23
  220. package/dist/index-0vU2D25U.js +0 -604
  221. package/dist/index-0vU2D25U.js.map +0 -1
  222. package/dist/index-JBvBPdy9.js +0 -604
  223. package/dist/index-JBvBPdy9.js.map +0 -1
  224. package/dist/index-OyL-zObJ.js +0 -12765
  225. package/dist/index-OyL-zObJ.js.map +0 -1
  226. package/lib/cjs/ConfigObject.d.ts +0 -18
  227. package/lib/cjs/ConfigObject.js +0 -82
  228. package/lib/cjs/ConfigObject.js.map +0 -1
  229. package/lib/cjs/UiConfigRendererBlueprint.d.ts +0 -13
  230. package/lib/cjs/UiConfigRendererBlueprint.js +0 -56
  231. package/lib/cjs/UiConfigRendererBlueprint.js.map +0 -1
  232. package/lib/cjs/bpComponents/BPButtonComponent.d.ts +0 -8
  233. package/lib/cjs/bpComponents/BPButtonComponent.js +0 -19
  234. package/lib/cjs/bpComponents/BPButtonComponent.js.map +0 -1
  235. package/lib/cjs/bpComponents/BPColorInputComponent.d.ts +0 -24
  236. package/lib/cjs/bpComponents/BPColorInputComponent.js +0 -127
  237. package/lib/cjs/bpComponents/BPColorInputComponent.js.map +0 -1
  238. package/lib/cjs/bpComponents/BPComponent.d.ts +0 -29
  239. package/lib/cjs/bpComponents/BPComponent.js +0 -59
  240. package/lib/cjs/bpComponents/BPComponent.js.map +0 -1
  241. package/lib/cjs/bpComponents/BPContainerComponent.d.ts +0 -21
  242. package/lib/cjs/bpComponents/BPContainerComponent.js +0 -54
  243. package/lib/cjs/bpComponents/BPContainerComponent.js.map +0 -1
  244. package/lib/cjs/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  245. package/lib/cjs/bpComponents/BPDropdownInputComponent.js +0 -43
  246. package/lib/cjs/bpComponents/BPDropdownInputComponent.js.map +0 -1
  247. package/lib/cjs/bpComponents/BPFileComponent.d.ts +0 -25
  248. package/lib/cjs/bpComponents/BPFileComponent.js +0 -69
  249. package/lib/cjs/bpComponents/BPFileComponent.js.map +0 -1
  250. package/lib/cjs/bpComponents/BPFolderComponent.d.ts +0 -16
  251. package/lib/cjs/bpComponents/BPFolderComponent.js +0 -39
  252. package/lib/cjs/bpComponents/BPFolderComponent.js.map +0 -1
  253. package/lib/cjs/bpComponents/BPInputComponent.d.ts +0 -11
  254. package/lib/cjs/bpComponents/BPInputComponent.js +0 -34
  255. package/lib/cjs/bpComponents/BPInputComponent.js.map +0 -1
  256. package/lib/cjs/bpComponents/BPLabelledComponent.d.ts +0 -8
  257. package/lib/cjs/bpComponents/BPLabelledComponent.js +0 -14
  258. package/lib/cjs/bpComponents/BPLabelledComponent.js.map +0 -1
  259. package/lib/cjs/bpComponents/BPNumberInputComponent.d.ts +0 -10
  260. package/lib/cjs/bpComponents/BPNumberInputComponent.js +0 -40
  261. package/lib/cjs/bpComponents/BPNumberInputComponent.js.map +0 -1
  262. package/lib/cjs/bpComponents/BPPanelComponent.d.ts +0 -16
  263. package/lib/cjs/bpComponents/BPPanelComponent.js +0 -35
  264. package/lib/cjs/bpComponents/BPPanelComponent.js.map +0 -1
  265. package/lib/cjs/bpComponents/BPSliderInputComponent.d.ts +0 -14
  266. package/lib/cjs/bpComponents/BPSliderInputComponent.js +0 -41
  267. package/lib/cjs/bpComponents/BPSliderInputComponent.js.map +0 -1
  268. package/lib/cjs/bpComponents/BPTextInputComponent.d.ts +0 -7
  269. package/lib/cjs/bpComponents/BPTextInputComponent.js +0 -19
  270. package/lib/cjs/bpComponents/BPTextInputComponent.js.map +0 -1
  271. package/lib/cjs/bpComponents/BPToggleInputComponent.d.ts +0 -8
  272. package/lib/cjs/bpComponents/BPToggleInputComponent.js +0 -22
  273. package/lib/cjs/bpComponents/BPToggleInputComponent.js.map +0 -1
  274. package/lib/cjs/bpComponents/BPTreeComponent.d.ts +0 -36
  275. package/lib/cjs/bpComponents/BPTreeComponent.js +0 -131
  276. package/lib/cjs/bpComponents/BPTreeComponent.js.map +0 -1
  277. package/lib/cjs/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  278. package/lib/cjs/bpComponents/BPTreeFolderComponent.js +0 -40
  279. package/lib/cjs/bpComponents/BPTreeFolderComponent.js.map +0 -1
  280. package/lib/cjs/bpComponents/BPValueComponent.d.ts +0 -16
  281. package/lib/cjs/bpComponents/BPValueComponent.js +0 -46
  282. package/lib/cjs/bpComponents/BPValueComponent.js.map +0 -1
  283. package/lib/cjs/bpComponents/BPVectorInputComponent.d.ts +0 -19
  284. package/lib/cjs/bpComponents/BPVectorInputComponent.js +0 -110
  285. package/lib/cjs/bpComponents/BPVectorInputComponent.js.map +0 -1
  286. package/lib/cjs/components/ConfigurationPanelComponent.d.ts +0 -4
  287. package/lib/cjs/components/ConfigurationPanelComponent.js +0 -30
  288. package/lib/cjs/components/ConfigurationPanelComponent.js.map +0 -1
  289. package/lib/cjs/components/DialogContext.d.ts +0 -48
  290. package/lib/cjs/components/DialogContext.js +0 -79
  291. package/lib/cjs/components/DialogContext.js.map +0 -1
  292. package/lib/cjs/components/DraggableIcon.d.ts +0 -19
  293. package/lib/cjs/components/DraggableIcon.js +0 -70
  294. package/lib/cjs/components/DraggableIcon.js.map +0 -1
  295. package/lib/cjs/components/ExtendedNumericInput.d.ts +0 -25
  296. package/lib/cjs/components/ExtendedNumericInput.js +0 -174
  297. package/lib/cjs/components/ExtendedNumericInput.js.map +0 -1
  298. package/lib/cjs/components/FileComponent.d.ts +0 -7
  299. package/lib/cjs/components/FileComponent.js +0 -49
  300. package/lib/cjs/components/FileComponent.js.map +0 -1
  301. package/lib/cjs/components/FormGroupComponent.d.ts +0 -6
  302. package/lib/cjs/components/FormGroupComponent.js +0 -16
  303. package/lib/cjs/components/FormGroupComponent.js.map +0 -1
  304. package/lib/cjs/components/InspectorStackComponent.d.ts +0 -4
  305. package/lib/cjs/components/InspectorStackComponent.js +0 -27
  306. package/lib/cjs/components/InspectorStackComponent.js.map +0 -1
  307. package/lib/cjs/components/VisualStyleContext.d.ts +0 -119
  308. package/lib/cjs/components/VisualStyleContext.js +0 -60
  309. package/lib/cjs/components/VisualStyleContext.js.map +0 -1
  310. package/lib/cjs/components/bpIconWrapper.d.ts +0 -2
  311. package/lib/cjs/components/bpIconWrapper.js +0 -9
  312. package/lib/cjs/components/bpIconWrapper.js.map +0 -1
  313. package/lib/cjs/components/loadingState.d.ts +0 -4
  314. package/lib/cjs/components/loadingState.js +0 -16
  315. package/lib/cjs/components/loadingState.js.map +0 -1
  316. package/lib/cjs/components/variableIcons.d.ts +0 -40
  317. package/lib/cjs/components/variableIcons.js +0 -46
  318. package/lib/cjs/components/variableIcons.js.map +0 -1
  319. package/lib/cjs/contexts.d.ts +0 -1
  320. package/lib/cjs/contexts.js +0 -3
  321. package/lib/cjs/contexts.js.map +0 -1
  322. package/lib/cjs/index.d.ts +0 -4
  323. package/lib/cjs/index.js +0 -9
  324. package/lib/cjs/index.js.map +0 -1
  325. package/lib/cjs/lib.d.ts +0 -32
  326. package/lib/cjs/lib.js +0 -49
  327. package/lib/cjs/lib.js.map +0 -1
  328. package/lib/cjs/threejs.d.ts +0 -2
  329. package/lib/cjs/threejs.js +0 -3
  330. package/lib/cjs/threejs.js.map +0 -1
  331. package/lib/esnext/ConfigObject.d.ts +0 -18
  332. package/lib/esnext/ConfigObject.js +0 -75
  333. package/lib/esnext/ConfigObject.js.map +0 -1
  334. package/lib/esnext/UiConfigRendererBlueprint.d.ts +0 -13
  335. package/lib/esnext/UiConfigRendererBlueprint.js +0 -52
  336. package/lib/esnext/UiConfigRendererBlueprint.js.map +0 -1
  337. package/lib/esnext/bpComponents/BPButtonComponent.d.ts +0 -8
  338. package/lib/esnext/bpComponents/BPButtonComponent.js +0 -15
  339. package/lib/esnext/bpComponents/BPButtonComponent.js.map +0 -1
  340. package/lib/esnext/bpComponents/BPColorInputComponent.d.ts +0 -24
  341. package/lib/esnext/bpComponents/BPColorInputComponent.js +0 -110
  342. package/lib/esnext/bpComponents/BPColorInputComponent.js.map +0 -1
  343. package/lib/esnext/bpComponents/BPComponent.d.ts +0 -29
  344. package/lib/esnext/bpComponents/BPComponent.js +0 -46
  345. package/lib/esnext/bpComponents/BPComponent.js.map +0 -1
  346. package/lib/esnext/bpComponents/BPContainerComponent.d.ts +0 -21
  347. package/lib/esnext/bpComponents/BPContainerComponent.js +0 -51
  348. package/lib/esnext/bpComponents/BPContainerComponent.js.map +0 -1
  349. package/lib/esnext/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  350. package/lib/esnext/bpComponents/BPDropdownInputComponent.js +0 -40
  351. package/lib/esnext/bpComponents/BPDropdownInputComponent.js.map +0 -1
  352. package/lib/esnext/bpComponents/BPFileComponent.d.ts +0 -25
  353. package/lib/esnext/bpComponents/BPFileComponent.js +0 -52
  354. package/lib/esnext/bpComponents/BPFileComponent.js.map +0 -1
  355. package/lib/esnext/bpComponents/BPFolderComponent.d.ts +0 -16
  356. package/lib/esnext/bpComponents/BPFolderComponent.js +0 -30
  357. package/lib/esnext/bpComponents/BPFolderComponent.js.map +0 -1
  358. package/lib/esnext/bpComponents/BPInputComponent.d.ts +0 -11
  359. package/lib/esnext/bpComponents/BPInputComponent.js +0 -19
  360. package/lib/esnext/bpComponents/BPInputComponent.js.map +0 -1
  361. package/lib/esnext/bpComponents/BPLabelledComponent.d.ts +0 -8
  362. package/lib/esnext/bpComponents/BPLabelledComponent.js +0 -13
  363. package/lib/esnext/bpComponents/BPLabelledComponent.js.map +0 -1
  364. package/lib/esnext/bpComponents/BPNumberInputComponent.d.ts +0 -10
  365. package/lib/esnext/bpComponents/BPNumberInputComponent.js +0 -21
  366. package/lib/esnext/bpComponents/BPNumberInputComponent.js.map +0 -1
  367. package/lib/esnext/bpComponents/BPPanelComponent.d.ts +0 -16
  368. package/lib/esnext/bpComponents/BPPanelComponent.js +0 -31
  369. package/lib/esnext/bpComponents/BPPanelComponent.js.map +0 -1
  370. package/lib/esnext/bpComponents/BPSliderInputComponent.d.ts +0 -14
  371. package/lib/esnext/bpComponents/BPSliderInputComponent.js +0 -39
  372. package/lib/esnext/bpComponents/BPSliderInputComponent.js.map +0 -1
  373. package/lib/esnext/bpComponents/BPTextInputComponent.d.ts +0 -7
  374. package/lib/esnext/bpComponents/BPTextInputComponent.js +0 -15
  375. package/lib/esnext/bpComponents/BPTextInputComponent.js.map +0 -1
  376. package/lib/esnext/bpComponents/BPToggleInputComponent.d.ts +0 -8
  377. package/lib/esnext/bpComponents/BPToggleInputComponent.js +0 -18
  378. package/lib/esnext/bpComponents/BPToggleInputComponent.js.map +0 -1
  379. package/lib/esnext/bpComponents/BPTreeComponent.d.ts +0 -36
  380. package/lib/esnext/bpComponents/BPTreeComponent.js +0 -111
  381. package/lib/esnext/bpComponents/BPTreeComponent.js.map +0 -1
  382. package/lib/esnext/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  383. package/lib/esnext/bpComponents/BPTreeFolderComponent.js +0 -23
  384. package/lib/esnext/bpComponents/BPTreeFolderComponent.js.map +0 -1
  385. package/lib/esnext/bpComponents/BPValueComponent.d.ts +0 -16
  386. package/lib/esnext/bpComponents/BPValueComponent.js +0 -29
  387. package/lib/esnext/bpComponents/BPValueComponent.js.map +0 -1
  388. package/lib/esnext/bpComponents/BPVectorInputComponent.d.ts +0 -19
  389. package/lib/esnext/bpComponents/BPVectorInputComponent.js +0 -93
  390. package/lib/esnext/bpComponents/BPVectorInputComponent.js.map +0 -1
  391. package/lib/esnext/components/ConfigurationPanelComponent.d.ts +0 -4
  392. package/lib/esnext/components/ConfigurationPanelComponent.js +0 -26
  393. package/lib/esnext/components/ConfigurationPanelComponent.js.map +0 -1
  394. package/lib/esnext/components/DialogContext.d.ts +0 -48
  395. package/lib/esnext/components/DialogContext.js +0 -55
  396. package/lib/esnext/components/DialogContext.js.map +0 -1
  397. package/lib/esnext/components/DraggableIcon.d.ts +0 -19
  398. package/lib/esnext/components/DraggableIcon.js +0 -62
  399. package/lib/esnext/components/DraggableIcon.js.map +0 -1
  400. package/lib/esnext/components/ExtendedNumericInput.d.ts +0 -25
  401. package/lib/esnext/components/ExtendedNumericInput.js +0 -151
  402. package/lib/esnext/components/ExtendedNumericInput.js.map +0 -1
  403. package/lib/esnext/components/FileComponent.d.ts +0 -7
  404. package/lib/esnext/components/FileComponent.js +0 -42
  405. package/lib/esnext/components/FileComponent.js.map +0 -1
  406. package/lib/esnext/components/FormGroupComponent.d.ts +0 -6
  407. package/lib/esnext/components/FormGroupComponent.js +0 -11
  408. package/lib/esnext/components/FormGroupComponent.js.map +0 -1
  409. package/lib/esnext/components/InspectorStackComponent.d.ts +0 -4
  410. package/lib/esnext/components/InspectorStackComponent.js +0 -23
  411. package/lib/esnext/components/InspectorStackComponent.js.map +0 -1
  412. package/lib/esnext/components/VisualStyleContext.d.ts +0 -119
  413. package/lib/esnext/components/VisualStyleContext.js +0 -53
  414. package/lib/esnext/components/VisualStyleContext.js.map +0 -1
  415. package/lib/esnext/components/bpIconWrapper.d.ts +0 -2
  416. package/lib/esnext/components/bpIconWrapper.js +0 -5
  417. package/lib/esnext/components/bpIconWrapper.js.map +0 -1
  418. package/lib/esnext/components/loadingState.d.ts +0 -4
  419. package/lib/esnext/components/loadingState.js +0 -12
  420. package/lib/esnext/components/loadingState.js.map +0 -1
  421. package/lib/esnext/components/variableIcons.d.ts +0 -40
  422. package/lib/esnext/components/variableIcons.js +0 -43
  423. package/lib/esnext/components/variableIcons.js.map +0 -1
  424. package/lib/esnext/contexts.d.ts +0 -1
  425. package/lib/esnext/contexts.js +0 -2
  426. package/lib/esnext/contexts.js.map +0 -1
  427. package/lib/esnext/index.d.ts +0 -4
  428. package/lib/esnext/index.js +0 -5
  429. package/lib/esnext/index.js.map +0 -1
  430. package/lib/esnext/lib.d.ts +0 -32
  431. package/lib/esnext/lib.js +0 -33
  432. package/lib/esnext/lib.js.map +0 -1
  433. package/lib/esnext/threejs.d.ts +0 -2
  434. package/lib/esnext/threejs.js +0 -2
  435. package/lib/esnext/threejs.js.map +0 -1
@@ -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
  }
@@ -20,7 +20,7 @@
20
20
  import React from "react";
21
21
 
22
22
  import type {HTMLInputProps, NumericInputProps} from "@blueprintjs/core";
23
- import {NumericInput} from "@blueprintjs/core";
23
+ import {NumericInput} from "./NumericInput";
24
24
  import {DraggableIcon} from "./DraggableIcon";
25
25
 
26
26
  export interface IExtendedNumericInputState {
@@ -35,39 +35,87 @@ const NumberAbbreviation = {
35
35
 
36
36
  const NUMBER_ABBREVIATION_REGEX = /((\.\d+)|(\d+(\.\d+)?))(k|m|b)\b/gi;
37
37
  const SCIENTIFIC_NOTATION_REGEX = /((\.\d+)|(\d+(\.\d+)?))(e\d+)\b/gi;
38
+ type Props = HTMLInputProps & NumericInputProps & {
39
+ onChange2?: (v: number, last?: boolean) => void,
40
+ transformValue?: (v: number) => number,
41
+ invTransformValue?: (v: number) => number,
42
+ draggableIcon?: boolean
43
+ value?: number | undefined
44
+ defaultValue?: number | undefined
45
+ }
38
46
  // todo: bounds and stepsize
39
- export class ExtendedNumericInput extends React.PureComponent<HTMLInputProps & NumericInputProps & { onChange2: (v: number, last?: boolean) => void }, IExtendedNumericInputState> {
47
+ export class ExtendedNumericInput extends React.PureComponent<Props, IExtendedNumericInputState> {
48
+ invTransformValue = (v: number|undefined) => {
49
+ v = v || 0
50
+ const v1 = this.props.invTransformValue ? this.props.invTransformValue(v) : v;
51
+ return v1
52
+ }
53
+ transformValue = (v: number|undefined) => {
54
+ v = v || 0
55
+ const v1 = this.props.transformValue ? this.props.transformValue(v) : v;
56
+ return v1
57
+ }
58
+
40
59
  public state: IExtendedNumericInputState = {
41
- value: (this.props.value ?? this.props.defaultValue ?? '').toString(),
60
+ value: this.invTransformValue(this.props.value ?? this.props.defaultValue).toString(),
42
61
  };
43
62
 
44
63
  async setValue(val?: number) {
45
64
  return new Promise<void>((resolve) => {
46
- this.setState({value: (val ?? this.props.value ?? this.props.defaultValue ?? '').toString()}, resolve)
65
+ this.setState({value: this.invTransformValue(val ?? this.props.value ?? this.props.defaultValue).toString()}, resolve)
47
66
  })
48
67
  }
49
68
 
69
+ componentDidUpdate(prevProps: Props) {
70
+ if (prevProps.value !== this.props.value && this.props.value !== undefined) {
71
+ this.setState({ value: this.invTransformValue(this.props.value).toString() });
72
+ }
73
+ }
50
74
  public render() {
51
75
  const {value} = this.state;
52
- const props2: HTMLInputProps & NumericInputProps & { onChange2?: (v: number, last?: boolean) => void } = {...this.props}
53
- if (props2.onChange2) delete props2.onChange2
76
+ const {
77
+ invTransformValue,
78
+ transformValue,
79
+ draggableIcon,
80
+ onChange2,
81
+ value: _value,
82
+ leftIcon,
83
+ defaultValue,
84
+ ...props2
85
+ } = this.props;
86
+
87
+ if(transformValue && !invTransformValue ||
88
+ !transformValue && invTransformValue) {
89
+ console.error('ExtendedNumericInput: Both transformValue and invTransformValue must be provided or neither. This is to ensure that the value can be transformed back and forth correctly.');
90
+ }
91
+
92
+ if(transformValue){
93
+ if(props2.min !== undefined) props2.min = this.invTransformValue(props2.min);
94
+ if(props2.max !== undefined) props2.max = this.invTransformValue(props2.max);
95
+ if(props2.stepSize !== undefined) props2.stepSize = this.invTransformValue(props2.stepSize);
96
+ if(props2.minorStepSize /*!== undefined*/) props2.minorStepSize = this.invTransformValue(props2.minorStepSize);
97
+ if(props2.majorStepSize /*!== undefined*/) props2.majorStepSize = this.invTransformValue(props2.majorStepSize);
98
+ }
54
99
 
55
100
  return (
56
101
  <NumericInput
57
102
  {...props2}
58
- leftElement={(
59
- <DraggableIcon icon={this.props.leftIcon ?? "variable"}
103
+ leftElement={( // props2.leftElement could be null
104
+ props2.leftElement !== undefined ? props2.leftElement :
105
+ draggableIcon !== false ? <DraggableIcon icon={leftIcon ?? "variable"}
60
106
  size={16}
61
- small={this.props.small}
107
+ disabled={props2.readOnly}
108
+ small={props2.small}
62
109
  value={parseFloat(value ?? '0')}
63
- stepSize={this.props.stepSize}
110
+ stepSize={props2.stepSize}
64
111
  onChange={(v, last) => {
65
112
  this.handleValueChange(v, v.toString(), null, last, true)
66
- }}/>
113
+ }}/> : undefined
67
114
  )}
68
115
  // leftIcon={"variable"}
69
- buttonPosition={this.props.buttonPosition ?? (this.props.disabled ? "none" : "right")}
116
+ buttonPosition={props2.buttonPosition ?? (props2.disabled ? "none" : "right")}
70
117
  allowNumericCharactersOnly={false}
118
+ clampValueOnBlur={true}
71
119
  onBlur={this.handleBlur}
72
120
  onKeyDown={this.handleKeyDown}
73
121
  onButtonClick={this.handleButtonClick}
@@ -107,9 +155,11 @@ export class ExtendedNumericInput extends React.PureComponent<HTMLInputProps & N
107
155
  private handleValueChange = (_valueAsNumber: number, valueAsString: string, inputElement: HTMLInputElement | null, last?: boolean, dispatchOnChange2 = false) => {
108
156
  this._lastChangedValue = [_valueAsNumber, valueAsString]
109
157
  this.setState({value: valueAsString}, () => {
110
- this.props.onValueChange?.(_valueAsNumber, valueAsString, inputElement)
111
- if(dispatchOnChange2)
112
- this.props.onChange2?.(_valueAsNumber, last)
158
+ const transformed = this.transformValue(_valueAsNumber)
159
+ this.props.onValueChange?.(transformed, valueAsString, inputElement)
160
+ if(dispatchOnChange2) {
161
+ this.props.onChange2?.(transformed, last)
162
+ }
113
163
  });
114
164
  };
115
165
 
@@ -124,8 +174,10 @@ export class ExtendedNumericInput extends React.PureComponent<HTMLInputProps & N
124
174
  result = this.evaluateSimpleMathExpression(result);
125
175
  result = this.nanStringToEmptyString(result);
126
176
  this.setState({value: result}, () => {
127
- this.props.onValueChange?.(parseFloat(result) || 0, result, null)
128
- this.props.onChange2?.(parseFloat(result) || 0)
177
+ const _valueAsNumber = parseFloat(result) || 0;
178
+ const transformed = this.transformValue(_valueAsNumber)
179
+ this.props.onValueChange?.(transformed, result, null)
180
+ this.props.onChange2?.(transformed, true)
129
181
  });
130
182
 
131
183
  // the user could have typed a different expression that evaluates to
@@ -151,7 +203,7 @@ export class ExtendedNumericInput extends React.PureComponent<HTMLInputProps & N
151
203
  };
152
204
 
153
205
  // Adapted from http://stackoverflow.com/questions/2276021/evaluating-a-string-as-a-mathematical-expression-in-javascript
154
- // maybe try a better solution from above, right now it only works left to right
206
+ // todo - use a proper parser and evaluator, right now it only works left to right
155
207
  private evaluateSimpleMathExpression = (value: string) => {
156
208
  // leave empty strings empty
157
209
  if (!value) {
@@ -239,7 +291,7 @@ export class ExtendedNumericInput extends React.PureComponent<HTMLInputProps & N
239
291
  return (+value).toString();
240
292
  };
241
293
 
242
- private roundValue = (value: number, precision: number = 1) => {
294
+ private roundValue = (value: number, precision: number = 6) => {
243
295
  // round to at most two decimal places
244
296
  return Math.round(value * 10 ** precision) / 10 ** precision;
245
297
  };
@@ -1,12 +1,15 @@
1
1
  import React, {useEffect, useRef} from "react";
2
2
  import {Button, ControlGroup, FileInput, HTMLSelect, InputGroup} from "@blueprintjs/core";
3
3
  import {BPFileComponentState} from "../bpComponents/BPFileComponent";
4
+ import {useLoadingStateKey} from './loadingState'
4
5
 
5
6
  export interface FileComponentProps {
6
7
  state: BPFileComponentState
7
- onChange: (state: Partial<BPFileComponentState>)=>void
8
+ onChange: (state: Partial<BPFileComponentState>)=>Promise<void>
9
+ previewSlot?: React.ReactNode,
10
+ uuid?: string
8
11
  }
9
- export const FileComponent: React.FC<FileComponentProps> = ({state, onChange})=>{
12
+ export const FileComponent: React.FC<FileComponentProps> = ({state, onChange, previewSlot})=>{
10
13
  const fileInputRef = useRef<HTMLInputElement>()
11
14
  const textInputRef = useRef<HTMLInputElement>()
12
15
  // console.log('render file component', state)
@@ -33,47 +36,67 @@ export const FileComponent: React.FC<FileComponentProps> = ({state, onChange})=>
33
36
  // fileInputRef.current && (fileInputRef.current.placeholder = 'https://example.com/file.png')
34
37
  // }, []);
35
38
 
39
+ // const hasValue = !!state.value || !!state.preview
40
+
41
+ const {loadingState, updateLoading} = useLoadingStateKey()
42
+
36
43
  return (
37
- <div style={{flexGrow: "1", display: "flex", height: "100%"}}>
38
- <ControlGroup fill={false} vertical={false} style={{width: "100%"}}>
39
- {!state.readOnly ? (<HTMLSelect options={['url', 'file']} minimal={true} fill={false}
44
+ <div style={{position: "relative", flexGrow: "1", display: "flex", height: "100%", flexDirection: "column"}}>
45
+ {!!state.preview && (
46
+ <>
47
+ {previewSlot}
48
+ <Button icon="small-cross"
49
+ minimal={false}
50
+ small={true}
40
51
  disabled={state.disabled}
41
- value={state.mode} onChange={(e)=>{
42
- onChange({mode: e.target.value as 'url'|'file'})
43
- }} /> ) : null}
52
+ intent={"danger"}
53
+ style={{position: "absolute", top: 0, right: 0, opacity: 0.7}}
54
+ loading={loadingState}
55
+ onClick={() => updateLoading(onChange({value: null}))}></Button>
56
+ </>
57
+ )}
58
+ {(!state.preview || !previewSlot) && <ControlGroup fill={false} vertical={false} style={{width: "100%"}}>
59
+ {!state.readOnly && !state.value ? (<HTMLSelect options={['url', 'file']} minimal={true} fill={false}
60
+ disabled={state.disabled}
61
+ className={"file-component-select"}
62
+ value={state.mode} onChange={(e) => {
63
+ onChange({mode: e.target.value as 'url' | 'file'})
64
+ }}/>) : null}
44
65
  {state.mode === 'url' ? (
45
- <InputGroup style={{flexGrow: "1", flexShrink: "1"}} inputRef={textInputRef as any} type="url" defaultValue={typeof state.value === 'string' ? state.value : ''}
66
+ <InputGroup style={{flexGrow: "1", flexShrink: "1"}} inputRef={textInputRef as any} type="url"
67
+ defaultValue={typeof state.value === 'string' ? state.value : ''}
46
68
  rightElement={(
47
- <Button disabled={state.readOnly} minimal={true} icon="arrow-right" onClick={()=>{
48
- onChange({mode:'url', value: textInputRef.current?.value??''})
49
- }} ></Button>
69
+ <Button disabled={state.readOnly} minimal={true} icon="arrow-right" onClick={() => {
70
+ onChange({mode: 'url', value: textInputRef.current?.value ?? ''})
71
+ }}></Button>
50
72
  )}
51
73
  disabled={state.disabled} readOnly={state.readOnly}
52
- onChange={(_)=>{
74
+ onChange={(_) => {
53
75
  }} placeholder="https://example.com/file.png"/>
54
76
  ) : (
55
- <FileInput inputProps={{ref: fileInputRef as any}} style={{flexGrow: "1", flexShrink: "1", minWidth: "50px"}}
77
+ <FileInput inputProps={{ref: fileInputRef as any}}
78
+ style={{flexGrow: "1", flexShrink: "1", minWidth: "50px"}}
56
79
  text={(state.value as File)?.name || 'No file'}
57
80
  disabled={state.disabled}
58
- onClick={(e)=>{
59
- if(state.readOnly) {
81
+ onClick={(e) => {
82
+ if (state.readOnly) {
60
83
  e.preventDefault()
61
84
  e.stopPropagation()
62
85
  }
63
86
  }}
64
87
  buttonText={state.readOnly ? '-' : state.value ? 'Change' : 'Choose'}
65
- onChange={()=>{
66
- onChange({mode: 'file', value: fileInputRef.current?.files?.[0]??null})
67
- }} className="inputGroupFile" />
88
+ onChange={() => {
89
+ onChange({mode: 'file', value: fileInputRef.current?.files?.[0] ?? null})
90
+ }} className="inputGroupFile"/>
68
91
  )}
69
92
  {!state.readOnly && state.value && (
70
- <Button minimal={true} icon="small-cross"
71
- disabled={state.disabled}
72
- onClick={()=>{
73
- onChange({value: null})
74
- }}></Button>
93
+ <Button minimal={true} icon="small-cross"
94
+ disabled={state.disabled}
95
+ loading={loadingState}
96
+ onClick={() => updateLoading(onChange({value: null}))
97
+ }></Button>
75
98
  )}
76
- </ControlGroup>
99
+ </ControlGroup>}
77
100
  </div>
78
101
  )
79
102
  }
@@ -6,7 +6,7 @@ import {UiConfigRendererContext} from '../bpComponents/BPComponent'
6
6
 
7
7
  // import {ViewerAppContext} from "./ViewerAppComponent";
8
8
 
9
- export function InspectorStackComponent({config}: { config: UiObjectConfig<any, 'panel'> }) {
9
+ export function InspectorStackComponent({config, className}: { config: UiObjectConfig<any, 'panel'>, className?: string }) {
10
10
  const renderer = React.useContext(UiConfigRendererContext)
11
11
  const stackItem = React.useCallback(() => {
12
12
  return {
@@ -30,7 +30,7 @@ export function InspectorStackComponent({config}: { config: UiObjectConfig<any,
30
30
  }, [setCurrentPanelStack, stackItem])
31
31
 
32
32
  return (
33
- <Card id="bpInspectorCard" style={{height: "100%", flexGrow: "1", position: "relative"}}>
33
+ <Card className={"bpInspectorCard " + className||''} style={{borderRadius: 0}}>
34
34
  <PanelStack2 className="inspectorPanelStack"
35
35
  showPanelHeader={true}
36
36
  renderActivePanelOnly={true}