@smwb/ui-solid 0.13.0 → 1.0.0

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 (411) hide show
  1. package/README.md +564 -0
  2. package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
  3. package/dist/assets/styles/less/components/button/button.entry.css +1 -1
  4. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  5. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  6. package/dist/assets/styles/less/components/commandPalette/commandPalette.entry.css +1 -0
  7. package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
  8. package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
  9. package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
  10. package/dist/assets/styles/less/components/list/list.entry.css +1 -1
  11. package/dist/assets/styles/less/components/qrCode/qrCode.entry.css +1 -0
  12. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  13. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  14. package/dist/assets/styles/less/components/sidebar/sidebar.entry.css +1 -1
  15. package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
  16. package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
  17. package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
  18. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  19. package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
  20. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  21. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  22. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  23. package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
  24. package/dist/assets/styles/less/tokens.entry.css +1 -1
  25. package/dist/components/dataDisplay/chat/chat.d.ts +42 -0
  26. package/dist/components/dataDisplay/chat/chat.js +116 -57
  27. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  28. package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
  29. package/dist/components/dataDisplay/chat/chatComposer.js +21 -19
  30. package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
  31. package/dist/components/dataDisplay/chat/index.d.ts +1 -1
  32. package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
  33. package/dist/components/dataDisplay/chat/utils.js.map +1 -1
  34. package/dist/components/dataDisplay/dagView/dagView.js +238 -223
  35. package/dist/components/dataDisplay/dagView/dagView.js.map +1 -1
  36. package/dist/components/dataDisplay/diffStat/diffStat.d.ts +55 -0
  37. package/dist/components/dataDisplay/diffStat/diffStat.js +70 -0
  38. package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  39. package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
  40. package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
  41. package/dist/components/dataDisplay/kbd/kbd.d.ts +41 -0
  42. package/dist/components/dataDisplay/kbd/kbd.js +47 -0
  43. package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
  44. package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
  45. package/dist/components/dataDisplay/kbd/kbdKeys.js +70 -0
  46. package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  47. package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
  48. package/dist/components/dataDisplay/list/listItem.js +57 -20
  49. package/dist/components/dataDisplay/list/listItem.js.map +1 -1
  50. package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
  51. package/dist/components/dataDisplay/qrCode/qrCode.d.ts +30 -0
  52. package/dist/components/dataDisplay/qrCode/qrCode.js +88 -0
  53. package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  54. package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
  55. package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  56. package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  57. package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
  58. package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
  59. package/dist/components/dataDisplay/statusDot/statusDot.js +31 -0
  60. package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  61. package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
  62. package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +75 -0
  63. package/dist/components/dataDisplay/swimlanes/swimlanes.js +361 -0
  64. package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  65. package/dist/components/dataDisplay/treeView/treeView.d.ts +20 -0
  66. package/dist/components/dataDisplay/treeView/treeView.js +161 -95
  67. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  68. package/dist/components/feedBack/modal/modal.d.ts +9 -0
  69. package/dist/components/feedBack/modal/modal.js +68 -54
  70. package/dist/components/feedBack/modal/modal.js.map +1 -1
  71. package/dist/components/inputs/button/button.d.ts +12 -0
  72. package/dist/components/inputs/button/button.js +44 -37
  73. package/dist/components/inputs/button/button.js.map +1 -1
  74. package/dist/components/inputs/composer/composer.d.ts +148 -0
  75. package/dist/components/inputs/composer/composer.js +276 -0
  76. package/dist/components/inputs/composer/composer.js.map +1 -0
  77. package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
  78. package/dist/components/inputs/composer/composerFiles.js +18 -0
  79. package/dist/components/inputs/composer/composerFiles.js.map +1 -0
  80. package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
  81. package/dist/components/inputs/composer/composerKeys.js +7 -0
  82. package/dist/components/inputs/composer/composerKeys.js.map +1 -0
  83. package/dist/components/inputs/composer/index.d.ts +3 -0
  84. package/dist/components/layout/sheet/sheet.d.ts +12 -0
  85. package/dist/components/layout/sheet/sheet.js +100 -86
  86. package/dist/components/layout/sheet/sheet.js.map +1 -1
  87. package/dist/components/layout/tabGroups/index.d.ts +4 -0
  88. package/dist/components/layout/tabGroups/tabGroups.d.ts +102 -0
  89. package/dist/components/layout/tabGroups/tabGroups.js +895 -0
  90. package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
  91. package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
  92. package/dist/components/layout/tabGroups/tabGroupsFocus.js +192 -0
  93. package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  94. package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
  95. package/dist/components/layout/tabGroups/tabGroupsLayout.js +480 -0
  96. package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  97. package/dist/components/navigation/appBar/appBar.d.ts +22 -0
  98. package/dist/components/navigation/appBar/appBar.js +60 -22
  99. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  100. package/dist/components/navigation/commandPalette/commandPalette.d.ts +126 -0
  101. package/dist/components/navigation/commandPalette/commandPalette.js +457 -0
  102. package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
  103. package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
  104. package/dist/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
  105. package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  106. package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
  107. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  108. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  109. package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
  110. package/dist/components/navigation/commandPalette/index.d.ts +6 -0
  111. package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
  112. package/dist/components/navigation/sidebar/sidebar.js +12 -10
  113. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  114. package/dist/components/navigation/tabs/index.d.ts +3 -1
  115. package/dist/components/navigation/tabs/tab/tab.d.ts +89 -2
  116. package/dist/components/navigation/tabs/tab/tab.js +164 -44
  117. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  118. package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +20 -0
  119. package/dist/components/navigation/tabs/tabPanel/tabPanel.js +34 -0
  120. package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  121. package/dist/components/navigation/tabs/tabs.d.ts +73 -3
  122. package/dist/components/navigation/tabs/tabs.js +387 -160
  123. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  124. package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
  125. package/dist/components/navigation/tabs/tabs.utils.js +11 -0
  126. package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
  127. package/dist/components/navigation/tabs/tabsContext.d.ts +31 -1
  128. package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
  129. package/dist/headless/components/dataDisplay/chat/chat.js +116 -57
  130. package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
  131. package/dist/headless/components/dataDisplay/chat/chatComposer.js +21 -19
  132. package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
  133. package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
  134. package/dist/headless/components/dataDisplay/dagView/dagView.js +238 -223
  135. package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -1
  136. package/dist/headless/components/dataDisplay/diffStat/diffStat.js +68 -0
  137. package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  138. package/dist/headless/components/dataDisplay/kbd/kbd.js +45 -0
  139. package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
  140. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +70 -0
  141. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  142. package/dist/headless/components/dataDisplay/list/listItem.js +57 -20
  143. package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
  144. package/dist/headless/components/dataDisplay/qrCode/qrCode.js +86 -0
  145. package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  146. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  147. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  148. package/dist/headless/components/dataDisplay/statusDot/statusDot.js +29 -0
  149. package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  150. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +359 -0
  151. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  152. package/dist/headless/components/dataDisplay/treeView/treeView.js +161 -95
  153. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  154. package/dist/headless/components/feedBack/modal/modal.js +68 -54
  155. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  156. package/dist/headless/components/inputs/button/button.js +42 -35
  157. package/dist/headless/components/inputs/button/button.js.map +1 -1
  158. package/dist/headless/components/inputs/composer/composer.js +274 -0
  159. package/dist/headless/components/inputs/composer/composer.js.map +1 -0
  160. package/dist/headless/components/inputs/composer/composerFiles.js +18 -0
  161. package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
  162. package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
  163. package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
  164. package/dist/headless/components/layout/sheet/sheet.js +100 -86
  165. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  166. package/dist/headless/components/layout/tabGroups/tabGroups.js +893 -0
  167. package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
  168. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +192 -0
  169. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  170. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +480 -0
  171. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  172. package/dist/headless/components/navigation/appBar/appBar.js +64 -26
  173. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  174. package/dist/headless/components/navigation/commandPalette/commandPalette.js +455 -0
  175. package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
  176. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
  177. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  178. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  179. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  180. package/dist/headless/components/navigation/sidebar/sidebar.js +28 -26
  181. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  182. package/dist/headless/components/navigation/tabs/tab/tab.js +164 -44
  183. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  184. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +32 -0
  185. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  186. package/dist/headless/components/navigation/tabs/tabs.js +387 -160
  187. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  188. package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
  189. package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
  190. package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
  191. package/dist/headless/index.js +405 -367
  192. package/dist/headless/index.js.map +1 -1
  193. package/dist/headless/primitives/createFocusTrap.js +17 -17
  194. package/dist/headless/primitives/createFocusTrap.js.map +1 -1
  195. package/dist/headless/primitives/createKeyboardShortcut.js +16 -0
  196. package/dist/headless/primitives/createKeyboardShortcut.js.map +1 -0
  197. package/dist/headless/primitives/restoreFocus.js +10 -0
  198. package/dist/headless/primitives/restoreFocus.js.map +1 -0
  199. package/dist/headless/source/components/dataDisplay/chat/chat.jsx +38 -4
  200. package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  201. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
  202. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
  203. package/dist/headless/source/components/dataDisplay/chat/index.js.map +1 -1
  204. package/dist/headless/source/components/dataDisplay/chat/utils.js.map +2 -2
  205. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +30 -21
  206. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
  207. package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx +76 -0
  208. package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
  209. package/dist/headless/source/components/dataDisplay/diffStat/index.js +19 -0
  210. package/dist/headless/source/components/dataDisplay/diffStat/index.js.map +7 -0
  211. package/dist/headless/source/components/dataDisplay/kbd/index.js +9 -0
  212. package/dist/headless/source/components/dataDisplay/kbd/index.js.map +7 -0
  213. package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx +48 -0
  214. package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
  215. package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
  216. package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
  217. package/dist/headless/source/components/dataDisplay/list/listItem.jsx +37 -7
  218. package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  219. package/dist/headless/source/components/dataDisplay/qrCode/index.js +6 -0
  220. package/dist/headless/source/components/dataDisplay/qrCode/index.js.map +7 -0
  221. package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx +94 -0
  222. package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
  223. package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
  224. package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
  225. package/dist/headless/source/components/dataDisplay/statusDot/index.js +6 -0
  226. package/dist/headless/source/components/dataDisplay/statusDot/index.js.map +7 -0
  227. package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx +28 -0
  228. package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
  229. package/dist/headless/source/components/dataDisplay/swimlanes/index.js +15 -0
  230. package/dist/headless/source/components/dataDisplay/swimlanes/index.js.map +7 -0
  231. package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx +450 -0
  232. package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
  233. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +118 -37
  234. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  235. package/dist/headless/source/components/feedBack/modal/modal.jsx +34 -4
  236. package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
  237. package/dist/headless/source/components/inputs/button/button.jsx +6 -2
  238. package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
  239. package/dist/headless/source/components/inputs/composer/composer.jsx +319 -0
  240. package/dist/headless/source/components/inputs/composer/composer.jsx.map +1 -0
  241. package/dist/headless/source/components/inputs/composer/composerFiles.js +27 -0
  242. package/dist/headless/source/components/inputs/composer/composerFiles.js.map +7 -0
  243. package/dist/headless/source/components/inputs/composer/composerKeys.js +11 -0
  244. package/dist/headless/source/components/inputs/composer/composerKeys.js.map +7 -0
  245. package/dist/headless/source/components/inputs/composer/index.js +5 -0
  246. package/dist/headless/source/components/inputs/composer/index.js.map +7 -0
  247. package/dist/headless/source/components/layout/sheet/sheet.jsx +33 -11
  248. package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
  249. package/dist/headless/source/components/layout/tabGroups/index.js +8 -0
  250. package/dist/headless/source/components/layout/tabGroups/index.js.map +7 -0
  251. package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx +1117 -0
  252. package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
  253. package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
  254. package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
  255. package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
  256. package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
  257. package/dist/headless/source/components/navigation/appBar/appBar.jsx +27 -3
  258. package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
  259. package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx +506 -0
  260. package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
  261. package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  262. package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
  263. package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
  264. package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
  265. package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
  266. package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
  267. package/dist/headless/source/components/navigation/commandPalette/index.js +11 -0
  268. package/dist/headless/source/components/navigation/commandPalette/index.js.map +7 -0
  269. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +5 -2
  270. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  271. package/dist/headless/source/components/navigation/tabs/index.js +2 -0
  272. package/dist/headless/source/components/navigation/tabs/index.js.map +2 -2
  273. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +135 -8
  274. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  275. package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx +28 -0
  276. package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
  277. package/dist/headless/source/components/navigation/tabs/tabs.jsx +361 -13
  278. package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
  279. package/dist/headless/source/components/navigation/tabs/tabs.utils.js +18 -0
  280. package/dist/headless/source/components/navigation/tabs/tabs.utils.js.map +7 -0
  281. package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
  282. package/dist/headless/source/index.js +41 -1
  283. package/dist/headless/source/index.js.map +2 -2
  284. package/dist/headless/source/primitives/createFocusTrap.js +8 -3
  285. package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
  286. package/dist/headless/source/primitives/createKeyboardShortcut.js +23 -0
  287. package/dist/headless/source/primitives/createKeyboardShortcut.js.map +7 -0
  288. package/dist/headless/source/primitives/restoreFocus.js +14 -0
  289. package/dist/headless/source/primitives/restoreFocus.js.map +7 -0
  290. package/dist/headless/source/utils/keyboardShortcut.js +74 -0
  291. package/dist/headless/source/utils/keyboardShortcut.js.map +7 -0
  292. package/dist/headless/source/utils/linkAttrs.js +16 -0
  293. package/dist/headless/source/utils/linkAttrs.js.map +7 -0
  294. package/dist/headless/utils/keyboardShortcut.js +48 -0
  295. package/dist/headless/utils/keyboardShortcut.js.map +1 -0
  296. package/dist/headless/utils/linkAttrs.js +13 -0
  297. package/dist/headless/utils/linkAttrs.js.map +1 -0
  298. package/dist/index.d.ts +24 -3
  299. package/dist/index.js +405 -367
  300. package/dist/index.js.map +1 -1
  301. package/dist/primitives/createFocusTrap.d.ts +5 -0
  302. package/dist/primitives/createFocusTrap.js +17 -17
  303. package/dist/primitives/createFocusTrap.js.map +1 -1
  304. package/dist/primitives/createKeyboardShortcut.d.ts +23 -0
  305. package/dist/primitives/createKeyboardShortcut.js +16 -0
  306. package/dist/primitives/createKeyboardShortcut.js.map +1 -0
  307. package/dist/primitives/restoreFocus.d.ts +8 -0
  308. package/dist/primitives/restoreFocus.js +10 -0
  309. package/dist/primitives/restoreFocus.js.map +1 -0
  310. package/dist/source/components/dataDisplay/chat/chat.jsx +38 -4
  311. package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  312. package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
  313. package/dist/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
  314. package/dist/source/components/dataDisplay/chat/index.js.map +1 -1
  315. package/dist/source/components/dataDisplay/chat/utils.js.map +2 -2
  316. package/dist/source/components/dataDisplay/dagView/dagView.jsx +30 -21
  317. package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
  318. package/dist/source/components/dataDisplay/diffStat/diffStat.jsx +78 -0
  319. package/dist/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
  320. package/dist/source/components/dataDisplay/diffStat/index.js +19 -0
  321. package/dist/source/components/dataDisplay/diffStat/index.js.map +7 -0
  322. package/dist/source/components/dataDisplay/kbd/index.js +9 -0
  323. package/dist/source/components/dataDisplay/kbd/index.js.map +7 -0
  324. package/dist/source/components/dataDisplay/kbd/kbd.jsx +50 -0
  325. package/dist/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
  326. package/dist/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
  327. package/dist/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
  328. package/dist/source/components/dataDisplay/list/listItem.jsx +37 -7
  329. package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  330. package/dist/source/components/dataDisplay/qrCode/index.js +6 -0
  331. package/dist/source/components/dataDisplay/qrCode/index.js.map +7 -0
  332. package/dist/source/components/dataDisplay/qrCode/qrCode.jsx +96 -0
  333. package/dist/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
  334. package/dist/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
  335. package/dist/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
  336. package/dist/source/components/dataDisplay/statusDot/index.js +6 -0
  337. package/dist/source/components/dataDisplay/statusDot/index.js.map +7 -0
  338. package/dist/source/components/dataDisplay/statusDot/statusDot.jsx +30 -0
  339. package/dist/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
  340. package/dist/source/components/dataDisplay/swimlanes/index.js +15 -0
  341. package/dist/source/components/dataDisplay/swimlanes/index.js.map +7 -0
  342. package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx +452 -0
  343. package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
  344. package/dist/source/components/dataDisplay/treeView/treeView.jsx +118 -37
  345. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  346. package/dist/source/components/feedBack/modal/modal.jsx +34 -4
  347. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  348. package/dist/source/components/inputs/button/button.jsx +6 -2
  349. package/dist/source/components/inputs/button/button.jsx.map +1 -1
  350. package/dist/source/components/inputs/composer/composer.jsx +321 -0
  351. package/dist/source/components/inputs/composer/composer.jsx.map +1 -0
  352. package/dist/source/components/inputs/composer/composerFiles.js +27 -0
  353. package/dist/source/components/inputs/composer/composerFiles.js.map +7 -0
  354. package/dist/source/components/inputs/composer/composerKeys.js +11 -0
  355. package/dist/source/components/inputs/composer/composerKeys.js.map +7 -0
  356. package/dist/source/components/inputs/composer/index.js +5 -0
  357. package/dist/source/components/inputs/composer/index.js.map +7 -0
  358. package/dist/source/components/layout/sheet/sheet.jsx +33 -11
  359. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  360. package/dist/source/components/layout/tabGroups/index.js +8 -0
  361. package/dist/source/components/layout/tabGroups/index.js.map +7 -0
  362. package/dist/source/components/layout/tabGroups/tabGroups.jsx +1119 -0
  363. package/dist/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
  364. package/dist/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
  365. package/dist/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
  366. package/dist/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
  367. package/dist/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
  368. package/dist/source/components/navigation/appBar/appBar.jsx +27 -3
  369. package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
  370. package/dist/source/components/navigation/commandPalette/commandPalette.jsx +508 -0
  371. package/dist/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
  372. package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  373. package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
  374. package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
  375. package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
  376. package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
  377. package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
  378. package/dist/source/components/navigation/commandPalette/index.js +11 -0
  379. package/dist/source/components/navigation/commandPalette/index.js.map +7 -0
  380. package/dist/source/components/navigation/sidebar/sidebar.jsx +5 -2
  381. package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  382. package/dist/source/components/navigation/tabs/index.js +2 -0
  383. package/dist/source/components/navigation/tabs/index.js.map +2 -2
  384. package/dist/source/components/navigation/tabs/tab/tab.jsx +135 -8
  385. package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  386. package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx +30 -0
  387. package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
  388. package/dist/source/components/navigation/tabs/tabs.jsx +361 -13
  389. package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
  390. package/dist/source/components/navigation/tabs/tabs.utils.js +18 -0
  391. package/dist/source/components/navigation/tabs/tabs.utils.js.map +7 -0
  392. package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
  393. package/dist/source/index.js +41 -1
  394. package/dist/source/index.js.map +2 -2
  395. package/dist/source/primitives/createFocusTrap.js +8 -3
  396. package/dist/source/primitives/createFocusTrap.js.map +2 -2
  397. package/dist/source/primitives/createKeyboardShortcut.js +23 -0
  398. package/dist/source/primitives/createKeyboardShortcut.js.map +7 -0
  399. package/dist/source/primitives/restoreFocus.js +14 -0
  400. package/dist/source/primitives/restoreFocus.js.map +7 -0
  401. package/dist/source/utils/keyboardShortcut.js +74 -0
  402. package/dist/source/utils/keyboardShortcut.js.map +7 -0
  403. package/dist/source/utils/linkAttrs.js +16 -0
  404. package/dist/source/utils/linkAttrs.js.map +7 -0
  405. package/dist/utils/keyboardShortcut.d.ts +12 -0
  406. package/dist/utils/keyboardShortcut.js +48 -0
  407. package/dist/utils/keyboardShortcut.js.map +1 -0
  408. package/dist/utils/linkAttrs.d.ts +13 -0
  409. package/dist/utils/linkAttrs.js +13 -0
  410. package/dist/utils/linkAttrs.js.map +1 -0
  411. package/package.json +66 -3
