uiconfig-blueprint 0.1.0-dev.3 → 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 (307) hide show
  1. package/dist/UiConfigRendererBlueprint.d.ts +6 -4
  2. package/dist/allPaths-B8LX_D5a.js +23 -0
  3. package/dist/{allPaths-EtRM6tPk.js.map → allPaths-B8LX_D5a.js.map} +1 -1
  4. package/dist/{allPathsLoader-h6vXUHQy.js → allPathsLoader-ChwV6s_m.js} +5 -5
  5. package/dist/{allPathsLoader-h6vXUHQy.js.map → allPathsLoader-ChwV6s_m.js.map} +1 -1
  6. package/dist/bpComponents/BPComponent.d.ts +2 -1
  7. package/dist/bpComponents/BPFileComponent.d.ts +7 -5
  8. package/dist/bpComponents/BPFolderComponent.d.ts +1 -0
  9. package/dist/bpComponents/BPInputComponent.d.ts +2 -1
  10. package/dist/bpComponents/BPTreeComponent.d.ts +11 -6
  11. package/dist/bpComponents/BPValueComponent.d.ts +4 -1
  12. package/dist/components/FileComponent.d.ts +3 -1
  13. package/dist/components/loadingState.d.ts +4 -0
  14. package/dist/index-B3lLOxQd.js +671 -0
  15. package/dist/index-B3lLOxQd.js.map +1 -0
  16. package/dist/index-CPVHSDA_.js +13044 -0
  17. package/dist/index-CPVHSDA_.js.map +1 -0
  18. package/dist/index-DzfuAEGU.js +671 -0
  19. package/dist/index-DzfuAEGU.js.map +1 -0
  20. package/dist/index.js +48 -24
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +3 -3
  23. package/dist/{splitPathsBySizeLoader-R2EoBNrG.js → splitPathsBySizeLoader-WipJWyYS.js} +6 -6
  24. package/dist/{splitPathsBySizeLoader-R2EoBNrG.js.map → splitPathsBySizeLoader-WipJWyYS.js.map} +1 -1
  25. package/docs/assets/search.js +1 -1
  26. package/docs/classes/UI.html +10 -5
  27. package/docs/classes/UiConfigRendererBlueprint.html +10 -5
  28. package/lib/css/renderer.css +21 -4
  29. package/lib/css/renderer.css.map +1 -1
  30. package/lib/esm/ConfigObject.js +4 -6
  31. package/lib/esm/ConfigObject.js.map +1 -1
  32. package/lib/esm/UiConfigRendererBlueprint.d.ts +6 -4
  33. package/lib/esm/UiConfigRendererBlueprint.js +7 -5
  34. package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
  35. package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
  36. package/lib/esm/bpComponents/BPColorInputComponent.js +1 -1
  37. package/lib/esm/bpComponents/BPComponent.d.ts +2 -1
  38. package/lib/esm/bpComponents/BPComponent.js +12 -1
  39. package/lib/esm/bpComponents/BPComponent.js.map +1 -1
  40. package/lib/esm/bpComponents/BPContainerComponent.js +1 -1
  41. package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
  42. package/lib/esm/bpComponents/BPDropdownInputComponent.js +6 -2
  43. package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
  44. package/lib/esm/bpComponents/BPFileComponent.d.ts +7 -5
  45. package/lib/esm/bpComponents/BPFileComponent.js +12 -24
  46. package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
  47. package/lib/esm/bpComponents/BPFolderComponent.d.ts +1 -0
  48. package/lib/esm/bpComponents/BPFolderComponent.js +7 -7
  49. package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
  50. package/lib/esm/bpComponents/BPInputComponent.d.ts +2 -1
  51. package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
  52. package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
  53. package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
  54. package/lib/esm/bpComponents/BPSliderInputComponent.js +13 -2
  55. package/lib/esm/bpComponents/BPSliderInputComponent.js.map +1 -1
  56. package/lib/esm/bpComponents/BPTreeComponent.d.ts +11 -6
  57. package/lib/esm/bpComponents/BPTreeComponent.js +85 -19
  58. package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
  59. package/lib/esm/bpComponents/BPValueComponent.d.ts +4 -1
  60. package/lib/esm/bpComponents/BPValueComponent.js +19 -3
  61. package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
  62. package/lib/esm/components/DialogContext.js +1 -1
  63. package/lib/esm/components/DialogContext.js.map +1 -1
  64. package/lib/esm/components/FileComponent.d.ts +3 -1
  65. package/lib/esm/components/FileComponent.js +19 -19
  66. package/lib/esm/components/FileComponent.js.map +1 -1
  67. package/lib/esm/components/loadingState.d.ts +4 -0
  68. package/lib/esm/components/loadingState.js +10 -0
  69. package/lib/esm/components/loadingState.js.map +1 -1
  70. package/package.json +10 -10
  71. package/src/ConfigObject.tsx +5 -6
  72. package/src/UiConfigRendererBlueprint.tsx +9 -8
  73. package/src/bpComponents/BPButtonComponent.tsx +1 -0
  74. package/src/bpComponents/BPColorInputComponent.tsx +1 -1
  75. package/src/bpComponents/BPComponent.tsx +14 -4
  76. package/src/bpComponents/BPContainerComponent.tsx +2 -1
  77. package/src/bpComponents/BPDropdownInputComponent.tsx +7 -2
  78. package/src/bpComponents/BPFileComponent.tsx +41 -25
  79. package/src/bpComponents/BPFolderComponent.scss +10 -1
  80. package/src/bpComponents/BPFolderComponent.tsx +9 -5
  81. package/src/bpComponents/BPInputComponent.tsx +2 -1
  82. package/src/bpComponents/BPPanelComponent.tsx +1 -1
  83. package/src/bpComponents/BPSliderInputComponent.tsx +13 -2
  84. package/src/bpComponents/BPTreeComponent.tsx +78 -15
  85. package/src/bpComponents/BPValueComponent.tsx +31 -4
  86. package/src/components/DialogContext.tsx +3 -3
  87. package/src/components/FileComponent.tsx +48 -25
  88. package/src/components/loadingState.tsx +9 -0
  89. package/src/renderer.scss +15 -1
  90. package/tsconfig.json +1 -0
  91. package/dist/allPaths-EtRM6tPk.js +0 -23
  92. package/dist/index-3UEmjC9y.js +0 -13032
  93. package/dist/index-3UEmjC9y.js.map +0 -1
  94. package/dist/index-CwuazIjl.js +0 -604
  95. package/dist/index-CwuazIjl.js.map +0 -1
  96. package/dist/index-rhJTBxMq.js +0 -604
  97. package/dist/index-rhJTBxMq.js.map +0 -1
  98. package/lib/cjs/ConfigObject.d.ts +0 -18
  99. package/lib/cjs/ConfigObject.js +0 -82
  100. package/lib/cjs/ConfigObject.js.map +0 -1
  101. package/lib/cjs/UiConfigRendererBlueprint.d.ts +0 -13
  102. package/lib/cjs/UiConfigRendererBlueprint.js +0 -56
  103. package/lib/cjs/UiConfigRendererBlueprint.js.map +0 -1
  104. package/lib/cjs/bpComponents/BPButtonComponent.d.ts +0 -8
  105. package/lib/cjs/bpComponents/BPButtonComponent.js +0 -19
  106. package/lib/cjs/bpComponents/BPButtonComponent.js.map +0 -1
  107. package/lib/cjs/bpComponents/BPColorInputComponent.d.ts +0 -24
  108. package/lib/cjs/bpComponents/BPColorInputComponent.js +0 -127
  109. package/lib/cjs/bpComponents/BPColorInputComponent.js.map +0 -1
  110. package/lib/cjs/bpComponents/BPComponent.d.ts +0 -29
  111. package/lib/cjs/bpComponents/BPComponent.js +0 -59
  112. package/lib/cjs/bpComponents/BPComponent.js.map +0 -1
  113. package/lib/cjs/bpComponents/BPContainerComponent.d.ts +0 -21
  114. package/lib/cjs/bpComponents/BPContainerComponent.js +0 -54
  115. package/lib/cjs/bpComponents/BPContainerComponent.js.map +0 -1
  116. package/lib/cjs/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  117. package/lib/cjs/bpComponents/BPDropdownInputComponent.js +0 -43
  118. package/lib/cjs/bpComponents/BPDropdownInputComponent.js.map +0 -1
  119. package/lib/cjs/bpComponents/BPFileComponent.d.ts +0 -25
  120. package/lib/cjs/bpComponents/BPFileComponent.js +0 -69
  121. package/lib/cjs/bpComponents/BPFileComponent.js.map +0 -1
  122. package/lib/cjs/bpComponents/BPFolderComponent.d.ts +0 -16
  123. package/lib/cjs/bpComponents/BPFolderComponent.js +0 -39
  124. package/lib/cjs/bpComponents/BPFolderComponent.js.map +0 -1
  125. package/lib/cjs/bpComponents/BPInputComponent.d.ts +0 -11
  126. package/lib/cjs/bpComponents/BPInputComponent.js +0 -34
  127. package/lib/cjs/bpComponents/BPInputComponent.js.map +0 -1
  128. package/lib/cjs/bpComponents/BPLabelledComponent.d.ts +0 -8
  129. package/lib/cjs/bpComponents/BPLabelledComponent.js +0 -14
  130. package/lib/cjs/bpComponents/BPLabelledComponent.js.map +0 -1
  131. package/lib/cjs/bpComponents/BPNumberInputComponent.d.ts +0 -10
  132. package/lib/cjs/bpComponents/BPNumberInputComponent.js +0 -40
  133. package/lib/cjs/bpComponents/BPNumberInputComponent.js.map +0 -1
  134. package/lib/cjs/bpComponents/BPPanelComponent.d.ts +0 -16
  135. package/lib/cjs/bpComponents/BPPanelComponent.js +0 -35
  136. package/lib/cjs/bpComponents/BPPanelComponent.js.map +0 -1
  137. package/lib/cjs/bpComponents/BPSliderInputComponent.d.ts +0 -14
  138. package/lib/cjs/bpComponents/BPSliderInputComponent.js +0 -41
  139. package/lib/cjs/bpComponents/BPSliderInputComponent.js.map +0 -1
  140. package/lib/cjs/bpComponents/BPTextInputComponent.d.ts +0 -7
  141. package/lib/cjs/bpComponents/BPTextInputComponent.js +0 -19
  142. package/lib/cjs/bpComponents/BPTextInputComponent.js.map +0 -1
  143. package/lib/cjs/bpComponents/BPToggleInputComponent.d.ts +0 -8
  144. package/lib/cjs/bpComponents/BPToggleInputComponent.js +0 -22
  145. package/lib/cjs/bpComponents/BPToggleInputComponent.js.map +0 -1
  146. package/lib/cjs/bpComponents/BPTreeComponent.d.ts +0 -36
  147. package/lib/cjs/bpComponents/BPTreeComponent.js +0 -131
  148. package/lib/cjs/bpComponents/BPTreeComponent.js.map +0 -1
  149. package/lib/cjs/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  150. package/lib/cjs/bpComponents/BPTreeFolderComponent.js +0 -40
  151. package/lib/cjs/bpComponents/BPTreeFolderComponent.js.map +0 -1
  152. package/lib/cjs/bpComponents/BPValueComponent.d.ts +0 -16
  153. package/lib/cjs/bpComponents/BPValueComponent.js +0 -46
  154. package/lib/cjs/bpComponents/BPValueComponent.js.map +0 -1
  155. package/lib/cjs/bpComponents/BPVectorInputComponent.d.ts +0 -19
  156. package/lib/cjs/bpComponents/BPVectorInputComponent.js +0 -110
  157. package/lib/cjs/bpComponents/BPVectorInputComponent.js.map +0 -1
  158. package/lib/cjs/components/ConfigurationPanelComponent.d.ts +0 -4
  159. package/lib/cjs/components/ConfigurationPanelComponent.js +0 -30
  160. package/lib/cjs/components/ConfigurationPanelComponent.js.map +0 -1
  161. package/lib/cjs/components/DialogContext.d.ts +0 -48
  162. package/lib/cjs/components/DialogContext.js +0 -79
  163. package/lib/cjs/components/DialogContext.js.map +0 -1
  164. package/lib/cjs/components/DraggableIcon.d.ts +0 -19
  165. package/lib/cjs/components/DraggableIcon.js +0 -70
  166. package/lib/cjs/components/DraggableIcon.js.map +0 -1
  167. package/lib/cjs/components/ExtendedNumericInput.d.ts +0 -25
  168. package/lib/cjs/components/ExtendedNumericInput.js +0 -174
  169. package/lib/cjs/components/ExtendedNumericInput.js.map +0 -1
  170. package/lib/cjs/components/FileComponent.d.ts +0 -7
  171. package/lib/cjs/components/FileComponent.js +0 -49
  172. package/lib/cjs/components/FileComponent.js.map +0 -1
  173. package/lib/cjs/components/FormGroupComponent.d.ts +0 -6
  174. package/lib/cjs/components/FormGroupComponent.js +0 -16
  175. package/lib/cjs/components/FormGroupComponent.js.map +0 -1
  176. package/lib/cjs/components/InspectorStackComponent.d.ts +0 -4
  177. package/lib/cjs/components/InspectorStackComponent.js +0 -27
  178. package/lib/cjs/components/InspectorStackComponent.js.map +0 -1
  179. package/lib/cjs/components/VisualStyleContext.d.ts +0 -119
  180. package/lib/cjs/components/VisualStyleContext.js +0 -60
  181. package/lib/cjs/components/VisualStyleContext.js.map +0 -1
  182. package/lib/cjs/components/bpIconWrapper.d.ts +0 -2
  183. package/lib/cjs/components/bpIconWrapper.js +0 -9
  184. package/lib/cjs/components/bpIconWrapper.js.map +0 -1
  185. package/lib/cjs/components/loadingState.d.ts +0 -4
  186. package/lib/cjs/components/loadingState.js +0 -16
  187. package/lib/cjs/components/loadingState.js.map +0 -1
  188. package/lib/cjs/components/variableIcons.d.ts +0 -40
  189. package/lib/cjs/components/variableIcons.js +0 -46
  190. package/lib/cjs/components/variableIcons.js.map +0 -1
  191. package/lib/cjs/contexts.d.ts +0 -1
  192. package/lib/cjs/contexts.js +0 -3
  193. package/lib/cjs/contexts.js.map +0 -1
  194. package/lib/cjs/index.d.ts +0 -4
  195. package/lib/cjs/index.js +0 -9
  196. package/lib/cjs/index.js.map +0 -1
  197. package/lib/cjs/lib.d.ts +0 -32
  198. package/lib/cjs/lib.js +0 -49
  199. package/lib/cjs/lib.js.map +0 -1
  200. package/lib/cjs/threejs.d.ts +0 -2
  201. package/lib/cjs/threejs.js +0 -3
  202. package/lib/cjs/threejs.js.map +0 -1
  203. package/lib/esnext/ConfigObject.d.ts +0 -18
  204. package/lib/esnext/ConfigObject.js +0 -75
  205. package/lib/esnext/ConfigObject.js.map +0 -1
  206. package/lib/esnext/UiConfigRendererBlueprint.d.ts +0 -13
  207. package/lib/esnext/UiConfigRendererBlueprint.js +0 -52
  208. package/lib/esnext/UiConfigRendererBlueprint.js.map +0 -1
  209. package/lib/esnext/bpComponents/BPButtonComponent.d.ts +0 -8
  210. package/lib/esnext/bpComponents/BPButtonComponent.js +0 -15
  211. package/lib/esnext/bpComponents/BPButtonComponent.js.map +0 -1
  212. package/lib/esnext/bpComponents/BPColorInputComponent.d.ts +0 -24
  213. package/lib/esnext/bpComponents/BPColorInputComponent.js +0 -110
  214. package/lib/esnext/bpComponents/BPColorInputComponent.js.map +0 -1
  215. package/lib/esnext/bpComponents/BPComponent.d.ts +0 -29
  216. package/lib/esnext/bpComponents/BPComponent.js +0 -46
  217. package/lib/esnext/bpComponents/BPComponent.js.map +0 -1
  218. package/lib/esnext/bpComponents/BPContainerComponent.d.ts +0 -21
  219. package/lib/esnext/bpComponents/BPContainerComponent.js +0 -51
  220. package/lib/esnext/bpComponents/BPContainerComponent.js.map +0 -1
  221. package/lib/esnext/bpComponents/BPDropdownInputComponent.d.ts +0 -15
  222. package/lib/esnext/bpComponents/BPDropdownInputComponent.js +0 -40
  223. package/lib/esnext/bpComponents/BPDropdownInputComponent.js.map +0 -1
  224. package/lib/esnext/bpComponents/BPFileComponent.d.ts +0 -25
  225. package/lib/esnext/bpComponents/BPFileComponent.js +0 -52
  226. package/lib/esnext/bpComponents/BPFileComponent.js.map +0 -1
  227. package/lib/esnext/bpComponents/BPFolderComponent.d.ts +0 -16
  228. package/lib/esnext/bpComponents/BPFolderComponent.js +0 -30
  229. package/lib/esnext/bpComponents/BPFolderComponent.js.map +0 -1
  230. package/lib/esnext/bpComponents/BPInputComponent.d.ts +0 -11
  231. package/lib/esnext/bpComponents/BPInputComponent.js +0 -19
  232. package/lib/esnext/bpComponents/BPInputComponent.js.map +0 -1
  233. package/lib/esnext/bpComponents/BPLabelledComponent.d.ts +0 -8
  234. package/lib/esnext/bpComponents/BPLabelledComponent.js +0 -13
  235. package/lib/esnext/bpComponents/BPLabelledComponent.js.map +0 -1
  236. package/lib/esnext/bpComponents/BPNumberInputComponent.d.ts +0 -10
  237. package/lib/esnext/bpComponents/BPNumberInputComponent.js +0 -21
  238. package/lib/esnext/bpComponents/BPNumberInputComponent.js.map +0 -1
  239. package/lib/esnext/bpComponents/BPPanelComponent.d.ts +0 -16
  240. package/lib/esnext/bpComponents/BPPanelComponent.js +0 -31
  241. package/lib/esnext/bpComponents/BPPanelComponent.js.map +0 -1
  242. package/lib/esnext/bpComponents/BPSliderInputComponent.d.ts +0 -14
  243. package/lib/esnext/bpComponents/BPSliderInputComponent.js +0 -39
  244. package/lib/esnext/bpComponents/BPSliderInputComponent.js.map +0 -1
  245. package/lib/esnext/bpComponents/BPTextInputComponent.d.ts +0 -7
  246. package/lib/esnext/bpComponents/BPTextInputComponent.js +0 -15
  247. package/lib/esnext/bpComponents/BPTextInputComponent.js.map +0 -1
  248. package/lib/esnext/bpComponents/BPToggleInputComponent.d.ts +0 -8
  249. package/lib/esnext/bpComponents/BPToggleInputComponent.js +0 -18
  250. package/lib/esnext/bpComponents/BPToggleInputComponent.js.map +0 -1
  251. package/lib/esnext/bpComponents/BPTreeComponent.d.ts +0 -36
  252. package/lib/esnext/bpComponents/BPTreeComponent.js +0 -111
  253. package/lib/esnext/bpComponents/BPTreeComponent.js.map +0 -1
  254. package/lib/esnext/bpComponents/BPTreeFolderComponent.d.ts +0 -10
  255. package/lib/esnext/bpComponents/BPTreeFolderComponent.js +0 -23
  256. package/lib/esnext/bpComponents/BPTreeFolderComponent.js.map +0 -1
  257. package/lib/esnext/bpComponents/BPValueComponent.d.ts +0 -16
  258. package/lib/esnext/bpComponents/BPValueComponent.js +0 -29
  259. package/lib/esnext/bpComponents/BPValueComponent.js.map +0 -1
  260. package/lib/esnext/bpComponents/BPVectorInputComponent.d.ts +0 -19
  261. package/lib/esnext/bpComponents/BPVectorInputComponent.js +0 -93
  262. package/lib/esnext/bpComponents/BPVectorInputComponent.js.map +0 -1
  263. package/lib/esnext/components/ConfigurationPanelComponent.d.ts +0 -4
  264. package/lib/esnext/components/ConfigurationPanelComponent.js +0 -26
  265. package/lib/esnext/components/ConfigurationPanelComponent.js.map +0 -1
  266. package/lib/esnext/components/DialogContext.d.ts +0 -48
  267. package/lib/esnext/components/DialogContext.js +0 -55
  268. package/lib/esnext/components/DialogContext.js.map +0 -1
  269. package/lib/esnext/components/DraggableIcon.d.ts +0 -19
  270. package/lib/esnext/components/DraggableIcon.js +0 -62
  271. package/lib/esnext/components/DraggableIcon.js.map +0 -1
  272. package/lib/esnext/components/ExtendedNumericInput.d.ts +0 -25
  273. package/lib/esnext/components/ExtendedNumericInput.js +0 -151
  274. package/lib/esnext/components/ExtendedNumericInput.js.map +0 -1
  275. package/lib/esnext/components/FileComponent.d.ts +0 -7
  276. package/lib/esnext/components/FileComponent.js +0 -42
  277. package/lib/esnext/components/FileComponent.js.map +0 -1
  278. package/lib/esnext/components/FormGroupComponent.d.ts +0 -6
  279. package/lib/esnext/components/FormGroupComponent.js +0 -11
  280. package/lib/esnext/components/FormGroupComponent.js.map +0 -1
  281. package/lib/esnext/components/InspectorStackComponent.d.ts +0 -4
  282. package/lib/esnext/components/InspectorStackComponent.js +0 -23
  283. package/lib/esnext/components/InspectorStackComponent.js.map +0 -1
  284. package/lib/esnext/components/VisualStyleContext.d.ts +0 -119
  285. package/lib/esnext/components/VisualStyleContext.js +0 -53
  286. package/lib/esnext/components/VisualStyleContext.js.map +0 -1
  287. package/lib/esnext/components/bpIconWrapper.d.ts +0 -2
  288. package/lib/esnext/components/bpIconWrapper.js +0 -5
  289. package/lib/esnext/components/bpIconWrapper.js.map +0 -1
  290. package/lib/esnext/components/loadingState.d.ts +0 -4
  291. package/lib/esnext/components/loadingState.js +0 -12
  292. package/lib/esnext/components/loadingState.js.map +0 -1
  293. package/lib/esnext/components/variableIcons.d.ts +0 -40
  294. package/lib/esnext/components/variableIcons.js +0 -43
  295. package/lib/esnext/components/variableIcons.js.map +0 -1
  296. package/lib/esnext/contexts.d.ts +0 -1
  297. package/lib/esnext/contexts.js +0 -2
  298. package/lib/esnext/contexts.js.map +0 -1
  299. package/lib/esnext/index.d.ts +0 -4
  300. package/lib/esnext/index.js +0 -5
  301. package/lib/esnext/index.js.map +0 -1
  302. package/lib/esnext/lib.d.ts +0 -32
  303. package/lib/esnext/lib.js +0 -33
  304. package/lib/esnext/lib.js.map +0 -1
  305. package/lib/esnext/threejs.d.ts +0 -2
  306. package/lib/esnext/threejs.js +0 -2
  307. package/lib/esnext/threejs.js.map +0 -1
