uiconfig-blueprint 0.1.0-dev.2 → 0.1.0-dev.4

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 (358) hide show
  1. package/README.md +13 -0
  2. package/dist/UiConfigRendererBlueprint.d.ts +6 -4
  3. package/dist/allPaths-B8LX_D5a.js +23 -0
  4. package/dist/{allPaths-zMnhJyQa.js.map → allPaths-B8LX_D5a.js.map} +1 -1
  5. package/dist/{allPathsLoader-eCsEfMwc.js → allPathsLoader-ChwV6s_m.js} +5 -5
  6. package/dist/{allPathsLoader-eCsEfMwc.js.map → allPathsLoader-ChwV6s_m.js.map} +1 -1
  7. package/dist/bpComponents/BPComponent.d.ts +2 -1
  8. package/dist/bpComponents/BPFileComponent.d.ts +7 -5
  9. package/dist/bpComponents/BPFolderComponent.d.ts +4 -1
  10. package/dist/bpComponents/BPInputComponent.d.ts +2 -1
  11. package/dist/bpComponents/BPTreeComponent.d.ts +11 -6
  12. package/dist/bpComponents/BPValueComponent.d.ts +4 -1
  13. package/dist/components/DialogContext.d.ts +18 -10
  14. package/dist/components/DraggableIcon.d.ts +1 -0
  15. package/dist/components/FileComponent.d.ts +3 -1
  16. package/dist/components/axesIcons.d.ts +7 -0
  17. package/dist/components/bpIconWrapper.d.ts +2 -2
  18. package/dist/components/iconMapping.d.ts +198 -0
  19. package/dist/components/loadingState.d.ts +4 -0
  20. package/dist/components/shapesIcons.d.ts +100 -0
  21. package/dist/index-B3lLOxQd.js +671 -0
  22. package/dist/index-B3lLOxQd.js.map +1 -0
  23. package/dist/index-CPVHSDA_.js +13044 -0
  24. package/dist/index-CPVHSDA_.js.map +1 -0
  25. package/dist/index-DzfuAEGU.js +671 -0
  26. package/dist/index-DzfuAEGU.js.map +1 -0
  27. package/dist/index.js +49 -25
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +3 -3
  30. package/dist/lib.d.ts +1 -1
  31. package/dist/{splitPathsBySizeLoader-xt9FLbSp.js → splitPathsBySizeLoader-WipJWyYS.js} +6 -6
  32. package/dist/{splitPathsBySizeLoader-xt9FLbSp.js.map → splitPathsBySizeLoader-WipJWyYS.js.map} +1 -1
  33. package/docs/assets/highlight.css +28 -0
  34. package/docs/assets/navigation.js +1 -1
  35. package/docs/assets/search.js +1 -1
  36. package/docs/classes/UI.html +10 -5
  37. package/docs/classes/UiConfigRendererBlueprint.html +10 -5
  38. package/docs/index.html +3 -0
  39. package/lib/css/renderer.css +34 -10
  40. package/lib/css/renderer.css.map +1 -1
  41. package/lib/esm/ConfigObject.js +7 -6
  42. package/lib/esm/ConfigObject.js.map +1 -1
  43. package/lib/esm/UiConfigRendererBlueprint.d.ts +6 -4
  44. package/lib/esm/UiConfigRendererBlueprint.js +7 -5
  45. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  46. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  47. package/lib/esm/bpComponents/BPColorInputComponent.js +1 -1
  48. package/lib/esm/bpComponents/BPComponent.d.ts +2 -1
  49. package/lib/esm/bpComponents/BPComponent.js +12 -1
  50. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  51. package/lib/esm/bpComponents/BPContainerComponent.js +1 -1
  52. package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
  53. package/lib/esm/bpComponents/BPDropdownInputComponent.js +6 -2
  54. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  55. package/lib/esm/bpComponents/BPFileComponent.d.ts +7 -5
  56. package/lib/esm/bpComponents/BPFileComponent.js +12 -24
  57. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  58. package/lib/esm/bpComponents/BPFolderComponent.d.ts +4 -1
  59. package/lib/esm/bpComponents/BPFolderComponent.js +14 -11
  60. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  61. package/lib/esm/bpComponents/BPInputComponent.d.ts +2 -1
  62. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  63. package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
  64. package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
  65. package/lib/esm/bpComponents/BPSliderInputComponent.js +13 -2
  66. package/lib/esm/bpComponents/BPSliderInputComponent.js.map +1 -1
  67. package/lib/esm/bpComponents/BPTreeComponent.d.ts +11 -6
  68. package/lib/esm/bpComponents/BPTreeComponent.js +85 -19
  69. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  70. package/lib/esm/bpComponents/BPValueComponent.d.ts +4 -1
  71. package/lib/esm/bpComponents/BPValueComponent.js +19 -3
  72. package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
  73. package/lib/esm/components/AppToaster.js.map +1 -1
  74. package/lib/esm/components/ConfigurationPanelComponent.js +1 -1
  75. package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
  76. package/lib/esm/components/DialogContext.d.ts +18 -10
  77. package/lib/esm/components/DialogContext.js +43 -33
  78. package/lib/esm/components/DialogContext.js.map +1 -1
  79. package/lib/esm/components/DraggableIcon.d.ts +1 -0
  80. package/lib/esm/components/DraggableIcon.js +7 -4
  81. package/lib/esm/components/DraggableIcon.js.map +1 -1
  82. package/lib/esm/components/ExtendedNumericInput.js +1 -1
  83. package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
  84. package/lib/esm/components/FileComponent.d.ts +3 -1
  85. package/lib/esm/components/FileComponent.js +19 -19
  86. package/lib/esm/components/FileComponent.js.map +1 -1
  87. package/lib/esm/components/InspectorStackComponent.js +1 -1
  88. package/lib/esm/components/InspectorStackComponent.js.map +1 -1
  89. package/lib/esm/components/VisualStyleContext.js +2 -2
  90. package/lib/esm/components/VisualStyleContext.js.map +1 -1
  91. package/lib/esm/components/axesIcons.d.ts +7 -0
  92. package/lib/esm/components/axesIcons.js +10 -0
  93. package/lib/esm/components/axesIcons.js.map +1 -0
  94. package/lib/esm/components/bpIconWrapper.d.ts +2 -2
  95. package/lib/esm/components/bpIconWrapper.js +2 -2
  96. package/lib/esm/components/bpIconWrapper.js.map +1 -1
  97. package/lib/esm/components/iconMapping.d.ts +198 -0
  98. package/lib/esm/components/iconMapping.js +202 -0
  99. package/lib/esm/components/iconMapping.js.map +1 -0
  100. package/lib/esm/components/loadingState.d.ts +4 -0
  101. package/lib/esm/components/loadingState.js +10 -0
  102. package/lib/esm/components/loadingState.js.map +1 -1
  103. package/lib/esm/components/shapesIcons.d.ts +100 -0
  104. package/lib/esm/components/shapesIcons.js +102 -0
  105. package/lib/esm/components/shapesIcons.js.map +1 -0
  106. package/lib/esm/lib.d.ts +1 -1
  107. package/lib/esm/lib.js +1 -1
  108. package/lib/esm/lib.js.map +1 -1
  109. package/package.json +10 -10
  110. package/src/ConfigObject.tsx +10 -5
  111. package/src/UiConfigRendererBlueprint.tsx +9 -9
  112. package/src/bpComponents/BPButtonComponent.tsx +1 -0
  113. package/src/bpComponents/BPColorInputComponent.tsx +1 -1
  114. package/src/bpComponents/BPComponent.tsx +14 -4
  115. package/src/bpComponents/BPContainerComponent.tsx +2 -1
  116. package/src/bpComponents/BPDropdownInputComponent.tsx +7 -2
  117. package/src/bpComponents/BPFileComponent.tsx +41 -25
  118. package/src/bpComponents/BPFolderComponent.scss +12 -3
  119. package/src/bpComponents/BPFolderComponent.tsx +24 -7
  120. package/src/bpComponents/BPInputComponent.tsx +2 -1
  121. package/src/bpComponents/BPPanelComponent.tsx +1 -1
  122. package/src/bpComponents/BPSliderInputComponent.tsx +15 -3
  123. package/src/bpComponents/BPTreeComponent.tsx +78 -15
  124. package/src/bpComponents/BPValueComponent.tsx +31 -4
  125. package/src/components/AppToaster.tsx +20 -0
  126. package/src/components/ConfigurationPanelComponent.tsx +1 -1
  127. package/src/components/DialogContext.tsx +111 -65
  128. package/src/components/DraggableIcon.tsx +6 -5
  129. package/src/components/ExtendedNumericInput.tsx +1 -0
  130. package/src/components/FileComponent.tsx +48 -25
  131. package/src/components/InspectorStackComponent.tsx +1 -1
  132. package/src/components/VisualStyleContext.tsx +2 -2
  133. package/src/components/axesIcons.tsx +116 -0
  134. package/src/components/bpIconWrapper.tsx +4 -3
  135. package/src/components/common.scss +14 -0
  136. package/src/components/iconMapping.ts +354 -0
  137. package/src/components/loadingState.tsx +9 -0
  138. package/src/components/shapesIcons.tsx +980 -0
  139. package/src/lib.ts +1 -1
  140. package/src/renderer.scss +18 -2
  141. package/tsconfig.json +1 -0
  142. package/dist/allPaths-zMnhJyQa.js +0 -23
  143. package/dist/index--Vpcr7_d.js +0 -604
  144. package/dist/index--Vpcr7_d.js.map +0 -1
  145. package/dist/index-QyqZQ9mG.js +0 -604
  146. package/dist/index-QyqZQ9mG.js.map +0 -1
  147. package/dist/index-f-ZwHBj3.js +0 -12742
  148. package/dist/index-f-ZwHBj3.js.map +0 -1
  149. package/lib/cjs/ConfigObject.d.ts +0 -18
  150. package/lib/cjs/ConfigObject.js +0 -82
  151. package/lib/cjs/ConfigObject.js.map +0 -1
  152. package/lib/cjs/UiConfigRendererBlueprint.d.ts +0 -13
  153. package/lib/cjs/UiConfigRendererBlueprint.js +0 -56
  154. package/lib/cjs/UiConfigRendererBlueprint.js.map +0 -1
  155. package/lib/cjs/bpComponents/BPButtonComponent.d.ts +0 -8
  156. package/lib/cjs/bpComponents/BPButtonComponent.js +0 -19
  157. package/lib/cjs/bpComponents/BPButtonComponent.js.map +0 -1
  158. package/lib/cjs/bpComponents/BPColorInputComponent.d.ts +0 -24
  159. package/lib/cjs/bpComponents/BPColorInputComponent.js +0 -127
  160. package/lib/cjs/bpComponents/BPColorInputComponent.js.map +0 -1
  161. package/lib/cjs/bpComponents/BPComponent.d.ts +0 -29
  162. package/lib/cjs/bpComponents/BPComponent.js +0 -59
  163. package/lib/cjs/bpComponents/BPComponent.js.map +0 -1
  164. package/lib/cjs/bpComponents/BPContainerComponent.d.ts +0 -21
  165. package/lib/cjs/bpComponents/BPContainerComponent.js +0 -54
  166. package/lib/cjs/bpComponents/BPContainerComponent.js.map +0 -1
  167. package/lib/cjs/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  168. package/lib/cjs/bpComponents/BPDropdownInputComponent.js +0 -43
  169. package/lib/cjs/bpComponents/BPDropdownInputComponent.js.map +0 -1
  170. package/lib/cjs/bpComponents/BPFileComponent.d.ts +0 -25
  171. package/lib/cjs/bpComponents/BPFileComponent.js +0 -69
  172. package/lib/cjs/bpComponents/BPFileComponent.js.map +0 -1
  173. package/lib/cjs/bpComponents/BPFolderComponent.d.ts +0 -16
  174. package/lib/cjs/bpComponents/BPFolderComponent.js +0 -39
  175. package/lib/cjs/bpComponents/BPFolderComponent.js.map +0 -1
  176. package/lib/cjs/bpComponents/BPInputComponent.d.ts +0 -11
  177. package/lib/cjs/bpComponents/BPInputComponent.js +0 -34
  178. package/lib/cjs/bpComponents/BPInputComponent.js.map +0 -1
  179. package/lib/cjs/bpComponents/BPLabelledComponent.d.ts +0 -8
  180. package/lib/cjs/bpComponents/BPLabelledComponent.js +0 -14
  181. package/lib/cjs/bpComponents/BPLabelledComponent.js.map +0 -1
  182. package/lib/cjs/bpComponents/BPNumberInputComponent.d.ts +0 -10
  183. package/lib/cjs/bpComponents/BPNumberInputComponent.js +0 -40
  184. package/lib/cjs/bpComponents/BPNumberInputComponent.js.map +0 -1
  185. package/lib/cjs/bpComponents/BPPanelComponent.d.ts +0 -16
  186. package/lib/cjs/bpComponents/BPPanelComponent.js +0 -35
  187. package/lib/cjs/bpComponents/BPPanelComponent.js.map +0 -1
  188. package/lib/cjs/bpComponents/BPSliderInputComponent.d.ts +0 -14
  189. package/lib/cjs/bpComponents/BPSliderInputComponent.js +0 -41
  190. package/lib/cjs/bpComponents/BPSliderInputComponent.js.map +0 -1
  191. package/lib/cjs/bpComponents/BPTextInputComponent.d.ts +0 -7
  192. package/lib/cjs/bpComponents/BPTextInputComponent.js +0 -19
  193. package/lib/cjs/bpComponents/BPTextInputComponent.js.map +0 -1
  194. package/lib/cjs/bpComponents/BPToggleInputComponent.d.ts +0 -8
  195. package/lib/cjs/bpComponents/BPToggleInputComponent.js +0 -22
  196. package/lib/cjs/bpComponents/BPToggleInputComponent.js.map +0 -1
  197. package/lib/cjs/bpComponents/BPTreeComponent.d.ts +0 -36
  198. package/lib/cjs/bpComponents/BPTreeComponent.js +0 -131
  199. package/lib/cjs/bpComponents/BPTreeComponent.js.map +0 -1
  200. package/lib/cjs/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  201. package/lib/cjs/bpComponents/BPTreeFolderComponent.js +0 -40
  202. package/lib/cjs/bpComponents/BPTreeFolderComponent.js.map +0 -1
  203. package/lib/cjs/bpComponents/BPValueComponent.d.ts +0 -16
  204. package/lib/cjs/bpComponents/BPValueComponent.js +0 -46
  205. package/lib/cjs/bpComponents/BPValueComponent.js.map +0 -1
  206. package/lib/cjs/bpComponents/BPVectorInputComponent.d.ts +0 -19
  207. package/lib/cjs/bpComponents/BPVectorInputComponent.js +0 -110
  208. package/lib/cjs/bpComponents/BPVectorInputComponent.js.map +0 -1
  209. package/lib/cjs/components/ConfigurationPanelComponent.d.ts +0 -4
  210. package/lib/cjs/components/ConfigurationPanelComponent.js +0 -30
  211. package/lib/cjs/components/ConfigurationPanelComponent.js.map +0 -1
  212. package/lib/cjs/components/DialogContext.d.ts +0 -48
  213. package/lib/cjs/components/DialogContext.js +0 -79
  214. package/lib/cjs/components/DialogContext.js.map +0 -1
  215. package/lib/cjs/components/DraggableIcon.d.ts +0 -19
  216. package/lib/cjs/components/DraggableIcon.js +0 -70
  217. package/lib/cjs/components/DraggableIcon.js.map +0 -1
  218. package/lib/cjs/components/ExtendedNumericInput.d.ts +0 -25
  219. package/lib/cjs/components/ExtendedNumericInput.js +0 -174
  220. package/lib/cjs/components/ExtendedNumericInput.js.map +0 -1
  221. package/lib/cjs/components/FileComponent.d.ts +0 -7
  222. package/lib/cjs/components/FileComponent.js +0 -49
  223. package/lib/cjs/components/FileComponent.js.map +0 -1
  224. package/lib/cjs/components/FormGroupComponent.d.ts +0 -6
  225. package/lib/cjs/components/FormGroupComponent.js +0 -16
  226. package/lib/cjs/components/FormGroupComponent.js.map +0 -1
  227. package/lib/cjs/components/InspectorStackComponent.d.ts +0 -4
  228. package/lib/cjs/components/InspectorStackComponent.js +0 -27
  229. package/lib/cjs/components/InspectorStackComponent.js.map +0 -1
  230. package/lib/cjs/components/VisualStyleContext.d.ts +0 -119
  231. package/lib/cjs/components/VisualStyleContext.js +0 -60
  232. package/lib/cjs/components/VisualStyleContext.js.map +0 -1
  233. package/lib/cjs/components/bpIconWrapper.d.ts +0 -2
  234. package/lib/cjs/components/bpIconWrapper.js +0 -9
  235. package/lib/cjs/components/bpIconWrapper.js.map +0 -1
  236. package/lib/cjs/components/loadingState.d.ts +0 -4
  237. package/lib/cjs/components/loadingState.js +0 -16
  238. package/lib/cjs/components/loadingState.js.map +0 -1
  239. package/lib/cjs/components/variableIcons.d.ts +0 -40
  240. package/lib/cjs/components/variableIcons.js +0 -46
  241. package/lib/cjs/components/variableIcons.js.map +0 -1
  242. package/lib/cjs/contexts.d.ts +0 -1
  243. package/lib/cjs/contexts.js +0 -3
  244. package/lib/cjs/contexts.js.map +0 -1
  245. package/lib/cjs/index.d.ts +0 -4
  246. package/lib/cjs/index.js +0 -9
  247. package/lib/cjs/index.js.map +0 -1
  248. package/lib/cjs/lib.d.ts +0 -32
  249. package/lib/cjs/lib.js +0 -49
  250. package/lib/cjs/lib.js.map +0 -1
  251. package/lib/cjs/threejs.d.ts +0 -2
  252. package/lib/cjs/threejs.js +0 -3
  253. package/lib/cjs/threejs.js.map +0 -1
  254. package/lib/esnext/ConfigObject.d.ts +0 -18
  255. package/lib/esnext/ConfigObject.js +0 -75
  256. package/lib/esnext/ConfigObject.js.map +0 -1
  257. package/lib/esnext/UiConfigRendererBlueprint.d.ts +0 -13
  258. package/lib/esnext/UiConfigRendererBlueprint.js +0 -52
  259. package/lib/esnext/UiConfigRendererBlueprint.js.map +0 -1
  260. package/lib/esnext/bpComponents/BPButtonComponent.d.ts +0 -8
  261. package/lib/esnext/bpComponents/BPButtonComponent.js +0 -15
  262. package/lib/esnext/bpComponents/BPButtonComponent.js.map +0 -1
  263. package/lib/esnext/bpComponents/BPColorInputComponent.d.ts +0 -24
  264. package/lib/esnext/bpComponents/BPColorInputComponent.js +0 -110
  265. package/lib/esnext/bpComponents/BPColorInputComponent.js.map +0 -1
  266. package/lib/esnext/bpComponents/BPComponent.d.ts +0 -29
  267. package/lib/esnext/bpComponents/BPComponent.js +0 -46
  268. package/lib/esnext/bpComponents/BPComponent.js.map +0 -1
  269. package/lib/esnext/bpComponents/BPContainerComponent.d.ts +0 -21
  270. package/lib/esnext/bpComponents/BPContainerComponent.js +0 -51
  271. package/lib/esnext/bpComponents/BPContainerComponent.js.map +0 -1
  272. package/lib/esnext/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  273. package/lib/esnext/bpComponents/BPDropdownInputComponent.js +0 -40
  274. package/lib/esnext/bpComponents/BPDropdownInputComponent.js.map +0 -1
  275. package/lib/esnext/bpComponents/BPFileComponent.d.ts +0 -25
  276. package/lib/esnext/bpComponents/BPFileComponent.js +0 -52
  277. package/lib/esnext/bpComponents/BPFileComponent.js.map +0 -1
  278. package/lib/esnext/bpComponents/BPFolderComponent.d.ts +0 -16
  279. package/lib/esnext/bpComponents/BPFolderComponent.js +0 -30
  280. package/lib/esnext/bpComponents/BPFolderComponent.js.map +0 -1
  281. package/lib/esnext/bpComponents/BPInputComponent.d.ts +0 -11
  282. package/lib/esnext/bpComponents/BPInputComponent.js +0 -19
  283. package/lib/esnext/bpComponents/BPInputComponent.js.map +0 -1
  284. package/lib/esnext/bpComponents/BPLabelledComponent.d.ts +0 -8
  285. package/lib/esnext/bpComponents/BPLabelledComponent.js +0 -13
  286. package/lib/esnext/bpComponents/BPLabelledComponent.js.map +0 -1
  287. package/lib/esnext/bpComponents/BPNumberInputComponent.d.ts +0 -10
  288. package/lib/esnext/bpComponents/BPNumberInputComponent.js +0 -21
  289. package/lib/esnext/bpComponents/BPNumberInputComponent.js.map +0 -1
  290. package/lib/esnext/bpComponents/BPPanelComponent.d.ts +0 -16
  291. package/lib/esnext/bpComponents/BPPanelComponent.js +0 -31
  292. package/lib/esnext/bpComponents/BPPanelComponent.js.map +0 -1
  293. package/lib/esnext/bpComponents/BPSliderInputComponent.d.ts +0 -14
  294. package/lib/esnext/bpComponents/BPSliderInputComponent.js +0 -39
  295. package/lib/esnext/bpComponents/BPSliderInputComponent.js.map +0 -1
  296. package/lib/esnext/bpComponents/BPTextInputComponent.d.ts +0 -7
  297. package/lib/esnext/bpComponents/BPTextInputComponent.js +0 -15
  298. package/lib/esnext/bpComponents/BPTextInputComponent.js.map +0 -1
  299. package/lib/esnext/bpComponents/BPToggleInputComponent.d.ts +0 -8
  300. package/lib/esnext/bpComponents/BPToggleInputComponent.js +0 -18
  301. package/lib/esnext/bpComponents/BPToggleInputComponent.js.map +0 -1
  302. package/lib/esnext/bpComponents/BPTreeComponent.d.ts +0 -36
  303. package/lib/esnext/bpComponents/BPTreeComponent.js +0 -111
  304. package/lib/esnext/bpComponents/BPTreeComponent.js.map +0 -1
  305. package/lib/esnext/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  306. package/lib/esnext/bpComponents/BPTreeFolderComponent.js +0 -23
  307. package/lib/esnext/bpComponents/BPTreeFolderComponent.js.map +0 -1
  308. package/lib/esnext/bpComponents/BPValueComponent.d.ts +0 -16
  309. package/lib/esnext/bpComponents/BPValueComponent.js +0 -29
  310. package/lib/esnext/bpComponents/BPValueComponent.js.map +0 -1
  311. package/lib/esnext/bpComponents/BPVectorInputComponent.d.ts +0 -19
  312. package/lib/esnext/bpComponents/BPVectorInputComponent.js +0 -93
  313. package/lib/esnext/bpComponents/BPVectorInputComponent.js.map +0 -1
  314. package/lib/esnext/components/ConfigurationPanelComponent.d.ts +0 -4
  315. package/lib/esnext/components/ConfigurationPanelComponent.js +0 -26
  316. package/lib/esnext/components/ConfigurationPanelComponent.js.map +0 -1
  317. package/lib/esnext/components/DialogContext.d.ts +0 -48
  318. package/lib/esnext/components/DialogContext.js +0 -55
  319. package/lib/esnext/components/DialogContext.js.map +0 -1
  320. package/lib/esnext/components/DraggableIcon.d.ts +0 -19
  321. package/lib/esnext/components/DraggableIcon.js +0 -62
  322. package/lib/esnext/components/DraggableIcon.js.map +0 -1
  323. package/lib/esnext/components/ExtendedNumericInput.d.ts +0 -25
  324. package/lib/esnext/components/ExtendedNumericInput.js +0 -151
  325. package/lib/esnext/components/ExtendedNumericInput.js.map +0 -1
  326. package/lib/esnext/components/FileComponent.d.ts +0 -7
  327. package/lib/esnext/components/FileComponent.js +0 -42
  328. package/lib/esnext/components/FileComponent.js.map +0 -1
  329. package/lib/esnext/components/FormGroupComponent.d.ts +0 -6
  330. package/lib/esnext/components/FormGroupComponent.js +0 -11
  331. package/lib/esnext/components/FormGroupComponent.js.map +0 -1
  332. package/lib/esnext/components/InspectorStackComponent.d.ts +0 -4
  333. package/lib/esnext/components/InspectorStackComponent.js +0 -23
  334. package/lib/esnext/components/InspectorStackComponent.js.map +0 -1
  335. package/lib/esnext/components/VisualStyleContext.d.ts +0 -119
  336. package/lib/esnext/components/VisualStyleContext.js +0 -53
  337. package/lib/esnext/components/VisualStyleContext.js.map +0 -1
  338. package/lib/esnext/components/bpIconWrapper.d.ts +0 -2
  339. package/lib/esnext/components/bpIconWrapper.js +0 -5
  340. package/lib/esnext/components/bpIconWrapper.js.map +0 -1
  341. package/lib/esnext/components/loadingState.d.ts +0 -4
  342. package/lib/esnext/components/loadingState.js +0 -12
  343. package/lib/esnext/components/loadingState.js.map +0 -1
  344. package/lib/esnext/components/variableIcons.d.ts +0 -40
  345. package/lib/esnext/components/variableIcons.js +0 -43
  346. package/lib/esnext/components/variableIcons.js.map +0 -1
  347. package/lib/esnext/contexts.d.ts +0 -1
  348. package/lib/esnext/contexts.js +0 -2
  349. package/lib/esnext/contexts.js.map +0 -1
  350. package/lib/esnext/index.d.ts +0 -4
  351. package/lib/esnext/index.js +0 -5
  352. package/lib/esnext/index.js.map +0 -1
  353. package/lib/esnext/lib.d.ts +0 -32
  354. package/lib/esnext/lib.js +0 -33
  355. package/lib/esnext/lib.js.map +0 -1
  356. package/lib/esnext/threejs.d.ts +0 -2
  357. package/lib/esnext/threejs.js +0 -2
  358. package/lib/esnext/threejs.js.map +0 -1