@@ -1,95 +1,158 @@
1
- import { createComponent as s, use as D, spread as R, mergeProps as F, insert as g, template as _, effect as S, setAttribute as E, memo as y, className as K, delegateEvents as j } from "solid-js/web";
1
+ import { createComponent as i, use as F, spread as K, mergeProps as U, insert as f, template as w, setAttribute as v, effect as E, memo as N, className as j, delegateEvents as B } from "solid-js/web";
2
2
  import '../../../assets/styles/less/components/treeView/treeView.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import { mergeProps as q, splitProps as B, createSignal as P, For as V, createContext as G, useContext as H, Show as L } from "solid-js";
5
- import z from "clsx";
6
- import { createControllableState as O } from "../../../primitives/createControllableState.js";
7
- import { mergeRefs as J } from "../../../primitives/mergeRefs.js";
4
+ import { mergeProps as G, splitProps as H, createSignal as P, createContext as J, createMemo as $, For as Q, useContext as W, createUniqueId as X, Show as x } from "solid-js";
5
+ import q from "clsx";
6
+ import { createControllableState as z } from "../../../primitives/createControllableState.js";
7
+ import { mergeRefs as Y } from "../../../primitives/mergeRefs.js";
8
+ import { isOwnClick as Z } from "../../../utils/ownClick.js";
8
9
  import { Icon as T } from "../../base/icon/icon.js";