@@ -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
+ }
@@ -129,7 +129,7 @@ function DialogPromptButtons({
129
129
  closeButtonText?: string,
130
130
  submitButtonText?: string,
131
131
  onClose?: (value: string)=>boolean|undefined|Promise<boolean|undefined>, // does not close if false
132
- onSubmit?: (value: string)=>boolean|undefined|any|Promise<boolean|undefined|any>, // does not close if false
132
+ onSubmit?: (value: string)=>boolean|undefined|{error: string}|Promise<boolean|undefined|{error: string}>, // does not close if false
133
133
  resolve: (value: string|null)=>void,
134
134
  }){
135
135
  const {loadingState, updateLoading} = useLoadingState()
@@ -142,8 +142,8 @@ function DialogPromptButtons({
142
142
  const doSubmit = async()=> {
143
143
  if (onSubmit) {
144
144
  const res = await onSubmit(state.value)
145
- if(res.error){
146
- setState({...state, intent: Intent.DANGER, helperText: res.error})
145
+ if(res && (res as any).error){
146
+ setState({...state, intent: Intent.DANGER, helperText: (res as any).error})
147
147
  }
148
148
  if(res !== true) return
149
149
  }
@@ -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
  }
@@ -9,3 +9,12 @@ export function useLoadingState(){
9
9
  }, [loadingState])
10
10
  return {loadingState, updateLoading}
11
11
  }
12
+ export function useLoadingStateKey(){
13
+ const [loadingState, setLoadingState] = useState<boolean>(false)
14
+ const updateLoading = useCallback(async (promise?: Promise<any>|void) => {
15
+ if(!promise || promise.then === undefined) return setLoadingState(false)
16
+ setLoadingState(true)
17
+ await promise.then(() => setLoadingState(false))
18
+ }, [loadingState])
19
+ return {loadingState, updateLoading}
20
+ }
package/src/renderer.scss CHANGED
@@ -89,7 +89,7 @@
89
89
  align-items: center;
90
90
  justify-content: flex-end;
91
91
  gap: calc($pt-grid-size / 2);
92
- height: $pt-input-height;
92
+ //height: $pt-input-height; // todo: this will break the texture/image input
93
93
  flex-grow: 1;
94
94
  }
95
95
 
@@ -196,3 +196,17 @@
196
196
  user-select: none; // todo: why is this needed?
197
197
  transition: var(--background-color-transition);
198
198
  }