@@ -46,7 +46,11 @@ export class BPSliderInputComponent extends BPInputComponent<number, BPSliderCom
46
46
  // labelValues={[]}
47
47
  onChange={(v) => {
48
48
  if(this.state.readOnly) return
49
- this.setValue(v)
49
+ this.setValue(v, false)
50
+ }}
51
+ onRelease={(v) => {
52
+ if(this.state.readOnly) return
53
+ this.setValue(v, true)
50
54
  }}
51
55
  />
52
56
  ),(
@@ -56,13 +60,21 @@ export class BPSliderInputComponent extends BPInputComponent<number, BPSliderCom
56
60
  disabled={this.state.disabled}
57
61
  value={Math.min(this.state.max, Math.max(this.state.min, this.state.value))}
58
62
  key={this.props.config.uuid + '_input'}
59
- min={this.state.min} max={this.state.max} stepSize={this.state.step}
63
+ min={this.state.min} max={this.state.max}
64
+ stepSize={this.state.step}
60
65
  minorStepSize={this.state.step/10}
61
66
  majorStepSize={this.state.step*10}
62
67
  buttonPosition="none"
63
68
  onValueChange={(v) => {
64
69
  if(this.state.readOnly) return
65
- this.setValue(v)
70
+ this.setValue(v, false)
71
+ }}
72
+ onBlur={(e) => {
73
+ if(this.state.readOnly) return
74
+ this.setValue(parseFloat(e.currentTarget.value), true)
75
+ }}
76
+ onKeyDown={(e) => {
77
+ if (e.code === 'Enter') this.setValue(parseFloat(e.currentTarget.value), true)
66
78
  }}
67
79
  />)