9
- var M = /* @__PURE__ */ _("<input type=checkbox class=smwb-tree__node__checkbox>"), Q = /* @__PURE__ */ _("<div role=group>"), U = /* @__PURE__ */ _("<div role=treeitem><span class=smwb-tree__node__content tabindex=0 role=button><span class=smwb-tree__node__label>"), W = /* @__PURE__ */ _("<div class=smwb-tree__node__loading role=status>Загрузка…"), X = /* @__PURE__ */ _("<div>"), Y = /* @__PURE__ */ _("<div class=smwb-tree__wrapper role=presentation>");
10
- const A = G();
11
- function N(o) {
12
- const n = H(A), e = () => o.item.id ?? o.path, h = () => o.item.children ?? n.loadedChildren()[e()], $ = () => n.hasLoader && (!!o.item.hasChildren || !!n.loadedChildren()[e()]), c = () => !!h() && (h()?.length ?? 0) > 0 || $(), f = () => n.expandedIds().includes(e()), m = () => n.selectedIds().includes(e()), I = () => n.loadingIds().includes(e()), x = () => {
13
- c() && (f() || n.ensureLoaded(o.item, e()), n.toggleExpanded(e())), n.selectable && n.toggleSelected(e());
14
- }, p = (a) => {
15
- a.key === "Enter" || a.key === " " ? (a.preventDefault(), x()) : a.key === "ArrowRight" && c() ? (n.ensureLoaded(o.item, e()), n.setOpen(e(), !0)) : a.key === "ArrowLeft" && c() && n.setOpen(e(), !1);
10
+ var ee = /* @__PURE__ */ w("<div class=smwb-tree__wrapper role=presentation>"), te = /* @__PURE__ */ w("<input type=checkbox class=smwb-tree__node__checkbox>"), ne = /* @__PURE__ */ w("<div role=group>"), re = /* @__PURE__ */ w("<div role=treeitem><div class=smwb-tree__node__row><span class=smwb-tree__node__toggle aria-hidden=true></span><span class=smwb-tree__node__content tabindex=0 role=button><span class=smwb-tree__node__label>"), le = /* @__PURE__ */ w("<span class=smwb-tree__node__actions>"), oe = /* @__PURE__ */ w("<div class=smwb-tree__node__loading role=status>"), de = /* @__PURE__ */ w("<div>");
11
+ const D = J();
12
+ function ae(s, t) {
13
+ if (s === t) return !0;
14
+ if (s.id !== t.id || s.label !== t.label || s.hasChildren !== t.hasChildren) return !1;
15
+ const e = s.children, c = t.children;
16
+ return e === c ? !0 : !e || !c || e.length !== c.length ? !1 : e.every((o, g) => {
17
+ const u = c[g];
18
+ return !!u && o.id === u.id && o.label === u.label && o.hasChildren === u.hasChildren;
19
+ });
20
+ }
21
+ function M(s) {
22
+ const t = $(() => s.items.map((o, g) => {
23
+ const u = s.path === "" ? `${g}` : `${s.path}.${g}`;
24
+ return {
25
+ id: o.id ?? u,
26
+ item: o,
27
+ path: u
28
+ };
29
+ })), e = $(() => new Map(t().map((o) => [o.id, o]))), c = $(() => t().map((o) => o.id));
30
+ return i(Q, {
31
+ get each() {
32
+ return c();
33
+ },
34
+ children: (o) => {
35
+ let g = e().get(o);
36
+ const u = () => g = e().get(o) ?? g;
37
+ return s.wrap ? (() => {
38
+ var m = ee();
39
+ return f(m, i(V, {
40
+ entry: u
41
+ })), m;
42
+ })() : i(V, {
43
+ entry: u
44
+ });
45
+ }
46
+ });
47
+ }
48
+ function V(s) {
49
+ const t = W(D), e = s.entry().id, c = () => s.entry().item, o = `${X()}-label`, g = $(() => c(), void 0, {
50
+ equals: ae
51
+ }), u = $(() => t.renderLabel ? t.renderLabel(g(), e) : g().label), m = () => c().children ?? t.loadedChildren()[e], I = () => t.hasLoader && (!!c().hasChildren || !!t.loadedChildren()[e]), h = () => !!m() && (m()?.length ?? 0) > 0 || I(), b = () => t.expandedIds().includes(e), C = () => t.selectedIds().includes(e), L = () => t.loadingIds().includes(e), y = () => {
52
+ b() || t.ensureLoaded(c(), e), t.toggleExpanded(e);
53
+ }, S = () => {
54
+ t.toggleOnRowClick && h() && y(), t.selectable && t.toggleSelected(e);
55
+ }, O = (d) => {
56
+ d.target === d.currentTarget && (d.key === "Enter" || d.key === " " ? (d.preventDefault(), S()) : d.key === "ArrowRight" && h() ? (t.ensureLoaded(c(), e), t.setOpen(e, !0)) : d.key === "ArrowLeft" && h() && t.setOpen(e, !1));
57
+ }, A = (d) => {
58
+ Z(d) && S();
16
59
  };
17
60
  return (() => {
18
- var a = U(), b = a.firstChild, k = b.firstChild;
19
- return b.$$keydown = p, b.$$click = x, g(b, s(L, {
61
+ var d = re(), n = d.firstChild, r = n.firstChild, l = r.nextSibling, _ = l.firstChild;
62
+ return v(d, "aria-labelledby", o), r.$$click = () => h() && y(), f(r, i(x, {
63
+ get when() {
64
+ return h();
65
+ },
66
+ get children() {
67
+ return i(T, {
68
+ get name() {
69
+ return b() ? "expand_more" : "chevron_right";
70
+ },
71
+ size: 20
72
+ });
73
+ }
74
+ })), f(n, i(x, {
20
75
  get when() {
21
- return n.checkboxes;
76
+ return t.checkboxes;
22
77
  },
23
78
  get children() {
24
- var r = M();
25
- return r.addEventListener("change", () => n.toggleSelected(e())), r.$$click = (u) => u.stopPropagation(), S(() => E(r, "aria-label", o.item.label)), S(() => r.checked = m()), r;
79
+ var a = te();
80
+ return a.addEventListener("change", () => t.toggleSelected(e)), E(() => v(a, "aria-label", c().label)), E(() => a.checked = C()), a;
26
81
  }
27
- }), k), g(k, s(L, {
82
+ }), l), l.$$keydown = O, l.$$click = A, v(_, "id", o), f(_, i(x, {
28
83
  get when() {
29
- return c();
84
+ return h();
30
85
  },
31
86
  get fallback() {
32
- return s(T, {
87
+ return i(T, {
33
88
  get name() {
34
- return n.listIcon;
89
+ return t.listIcon;
35
90
  },
36
91
  size: 20
37
92
  });
38
93
  },
39
94
  get children() {
40
- return s(T, {
95
+ return i(T, {
41
96
  get name() {
42
- return y(() => !!f())() ? n.nodeIcon.opened ?? "folder_open" : n.nodeIcon.closed ?? "folder";
97
+ return N(() => !!b())() ? t.nodeIcon.opened ?? "folder_open" : t.nodeIcon.closed ?? "folder";
43
98
  },
44
99
  fill: 1,
45
100
  size: 20
46
101
  });
47
102
  }
48
- }), null), g(k, (() => {
49
- var r = y(() => !!n.renderLabel);
50
- return () => r() ? n.renderLabel(o.item, e()) : o.item.label;
51
- })(), null), g(a, s(L, {
103
+ }), null), f(_, u, null), f(n, i(x, {
104
+ get when() {
105
+ return t.renderActions;
106
+ },
107
+ children: (a) => {
108
+ const p = $(() => a()(g(), e));
109
+ return (() => {
110
+ var k = le();
111
+ return f(k, p), k;
112
+ })();
113
+ }
114
+ }), null), f(d, i(x, {
52
115
  get when() {
53
- return y(() => !!c())() && f();
116
+ return N(() => !!h())() && b();
54
117
  },
55
118
  get children() {
56
- var r = Q();
57
- return g(r, s(L, {
119
+ var a = ne();
120
+ return f(a, i(x, {
58
121
  get when() {
59
- return !(I() && !h());
122
+ return !(L() && !m());
60
123
  },
61
124
  get fallback() {
62
- return W();
125
+ return (() => {
126
+ var p = oe();
127
+ return f(p, () => t.loadingText), p;
128
+ })();
63
129
  },
64
130
  get children() {
65
- return s(V, {
66
- get each() {
67
- return h() ?? [];
131
+ return i(M, {
132
+ get items() {
133
+ return m() ?? [];
68
134
  },
69
- children: (u, C) => s(N, {
70
- item: u,
71
- get path() {
72
- return `${o.path}.${C()}`;
73
- }
74
- })
135
+ get path() {
136
+ return s.entry().path;
137
+ }
75
138
  });
76
139
  }
77
- })), r;
140
+ })), a;
78
141
  }
79
- }), null), S((r) => {
80
- var u = z("smwb-tree__node", {
81
- "smwb-tree__node_selected": m()
82
- }), C = c() ? f() : void 0, w = n.selectable || n.checkboxes ? m() : void 0;
83
- return u !== r.e && K(a, r.e = u), C !== r.t && E(a, "aria-expanded", r.t = C), w !== r.a && E(a, "aria-selected", r.a = w), r;
142
+ }), null), E((a) => {
143
+ var p = q("smwb-tree__node", {
144
+ "smwb-tree__node_selected": C()
145
+ }), k = h() ? b() : void 0, R = t.selectable || t.checkboxes ? C() : void 0;
146
+ return p !== a.e && j(d, a.e = p), k !== a.t && v(d, "aria-expanded", a.t = k), R !== a.a && v(d, "aria-selected", a.a = R), a;
84
147
  }, {
85
148
  e: void 0,
86
149
  t: void 0,
87
150
  a: void 0
88
- }), a;
151
+ }), d;
89
152
  })();
90
153
  }
91
- function oe(o) {
92
- const n = q({
154
+ function be(s) {
155
+ const t = G({
93
156
  listIcon: "draft",
94
157
  nodeIcon: {
95
158
  closed: "folder",
@@ -99,41 +162,42 @@ function oe(o) {
99
162
  defaultExpanded: [],
100
163
  defaultSelected: [],
101
164
  selectable: !1,
102
- checkboxes: !1
103
- }, o), [e, h] = B(n, ["class", "listIcon", "nodeIcon", "data", "expanded", "defaultExpanded", "onExpandedChange", "selected", "defaultSelected", "onSelectedChange", "selectable", "checkboxes", "renderLabel", "loadChildren", "ref", "data-testid"]), [$, c] = P({}), [f, m] = P([]), [I, x] = O({
165
+ checkboxes: !1,
166
+ loadingText: "Loading…"
167
+ }, s), [e, c] = H(t, ["class", "listIcon", "nodeIcon", "data", "expanded", "defaultExpanded", "onExpandedChange", "selected", "defaultSelected", "onSelectedChange", "selectable", "checkboxes", "toggleOnRowClick", "renderLabel", "renderActions", "loadingText", "loadChildren", "ref", "data-testid"]), [o, g] = P({}), [u, m] = P([]), [I, h] = z({
104
168
  value: () => e.expanded,
105
169
  defaultValue: e.defaultExpanded,
106
- onChange: (t) => e.onExpandedChange?.(t)
170
+ onChange: (n) => e.onExpandedChange?.(n)
107
171
  });
108
- let p;
109
- const [a, b] = O({
172
+ let b;
173
+ const [C, L] = z({
110
174
  value: () => e.selected,
111
175
  defaultValue: e.defaultSelected,
112
- onChange: (t) => {
113
- const l = p;
114
- p = void 0, e.onSelectedChange?.(t, l);
176
+ onChange: (n) => {
177
+ const r = b;
178
+ b = void 0, e.onSelectedChange?.(n, r);
115
179
  }
116
- }), w = {
180
+ }), d = {
117
181
  expandedIds: I,
118
- selectedIds: a,
119
- loadedChildren: $,
120
- loadingIds: f,
121
- toggleExpanded: (t) => x((l) => l.includes(t) ? l.filter((d) => d !== t) : [...l, t]),
122
- setOpen: (t, l) => x((d) => {
123
- const i = d.includes(t);
124
- return l && !i ? [...d, t] : !l && i ? d.filter((v) => v !== t) : d;
182
+ selectedIds: C,
183
+ loadedChildren: o,
184
+ loadingIds: u,
185
+ toggleExpanded: (n) => h((r) => r.includes(n) ? r.filter((l) => l !== n) : [...r, n]),
186
+ setOpen: (n, r) => h((l) => {
187
+ const _ = l.includes(n);
188
+ return r && !_ ? [...l, n] : !r && _ ? l.filter((a) => a !== n) : l;
125
189
  }),
126
- toggleSelected: (t) => {
127
- p = {
128
- id: t,
129
- selected: !a().includes(t)
130
- }, b((l) => l.includes(t) ? l.filter((d) => d !== t) : [...l, t]);
190
+ toggleSelected: (n) => {
191
+ b = {
192
+ id: n,
193
+ selected: !C().includes(n)
194
+ }, L((r) => r.includes(n) ? r.filter((l) => l !== n) : [...r, n]);
131
195
  },
132
- ensureLoaded: (t, l) => {
133
- !e.loadChildren || $()[l] || t.children && t.children.length > 0 || (m((d) => d.includes(l) ? d : [...d, l]), e.loadChildren(t, l).then((d) => c((i) => ({
134
- ...i,
135
- [l]: d
136
- }))).finally(() => m((d) => d.filter((i) => i !== l))));
196
+ ensureLoaded: (n, r) => {
197
+ !e.loadChildren || o()[r] || n.children && n.children.length > 0 || (m((l) => l.includes(r) ? l : [...l, r]), e.loadChildren(n, r).then((l) => g((_) => ({
198
+ ..._,
199
+ [r]: l
200
+ }))).finally(() => m((l) => l.filter((_) => _ !== r))));
137
201
  },
138
202
  get selectable() {
139
203
  return e.selectable;
@@ -141,6 +205,12 @@ function oe(o) {
141
205
  get checkboxes() {
142
206
  return e.checkboxes;
143
207
  },
208
+ get toggleOnRowClick() {
209
+ return e.toggleOnRowClick ?? !e.selectable;
210
+ },
211
+ get loadingText() {
212
+ return e.loadingText;
213
+ },
144
214
  get nodeIcon() {
145
215
  return e.nodeIcon;
146
216
  },
@@ -150,41 +220,37 @@ function oe(o) {
150
220
  get renderLabel() {
151
221
  return e.renderLabel;
152
222
  },
223
+ get renderActions() {
224
+ return e.renderActions;
225
+ },
153
226
  get hasLoader() {
154
227
  return !!e.loadChildren;
155
228
  }
156
229
  };
157
- return s(A.Provider, {
158
- value: w,
230
+ return i(D.Provider, {
231
+ value: d,
159
232
  get children() {
160
- var t = X(), l = J(e.ref);
161
- return typeof l == "function" && D(l, t), R(t, F(h, {
233
+ var n = de(), r = Y(e.ref);
234
+ return typeof r == "function" && F(r, n), K(n, U(c, {
162
235
  get "data-testid"() {
163
236
  return e["data-testid"] ?? "tree-view";
164
237
  },
165
238
  role: "tree",
166
239
  get class() {
167
- return z("smwb-tree", e.class);
240
+ return q("smwb-tree", e.class);
168
241
  }
169
- }), !1, !0), g(t, s(V, {
170
- get each() {
242
+ }), !1, !0), f(n, i(M, {
243
+ get items() {
171
244
  return e.data;
172
245
  },
173
- children: (d, i) => (() => {
174
- var v = Y();
175
- return g(v, s(N, {
176
- item: d,
177
- get path() {
178
- return `${i()}`;
179
- }
180
- })), v;
181
- })()
182
- })), t;
246
+ path: "",
247
+ wrap: !0
248
+ })), n;
183
249
  }
184
250
  });
185
251
  }
186
- j(["click", "keydown"]);
252
+ B(["click", "keydown"]);
187
253
  export {
188
- oe as TreeView
254
+ be as TreeView
189
255
  };
190
256
  //# sourceMappingURL=treeView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"treeView.js","sources":["../../../../src/components/dataDisplay/treeView/treeView.tsx"],"sourcesContent":["import { type Accessor, type JSX, For, Show, createContext, createSignal, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ITreeNodeItem {\n /** Stable identifier. Falls back to the positional path when omitted. */\n id?: string;\n label: string;\n children?: ITreeNodeItem[];\n /** Hint that the node is expandable even before its children are loaded. */\n hasChildren?: boolean;\n}\n\nexport interface TreeViewProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n nodeIcon?: { opened?: string; closed?: string };\n listIcon?: string;\n data: ITreeNodeItem[];\n expanded?: string[];\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n selected?: string[];\n defaultSelected?: string[];\n /** Reports the full selection plus, for user toggles, the node that just changed. */\n onSelectedChange?: (selected: string[], changed?: { id: string; selected: boolean }) => void;\n selectable?: boolean;\n checkboxes?: boolean;\n renderLabel?: (item: ITreeNodeItem, nodeId: string) => JSX.Element;\n loadChildren?: (item: ITreeNodeItem, nodeId: string) => Promise<ITreeNodeItem[]>;\n /** Test id of the root `<div>`; `tree-view` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface TreeContextValue {\n expandedIds: Accessor<string[]>;\n selectedIds: Accessor<string[]>;\n loadedChildren: Accessor<Record<string, ITreeNodeItem[]>>;\n loadingIds: Accessor<string[]>;\n toggleExpanded: (id: string) => void;\n setOpen: (id: string, open: boolean) => void;\n toggleSelected: (id: string) => void;\n ensureLoaded: (item: ITreeNodeItem, nodeId: string) => void;\n selectable: boolean;\n checkboxes: boolean;\n nodeIcon: { opened?: string; closed?: string };\n listIcon: string;\n renderLabel: ((item: ITreeNodeItem, nodeId: string) => JSX.Element) | undefined;\n hasLoader: boolean;\n}\n\nconst TreeContext = createContext<TreeContextValue>();\n\nfunction TreeNode(props: { item: ITreeNodeItem; path: string }): JSX.Element {\n const ctx = useContext(TreeContext)!;\n const nodeId = (): string => props.item.id ?? props.path;\n const resolvedChildren = (): ITreeNodeItem[] | undefined => props.item.children ?? ctx.loadedChildren()[nodeId()];\n const isLazy = (): boolean => ctx.hasLoader && (!!props.item.hasChildren || !!ctx.loadedChildren()[nodeId()]);\n const hasChildNodes = (): boolean => (!!resolvedChildren() && (resolvedChildren()?.length ?? 0) > 0) || isLazy();\n const isOpen = (): boolean => ctx.expandedIds().includes(nodeId());\n const isSelected = (): boolean => ctx.selectedIds().includes(nodeId());\n const isLoading = (): boolean => ctx.loadingIds().includes(nodeId());\n\n const onLabelClick = (): void => {\n if (hasChildNodes()) {\n if (!isOpen()) ctx.ensureLoaded(props.item, nodeId());\n ctx.toggleExpanded(nodeId());\n }\n if (ctx.selectable) ctx.toggleSelected(nodeId());\n };\n\n const onKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onLabelClick();\n } else if (event.key === \"ArrowRight\" && hasChildNodes()) {\n ctx.ensureLoaded(props.item, nodeId());\n ctx.setOpen(nodeId(), true);\n } else if (event.key === \"ArrowLeft\" && hasChildNodes()) {\n ctx.setOpen(nodeId(), false);\n }\n };\n\n return (\n <div\n class={cn(\"smwb-tree__node\", { \"smwb-tree__node_selected\": isSelected() })}\n role=\"treeitem\"\n aria-expanded={hasChildNodes() ? isOpen() : undefined}\n aria-selected={ctx.selectable || ctx.checkboxes ? isSelected() : undefined}\n >\n <span class=\"smwb-tree__node__content\" onClick={onLabelClick} onKeyDown={onKeyDown} tabindex={0} role=\"button\">\n <Show when={ctx.checkboxes}>\n <input\n type=\"checkbox\"\n class=\"smwb-tree__node__checkbox\"\n checked={isSelected()}\n onClick={(e) => e.stopPropagation()}\n onChange={() => ctx.toggleSelected(nodeId())}\n aria-label={props.item.label}\n />\n </Show>\n <span class=\"smwb-tree__node__label\">\n <Show when={hasChildNodes()} fallback={<Icon name={ctx.listIcon} size={20} />}>\n <Icon name={isOpen() ? ctx.nodeIcon.opened ?? \"folder_open\" : ctx.nodeIcon.closed ?? \"folder\"} fill={1} size={20} />\n </Show>\n {ctx.renderLabel ? ctx.renderLabel(props.item, nodeId()) : props.item.label}\n </span>\n </span>\n <Show when={hasChildNodes() && isOpen()}>\n <div role=\"group\">\n <Show\n when={!(isLoading() && !resolvedChildren())}\n fallback={\n <div class=\"smwb-tree__node__loading\" role=\"status\">\n Загрузка…\n </div>\n }\n >\n <For each={resolvedChildren() ?? []}>\n {(child, idx) => <TreeNode item={child} path={`${props.path}.${idx()}`} />}\n </For>\n </Show>\n </div>\n </Show>\n </div>\n );\n}\n\nexport function TreeView(props: TreeViewProps): JSX.Element {\n const merged = mergeProps(\n {\n listIcon: \"draft\",\n nodeIcon: { closed: \"folder\", opened: \"folder_open\" } as { opened?: string; closed?: string },\n data: [] as ITreeNodeItem[],\n defaultExpanded: [] as string[],\n defaultSelected: [] as string[],\n selectable: false,\n checkboxes: false,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"listIcon\",\n \"nodeIcon\",\n \"data\",\n \"expanded\",\n \"defaultExpanded\",\n \"onExpandedChange\",\n \"selected\",\n \"defaultSelected\",\n \"onSelectedChange\",\n \"selectable\",\n \"checkboxes\",\n \"renderLabel\",\n \"loadChildren\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const [loadedChildren, setLoadedChildren] = createSignal<Record<string, ITreeNodeItem[]>>({});\n const [loadingIds, setLoadingIds] = createSignal<string[]>([]);\n const [expandedIds, setExpandedIds] = createControllableState<string[]>({\n value: () => local.expanded,\n defaultValue: local.defaultExpanded,\n onChange: (next) => local.onExpandedChange?.(next),\n });\n let lastToggled: { id: string; selected: boolean } | undefined;\n const [selectedIds, setSelectedIds] = createControllableState<string[]>({\n value: () => local.selected,\n defaultValue: local.defaultSelected,\n onChange: (next) => {\n // createControllableState calls onChange synchronously from the setter,\n // so lastToggled still refers to the toggle that caused this change.\n const changed = lastToggled;\n lastToggled = undefined;\n local.onSelectedChange?.(next, changed);\n },\n });\n\n const toggleExpanded = (id: string): void =>\n setExpandedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n\n const setOpen = (id: string, open: boolean): void =>\n setExpandedIds((prev) => {\n const has = prev.includes(id);\n if (open && !has) return [...prev, id];\n if (!open && has) return prev.filter((x) => x !== id);\n return prev;\n });\n\n const toggleSelected = (id: string): void => {\n lastToggled = { id, selected: !selectedIds().includes(id) };\n setSelectedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n };\n\n const ensureLoaded = (item: ITreeNodeItem, nodeId: string): void => {\n if (!local.loadChildren || loadedChildren()[nodeId] || (item.children && item.children.length > 0)) return;\n setLoadingIds((prev) => (prev.includes(nodeId) ? prev : [...prev, nodeId]));\n void local\n .loadChildren(item, nodeId)\n .then((children) => setLoadedChildren((prev) => ({ ...prev, [nodeId]: children })))\n .finally(() => setLoadingIds((prev) => prev.filter((x) => x !== nodeId)));\n };\n\n const contextValue: TreeContextValue = {\n expandedIds,\n selectedIds,\n loadedChildren,\n loadingIds,\n toggleExpanded,\n setOpen,\n toggleSelected,\n ensureLoaded,\n get selectable() {\n return local.selectable;\n },\n get checkboxes() {\n return local.checkboxes;\n },\n get nodeIcon() {\n return local.nodeIcon;\n },\n get listIcon() {\n return local.listIcon;\n },\n get renderLabel() {\n return local.renderLabel;\n },\n get hasLoader() {\n return !!local.loadChildren;\n },\n };\n\n return (\n <TreeContext.Provider value={contextValue}>\n <div\n {...rest}\n data-testid={local[\"data-testid\"] ?? \"tree-view\"}\n ref={mergeRefs(local.ref)}\n role=\"tree\"\n class={cn(\"smwb-tree\", local.class)}\n >\n <For each={local.data}>\n {(node, idx) => (\n <div class=\"smwb-tree__wrapper\" role=\"presentation\">\n <TreeNode item={node} path={`${idx()}`} />\n </div>\n )}\n </For>\n </div>\n </TreeContext.Provider>\n );\n}\n\nexport default TreeView;\n"],"names":["TreeContext","createContext","TreeNode","props","ctx","useContext","nodeId","item","id","path","resolvedChildren","children","loadedChildren","isLazy","hasLoader","hasChildren","hasChildNodes","length","isOpen","expandedIds","includes","isSelected","selectedIds","isLoading","loadingIds","onLabelClick","ensureLoaded","toggleExpanded","selectable","toggleSelected","onKeyDown","event","key","preventDefault","setOpen","_el$","_tmpl$3","_el$2","firstChild","_el$4","$$keydown","$$click","_$insert","_$createComponent","Show","when","checkboxes","_el$3","_tmpl$","addEventListener","e","stopPropagation","_$effect","_$setAttribute","label","checked","fallback","Icon","name","listIcon","size","_$memo","nodeIcon","opened","closed","fill","_c$","renderLabel","_el$5","_tmpl$2","_tmpl$4","For","each","child","idx","_p$","_v$","cn","_v$2","undefined","_v$3","_$className","t","a","TreeView","merged","mergeProps","data","defaultExpanded","defaultSelected","local","rest","splitProps","setLoadedChildren","createSignal","setLoadingIds","setExpandedIds","createControllableState","value","expanded","defaultValue","onChange","next","onExpandedChange","lastToggled","setSelectedIds","selected","changed","onSelectedChange","contextValue","prev","filter","x","open","has","loadChildren","then","finally","Provider","_el$7","_tmpl$5","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","class","node","_el$8","_tmpl$6","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"treeView.js","sources":["../../../../src/components/dataDisplay/treeView/treeView.tsx"],"sourcesContent":["import {\n type Accessor,\n type JSX,\n For,\n Show,\n createContext,\n createMemo,\n createSignal,\n createUniqueId,\n mergeProps,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { isOwnClick } from \"../../../utils/ownClick\";\n\nexport interface ITreeNodeItem {\n /** Stable identifier. Falls back to the positional path when omitted. */\n id?: string;\n label: string;\n children?: ITreeNodeItem[];\n /** Hint that the node is expandable even before its children are loaded. */\n hasChildren?: boolean;\n}\n\nexport interface TreeViewProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n nodeIcon?: { opened?: string; closed?: string };\n listIcon?: string;\n data: ITreeNodeItem[];\n expanded?: string[];\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n selected?: string[];\n defaultSelected?: string[];\n /** Reports the full selection plus, for user toggles, the node that just changed. */\n onSelectedChange?: (selected: string[], changed?: { id: string; selected: boolean }) => void;\n /**\n * Enables row selection: a click, Enter or Space on a row toggles its selection. The chevron and the\n * Left/Right keys never change it.\n */\n selectable?: boolean;\n /** Renders a checkbox per node bound to selection. */\n checkboxes?: boolean;\n /**\n * Whether a click, Enter or Space on a row also expands or collapses its children. The chevron and the\n * Right/Left keys always do. Defaults to `true` while the tree is not `selectable` (a row has nothing else to\n * do) and to `false` otherwise, so that selecting a row leaves it open or closed.\n */\n toggleOnRowClick?: boolean;\n /** Custom node renderer. */\n renderLabel?: (item: ITreeNodeItem, nodeId: string) => JSX.Element;\n /**\n * Per-node actions (buttons, a menu trigger), drawn at the end of the row. They sit beside the row's\n * button, not inside it, so they take their own clicks, Enter and Space, focus and accessible names.\n */\n renderActions?: (item: ITreeNodeItem, nodeId: string) => JSX.Element;\n /** Text shown while `loadChildren` is pending; \"Loading…\" unless given. */\n loadingText?: string;\n /** Lazily resolves children the first time a node is expanded. */\n loadChildren?: (item: ITreeNodeItem, nodeId: string) => Promise<ITreeNodeItem[]>;\n /** Test id of the root `<div>`; `tree-view` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface TreeContextValue {\n expandedIds: Accessor<string[]>;\n selectedIds: Accessor<string[]>;\n loadedChildren: Accessor<Record<string, ITreeNodeItem[]>>;\n loadingIds: Accessor<string[]>;\n toggleExpanded: (id: string) => void;\n setOpen: (id: string, open: boolean) => void;\n toggleSelected: (id: string) => void;\n ensureLoaded: (item: ITreeNodeItem, nodeId: string) => void;\n selectable: boolean;\n checkboxes: boolean;\n toggleOnRowClick: boolean;\n loadingText: string;\n nodeIcon: { opened?: string; closed?: string };\n listIcon: string;\n renderLabel: ((item: ITreeNodeItem, nodeId: string) => JSX.Element) | undefined;\n renderActions: ((item: ITreeNodeItem, nodeId: string) => JSX.Element) | undefined;\n hasLoader: boolean;\n}\n\nconst TreeContext = createContext<TreeContextValue>();\n\ninterface TreeEntry {\n id: string;\n item: ITreeNodeItem;\n path: string;\n}\n\n/**\n * Whether two items are the same as far as a row's own markup goes. A caller that refetches hands the tree\n * brand-new objects for the same nodes, and comparing those by identity would rebuild the `renderLabel` /\n * `renderActions` output on every refetch: Solid replaces a dynamic child, so the elements the caller drew\n * (and the focus in them, an open menu anchored to one, a caret) would be thrown away while the row around\n * them survives. Children are compared one level deep — a row draws that it has them, not their subtrees.\n */\nfunction sameItem(a: ITreeNodeItem, b: ITreeNodeItem): boolean {\n if (a === b) return true;\n if (a.id !== b.id || a.label !== b.label || a.hasChildren !== b.hasChildren) return false;\n const left = a.children;\n const right = b.children;\n if (left === right) return true;\n if (!left || !right || left.length !== right.length) return false;\n return left.every((child, idx) => {\n const other = right[idx];\n return !!other && child.id === other.id && child.label === other.label && child.hasChildren === other.hasChildren;\n });\n}\n\n/**\n * The rows of one level, keyed by node id. `For` keys by reference, so it would rebuild every row (and drop\n * the focus in it) whenever the caller hands in new objects for the same nodes. It is given the ids instead:\n * equal strings are the same row, and a row reads its item from the current data.\n */\nfunction TreeNodes(props: { items: ITreeNodeItem[]; path: string; wrap?: boolean }): JSX.Element {\n const entries = createMemo<TreeEntry[]>(() =>\n props.items.map((item, idx) => {\n const path = props.path === \"\" ? `${idx}` : `${props.path}.${idx}`;\n return { id: item.id ?? path, item, path };\n })\n );\n const byId = createMemo(() => new Map(entries().map((entry) => [entry.id, entry])));\n const ids = createMemo(() => entries().map((entry) => entry.id));\n\n return (\n <For each={ids()}>\n {(id) => {\n // A removed row is disposed after the lookup recomputes, so keep the last entry for that pass.\n let last = byId().get(id)!;\n const entry = (): TreeEntry => (last = byId().get(id) ?? last);\n return props.wrap ? (\n <div class=\"smwb-tree__wrapper\" role=\"presentation\">\n <TreeNode entry={entry} />\n </div>\n ) : (\n <TreeNode entry={entry} />\n );\n }}\n </For>\n );\n}\n\nfunction TreeNode(props: { entry: Accessor<TreeEntry> }): JSX.Element {\n const ctx = useContext(TreeContext)!;\n // The id is the row's identity and never changes while the row lives.\n const nodeId = props.entry().id;\n const item = (): ITreeNodeItem => props.entry().item;\n // Names the treeitem: its own content would drag the actions and the checkbox into the node's name.\n const labelId = `${createUniqueId()}-label`;\n // What the caller's renderers see. Held by value, not by identity, so a refetch that hands in new\n // objects for the same nodes does not rebuild the slots below (see sameItem).\n const slotItem = createMemo(() => item(), undefined, { equals: sameItem });\n const labelSlot = createMemo<JSX.Element>(() =>\n ctx.renderLabel ? ctx.renderLabel(slotItem(), nodeId) : slotItem().label\n );\n const resolvedChildren = (): ITreeNodeItem[] | undefined => item().children ?? ctx.loadedChildren()[nodeId];\n const isLazy = (): boolean => ctx.hasLoader && (!!item().hasChildren || !!ctx.loadedChildren()[nodeId]);\n const hasChildNodes = (): boolean => (!!resolvedChildren() && (resolvedChildren()?.length ?? 0) > 0) || isLazy();\n const isOpen = (): boolean => ctx.expandedIds().includes(nodeId);\n const isSelected = (): boolean => ctx.selectedIds().includes(nodeId);\n const isLoading = (): boolean => ctx.loadingIds().includes(nodeId);\n\n const toggleNode = (): void => {\n if (!isOpen()) ctx.ensureLoaded(item(), nodeId);\n ctx.toggleExpanded(nodeId);\n };\n\n const activateRow = (): void => {\n if (ctx.toggleOnRowClick && hasChildNodes()) toggleNode();\n if (ctx.selectable) ctx.toggleSelected(nodeId);\n };\n\n const onKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n // Keys from controls a custom label draws are theirs.\n if (event.target !== event.currentTarget) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n activateRow();\n } else if (event.key === \"ArrowRight\" && hasChildNodes()) {\n ctx.ensureLoaded(item(), nodeId);\n ctx.setOpen(nodeId, true);\n } else if (event.key === \"ArrowLeft\" && hasChildNodes()) {\n ctx.setOpen(nodeId, false);\n }\n };\n\n const onContentClick: JSX.EventHandler<HTMLSpanElement, MouseEvent> = (event) => {\n if (isOwnClick(event)) activateRow();\n };\n\n return (\n <div\n class={cn(\"smwb-tree__node\", { \"smwb-tree__node_selected\": isSelected() })}\n role=\"treeitem\"\n aria-labelledby={labelId}\n aria-expanded={hasChildNodes() ? isOpen() : undefined}\n aria-selected={ctx.selectable || ctx.checkboxes ? isSelected() : undefined}\n >\n <div class=\"smwb-tree__node__row\">\n {/*\n A pointer shortcut: the keyboard expands with ArrowRight/ArrowLeft on the row, so the chevron is\n decorative, unnamed and no Tab stop. If it ever becomes a real <button>, `aria-hidden` must go with\n it (a focusable element inside `aria-hidden` is an ARIA violation) and it then needs a name plus\n `aria-expanded`.\n */}\n <span class=\"smwb-tree__node__toggle\" aria-hidden=\"true\" onClick={() => hasChildNodes() && toggleNode()}>\n <Show when={hasChildNodes()}>\n <Icon name={isOpen() ? \"expand_more\" : \"chevron_right\"} size={20} />\n </Show>\n </span>\n <Show when={ctx.checkboxes}>\n <input\n type=\"checkbox\"\n class=\"smwb-tree__node__checkbox\"\n checked={isSelected()}\n onChange={() => ctx.toggleSelected(nodeId)}\n aria-label={item().label}\n />\n </Show>\n <span class=\"smwb-tree__node__content\" onClick={onContentClick} onKeyDown={onKeyDown} tabindex={0} role=\"button\">\n <span class=\"smwb-tree__node__label\" id={labelId}>\n <Show when={hasChildNodes()} fallback={<Icon name={ctx.listIcon} size={20} />}>\n <Icon name={isOpen() ? ctx.nodeIcon.opened ?? \"folder_open\" : ctx.nodeIcon.closed ?? \"folder\"} fill={1} size={20} />\n </Show>\n {labelSlot()}\n </span>\n </span>\n <Show when={ctx.renderActions}>\n {(renderActions) => {\n // Created inside the branch that draws it, so SSR and hydration agree on which keys exist.\n const actionsSlot = createMemo<JSX.Element>(() => renderActions()(slotItem(), nodeId));\n return <span class=\"smwb-tree__node__actions\">{actionsSlot()}</span>;\n }}\n </Show>\n </div>\n <Show when={hasChildNodes() && isOpen()}>\n <div role=\"group\">\n <Show\n when={!(isLoading() && !resolvedChildren())}\n fallback={\n <div class=\"smwb-tree__node__loading\" role=\"status\">\n {ctx.loadingText}\n </div>\n }\n >\n <TreeNodes items={resolvedChildren() ?? []} path={props.entry().path} />\n </Show>\n </div>\n </Show>\n </div>\n );\n}\n\nexport function TreeView(props: TreeViewProps): JSX.Element {\n const merged = mergeProps(\n {\n listIcon: \"draft\",\n nodeIcon: { closed: \"folder\", opened: \"folder_open\" } as { opened?: string; closed?: string },\n data: [] as ITreeNodeItem[],\n defaultExpanded: [] as string[],\n defaultSelected: [] as string[],\n selectable: false,\n checkboxes: false,\n loadingText: \"Loading…\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"listIcon\",\n \"nodeIcon\",\n \"data\",\n \"expanded\",\n \"defaultExpanded\",\n \"onExpandedChange\",\n \"selected\",\n \"defaultSelected\",\n \"onSelectedChange\",\n \"selectable\",\n \"checkboxes\",\n \"toggleOnRowClick\",\n \"renderLabel\",\n \"renderActions\",\n \"loadingText\",\n \"loadChildren\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const [loadedChildren, setLoadedChildren] = createSignal<Record<string, ITreeNodeItem[]>>({});\n const [loadingIds, setLoadingIds] = createSignal<string[]>([]);\n const [expandedIds, setExpandedIds] = createControllableState<string[]>({\n value: () => local.expanded,\n defaultValue: local.defaultExpanded,\n onChange: (next) => local.onExpandedChange?.(next),\n });\n let lastToggled: { id: string; selected: boolean } | undefined;\n const [selectedIds, setSelectedIds] = createControllableState<string[]>({\n value: () => local.selected,\n defaultValue: local.defaultSelected,\n onChange: (next) => {\n // createControllableState calls onChange synchronously from the setter,\n // so lastToggled still refers to the toggle that caused this change.\n const changed = lastToggled;\n lastToggled = undefined;\n local.onSelectedChange?.(next, changed);\n },\n });\n\n const toggleExpanded = (id: string): void =>\n setExpandedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n\n const setOpen = (id: string, open: boolean): void =>\n setExpandedIds((prev) => {\n const has = prev.includes(id);\n if (open && !has) return [...prev, id];\n if (!open && has) return prev.filter((x) => x !== id);\n return prev;\n });\n\n const toggleSelected = (id: string): void => {\n lastToggled = { id, selected: !selectedIds().includes(id) };\n setSelectedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n };\n\n const ensureLoaded = (item: ITreeNodeItem, nodeId: string): void => {\n if (!local.loadChildren || loadedChildren()[nodeId] || (item.children && item.children.length > 0)) return;\n setLoadingIds((prev) => (prev.includes(nodeId) ? prev : [...prev, nodeId]));\n void local\n .loadChildren(item, nodeId)\n .then((children) => setLoadedChildren((prev) => ({ ...prev, [nodeId]: children })))\n .finally(() => setLoadingIds((prev) => prev.filter((x) => x !== nodeId)));\n };\n\n const contextValue: TreeContextValue = {\n expandedIds,\n selectedIds,\n loadedChildren,\n loadingIds,\n toggleExpanded,\n setOpen,\n toggleSelected,\n ensureLoaded,\n get selectable() {\n return local.selectable;\n },\n get checkboxes() {\n return local.checkboxes;\n },\n get toggleOnRowClick() {\n return local.toggleOnRowClick ?? !local.selectable;\n },\n get loadingText() {\n return local.loadingText;\n },\n get nodeIcon() {\n return local.nodeIcon;\n },\n get listIcon() {\n return local.listIcon;\n },\n get renderLabel() {\n return local.renderLabel;\n },\n get renderActions() {\n return local.renderActions;\n },\n get hasLoader() {\n return !!local.loadChildren;\n },\n };\n\n return (\n <TreeContext.Provider value={contextValue}>\n <div\n {...rest}\n data-testid={local[\"data-testid\"] ?? \"tree-view\"}\n ref={mergeRefs(local.ref)}\n role=\"tree\"\n class={cn(\"smwb-tree\", local.class)}\n >\n <TreeNodes items={local.data} path=\"\" wrap />\n </div>\n </TreeContext.Provider>\n );\n}\n\nexport default TreeView;\n"],"names":["TreeContext","createContext","sameItem","a","b","id","label","hasChildren","left","children","right","length","every","child","idx","other","TreeNodes","props","entries","createMemo","items","map","item","path","byId","Map","entry","ids","_$createComponent","For","each","last","get","wrap","_el$","_tmpl$","_$insert","TreeNode","ctx","useContext","nodeId","labelId","createUniqueId","slotItem","undefined","equals","labelSlot","renderLabel","resolvedChildren","loadedChildren","isLazy","hasLoader","hasChildNodes","isOpen","expandedIds","includes","isSelected","selectedIds","isLoading","loadingIds","toggleNode","ensureLoaded","toggleExpanded","activateRow","toggleOnRowClick","selectable","toggleSelected","onKeyDown","event","target","currentTarget","key","preventDefault","setOpen","onContentClick","isOwnClick","_el$2","_tmpl$4","_el$3","firstChild","_el$4","_el$6","nextSibling","_el$7","_$setAttribute","$$click","Show","when","Icon","name","size","checkboxes","_el$5","_tmpl$2","addEventListener","_$effect","checked","$$keydown","fallback","listIcon","_$memo","nodeIcon","opened","closed","fill","renderActions","actionsSlot","_el$9","_tmpl$5","_el$8","_tmpl$3","_el$0","_tmpl$6","loadingText","_p$","_v$","cn","_v$2","_v$3","e","_$className","t","TreeView","merged","mergeProps","data","defaultExpanded","defaultSelected","local","rest","splitProps","setLoadedChildren","createSignal","setLoadingIds","setExpandedIds","createControllableState","value","expanded","defaultValue","onChange","next","onExpandedChange","lastToggled","setSelectedIds","selected","changed","onSelectedChange","contextValue","prev","filter","x","open","has","loadChildren","then","finally","Provider","_el$1","_tmpl$7","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","class","_$delegateEvents"],"mappings":"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"}
@@ -19,6 +19,15 @@ export interface ModalProps {
19
19
  "aria-describedby"?: string;
20
20
  ref?: Ref<HTMLDivElement>;
21
21
  }
22
+ /**
23
+ * A modal dialog: portaled to `<body>`, animated, closed by Escape or a backdrop click.
24
+ *
25
+ * While open it traps Tab/Shift+Tab inside the dialog and moves the focus into it (the first tab
26
+ * stop, else the dialog itself), unless a child has already focused itself. On close, and on
27
+ * unmount while open, the focus goes back to the element that had it when the dialog opened —
28
+ * unless the app has moved the focus elsewhere by then.
29
+ * Of stacked dialogs only the topmost one handles Tab.
30
+ */
22
31
  declare function ModalBase(props: ParentProps<ModalProps>): JSX.Element;
23
32
  export interface ModalSlotProps {
24
33
  class?: string;