uiconfig-blueprint 0.1.0-dev.3 → 0.1.0-dev.5

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-By_mBgwU.js +23 -0
  3. package/dist/{allPaths-EtRM6tPk.js.map → allPaths-By_mBgwU.js.map} +1 -1
  4. package/dist/{allPathsLoader-h6vXUHQy.js → allPathsLoader-DzKtBkYf.js} +5 -5
  5. package/dist/{allPathsLoader-h6vXUHQy.js.map → allPathsLoader-DzKtBkYf.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 +13 -9
  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-C2vRz8Oc.js +671 -0
  15. package/dist/index-C2vRz8Oc.js.map +1 -0
  16. package/dist/index-CIM_EzrF.js +13055 -0
  17. package/dist/index-CIM_EzrF.js.map +1 -0
  18. package/dist/index-Dm8yRRlW.js +671 -0
  19. package/dist/index-Dm8yRRlW.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-DWtVZ468.js} +6 -6
  24. package/dist/{splitPathsBySizeLoader-R2EoBNrG.js.map → splitPathsBySizeLoader-DWtVZ468.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 +13 -9
  57. package/lib/esm/bpComponents/BPTreeComponent.js +104 -23
  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 +13 -16
  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 +99 -20
  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
@@ -6,9 +6,9 @@ export type BPTreeComponentState<T = {}> = BPComponentState & {
6
6
  }
7
7
 
8
8
  // https://github.com/palantir/blueprint/blob/develop/packages/docs-app/src/examples/core-examples/treeExample.tsx
9
- type NodePath = number[];
9
+ type NodePath = (string|number)[];
10
10
 
11
- export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPComponent<TConfigVal, BPTreeComponentState<T>> {
11
+ export abstract class BPTreeComponent<T = {}, TConfigVal extends any /*|PrimitiveVal|void*/ = void> extends BPComponent<TConfigVal, BPTreeComponentState<T>> {
12
12
  constructor(props: BPComponentProps<TConfigVal>, context: UiConfigRendererContextType) {
13
13
  super(props, context, {nodes: []});
14
14
  }
@@ -32,10 +32,10 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
32
32
 
33
33
  protected abstract _getRootNodes(): T[]
34
34
 
35
- protected async _onNodeClick(_id: string | number, _path: number[]) {
35
+ protected async _onNodeClick(_id: string | number) {
36
36
  }
37
37
 
38
- protected async _onNodeDoubleClick(_id: string | number, _path: number[]) {
38
+ protected async _onNodeDoubleClick(_id: string | number) {
39
39
  }
40
40
 
41
41
  protected _cloneNodes(callback?: (t:TreeNodeInfo<T>)=>void, state?: TreeNodeInfo<T>[]): TreeNodeInfo<T>[] {
@@ -50,30 +50,40 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
50
50
  })
51
51
  }
52
52
 
53
- protected _forEachNode<T>(nodes: TreeNodeInfo<T>[] | undefined, callback: (node: TreeNodeInfo<T>) => void) {
53
+ protected _getNodePath(id: string, nodes?: TreeNodeInfo<T>[]): NodePath {
54
+ let path1: NodePath|null = null
55
+ this._forEachNode(nodes ?? this.state.nodes, (node, path) => {
56
+ if(!path1) return
57
+ if (node.id === id) path1 = path
58
+ })
59
+ return path1 ?? []
60
+ }
61
+
62
+ protected _forEachNode<T>(nodes: TreeNodeInfo<T>[] | undefined, callback: (node: TreeNodeInfo<T>, path: NodePath) => void, path: NodePath = []) {
54
63
  if (nodes === undefined) {
55
64
  return nodes;
56
65
  }
57
66
  for (const node of nodes) {
58
- callback(node);
59
- this._forEachNode(node.childNodes, callback);
67
+ callback(node, path);
68
+ this._forEachNode(node.childNodes, callback, [...path, node.id]);
60
69
  }
61
70
  return nodes
62
71
  }
63
- protected _forNodeAtPath<T>(nodes: TreeNodeInfo<T>[], path: NodePath, callback: (node: TreeNodeInfo<T>) => void) {
64
- callback(Tree.nodeFromPath(path, nodes));
65
- }
66
72
 
67
- protected async _onNodeExpandCollapse(_id: string | number, _path: number[]) {
73
+ // protected _forNodeAtPath<T>(nodes: TreeNodeInfo<T>[], path: NodePath, callback: (node: TreeNodeInfo<T>) => void) {
74
+ // callback(Tree.nodeFromPath(path, nodes));
75
+ // }
76
+
77
+ protected async _onNodeExpandCollapse(_id: string | number, expanded?: boolean) {
68
78
  const nodes = this._cloneNodes()
69
79
  const node = this._infoMap.get(_id)
70
80
  if (!node) return
71
- node.isExpanded = !node.isExpanded
81
+ node.isExpanded = expanded ?? !node.isExpanded
72
82
  // forNodeAtPath(nodes, _path, node => (node.isExpanded = !node.isExpanded));
73
83
  await this.setStatePromise({...this.state, nodes})
74
84
  }
75
85
 
76
- protected async _onNodeContextMenu(_id: string | number, _path: number[]) {
86
+ protected async _onNodeContextMenu(_id: string | number) {
77
87
  }
78
88
 
79
89
  protected buildData(data: TreeNodeInfo<T>[], obj: T, _?: any, _2?: any) {
@@ -103,8 +113,15 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
103
113
  return this.setStatePromise({...this.state, nodes})
104
114
  }
105
115
 
106
- async setSelected(id?: string) {
116
+ async setSelected(id?: string, expand = false) {
107
117
  const nodes = this._cloneNodes(n => n.isSelected = n.id === id)
118
+ if(expand && id!==undefined){
119
+ const parents = this._getNodePath(id)
120
+ for (let i = 0; i < parents.length; i++) {
121
+ const node = this._infoMap.get(parents[i])
122
+ if(node) node.isExpanded = true
123
+ }
124
+ }
108
125
  return this.setStatePromise({...this.state, nodes})
109
126
  }
110
127
 
@@ -116,28 +133,90 @@ export abstract class BPTreeComponent<T = {}, TConfigVal = void> extends BPCompo
116
133
  super.componentWillUnmount();
117
134
  }
118
135
 
136
+ findSelectedNode(nodes?: TreeNodeInfo<T>[]): TreeNodeInfo<T> | undefined {
137
+ if (!nodes) nodes = this.state.nodes
138
+ for (const node of nodes) {
139
+ if (node.isSelected) return node
140
+ if (node.childNodes) {
141
+ const res = this.findSelectedNode(node.childNodes)
142
+ if (res) return res
143
+ }
144
+ }
145
+ }
146
+ getFlatNodes(onlyVisible = false, nodes?: TreeNodeInfo<T>[], res: TreeNodeInfo<T>[] = []): TreeNodeInfo<T>[] {
147
+ if (!nodes) nodes = this.state.nodes
148
+ for (const node of nodes) {
149
+ res.push(node)
150
+ if (node.childNodes && (!onlyVisible || node.isExpanded)) this.getFlatNodes(onlyVisible, node.childNodes, res)
151
+ }
152
+ return res
153
+ }
154
+
155
+ protected _handleKeyDown(e: React.KeyboardEvent) {
156
+ const nodes = this.getFlatNodes(true)
157
+ let current, next, previous;
158
+ for (let i = 0; i < nodes.length; i++) {
159
+ const node = nodes[i]
160
+ if (node.isSelected) {
161
+ current = node
162
+ next = i < nodes.length - 1 ? nodes[i + 1] : undefined
163
+ previous = i > 0 ? nodes[i - 1] : undefined
164
+ break
165
+ }
166
+ }
167
+ switch (e.key) {
168
+ case "ArrowUp":
169
+ if (previous) this._onNodeClick(previous.id)
170
+ break
171
+ case "ArrowDown":
172
+ if (next) this._onNodeClick(next.id)
173
+ break
174
+ case "ArrowRight":
175
+ if (current) this._onNodeExpandCollapse(current.id, true)
176
+ break
177
+ case "ArrowLeft":
178
+ if (current) this._onNodeExpandCollapse(current.id, false)
179
+ break
180
+ case "Escape":
181
+ if (current) this._onNodeClick(current.id)
182
+ break
183
+ case "Enter":
184
+ if (current) this._onNodeDoubleClick(current.id)
185
+ break
186
+ default:
187
+ return
188
+ }
189
+ e.preventDefault()
190
+ e.stopPropagation()
191
+ }
192
+
119
193
  render() {
120
194
  const TreeT = Tree.ofType<T>()
121
195
  return !this.state.hidden ? (
196
+ <div
197
+ style={{width: "100%", height: "100%"}}
198
+ onKeyDown={e => this._handleKeyDown(e)}
199
+ tabIndex={0}
200
+ >
122
201
  <TreeT
123
202
  contents={this.state.nodes}
124
203
  className="folderContent"
125
204
  onNodeExpand={(node, _path, _e) => {
126
- this._onNodeExpandCollapse(node.id, _path)
205
+ this._onNodeExpandCollapse(node.id)
127
206
  }}
128
207
  onNodeCollapse={(node, _path, _e) => {
129
- this._onNodeExpandCollapse(node.id, _path)
208
+ this._onNodeExpandCollapse(node.id)
130
209
  }}
131
210
  onNodeClick={(node, _path, _e) => {
132
- this._onNodeClick(node.id, _path)
211
+ this._onNodeClick(node.id)
133
212
  }}
134
213
  onNodeDoubleClick={(node, _path, _e) => {
135
- this._onNodeDoubleClick(node.id, _path)
214
+ this._onNodeDoubleClick(node.id)
136
215
  }}
137
216
  onNodeContextMenu={(node, _path, _e) => {
138
- this._onNodeContextMenu(node.id, _path)
217
+ this._onNodeContextMenu(node.id)
139
218
  }}
140
- />
219
+ /></div>
141
220
  ) : null
142
221
  }
143
222
  }
@@ -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