199
+
200
+ .file-component-select{
201
+ > select {
202
+ padding-right: 18px;
203
+ padding-left: 8px;
204
+ }
205
+ > .bp5-icon{
206
+ right: 0px;
207
+ }
208
+ }
209
+
210
+ .bp5-panel-stack2-view{
211
+ background: transparent;
212
+ }
package/tsconfig.json CHANGED
@@ -19,6 +19,7 @@
19
19
  "sourceMap": true,
20
20
  "target": "es6",
21
21
  "strictNullChecks": true,
22
+ "skipLibCheck": true,
22
23
  "lib": [
23
24
  "es5",
24
25
  "es2015",
@@ -1,23 +0,0 @@
1
- import { I as n } from "./index-CwuazIjl.js";
2
- import { I as e } from "./index-rhJTBxMq.js";
3
- import { p as r, I as s } from "./index-3UEmjC9y.js";
4
- /**
5
- * @license
6
- * uiconfig-blueprint v0.1.0-dev.3
7
- * Copyright 2022-2024 repalash <palash@shaders.app>
8
- * Apache-2.0 License
9
- */
10
- function I(o, t) {
11
- var a = r(o);
12
- return t === s.STANDARD ? n[a] : e[a];
13
- }
14
- function p(o) {
15
- return r(o);
16
- }
17
- export {
18
- n as IconSvgPaths16,
19
- e as IconSvgPaths20,
20
- I as getIconPaths,
21
- p as iconNameToPathsRecordKey
22
- };
23
- //# sourceMappingURL=allPaths-EtRM6tPk.js.map