68
80
  ]
@@ -1,5 +1,6 @@
1
1
  import {BPComponent, BPComponentProps, BPComponentState, UiConfigRendererContextType} from "./BPComponent";
2
2
  import {Tree, TreeNodeInfo} from "@blueprintjs/core";
3
+ import {PrimitiveVal} from "uiconfig.js";
3
4
 
4
5
  export type BPTreeComponentState<T = {}> = BPComponentState & {
5
6
  nodes: TreeNodeInfo<T>[]
@@ -8,7 +9,7 @@ export type BPTreeComponentState<T = {}> = BPComponentState & {
8
9
  // https://github.com/palantir/blueprint/blob/develop/packages/docs-app/src/examples/core-examples/treeExample.tsx
9
10
  type NodePath = number[];
10
11
 
11
- export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPComponent<TConfigVal, BPTreeComponentState<T>> {
12
+ export abstract class BPTreeComponent<T = {}, TConfigVal extends PrimitiveVal|void = void> extends BPComponent<TConfigVal, BPTreeComponentState<T>> {
12
13
  constructor(props: BPComponentProps<TConfigVal>, context: UiConfigRendererContextType) {
13
14
  super(props, context, {nodes: []});
14
15
  }
@@ -32,10 +33,10 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
32
33
 
33
34
  protected abstract _getRootNodes(): T[]
34
35
 
35
- protected async _onNodeClick(_id: string | number, _path: number[]) {
36
+ protected async _onNodeClick(_id: string | number) {
36
37
  }
37
38
 
38
- protected async _onNodeDoubleClick(_id: string | number, _path: number[]) {
39
+ protected async _onNodeDoubleClick(_id: string | number) {
39
40
  }
40
41
 
41
42
  protected _cloneNodes(callback?: (t:TreeNodeInfo<T>)=>void, state?: TreeNodeInfo<T>[]): TreeNodeInfo<T>[] {
@@ -50,13 +51,13 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
50
51
  })
51
52
  }
52
53
 
53
- protected _forEachNode<T>(nodes: TreeNodeInfo<T>[] | undefined, callback: (node: TreeNodeInfo<T>) => void) {
54
+ protected _forEachNode<T>(nodes: TreeNodeInfo<T>[] | undefined, callback: (node: TreeNodeInfo<T>, path: NodePath) => void, path: NodePath = []) {
54
55
  if (nodes === undefined) {
55
56
  return nodes;
56
57
  }
57
58
  for (const node of nodes) {
58
- callback(node);
59
- this._forEachNode(node.childNodes, callback);
59
+ callback(node, path);
60
+ this._forEachNode(node.childNodes, callback, [...path, node.id] as NodePath);
60
61
  }
61
62
  return nodes
62
63
  }
@@ -64,16 +65,16 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
64
65
  callback(Tree.nodeFromPath(path, nodes));
65
66
  }
66
67
 
67
- protected async _onNodeExpandCollapse(_id: string | number, _path: number[]) {
68
+ protected async _onNodeExpandCollapse(_id: string | number, expanded?: boolean) {
68
69
  const nodes = this._cloneNodes()
69
70
  const node = this._infoMap.get(_id)
70
71
  if (!node) return
71
- node.isExpanded = !node.isExpanded
72
+ node.isExpanded = expanded ?? !node.isExpanded
72
73
  // forNodeAtPath(nodes, _path, node => (node.isExpanded = !node.isExpanded));
73
74
  await this.setStatePromise({...this.state, nodes})
74
75
  }
75
76
 
76
- protected async _onNodeContextMenu(_id: string | number, _path: number[]) {
77
+ protected async _onNodeContextMenu(_id: string | number) {
77
78
  }
78
79
 
79
80
  protected buildData(data: TreeNodeInfo<T>[], obj: T, _?: any, _2?: any) {
@@ -116,28 +117,90 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
116
117
  super.componentWillUnmount();
117
118
  }
118
119
 
120
+ findSelectedNode(nodes?: TreeNodeInfo<T>[]): TreeNodeInfo<T> | undefined {
121
+ if (!nodes) nodes = this.state.nodes
122
+ for (const node of nodes) {
123
+ if (node.isSelected) return node
124
+ if (node.childNodes) {
125
+ const res = this.findSelectedNode(node.childNodes)
126
+ if (res) return res
127
+ }
128
+ }
129
+ }
130
+ getFlatNodes(onlyVisible = false, nodes?: TreeNodeInfo<T>[], res: TreeNodeInfo<T>[] = []): TreeNodeInfo<T>[] {
131
+ if (!nodes) nodes = this.state.nodes
132
+ for (const node of nodes) {
133
+ res.push(node)
134
+ if (node.childNodes && (!onlyVisible || node.isExpanded)) this.getFlatNodes(onlyVisible, node.childNodes, res)
135
+ }
136
+ return res
137
+ }
138
+
139
+ protected _handleKeyDown(e: React.KeyboardEvent) {
140
+ const nodes = this.getFlatNodes(true)
141
+ let current, next, previous;
142
+ for (let i = 0; i < nodes.length; i++) {
143
+ const node = nodes[i]
144
+ if (node.isSelected) {
145
+ current = node
146
+ next = i < nodes.length - 1 ? nodes[i + 1] : undefined
147
+ previous = i > 0 ? nodes[i - 1] : undefined
148
+ break
149
+ }
150
+ }
151
+ switch (e.key) {
152
+ case "ArrowUp":
153
+ if (previous) this._onNodeClick(previous.id)
154
+ break
155
+ case "ArrowDown":
156
+ if (next) this._onNodeClick(next.id)
157
+ break
158
+ case "ArrowRight":
159
+ if (current) this._onNodeExpandCollapse(current.id, true)
160
+ break
161
+ case "ArrowLeft":
162
+ if (current) this._onNodeExpandCollapse(current.id, false)
163
+ break
164
+ case "Escape":
165
+ if (current) this._onNodeClick(current.id)
166
+ break
167
+ case "Enter":
168
+ if (current) this._onNodeDoubleClick(current.id)
169
+ break
170
+ default:
171
+ return
172
+ }
173
+ e.preventDefault()
174
+ e.stopPropagation()
175
+ }
176
+
119
177
  render() {
120
178
  const TreeT = Tree.ofType<T>()
121
179
  return !this.state.hidden ? (
180
+ <div
181
+ style={{width: "100%", height: "100%"}}
182
+ onKeyDown={e => this._handleKeyDown(e)}
183
+ tabIndex={0}
184
+ >
122
185
  <TreeT
123
186
  contents={this.state.nodes}
124
187
  className="folderContent"
125
188
  onNodeExpand={(node, _path, _e) => {
126
- this._onNodeExpandCollapse(node.id, _path)
189
+ this._onNodeExpandCollapse(node.id)
127
190
  }}
128
191
  onNodeCollapse={(node, _path, _e) => {
129
- this._onNodeExpandCollapse(node.id, _path)
192
+ this._onNodeExpandCollapse(node.id)
130
193
  }}
131
194
  onNodeClick={(node, _path, _e) => {
132
- this._onNodeClick(node.id, _path)
195
+ this._onNodeClick(node.id)
133
196
  }}
134
197
  onNodeDoubleClick={(node, _path, _e) => {
135
- this._onNodeDoubleClick(node.id, _path)
198
+ this._onNodeDoubleClick(node.id)
136
199
  }}
137
200
  onNodeContextMenu={(node, _path, _e) => {
138
- this._onNodeContextMenu(node.id, _path)
201
+ this._onNodeContextMenu(node.id)
139
202
  }}
140
- />
203
+ /></div>
141
204
  ) : null
142
205
  }
143
206
  }
@@ -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
+ }
@@ -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
  /**
@@ -40,7 +40,7 @@ export function ConfigurationPanelComponent({config}: { config: UiObjectConfig<a
40
40
 
41
41
  return (
42
42
  <VisualStyleContext.Provider value={{...defaultVisualStyle, ...style}}>
43
- <Card id="bpInspectorCard" className={style.darkMode?Classes.DARK:""} style={{height: "100%", flexGrow: "1", position: "relative"}}>
43
+ <Card className={`bpInspectorCard ${style.darkMode?Classes.DARK:""}`}>
44
44
  <PanelStack2 className="inspectorPanelStack"
45
45
  showPanelHeader={true}
46
46
  renderActivePanelOnly={true}
@@ -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,98 @@ 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
+ loading={loadingState['popup-submit']}
160
+ onClick={() => updateLoading('popup-submit', doSubmit())}/>
161
+ </>
162
+
163
+ }
164
+
165
+ function DialogPromptContent({
166
+ message = 'Enter some text: ',
167
+ placeholder = '',
168
+ showInput = true,
169
+ }: {
170
+ message?: string,
171
+ placeholder?: string,
172
+ showInput?: boolean,
173
+ }){
174
+ const {state, setState} = useDialog() as {state: DialogPromptState, setState: Dispatch<SetStateAction<DialogPromptState>>}
175
+ return <FormGroup
176
+ helperText={state.helperText||undefined}
177
+ intent={state.intent}
178
+ label={message}
179
+ labelFor="dialog-prompt-text-input"
180
+ >
181
+ <InputGroup
182
+ intent={state.intent}
183
+ id="dialog-prompt-text-input"
184
+ placeholder={placeholder}
185
+ defaultValue={state.value}
186
+ style={{display: showInput ? 'block' : 'none'}}
187
+ onChange={(e: any) => {
188
+ state.value = e.target.value
189
+ state.helperText = ''
190
+ state.intent = Intent.NONE
191
+ setState({...state})
192
+ }} // todo: submit on enter
193
+ />
194
+ </FormGroup>
195
+
196
+ }
@@ -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
  }
@@ -58,6 +58,7 @@ export class ExtendedNumericInput extends React.PureComponent<HTMLInputProps & N
58
58
  leftElement={(
59
59
  <DraggableIcon icon={this.props.leftIcon ?? "variable"}
60
60
  size={16}
61
+ disabled={this.props.readOnly}
61
62
  small={this.props.small}
62
63
  value={parseFloat(value ?? '0')}
63
64
  stepSize={this.props.stepSize}