@smwb/ui-react 2.6.2 → 2.7.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 (421) hide show
  1. package/AI_LESS_OVERRIDES.md +4 -2
  2. package/AI_THEMING.md +17 -1
  3. package/README.md +84 -35
  4. package/dist/assets/styles/less/components/accordion/accordion.entry.css +1 -1
  5. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  6. package/dist/assets/styles/less/components/chart/chart.entry.css +1 -0
  7. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  8. package/dist/assets/styles/less/components/descriptionList/descriptionList.entry.css +1 -0
  9. package/dist/assets/styles/less/components/emptyState/emptyState.entry.css +1 -0
  10. package/dist/assets/styles/less/components/kanban/kanban.entry.css +1 -0
  11. package/dist/assets/styles/less/components/meter/meter.entry.css +1 -0
  12. package/dist/assets/styles/less/components/modal/modal.entry.css +1 -1
  13. package/dist/assets/styles/less/components/overflowMenu/overflowMenu.entry.css +1 -1
  14. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -0
  15. package/dist/assets/styles/less/components/progressIndicator/progressIndicator.entry.css +1 -1
  16. package/dist/assets/styles/less/components/sectionHeader/sectionHeader.entry.css +1 -0
  17. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  18. package/dist/assets/styles/less/components/stat/stat.entry.css +1 -0
  19. package/dist/assets/styles/less/components/stepper/stepper.entry.css +1 -1
  20. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  21. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  22. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  23. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  24. package/dist/assets/styles/less/components/timeline/timeline.entry.css +1 -0
  25. package/dist/assets/styles/less/components/tooltip/tooltip.entry.css +1 -1
  26. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  27. package/dist/assets/styles/less/connects/rt/table.entry.css +1 -0
  28. package/dist/assets/styles/less/tokens.entry.css +1 -0
  29. package/dist/chart.d.ts +2 -0
  30. package/dist/chart.js +8 -0
  31. package/dist/chart.js.map +1 -0
  32. package/dist/components/base/icon/icon.js +8 -7
  33. package/dist/components/base/icon/icon.js.map +1 -1
  34. package/dist/components/base/ripple/ripple.js +11 -10
  35. package/dist/components/base/ripple/ripple.js.map +1 -1
  36. package/dist/components/dataDisplay/accordion/accordion.d.ts +18 -1
  37. package/dist/components/dataDisplay/accordion/accordion.js +77 -54
  38. package/dist/components/dataDisplay/accordion/accordion.js.map +1 -1
  39. package/dist/components/dataDisplay/assetGrid/assetGrid.js +15 -14
  40. package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -1
  41. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  42. package/dist/components/dataDisplay/avatar/avatar.js +45 -30
  43. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  44. package/dist/components/dataDisplay/badge/badge.js +11 -10
  45. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  46. package/dist/components/dataDisplay/card/card.js +16 -15
  47. package/dist/components/dataDisplay/card/card.js.map +1 -1
  48. package/dist/components/dataDisplay/carousel/carousel.js +23 -22
  49. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  50. package/dist/components/dataDisplay/chart/chart.d.ts +65 -0
  51. package/dist/components/dataDisplay/chart/chart.js +133 -0
  52. package/dist/components/dataDisplay/chart/chart.js.map +1 -0
  53. package/dist/components/dataDisplay/chart/chartTheme.d.ts +35 -0
  54. package/dist/components/dataDisplay/chart/chartTheme.js +74 -0
  55. package/dist/components/dataDisplay/chart/chartTheme.js.map +1 -0
  56. package/dist/components/dataDisplay/chart/index.d.ts +4 -0
  57. package/dist/components/dataDisplay/chat/chat.js +5 -4
  58. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  59. package/dist/components/dataDisplay/chip/chip.js +5 -4
  60. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  61. package/dist/components/dataDisplay/chipGroup/chipGroup.js +10 -9
  62. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  63. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +37 -0
  64. package/dist/components/dataDisplay/descriptionList/descriptionList.js +43 -0
  65. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  66. package/dist/components/dataDisplay/descriptionList/index.d.ts +2 -0
  67. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +5 -4
  68. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  69. package/dist/components/dataDisplay/imagesList/imagesList.js +11 -10
  70. package/dist/components/dataDisplay/imagesList/imagesList.js.map +1 -1
  71. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +31 -24
  72. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  73. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.d.ts +1 -1
  74. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +16 -13
  75. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  76. package/dist/components/dataDisplay/kanban/index.d.ts +2 -0
  77. package/dist/components/dataDisplay/kanban/kanban.d.ts +47 -0
  78. package/dist/components/dataDisplay/kanban/kanban.js +63 -0
  79. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -0
  80. package/dist/components/dataDisplay/lazyImage/lazyImage.js +9 -8
  81. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  82. package/dist/components/dataDisplay/list/list.js +11 -10
  83. package/dist/components/dataDisplay/list/list.js.map +1 -1
  84. package/dist/components/dataDisplay/meter/index.d.ts +2 -0
  85. package/dist/components/dataDisplay/meter/meter.d.ts +33 -0
  86. package/dist/components/dataDisplay/meter/meter.js +62 -0
  87. package/dist/components/dataDisplay/meter/meter.js.map +1 -0
  88. package/dist/components/dataDisplay/personChip/index.d.ts +2 -0
  89. package/dist/components/dataDisplay/personChip/personChip.d.ts +31 -0
  90. package/dist/components/dataDisplay/personChip/personChip.js +61 -0
  91. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -0
  92. package/dist/components/dataDisplay/stat/index.d.ts +2 -0
  93. package/dist/components/dataDisplay/stat/stat.d.ts +36 -0
  94. package/dist/components/dataDisplay/stat/stat.js +48 -0
  95. package/dist/components/dataDisplay/stat/stat.js.map +1 -0
  96. package/dist/components/dataDisplay/table/table.d.ts +7 -0
  97. package/dist/components/dataDisplay/table/table.js +21 -15
  98. package/dist/components/dataDisplay/table/table.js.map +1 -1
  99. package/dist/components/dataDisplay/table/tableCell.d.ts +3 -1
  100. package/dist/components/dataDisplay/table/tableCell.js +11 -2
  101. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  102. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +11 -1
  103. package/dist/components/dataDisplay/table/tableHeadCell.js +54 -24
  104. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  105. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js +10 -9
  106. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js.map +1 -1
  107. package/dist/components/dataDisplay/thumbCard/thumbCard.js +10 -9
  108. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  109. package/dist/components/dataDisplay/timeline/index.d.ts +2 -0
  110. package/dist/components/dataDisplay/timeline/timeline.d.ts +43 -0
  111. package/dist/components/dataDisplay/timeline/timeline.js +44 -0
  112. package/dist/components/dataDisplay/timeline/timeline.js.map +1 -0
  113. package/dist/components/dataDisplay/treeView/treeView.js +5 -4
  114. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  115. package/dist/components/dataDisplay/typography/typography.d.ts +4 -0
  116. package/dist/components/dataDisplay/typography/typography.js +41 -23
  117. package/dist/components/dataDisplay/typography/typography.js.map +1 -1
  118. package/dist/components/feedBack/confirmDialog/confirmDialog.js +14 -13
  119. package/dist/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
  120. package/dist/components/feedBack/emptyState/emptyState.d.ts +26 -0
  121. package/dist/components/feedBack/emptyState/emptyState.js +27 -0
  122. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -0
  123. package/dist/components/feedBack/emptyState/index.d.ts +2 -0
  124. package/dist/components/feedBack/message/message.js +8 -7
  125. package/dist/components/feedBack/message/message.js.map +1 -1
  126. package/dist/components/feedBack/modal/modal.js +5 -4
  127. package/dist/components/feedBack/modal/modal.js.map +1 -1
  128. package/dist/components/feedBack/progressIndicator/progressIndicator.d.ts +14 -1
  129. package/dist/components/feedBack/progressIndicator/progressIndicator.js +72 -40
  130. package/dist/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  131. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +31 -29
  132. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  133. package/dist/components/feedBack/skeleton/skeleton.js +17 -16
  134. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  135. package/dist/components/feedBack/snackbar/snackbar.js +6 -5
  136. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  137. package/dist/components/feedBack/tooltip/tooltip.js +57 -49
  138. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  139. package/dist/components/inputs/button/button.js +16 -15
  140. package/dist/components/inputs/button/button.js.map +1 -1
  141. package/dist/components/inputs/buttonGroups/buttonGroup.js +5 -4
  142. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  143. package/dist/components/inputs/checkbox/checkbox.js +10 -9
  144. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  145. package/dist/components/inputs/datePicker/datePicker.js +123 -120
  146. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  147. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +121 -119
  148. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  149. package/dist/components/inputs/fileDrop/fileDrop.js +13 -12
  150. package/dist/components/inputs/fileDrop/fileDrop.js.map +1 -1
  151. package/dist/components/inputs/fileInput/fileInput.js +4 -3
  152. package/dist/components/inputs/fileInput/fileInput.js.map +1 -1
  153. package/dist/components/inputs/floatingButton/floatingButton.js +17 -16
  154. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  155. package/dist/components/inputs/radioButton/radioButton.js +11 -10
  156. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  157. package/dist/components/inputs/rating/rating.js +18 -17
  158. package/dist/components/inputs/rating/rating.js.map +1 -1
  159. package/dist/components/inputs/selectField/dropdownMenu.d.ts +1 -1
  160. package/dist/components/inputs/selectField/dropdownMenu.js +72 -69
  161. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  162. package/dist/components/inputs/selectField/selectField.d.ts +2 -0
  163. package/dist/components/inputs/selectField/selectField.js +128 -117
  164. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  165. package/dist/components/inputs/slider/slider.js +4 -3
  166. package/dist/components/inputs/slider/slider.js.map +1 -1
  167. package/dist/components/inputs/textField/textField.js +16 -15
  168. package/dist/components/inputs/textField/textField.js.map +1 -1
  169. package/dist/components/inputs/textField/utils.d.ts +1 -1
  170. package/dist/components/inputs/timePicker/timePicker.js +66 -63
  171. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  172. package/dist/components/inputs/toggle/toggle.js +14 -13
  173. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  174. package/dist/components/inputs/valueSlider/valueSlider.js +9 -8
  175. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  176. package/dist/components/layout/appLayout/appLayout.js +20 -19
  177. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  178. package/dist/components/layout/divider/divider.js +9 -8
  179. package/dist/components/layout/divider/divider.js.map +1 -1
  180. package/dist/components/layout/floatingWindow/floatingWindow.js +4 -3
  181. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  182. package/dist/components/layout/grid/grid.js +17 -16
  183. package/dist/components/layout/grid/grid.js.map +1 -1
  184. package/dist/components/layout/page/page.js +9 -8
  185. package/dist/components/layout/page/page.js.map +1 -1
  186. package/dist/components/layout/pageHeader/pageHeader.js +10 -9
  187. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  188. package/dist/components/layout/screenDivider/screenDivider.js +19 -18
  189. package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
  190. package/dist/components/layout/sectionHeader/index.d.ts +2 -0
  191. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +31 -0
  192. package/dist/components/layout/sectionHeader/sectionHeader.js +67 -0
  193. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  194. package/dist/components/layout/sheet/sheet.js +5 -4
  195. package/dist/components/layout/sheet/sheet.js.map +1 -1
  196. package/dist/components/layout/stack/stack.js +10 -9
  197. package/dist/components/layout/stack/stack.js.map +1 -1
  198. package/dist/components/navigation/appBar/appBar.js +18 -17
  199. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  200. package/dist/components/navigation/bottomBar/bottomBar.js +5 -4
  201. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  202. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +5 -4
  203. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  204. package/dist/components/navigation/menu/menu.js +6 -5
  205. package/dist/components/navigation/menu/menu.js.map +1 -1
  206. package/dist/components/navigation/overflowMenu/overflowMenu.js +16 -15
  207. package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -1
  208. package/dist/components/navigation/pagination/pagination.js +5 -4
  209. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  210. package/dist/components/navigation/sidebar/sidebar.js +13 -12
  211. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  212. package/dist/components/navigation/stepper/stepper.d.ts +10 -2
  213. package/dist/components/navigation/stepper/stepper.js +33 -30
  214. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  215. package/dist/components/navigation/tabs/tab/tab.d.ts +2 -0
  216. package/dist/components/navigation/tabs/tab/tab.js +14 -13
  217. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  218. package/dist/components/navigation/tabs/tabs.d.ts +12 -0
  219. package/dist/components/navigation/tabs/tabs.js +138 -83
  220. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  221. package/dist/connects/rt/table/draggableHeader.d.ts +1 -1
  222. package/dist/connects/rt/table/draggableHeader.js.map +1 -0
  223. package/dist/connects/rt/table/headerCellRenderer.d.ts +6 -0
  224. package/dist/connects/rt/table/headerCellRenderer.js +21 -0
  225. package/dist/connects/rt/table/headerCellRenderer.js.map +1 -0
  226. package/dist/connects/rt/table/table.d.ts +2 -0
  227. package/dist/connects/rt/table/table.js +200 -0
  228. package/dist/connects/rt/table/table.js.map +1 -0
  229. package/dist/connects/rt/table/utils.js.map +1 -0
  230. package/dist/headless/components/dataDisplay/accordion/accordion.js +76 -54
  231. package/dist/headless/components/dataDisplay/accordion/accordion.js.map +1 -1
  232. package/dist/headless/components/dataDisplay/avatar/avatar.js +45 -31
  233. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  234. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +41 -0
  235. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  236. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +29 -23
  237. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  238. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +16 -13
  239. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  240. package/dist/headless/components/dataDisplay/kanban/kanban.js +61 -0
  241. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -0
  242. package/dist/headless/components/dataDisplay/meter/meter.js +60 -0
  243. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -0
  244. package/dist/headless/components/dataDisplay/personChip/personChip.js +59 -0
  245. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -0
  246. package/dist/headless/components/dataDisplay/stat/stat.js +46 -0
  247. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -0
  248. package/dist/headless/components/dataDisplay/table/table.js +16 -11
  249. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  250. package/dist/headless/components/dataDisplay/table/tableCell.js +11 -2
  251. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  252. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +54 -24
  253. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  254. package/dist/headless/components/dataDisplay/timeline/timeline.js +42 -0
  255. package/dist/headless/components/dataDisplay/timeline/timeline.js.map +1 -0
  256. package/dist/headless/components/dataDisplay/typography/typography.js +39 -22
  257. package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
  258. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js +9 -9
  259. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
  260. package/dist/headless/components/feedBack/emptyState/emptyState.js +25 -0
  261. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -0
  262. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js +70 -39
  263. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  264. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +27 -26
  265. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  266. package/dist/headless/components/feedBack/tooltip/tooltip.js +53 -46
  267. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  268. package/dist/headless/components/inputs/datePicker/datePicker.js +112 -110
  269. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  270. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +121 -119
  271. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  272. package/dist/headless/components/inputs/selectField/dropdownMenu.js +72 -69
  273. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  274. package/dist/headless/components/inputs/selectField/selectField.js +109 -99
  275. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  276. package/dist/headless/components/inputs/timePicker/timePicker.js +65 -63
  277. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  278. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +65 -0
  279. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  280. package/dist/headless/components/navigation/stepper/stepper.js +31 -29
  281. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  282. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  283. package/dist/headless/components/navigation/tabs/tabs.js +129 -75
  284. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  285. package/dist/headless/hooks/useSafeLayoutEffect.js +4 -2
  286. package/dist/headless/hooks/useSafeLayoutEffect.js.map +1 -1
  287. package/dist/headless/icons/catalog.js +78 -1
  288. package/dist/headless/icons/catalog.js.map +1 -1
  289. package/dist/headless/icons/index.js +596 -574
  290. package/dist/headless/icons/index.js.map +1 -1
  291. package/dist/headless/icons/svg/accountTree.js +9 -0
  292. package/dist/headless/icons/svg/accountTree.js.map +1 -0
  293. package/dist/headless/icons/svg/callSplit.js +9 -0
  294. package/dist/headless/icons/svg/callSplit.js.map +1 -0
  295. package/dist/headless/icons/svg/deviceHub.js +8 -0
  296. package/dist/headless/icons/svg/deviceHub.js.map +1 -0
  297. package/dist/headless/icons/svg/editNote.js +9 -0
  298. package/dist/headless/icons/svg/editNote.js.map +1 -0
  299. package/dist/headless/icons/svg/filterList.js +9 -0
  300. package/dist/headless/icons/svg/filterList.js.map +1 -0
  301. package/dist/headless/icons/svg/forkRight.js +8 -0
  302. package/dist/headless/icons/svg/forkRight.js.map +1 -0
  303. package/dist/headless/icons/svg/groups.js +9 -0
  304. package/dist/headless/icons/svg/groups.js.map +1 -0
  305. package/dist/headless/icons/svg/hub.js +8 -0
  306. package/dist/headless/icons/svg/hub.js.map +1 -0
  307. package/dist/headless/icons/svg/index.js +598 -576
  308. package/dist/headless/icons/svg/index.js.map +1 -1
  309. package/dist/headless/icons/svg/lan.js +9 -0
  310. package/dist/headless/icons/svg/lan.js.map +1 -0
  311. package/dist/headless/icons/svg/personOff.js +9 -0
  312. package/dist/headless/icons/svg/personOff.js.map +1 -0
  313. package/dist/headless/icons/svg/schema.js +9 -0
  314. package/dist/headless/icons/svg/schema.js.map +1 -0
  315. package/dist/headless/index.js +209 -183
  316. package/dist/headless/index.js.map +1 -1
  317. package/dist/hooks/useSafeLayoutEffect.d.ts +7 -1
  318. package/dist/hooks/useSafeLayoutEffect.js +4 -2
  319. package/dist/hooks/useSafeLayoutEffect.js.map +1 -1
  320. package/dist/icons/catalog.d.ts +1 -1
  321. package/dist/icons/catalog.js +78 -1
  322. package/dist/icons/catalog.js.map +1 -1
  323. package/dist/icons/index.js +596 -574
  324. package/dist/icons/index.js.map +1 -1
  325. package/dist/icons/svg/accountTree.d.ts +4 -0
  326. package/dist/icons/svg/accountTree.js +9 -0
  327. package/dist/icons/svg/accountTree.js.map +1 -0
  328. package/dist/icons/svg/callSplit.d.ts +4 -0
  329. package/dist/icons/svg/callSplit.js +9 -0
  330. package/dist/icons/svg/callSplit.js.map +1 -0
  331. package/dist/icons/svg/deviceHub.d.ts +4 -0
  332. package/dist/icons/svg/deviceHub.js +8 -0
  333. package/dist/icons/svg/deviceHub.js.map +1 -0
  334. package/dist/icons/svg/editNote.d.ts +4 -0
  335. package/dist/icons/svg/editNote.js +9 -0
  336. package/dist/icons/svg/editNote.js.map +1 -0
  337. package/dist/icons/svg/filterList.d.ts +4 -0
  338. package/dist/icons/svg/filterList.js +9 -0
  339. package/dist/icons/svg/filterList.js.map +1 -0
  340. package/dist/icons/svg/forkRight.d.ts +4 -0
  341. package/dist/icons/svg/forkRight.js +8 -0
  342. package/dist/icons/svg/forkRight.js.map +1 -0
  343. package/dist/icons/svg/groups.d.ts +4 -0
  344. package/dist/icons/svg/groups.js +9 -0
  345. package/dist/icons/svg/groups.js.map +1 -0
  346. package/dist/icons/svg/hub.d.ts +4 -0
  347. package/dist/icons/svg/hub.js +8 -0
  348. package/dist/icons/svg/hub.js.map +1 -0
  349. package/dist/icons/svg/index.d.ts +11 -0
  350. package/dist/icons/svg/index.js +598 -576
  351. package/dist/icons/svg/index.js.map +1 -1
  352. package/dist/icons/svg/lan.d.ts +4 -0
  353. package/dist/icons/svg/lan.js +9 -0
  354. package/dist/icons/svg/lan.js.map +1 -0
  355. package/dist/icons/svg/personOff.d.ts +4 -0
  356. package/dist/icons/svg/personOff.js +9 -0
  357. package/dist/icons/svg/personOff.js.map +1 -0
  358. package/dist/icons/svg/schema.d.ts +4 -0
  359. package/dist/icons/svg/schema.js +9 -0
  360. package/dist/icons/svg/schema.js.map +1 -0
  361. package/dist/icons.cjs +1 -1
  362. package/dist/icons.cjs.map +1 -1
  363. package/dist/index.cjs +2 -2
  364. package/dist/index.cjs.map +1 -1
  365. package/dist/index.d.ts +16 -0
  366. package/dist/index.js +209 -183
  367. package/dist/index.js.map +1 -1
  368. package/package.json +18 -7
  369. package/dist/react-table/components/base/icon/icon.js +0 -60
  370. package/dist/react-table/components/base/icon/icon.js.map +0 -1
  371. package/dist/react-table/components/base/icon/iconProvider.js +0 -15
  372. package/dist/react-table/components/base/icon/iconProvider.js.map +0 -1
  373. package/dist/react-table/components/dataDisplay/table/table.js +0 -37
  374. package/dist/react-table/components/dataDisplay/table/table.js.map +0 -1
  375. package/dist/react-table/components/dataDisplay/table/tableBody.js +0 -7
  376. package/dist/react-table/components/dataDisplay/table/tableBody.js.map +0 -1
  377. package/dist/react-table/components/dataDisplay/table/tableCell.js +0 -7
  378. package/dist/react-table/components/dataDisplay/table/tableCell.js.map +0 -1
  379. package/dist/react-table/components/dataDisplay/table/tableHead.js +0 -7
  380. package/dist/react-table/components/dataDisplay/table/tableHead.js.map +0 -1
  381. package/dist/react-table/components/dataDisplay/table/tableHeadCell.js +0 -48
  382. package/dist/react-table/components/dataDisplay/table/tableHeadCell.js.map +0 -1
  383. package/dist/react-table/components/dataDisplay/table/tablePagination/tablePagination.js +0 -40
  384. package/dist/react-table/components/dataDisplay/table/tablePagination/tablePagination.js.map +0 -1
  385. package/dist/react-table/components/dataDisplay/table/tableRow.js +0 -20
  386. package/dist/react-table/components/dataDisplay/table/tableRow.js.map +0 -1
  387. package/dist/react-table/components/feedBack/message/message.js +0 -31
  388. package/dist/react-table/components/feedBack/message/message.js.map +0 -1
  389. package/dist/react-table/components/feedBack/progressIndicator/progressIndicator.js +0 -51
  390. package/dist/react-table/components/feedBack/progressIndicator/progressIndicator.js.map +0 -1
  391. package/dist/react-table/components/inputs/textField/textField.js +0 -125
  392. package/dist/react-table/components/inputs/textField/textField.js.map +0 -1
  393. package/dist/react-table/components/inputs/textField/textFieldAdornment.js +0 -25
  394. package/dist/react-table/components/inputs/textField/textFieldAdornment.js.map +0 -1
  395. package/dist/react-table/components/inputs/textField/textFieldWrapper.js +0 -50
  396. package/dist/react-table/components/inputs/textField/textFieldWrapper.js.map +0 -1
  397. package/dist/react-table/components/inputs/textField/utils.js +0 -11
  398. package/dist/react-table/components/inputs/textField/utils.js.map +0 -1
  399. package/dist/react-table/connects/rt/table/draggableHeader.js.map +0 -1
  400. package/dist/react-table/connects/rt/table/headerCellRenderer.js +0 -14
  401. package/dist/react-table/connects/rt/table/headerCellRenderer.js.map +0 -1
  402. package/dist/react-table/connects/rt/table/table.js +0 -180
  403. package/dist/react-table/connects/rt/table/table.js.map +0 -1
  404. package/dist/react-table/connects/rt/table/utils.js.map +0 -1
  405. package/dist/react-table/hooks/useForkRef.js +0 -13
  406. package/dist/react-table/hooks/useForkRef.js.map +0 -1
  407. package/dist/react-table/hooks/useSafeLayoutEffect.js +0 -6
  408. package/dist/react-table/hooks/useSafeLayoutEffect.js.map +0 -1
  409. package/dist/react-table/icons/config.js +0 -9
  410. package/dist/react-table/icons/config.js.map +0 -1
  411. package/dist/react-table/icons/registry.js +0 -12
  412. package/dist/react-table/icons/registry.js.map +0 -1
  413. package/dist/react-table/icons/store.js +0 -10
  414. package/dist/react-table/icons/store.js.map +0 -1
  415. package/dist/react-table/utils/setRef.js +0 -7
  416. package/dist/react-table/utils/setRef.js.map +0 -1
  417. package/dist/storybook/storyPlay.d.ts +0 -19
  418. /package/dist/{react-table/connects → connects}/rt/table/draggableHeader.js +0 -0
  419. /package/dist/{react-table/connects → connects}/rt/table/utils.js +0 -0
  420. /package/dist/{react-table/react-table.js → react-table.js} +0 -0
  421. /package/dist/{react-table/react-table.js.map → react-table.js.map} +0 -0
@@ -0,0 +1,133 @@
1
+ import { jsxs as K, jsx as C } from "react/jsx-runtime";
2
+ import '../../../assets/styles/less/components/chart/chart.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
4
+ import Q, { useRef as y, useState as q, useEffect as z } from "react";
5
+ import U from "clsx";
6
+ import { readChartPalette as B, samePalette as _, chartTheme as H } from "./chartTheme.js";
7
+ import { Skeleton as V } from "../../feedBack/skeleton/skeleton.js";
8
+ const X = (u) => typeof u == "number" ? `${u}px` : u, Y = () => import("echarts"), Z = (u) => {
9
+ try {
10
+ return JSON.stringify(u, (k, h) => typeof h == "function" ? String(h) : h);
11
+ } catch {
12
+ return null;
13
+ }
14
+ }, oe = Q.forwardRef(function({ className: k, style: h, label: J, summary: x, option: g, height: W = 240, loader: E, renderer: F = "canvas", onClick: N, onReady: S, ...$ }, p) {
15
+ const A = y(null), w = y(null), [f, M] = q(null), [b, L] = q(!1), l = y({
16
+ module: null,
17
+ instance: null,
18
+ themed: null,
19
+ announced: null,
20
+ drawn: null,
21
+ pending: !1
22
+ }), s = y({ option: g, palette: f, loader: E, renderer: F, onClick: N, onReady: S });
23
+ s.current = { option: g, palette: f, loader: E, renderer: F, onClick: N, onReady: S };
24
+ const D = (e) => {
25
+ A.current = e, typeof p == "function" ? p(e) : p && (p.current = e);
26
+ }, R = () => {
27
+ const e = w.current;
28
+ return !!(e && e.clientWidth > 0 && e.clientHeight > 0);
29
+ }, O = (e, n) => {
30
+ const t = e.init(w.current, H(n), { renderer: s.current.renderer });
31
+ return t.on("click", (a) => {
32
+ var c, o;
33
+ return (o = (c = s.current).onClick) == null ? void 0 : o.call(c, a);
34
+ }), l.current.themed = n, l.current.drawn = null, t;
35
+ }, P = () => {
36
+ const e = l.current, n = s.current.palette;
37
+ if (!e.instance || !n) return;
38
+ if (!R()) {
39
+ e.pending = !0;
40
+ return;
41
+ }
42
+ const t = s.current.option, a = typeof t == "function" ? t(n) : t, c = Z(a);
43
+ if (!(!e.pending && c !== null && c === e.drawn)) {
44
+ e.pending = !1;
45
+ try {
46
+ e.instance.setOption(a, { notMerge: !0 }), e.drawn = c;
47
+ } catch (o) {
48
+ e.drawn = null, console.error("[smwb] Chart: the option did not draw.", o);
49
+ }
50
+ }
51
+ }, G = (e) => {
52
+ const n = l.current;
53
+ if (!(!n.instance || !n.module || n.themed && _(n.themed, e)))
54
+ if (typeof n.instance.setTheme == "function") {
55
+ try {
56
+ n.instance.setTheme(H(e));
57
+ } catch (t) {
58
+ console.error("[smwb] Chart: the theme did not apply.", t);
59
+ }
60
+ n.themed = e, n.drawn = null;
61
+ } else
62
+ n.instance.dispose(), n.instance = O(n.module, e);
63
+ };
64
+ return z(() => {
65
+ var j;
66
+ const e = A.current, n = w.current, t = l.current;
67
+ let a = !1;
68
+ const c = () => {
69
+ const r = B(e);
70
+ M((i) => i && _(i, r) ? i : r);
71
+ };
72
+ c();
73
+ const o = new MutationObserver(() => requestAnimationFrame(c));
74
+ o.observe(document.documentElement, {
75
+ attributes: !0,
76
+ attributeFilter: ["data-theme", "class", "style"]
77
+ });
78
+ const d = typeof window.matchMedia == "function" ? window.matchMedia("(prefers-color-scheme: dark)") : void 0;
79
+ d == null || d.addEventListener("change", c);
80
+ const T = () => {
81
+ if (a || t.instance || !t.module || !R()) return;
82
+ const r = B(e);
83
+ M((i) => i && _(i, r) ? i : r), t.instance = O(t.module, r), L(!0);
84
+ }, I = () => {
85
+ if (R()) {
86
+ if (!t.instance) {
87
+ T();
88
+ return;
89
+ }
90
+ try {
91
+ t.instance.resize();
92
+ } catch {
93
+ }
94
+ t.pending && P();
95
+ }
96
+ };
97
+ let v = 0;
98
+ const m = typeof ResizeObserver == "function" ? new ResizeObserver(() => {
99
+ cancelAnimationFrame(v), v = requestAnimationFrame(I);
100
+ }) : void 0;
101
+ return m == null || m.observe(n), ((j = s.current.loader) != null ? j : Y)().then(
102
+ (r) => {
103
+ t.module = r, T();
104
+ },
105
+ (r) => console.error("[smwb] Chart: ECharts did not load.", r)
106
+ ), () => {
107
+ var r;
108
+ a = !0, o.disconnect(), d == null || d.removeEventListener("change", c), m == null || m.disconnect(), cancelAnimationFrame(v), (r = t.instance) == null || r.dispose(), t.instance = null, t.announced = null, t.drawn = null, L(!1);
109
+ };
110
+ }, []), z(() => {
111
+ var n, t;
112
+ const e = l.current;
113
+ !b || !f || !e.instance || (G(f), P(), e.instance && e.announced !== e.instance && (e.announced = e.instance, (t = (n = s.current).onReady) == null || t.call(n, e.instance)));
114
+ }, [b, f, g]), /* @__PURE__ */ K(
115
+ "div",
116
+ {
117
+ "data-testid": "chart",
118
+ ...$,
119
+ ref: D,
120
+ className: U("smwb-chart", k),
121
+ style: { ...h, height: X(W) },
122
+ children: [
123
+ /* @__PURE__ */ C("div", { ref: w, className: "smwb-chart__canvas", role: "img", "aria-label": J }),
124
+ b ? null : /* @__PURE__ */ C(V, { className: "smwb-chart__skeleton", variant: "rounded", width: "100%", height: "100%" }),
125
+ x ? /* @__PURE__ */ C("p", { className: "smwb-chart__summary", children: x }) : null
126
+ ]
127
+ }
128
+ );
129
+ });
130
+ export {
131
+ oe as Chart
132
+ };
133
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","sources":["../../../../src/components/dataDisplay/chart/chart.tsx"],"sourcesContent":["import React, { HTMLAttributes, useEffect, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { Skeleton } from \"../../feedBack/skeleton\";\nimport { type ChartOption, type ChartPalette, chartTheme, readChartPalette, samePalette } from \"./chartTheme\";\n\n/** What an ECharts event hands its handler: the item under the pointer. */\nexport interface ChartEventParams {\n componentType?: string;\n seriesType?: string;\n seriesIndex?: number;\n seriesName?: string;\n name?: string;\n dataIndex?: number;\n data?: unknown;\n value?: unknown;\n [key: string]: unknown;\n}\n\n/** The part of an ECharts instance the chart uses; `onReady` hands over the instance itself. */\nexport interface ChartInstance {\n setOption(option: ChartOption, opts?: { notMerge?: boolean }): void;\n resize(): void;\n on(eventName: string, handler: (params: ChartEventParams) => void): void;\n dispose(): void;\n /** ECharts 6 switches the theme in place; with ECharts 5 the chart is created anew. */\n setTheme?(theme: object): void;\n}\n\n/** What `loader` resolves to: `echarts`, or `echarts/core` with the charts you use registered. */\nexport interface ChartModule {\n init(dom: HTMLElement, theme?: object | string | null, opts?: { renderer?: \"canvas\" | \"svg\" }): ChartInstance;\n}\n\nexport interface ChartProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onClick\"> {\n className?: string;\n /** What the chart shows: its accessible name. */\n label: string;\n /** The chart in words, for screen readers; it is there before the chart draws, and on the server. */\n summary?: string;\n /**\n * The ECharts option, or a function of the theme's palette that returns it.\n * It is applied whole whenever it or the theme changes; an equal option\n * passed again (an inline object on a re-render) does not redraw.\n */\n option: ChartOption | ((palette: ChartPalette) => ChartOption);\n /** The chart's height: a number of pixels or any CSS length; 240 by default. It fills the width. */\n height?: number | string;\n /**\n * Loads ECharts in the browser: `import(\"echarts\")` by default, the whole\n * library. For a smaller bundle pass `() => import(\"./my-echarts\")`, a module\n * that registers only the charts you use with `echarts/core`.\n */\n loader?: () => Promise<ChartModule>;\n /** How ECharts draws: \"canvas\" (default) or \"svg\". Read once, when the chart is created. */\n renderer?: \"canvas\" | \"svg\";\n /** A click on an item: a bar, a point, a node. */\n onClick?: (params: ChartEventParams) => void;\n /** The ECharts instance, once it has drawn — for other events and actions. Called again if a theme change re-creates it. */\n onReady?: (chart: ChartInstance) => void;\n}\n\ninterface ChartState {\n module: ChartModule | null;\n instance: ChartInstance | null;\n themed: ChartPalette | null;\n announced: ChartInstance | null;\n /** The option last drawn, serialised; null forces the next draw. */\n drawn: string | null;\n pending: boolean;\n}\n\nconst cssLength = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst loadECharts = (): Promise<ChartModule> => import(\"echarts\") as unknown as Promise<ChartModule>;\n\n// Functions (formatters) count by their source, so a changed formatter redraws.\nconst serialise = (option: ChartOption): string | null => {\n try {\n return JSON.stringify(option, (_key, value: unknown) => (typeof value === \"function\" ? String(value) : value));\n } catch {\n return null;\n }\n};\n\n/**\n * An ECharts chart in the theme's palette. On the server, and until ECharts\n * loads in the browser, a skeleton of the same size stands in its place, so\n * the page does not jump; the chart follows theme switches and its box's size.\n */\nexport const Chart = React.forwardRef<HTMLDivElement, ChartProps>(function Chart(\n { className, style, label, summary, option, height = 240, loader, renderer = \"canvas\", onClick, onReady, ...rest },\n ref\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const canvasRef = useRef<HTMLDivElement>(null);\n const [palette, setPalette] = useState<ChartPalette | null>(null);\n const [ready, setReady] = useState(false);\n const state = useRef<ChartState>({\n module: null,\n instance: null,\n themed: null,\n announced: null,\n drawn: null,\n pending: false,\n });\n const latest = useRef({ option, palette, loader, renderer, onClick, onReady });\n latest.current = { option, palette, loader, renderer, onClick, onReady };\n\n const setRoot = (element: HTMLDivElement | null): void => {\n rootRef.current = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n };\n\n const hasSize = (): boolean => {\n const canvas = canvasRef.current;\n return Boolean(canvas && canvas.clientWidth > 0 && canvas.clientHeight > 0);\n };\n\n const create = (loaded: ChartModule, colours: ChartPalette): ChartInstance => {\n const created = loaded.init(canvasRef.current!, chartTheme(colours), { renderer: latest.current.renderer });\n created.on(\"click\", (params) => latest.current.onClick?.(params));\n state.current.themed = colours;\n state.current.drawn = null;\n return created;\n };\n\n // Not at zero size (a hidden tab, a collapsed panel): there the graph of\n // ECharts 6.1 inverts a degenerate matrix and throws. The option waits for\n // the chart to get a size, and a failed redraw is caught up on the next one.\n const draw = (): void => {\n const current = state.current;\n const colours = latest.current.palette;\n if (!current.instance || !colours) return;\n if (!hasSize()) {\n current.pending = true;\n return;\n }\n const source = latest.current.option;\n const next = typeof source === \"function\" ? source(colours) : source;\n const key = serialise(next);\n if (!current.pending && key !== null && key === current.drawn) return;\n current.pending = false;\n try {\n current.instance.setOption(next, { notMerge: true });\n current.drawn = key;\n } catch (error) {\n current.drawn = null;\n console.error(\"[smwb] Chart: the option did not draw.\", error);\n }\n };\n\n const retheme = (colours: ChartPalette): void => {\n const current = state.current;\n if (!current.instance || !current.module || (current.themed && samePalette(current.themed, colours))) return;\n if (typeof current.instance.setTheme === \"function\") {\n try {\n current.instance.setTheme(chartTheme(colours));\n } catch (error) {\n console.error(\"[smwb] Chart: the theme did not apply.\", error);\n }\n current.themed = colours;\n current.drawn = null;\n } else {\n current.instance.dispose();\n current.instance = create(current.module, colours);\n }\n };\n\n useEffect(() => {\n const root = rootRef.current!;\n const canvas = canvasRef.current!;\n const current = state.current;\n let disposed = false;\n\n const refresh = (): void => {\n const next = readChartPalette(root);\n setPalette((previous) => (previous && samePalette(previous, next) ? previous : next));\n };\n refresh();\n\n // The theme switches by an attribute on <html> (data-theme, a class) or\n // with the system setting.\n const themeObserver = new MutationObserver(() => requestAnimationFrame(refresh));\n themeObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"data-theme\", \"class\", \"style\"],\n });\n const media =\n typeof window.matchMedia === \"function\" ? window.matchMedia(\"(prefers-color-scheme: dark)\") : undefined;\n media?.addEventListener(\"change\", refresh);\n\n // The palette is read again here, not taken from mount: a theme set after\n // the chart mounted (a parent's effect runs after this one) would otherwise\n // show for a frame in the old colours.\n const start = (): void => {\n if (disposed || current.instance || !current.module || !hasSize()) return;\n const colours = readChartPalette(root);\n setPalette((previous) => (previous && samePalette(previous, colours) ? previous : colours));\n current.instance = create(current.module, colours);\n setReady(true);\n };\n\n const onResize = (): void => {\n if (!hasSize()) return;\n if (!current.instance) {\n start();\n return;\n }\n try {\n current.instance.resize();\n } catch {\n // It catches up on the next resize.\n }\n if (current.pending) draw();\n };\n // In the next frame, not in the observer's callback: drawing there resizes\n // what it observes, and the browser reports a ResizeObserver loop.\n let frame = 0;\n const resizeObserver =\n typeof ResizeObserver === \"function\"\n ? new ResizeObserver(() => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(onResize);\n })\n : undefined;\n resizeObserver?.observe(canvas);\n\n (latest.current.loader ?? loadECharts)().then(\n (loaded) => {\n current.module = loaded;\n start();\n },\n (error: unknown) => console.error(\"[smwb] Chart: ECharts did not load.\", error)\n );\n\n return () => {\n disposed = true;\n themeObserver.disconnect();\n media?.removeEventListener(\"change\", refresh);\n resizeObserver?.disconnect();\n cancelAnimationFrame(frame);\n current.instance?.dispose();\n current.instance = null;\n current.announced = null;\n current.drawn = null;\n // Effects that run again with the state kept (fast refresh, a hidden\n // <Activity>) create a new chart, and it must draw.\n setReady(false);\n };\n // The chart is set up once; later props are read through `latest`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const current = state.current;\n if (!ready || !palette || !current.instance) return;\n retheme(palette);\n draw();\n if (current.instance && current.announced !== current.instance) {\n current.announced = current.instance;\n latest.current.onReady?.(current.instance);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ready, palette, option]);\n\n return (\n <div\n data-testid=\"chart\"\n {...rest}\n ref={setRoot}\n className={cn(\"smwb-chart\", className)}\n style={{ ...style, height: cssLength(height) }}\n >\n <div ref={canvasRef} className=\"smwb-chart__canvas\" role=\"img\" aria-label={label} />\n {!ready ? <Skeleton className=\"smwb-chart__skeleton\" variant=\"rounded\" width=\"100%\" height=\"100%\" /> : null}\n {summary ? <p className=\"smwb-chart__summary\">{summary}</p> : null}\n </div>\n );\n});\n\nexport default Chart;\n"],"names":["cssLength","value","loadECharts","serialise","option","_key","Chart","React","className","style","label","summary","height","loader","renderer","onClick","onReady","rest","ref","rootRef","useRef","canvasRef","palette","setPalette","useState","ready","setReady","state","latest","setRoot","element","hasSize","canvas","create","loaded","colours","created","chartTheme","params","_b","_a","draw","current","source","next","key","error","retheme","samePalette","useEffect","root","disposed","refresh","readChartPalette","previous","themeObserver","media","start","onResize","frame","resizeObserver","jsxs","cn","jsx","Skeleton"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { EChartsOption } from "echarts";
2
+ /** An ECharts option: what the chart shows. */
3
+ export type ChartOption = EChartsOption;
4
+ /** The theme's colours as the chart draws them. */
5
+ export interface ChartPalette {
6
+ /** The surface is dark. */
7
+ dark: boolean;
8
+ /** Text: titles, tooltips. */
9
+ text: string;
10
+ /** Secondary text: axis labels, the legend. */
11
+ muted: string;
12
+ /** Axis and grid lines. */
13
+ line: string;
14
+ /** The surface under the chart: tooltips. */
15
+ surface: string;
16
+ primary: string;
17
+ success: string;
18
+ warning: string;
19
+ error: string;
20
+ info: string;
21
+ /**
22
+ * Series colours, in order: `--smwb-chart-series-1` … `-12`. The default set
23
+ * stays apart with colour-vision deficiencies.
24
+ */
25
+ series: string[];
26
+ /** The font of the text around the chart. */
27
+ fontFamily: string;
28
+ }
29
+ /** Darker than mid-grey: `#rgb`, `#rrggbb` and `rgb()`/`rgba()`; anything else counts as light. */
30
+ export declare function isDarkColour(colour: string): boolean;
31
+ /** Reads the palette from the element's computed style. */
32
+ export declare function readChartPalette(host: HTMLElement): ChartPalette;
33
+ export declare const samePalette: (a: ChartPalette, b: ChartPalette) => boolean;
34
+ /** An ECharts theme in the palette: series colours, text, axes, grid lines, legend, tooltip. */
35
+ export declare function chartTheme(palette: ChartPalette): Record<string, unknown>;
@@ -0,0 +1,74 @@
1
+ const l = ["#0072b2", "#e69f00", "#009e73", "#cc79a7", "#56b4e9", "#d55e00", "#7a7a7a"];
2
+ function u(r) {
3
+ let o = null;
4
+ const e = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(r.trim());
5
+ if (e)
6
+ o = (e[1].length === 3 ? [...e[1]].map((t) => t + t) : e[1].match(/../g)).map((t) => parseInt(t, 16));
7
+ else {
8
+ const i = /^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)/i.exec(r.trim());
9
+ i && (o = [Number(i[1]), Number(i[2]), Number(i[3])]);
10
+ }
11
+ if (!o) return !1;
12
+ const [n, c, s] = o.map((i) => {
13
+ const t = i / 255;
14
+ return t <= 0.03928 ? t / 12.92 : ((t + 0.055) / 1.055) ** 2.4;
15
+ });
16
+ return 0.2126 * n + 0.7152 * c + 0.0722 * s < 0.2;
17
+ }
18
+ function a(r) {
19
+ const o = getComputedStyle(r), e = (s, i) => o.getPropertyValue(s).trim() || i, n = [];
20
+ for (let s = 1; s <= 12; s += 1) {
21
+ const i = o.getPropertyValue(`--smwb-chart-series-${s}`).trim();
22
+ i && n.push(i);
23
+ }
24
+ const c = e("--smui-surfaceBackground", "#ffffff");
25
+ return {
26
+ dark: u(c),
27
+ text: e("--smui-onSurfaceColor", "#1c1b1f"),
28
+ muted: e("--smui-onSurfaceVariant", "#49454e"),
29
+ line: e("--smui-dividerColor", "rgba(0, 0, 0, 0.12)"),
30
+ surface: c,
31
+ primary: e("--smui-primaryColor", "#6750a4"),
32
+ success: e("--smui-successColor", "#2e7d32"),
33
+ warning: e("--smui-warningColor", "#ed6c02"),
34
+ error: e("--smui-errorColor", "#d32f2f"),
35
+ info: e("--smui-infoColor", "#0288d1"),
36
+ series: n.length > 0 ? n : l,
37
+ fontFamily: o.fontFamily || "sans-serif"
38
+ };
39
+ }
40
+ const m = (r, o) => JSON.stringify(r) === JSON.stringify(o);
41
+ function f(r) {
42
+ const o = {
43
+ axisLine: { lineStyle: { color: r.line } },
44
+ axisTick: { lineStyle: { color: r.line } },
45
+ axisLabel: { color: r.muted },
46
+ splitLine: { lineStyle: { color: [r.line] } },
47
+ nameTextStyle: { color: r.muted }
48
+ };
49
+ return {
50
+ darkMode: r.dark,
51
+ color: r.series,
52
+ backgroundColor: "transparent",
53
+ textStyle: { color: r.text, fontFamily: r.fontFamily },
54
+ title: { textStyle: { color: r.text }, subtextStyle: { color: r.muted } },
55
+ legend: { textStyle: { color: r.muted }, pageTextStyle: { color: r.muted } },
56
+ tooltip: {
57
+ backgroundColor: r.surface,
58
+ borderColor: r.line,
59
+ textStyle: { color: r.text }
60
+ },
61
+ categoryAxis: o,
62
+ valueAxis: o,
63
+ logAxis: o,
64
+ timeAxis: o,
65
+ dataZoom: { textStyle: { color: r.muted }, borderColor: r.line }
66
+ };
67
+ }
68
+ export {
69
+ f as chartTheme,
70
+ u as isDarkColour,
71
+ a as readChartPalette,
72
+ m as samePalette
73
+ };
74
+ //# sourceMappingURL=chartTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartTheme.js","sources":["../../../../src/components/dataDisplay/chart/chartTheme.ts"],"sourcesContent":["// The chart's colours come from the theme's CSS variables, read as computed\n// values — a canvas needs colours, not var() references — and turned into an\n// ECharts theme: axes, grid lines, legend and tooltip in the page's palette.\n\nimport type { EChartsOption } from \"echarts\";\n\n/** An ECharts option: what the chart shows. */\nexport type ChartOption = EChartsOption;\n\n/** The theme's colours as the chart draws them. */\nexport interface ChartPalette {\n /** The surface is dark. */\n dark: boolean;\n /** Text: titles, tooltips. */\n text: string;\n /** Secondary text: axis labels, the legend. */\n muted: string;\n /** Axis and grid lines. */\n line: string;\n /** The surface under the chart: tooltips. */\n surface: string;\n primary: string;\n success: string;\n warning: string;\n error: string;\n info: string;\n /**\n * Series colours, in order: `--smwb-chart-series-1` … `-12`. The default set\n * stays apart with colour-vision deficiencies.\n */\n series: string[];\n /** The font of the text around the chart. */\n fontFamily: string;\n}\n\nconst MAX_SERIES = 12;\nconst FALLBACK_SERIES = [\"#0072b2\", \"#e69f00\", \"#009e73\", \"#cc79a7\", \"#56b4e9\", \"#d55e00\", \"#7a7a7a\"];\n\n/** Darker than mid-grey: `#rgb`, `#rrggbb` and `rgb()`/`rgba()`; anything else counts as light. */\nexport function isDarkColour(colour: string): boolean {\n let rgb: number[] | null = null;\n const hex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(colour.trim());\n if (hex) {\n const digits = hex[1].length === 3 ? [...hex[1]].map((d) => d + d) : hex[1].match(/../g)!;\n rgb = digits.map((pair) => parseInt(pair, 16));\n } else {\n const fn = /^rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)/i.exec(colour.trim());\n if (fn) rgb = [Number(fn[1]), Number(fn[2]), Number(fn[3])];\n }\n if (!rgb) return false;\n const [r, g, b] = rgb.map((channel) => {\n const c = channel / 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n }) as [number, number, number];\n return 0.2126 * r + 0.7152 * g + 0.0722 * b < 0.2;\n}\n\n/** Reads the palette from the element's computed style. */\nexport function readChartPalette(host: HTMLElement): ChartPalette {\n const css = getComputedStyle(host);\n const value = (name: string, fallback: string): string => css.getPropertyValue(name).trim() || fallback;\n const series: string[] = [];\n for (let index = 1; index <= MAX_SERIES; index += 1) {\n const colour = css.getPropertyValue(`--smwb-chart-series-${index}`).trim();\n if (colour) series.push(colour);\n }\n const surface = value(\"--smui-surfaceBackground\", \"#ffffff\");\n return {\n dark: isDarkColour(surface),\n text: value(\"--smui-onSurfaceColor\", \"#1c1b1f\"),\n muted: value(\"--smui-onSurfaceVariant\", \"#49454e\"),\n line: value(\"--smui-dividerColor\", \"rgba(0, 0, 0, 0.12)\"),\n surface,\n primary: value(\"--smui-primaryColor\", \"#6750a4\"),\n success: value(\"--smui-successColor\", \"#2e7d32\"),\n warning: value(\"--smui-warningColor\", \"#ed6c02\"),\n error: value(\"--smui-errorColor\", \"#d32f2f\"),\n info: value(\"--smui-infoColor\", \"#0288d1\"),\n series: series.length > 0 ? series : FALLBACK_SERIES,\n fontFamily: css.fontFamily || \"sans-serif\",\n };\n}\n\nexport const samePalette = (a: ChartPalette, b: ChartPalette): boolean => JSON.stringify(a) === JSON.stringify(b);\n\n/** An ECharts theme in the palette: series colours, text, axes, grid lines, legend, tooltip. */\nexport function chartTheme(palette: ChartPalette): Record<string, unknown> {\n const axis = {\n axisLine: { lineStyle: { color: palette.line } },\n axisTick: { lineStyle: { color: palette.line } },\n axisLabel: { color: palette.muted },\n splitLine: { lineStyle: { color: [palette.line] } },\n nameTextStyle: { color: palette.muted },\n };\n return {\n darkMode: palette.dark,\n color: palette.series,\n backgroundColor: \"transparent\",\n textStyle: { color: palette.text, fontFamily: palette.fontFamily },\n title: { textStyle: { color: palette.text }, subtextStyle: { color: palette.muted } },\n legend: { textStyle: { color: palette.muted }, pageTextStyle: { color: palette.muted } },\n tooltip: {\n backgroundColor: palette.surface,\n borderColor: palette.line,\n textStyle: { color: palette.text },\n },\n categoryAxis: axis,\n valueAxis: axis,\n logAxis: axis,\n timeAxis: axis,\n dataZoom: { textStyle: { color: palette.muted }, borderColor: palette.line },\n };\n}\n"],"names":["FALLBACK_SERIES","isDarkColour","colour","rgb","hex","d","pair","fn","r","g","b","channel","c","readChartPalette","host","css","value","name","fallback","series","index","surface","samePalette","a","chartTheme","palette","axis"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { Chart, default } from "./chart";
2
+ export type { ChartProps, ChartEventParams, ChartInstance, ChartModule } from "./chart";
3
+ export { chartTheme, readChartPalette } from "./chartTheme";
4
+ export type { ChartOption, ChartPalette } from "./chartTheme";
@@ -1,5 +1,6 @@
1
1
  import { jsx as t, jsxs as y, Fragment as dt } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/chat/chat.entry.css';/* empty css */
2
+ import '../../../assets/styles/less/components/chat/chat.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
3
4
  import { useMemo as Ct, useId as vt } from "react";
4
5
  import wt from "clsx";
5
6
  import { FloatingButton as _t } from "../../inputs/floatingButton/floatingButton.js";
@@ -12,7 +13,7 @@ import { ChatShell as Ft } from "./chatShell.js";
12
13
  import It from "./useChatFileUpload.js";
13
14
  import { CHAT_EXPAND_LAYOUTS as Nt } from "./types.js";
14
15
  import { resolveAllowedLayouts as Et, pickInitialLayout as B, shouldShowChatCloseButton as Ot } from "./utils.js";
15
- function Gt({
16
+ function Jt({
16
17
  className: F,
17
18
  messages: I,
18
19
  showAvatars: N = !1,
@@ -177,7 +178,7 @@ function Gt({
177
178
  );
178
179
  }
179
180
  export {
180
- Gt as Chat,
181
- Gt as default
181
+ Jt as Chat,
182
+ Jt as default
182
183
  };
183
184
  //# sourceMappingURL=chat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sources":["../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import React, { PropsWithChildren, ReactNode, useId, useMemo } from \"react\";\nimport cn from \"clsx\";\nimport type { Accept } from \"./useChatFileUpload\";\nimport { FloatingButton } from \"../../inputs/floatingButton/floatingButton\";\nimport Icon from \"../../base/icon/icon\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport ChatComposer from \"./chatComposer\";\nimport ChatHeader from \"./chatHeader\";\nimport ChatMessages, { ChatMessagesProps } from \"./chatMessages\";\nimport ChatShell from \"./chatShell\";\nimport useChatFileUpload from \"./useChatFileUpload\";\nimport {\n ChatAnchor,\n ChatLayoutMode,\n ChatMessage,\n ChatMessageRenderContext,\n ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\nexport interface ChatProps\n extends PropsWithChildren, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n className?: string;\n messages: ChatMessage[];\n showAvatars?: boolean;\n showAttachments?: boolean;\n headerTitle?: ReactNode;\n headerSubtitle?: ReactNode;\n headerActions?: ReactNode;\n footer?: ReactNode;\n anchor?: ChatAnchor;\n themeMode?: ChatThemeMode;\n allowedLayouts?: ChatLayoutMode[];\n layout?: ChatLayoutMode;\n defaultLayout?: ChatLayoutMode;\n onLayoutChange?: (layout: ChatLayoutMode) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n floatingTrigger?: boolean;\n triggerIcon?: ReactNode;\n triggerLabel?: string;\n onLoadMore?: () => void | Promise<void>;\n hasMore?: boolean;\n onSendMessage?: (text: string) => void | Promise<void>;\n composerPlaceholder?: string;\n composerDisabled?: boolean;\n composerShiftEnterNewline?: boolean;\n composerCtrlEnterNewline?: boolean;\n fileUpload?: boolean;\n onUploadFiles?: (files: File[]) => void | Promise<void>;\n fileUploadAccept?: Accept;\n fileUploadMaxFiles?: number;\n attachAriaLabel?: string;\n loading?: boolean;\n loadingMore?: boolean;\n loadingSkeletonCount?: number;\n renderMessage?: ChatMessagesProps[\"renderMessage\"];\n embedded?: boolean;\n overlayContext?: boolean;\n showStatus?: boolean;\n statusIcons?: ChatMessageRenderContext[\"statusIcons\"];\n renderStatus?: ChatMessageRenderContext[\"renderStatus\"];\n showCloseButton?: boolean;\n}\n\nexport function Chat({\n className,\n messages,\n showAvatars = false,\n showAttachments = false,\n headerTitle,\n headerSubtitle,\n headerActions,\n footer,\n children,\n anchor = \"bottom-right\",\n themeMode = \"inherit\",\n allowedLayouts: allowedLayoutsProp,\n layout: layoutProp,\n defaultLayout,\n onLayoutChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n floatingTrigger = false,\n triggerIcon,\n triggerLabel,\n onLoadMore,\n hasMore,\n onSendMessage,\n composerPlaceholder = \"message\",\n composerDisabled,\n composerShiftEnterNewline = true,\n composerCtrlEnterNewline = true,\n fileUpload = false,\n onUploadFiles,\n fileUploadAccept,\n fileUploadMaxFiles,\n attachAriaLabel,\n loading,\n loadingMore,\n loadingSkeletonCount,\n renderMessage,\n embedded = false,\n overlayContext = false,\n showStatus = false,\n statusIcons,\n renderStatus,\n showCloseButton,\n}: ChatProps) {\n const allowedLayouts = useMemo(\n () => resolveAllowedLayouts(allowedLayoutsProp ?? CHAT_EXPAND_LAYOUTS),\n [allowedLayoutsProp]\n );\n\n const [open, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const [layout, setLayout] = useControllableState<ChatLayoutMode>({\n value: layoutProp,\n defaultValue: pickInitialLayout(allowedLayouts, defaultLayout),\n onChange: onLayoutChange,\n });\n\n const effectiveLayout: ChatLayoutMode = embedded\n ? \"fullHeight\"\n : floatingTrigger\n ? open\n ? layout\n : \"closed\"\n : layout;\n\n const handleOpen = () => {\n setOpen(true);\n if (layout === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts, defaultLayout));\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode) => {\n setOpen(true);\n setLayout(next);\n };\n\n const {\n enabled: fileUploadEnabled,\n getRootProps,\n getInputProps,\n isDragActive,\n } = useChatFileUpload({\n enabled: fileUpload,\n accept: fileUploadAccept,\n maxFiles: fileUploadMaxFiles,\n onUploadFiles,\n disabled: composerDisabled,\n });\n\n const attachInputId = useId();\n\n const showComposer = Boolean(onSendMessage) || fileUploadEnabled;\n\n const fileInput = fileUploadEnabled ? (\n <input {...getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n ) : null;\n\n const resolvedFooter =\n footer ??\n children ??\n (showComposer ? (\n <>\n {fileInput}\n <ChatComposer\n onSendMessage={onSendMessage}\n placeholder={composerPlaceholder}\n disabled={composerDisabled}\n shiftEnterNewline={composerShiftEnterNewline}\n ctrlEnterNewline={composerCtrlEnterNewline}\n fileUpload={fileUploadEnabled}\n attachInputId={fileUploadEnabled ? attachInputId : undefined}\n attachAriaLabel={attachAriaLabel}\n />\n </>\n ) : undefined);\n\n const chatMessages = (\n <ChatMessages\n messages={messages}\n showAvatars={showAvatars}\n showAttachments={showAttachments}\n showStatus={showStatus}\n statusIcons={statusIcons}\n renderStatus={renderStatus}\n onLoadMore={onLoadMore}\n hasMore={hasMore}\n loading={loading}\n loadingMore={loadingMore}\n loadingSkeletonCount={loadingSkeletonCount}\n renderMessage={renderMessage}\n />\n );\n\n const chatBody = chatMessages;\n\n const fileDropzoneRootProps = fileUploadEnabled ? getRootProps() : undefined;\n\n const closeButtonVisible = shouldShowChatCloseButton({\n floatingTrigger,\n embedded,\n overlayContext,\n effectiveLayout,\n showCloseButton,\n });\n\n return (\n <div\n className={cn(\n \"smwb-chat\",\n !embedded && `smwb-chat_${anchor}`,\n embedded && \"smwb-chat_embedded\",\n overlayContext && \"smwb-chat_overlay-context\",\n className\n )}\n data-testid=\"chat\"\n >\n {floatingTrigger && !embedded && !open ? (\n <FloatingButton\n className=\"smwb-chat__trigger\"\n aria-label={triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n {triggerIcon ?? <Icon name=\"chat\" size={24} />}\n </FloatingButton>\n ) : null}\n <ChatShell\n layout={effectiveLayout}\n anchor={anchor}\n themeMode={themeMode}\n embedded={embedded}\n overlayContext={overlayContext}\n fileDropzoneRootProps={fileDropzoneRootProps}\n fileDropzoneActive={fileUploadEnabled && isDragActive}\n header={\n <ChatHeader\n title={headerTitle}\n subtitle={headerSubtitle}\n actions={headerActions}\n layout={effectiveLayout === \"closed\" ? layout : effectiveLayout}\n allowedLayouts={allowedLayouts}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible ? handleClose : undefined}\n />\n }\n footer={resolvedFooter}\n >\n {chatBody}\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"names":["Chat","className","messages","showAvatars","showAttachments","headerTitle","headerSubtitle","headerActions","footer","children","anchor","themeMode","allowedLayoutsProp","layoutProp","defaultLayout","onLayoutChange","openProp","defaultOpen","onOpenChange","floatingTrigger","triggerIcon","triggerLabel","onLoadMore","hasMore","onSendMessage","composerPlaceholder","composerDisabled","composerShiftEnterNewline","composerCtrlEnterNewline","fileUpload","onUploadFiles","fileUploadAccept","fileUploadMaxFiles","attachAriaLabel","loading","loadingMore","loadingSkeletonCount","renderMessage","embedded","overlayContext","showStatus","statusIcons","renderStatus","showCloseButton","allowedLayouts","useMemo","resolveAllowedLayouts","CHAT_EXPAND_LAYOUTS","open","setOpen","useControllableState","layout","setLayout","pickInitialLayout","effectiveLayout","handleOpen","handleClose","handleLayoutChange","next","fileUploadEnabled","getRootProps","getInputProps","isDragActive","useChatFileUpload","attachInputId","useId","showComposer","fileInput","jsx","resolvedFooter","_a","jsxs","Fragment","ChatComposer","chatBody","ChatMessages","fileDropzoneRootProps","closeButtonVisible","shouldShowChatCloseButton","cn","FloatingButton","Icon","ChatShell","ChatHeader"],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sources":["../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import React, { PropsWithChildren, ReactNode, useId, useMemo } from \"react\";\nimport cn from \"clsx\";\nimport type { Accept } from \"./useChatFileUpload\";\nimport { FloatingButton } from \"../../inputs/floatingButton/floatingButton\";\nimport Icon from \"../../base/icon/icon\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport ChatComposer from \"./chatComposer\";\nimport ChatHeader from \"./chatHeader\";\nimport ChatMessages, { ChatMessagesProps } from \"./chatMessages\";\nimport ChatShell from \"./chatShell\";\nimport useChatFileUpload from \"./useChatFileUpload\";\nimport {\n ChatAnchor,\n ChatLayoutMode,\n ChatMessage,\n ChatMessageRenderContext,\n ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\nexport interface ChatProps\n extends PropsWithChildren, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n className?: string;\n messages: ChatMessage[];\n showAvatars?: boolean;\n showAttachments?: boolean;\n headerTitle?: ReactNode;\n headerSubtitle?: ReactNode;\n headerActions?: ReactNode;\n footer?: ReactNode;\n anchor?: ChatAnchor;\n themeMode?: ChatThemeMode;\n allowedLayouts?: ChatLayoutMode[];\n layout?: ChatLayoutMode;\n defaultLayout?: ChatLayoutMode;\n onLayoutChange?: (layout: ChatLayoutMode) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n floatingTrigger?: boolean;\n triggerIcon?: ReactNode;\n triggerLabel?: string;\n onLoadMore?: () => void | Promise<void>;\n hasMore?: boolean;\n onSendMessage?: (text: string) => void | Promise<void>;\n composerPlaceholder?: string;\n composerDisabled?: boolean;\n composerShiftEnterNewline?: boolean;\n composerCtrlEnterNewline?: boolean;\n fileUpload?: boolean;\n onUploadFiles?: (files: File[]) => void | Promise<void>;\n fileUploadAccept?: Accept;\n fileUploadMaxFiles?: number;\n attachAriaLabel?: string;\n loading?: boolean;\n loadingMore?: boolean;\n loadingSkeletonCount?: number;\n renderMessage?: ChatMessagesProps[\"renderMessage\"];\n embedded?: boolean;\n overlayContext?: boolean;\n showStatus?: boolean;\n statusIcons?: ChatMessageRenderContext[\"statusIcons\"];\n renderStatus?: ChatMessageRenderContext[\"renderStatus\"];\n showCloseButton?: boolean;\n}\n\nexport function Chat({\n className,\n messages,\n showAvatars = false,\n showAttachments = false,\n headerTitle,\n headerSubtitle,\n headerActions,\n footer,\n children,\n anchor = \"bottom-right\",\n themeMode = \"inherit\",\n allowedLayouts: allowedLayoutsProp,\n layout: layoutProp,\n defaultLayout,\n onLayoutChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n floatingTrigger = false,\n triggerIcon,\n triggerLabel,\n onLoadMore,\n hasMore,\n onSendMessage,\n composerPlaceholder = \"message\",\n composerDisabled,\n composerShiftEnterNewline = true,\n composerCtrlEnterNewline = true,\n fileUpload = false,\n onUploadFiles,\n fileUploadAccept,\n fileUploadMaxFiles,\n attachAriaLabel,\n loading,\n loadingMore,\n loadingSkeletonCount,\n renderMessage,\n embedded = false,\n overlayContext = false,\n showStatus = false,\n statusIcons,\n renderStatus,\n showCloseButton,\n}: ChatProps) {\n const allowedLayouts = useMemo(\n () => resolveAllowedLayouts(allowedLayoutsProp ?? CHAT_EXPAND_LAYOUTS),\n [allowedLayoutsProp]\n );\n\n const [open, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const [layout, setLayout] = useControllableState<ChatLayoutMode>({\n value: layoutProp,\n defaultValue: pickInitialLayout(allowedLayouts, defaultLayout),\n onChange: onLayoutChange,\n });\n\n const effectiveLayout: ChatLayoutMode = embedded\n ? \"fullHeight\"\n : floatingTrigger\n ? open\n ? layout\n : \"closed\"\n : layout;\n\n const handleOpen = () => {\n setOpen(true);\n if (layout === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts, defaultLayout));\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode) => {\n setOpen(true);\n setLayout(next);\n };\n\n const {\n enabled: fileUploadEnabled,\n getRootProps,\n getInputProps,\n isDragActive,\n } = useChatFileUpload({\n enabled: fileUpload,\n accept: fileUploadAccept,\n maxFiles: fileUploadMaxFiles,\n onUploadFiles,\n disabled: composerDisabled,\n });\n\n const attachInputId = useId();\n\n const showComposer = Boolean(onSendMessage) || fileUploadEnabled;\n\n const fileInput = fileUploadEnabled ? (\n <input {...getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n ) : null;\n\n const resolvedFooter =\n footer ??\n children ??\n (showComposer ? (\n <>\n {fileInput}\n <ChatComposer\n onSendMessage={onSendMessage}\n placeholder={composerPlaceholder}\n disabled={composerDisabled}\n shiftEnterNewline={composerShiftEnterNewline}\n ctrlEnterNewline={composerCtrlEnterNewline}\n fileUpload={fileUploadEnabled}\n attachInputId={fileUploadEnabled ? attachInputId : undefined}\n attachAriaLabel={attachAriaLabel}\n />\n </>\n ) : undefined);\n\n const chatMessages = (\n <ChatMessages\n messages={messages}\n showAvatars={showAvatars}\n showAttachments={showAttachments}\n showStatus={showStatus}\n statusIcons={statusIcons}\n renderStatus={renderStatus}\n onLoadMore={onLoadMore}\n hasMore={hasMore}\n loading={loading}\n loadingMore={loadingMore}\n loadingSkeletonCount={loadingSkeletonCount}\n renderMessage={renderMessage}\n />\n );\n\n const chatBody = chatMessages;\n\n const fileDropzoneRootProps = fileUploadEnabled ? getRootProps() : undefined;\n\n const closeButtonVisible = shouldShowChatCloseButton({\n floatingTrigger,\n embedded,\n overlayContext,\n effectiveLayout,\n showCloseButton,\n });\n\n return (\n <div\n className={cn(\n \"smwb-chat\",\n !embedded && `smwb-chat_${anchor}`,\n embedded && \"smwb-chat_embedded\",\n overlayContext && \"smwb-chat_overlay-context\",\n className\n )}\n data-testid=\"chat\"\n >\n {floatingTrigger && !embedded && !open ? (\n <FloatingButton\n className=\"smwb-chat__trigger\"\n aria-label={triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n {triggerIcon ?? <Icon name=\"chat\" size={24} />}\n </FloatingButton>\n ) : null}\n <ChatShell\n layout={effectiveLayout}\n anchor={anchor}\n themeMode={themeMode}\n embedded={embedded}\n overlayContext={overlayContext}\n fileDropzoneRootProps={fileDropzoneRootProps}\n fileDropzoneActive={fileUploadEnabled && isDragActive}\n header={\n <ChatHeader\n title={headerTitle}\n subtitle={headerSubtitle}\n actions={headerActions}\n layout={effectiveLayout === \"closed\" ? layout : effectiveLayout}\n allowedLayouts={allowedLayouts}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible ? handleClose : undefined}\n />\n }\n footer={resolvedFooter}\n >\n {chatBody}\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"names":["Chat","className","messages","showAvatars","showAttachments","headerTitle","headerSubtitle","headerActions","footer","children","anchor","themeMode","allowedLayoutsProp","layoutProp","defaultLayout","onLayoutChange","openProp","defaultOpen","onOpenChange","floatingTrigger","triggerIcon","triggerLabel","onLoadMore","hasMore","onSendMessage","composerPlaceholder","composerDisabled","composerShiftEnterNewline","composerCtrlEnterNewline","fileUpload","onUploadFiles","fileUploadAccept","fileUploadMaxFiles","attachAriaLabel","loading","loadingMore","loadingSkeletonCount","renderMessage","embedded","overlayContext","showStatus","statusIcons","renderStatus","showCloseButton","allowedLayouts","useMemo","resolveAllowedLayouts","CHAT_EXPAND_LAYOUTS","open","setOpen","useControllableState","layout","setLayout","pickInitialLayout","effectiveLayout","handleOpen","handleClose","handleLayoutChange","next","fileUploadEnabled","getRootProps","getInputProps","isDragActive","useChatFileUpload","attachInputId","useId","showComposer","fileInput","jsx","resolvedFooter","_a","jsxs","Fragment","ChatComposer","chatBody","ChatMessages","fileDropzoneRootProps","closeButtonVisible","shouldShowChatCloseButton","cn","FloatingButton","Icon","ChatShell","ChatHeader"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { jsx as t, jsxs as E, Fragment as F } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/chip/chip.entry.css';/* empty css */
2
+ import '../../../assets/styles/less/components/chip/chip.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
3
4
  import v from "react";
4
5
  import I from "clsx";
5
6
  import { Ripple as K } from "../../base/ripple/ripple.js";
6
7
  import { Icon as q } from "../../base/icon/icon.js";
7
- const T = v.forwardRef(function({
8
+ const U = v.forwardRef(function({
8
9
  label: N,
9
10
  className: x,
10
11
  deleteIcon: l,
@@ -93,7 +94,7 @@ const T = v.forwardRef(function({
93
94
  );
94
95
  });
95
96
  export {
96
- T as Chip,
97
- T as default
97
+ U as Chip,
98
+ U as default
98
99
  };
99
100
  //# sourceMappingURL=chip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chip.js","sources":["../../../../src/components/dataDisplay/chip/chip.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\nimport Icon from \"../../base/icon/icon\";\n\nexport type ChipColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement | HTMLAnchorElement> {\n className?: string;\n variant?: \"filled\" | \"outlined\";\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n onDelete?: (event: React.SyntheticEvent) => void;\n icon?: React.ReactNode;\n deleteIcon?: React.ReactNode;\n label: string;\n onClick?: () => void;\n onDeleteMouseDown?: React.MouseEventHandler;\n disabled?: boolean;\n asLink?: boolean;\n href?: string;\n /** Open the link in a new tab (asLink only). */\n target?: string;\n selected?: boolean;\n /** Accessible label for the delete control. */\n deleteAriaLabel?: string;\n}\n\nexport const Chip = React.forwardRef<HTMLSpanElement | HTMLAnchorElement, ChipProps>(function Chip(\n {\n label,\n className,\n deleteIcon,\n icon,\n onDelete,\n onMouseDown: onMouseDownProp,\n onDeleteMouseDown: onDeleteMouseDownProp,\n asLink,\n href,\n target = \"_blank\",\n selected,\n variant = \"filled\",\n size = \"medium\",\n color = \"default\",\n disabled = false,\n onClick,\n deleteAriaLabel = \"Remove\",\n ...rest\n },\n ref\n) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLSpanElement | HTMLAnchorElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLSpanElement | HTMLAnchorElement>) => {\n if (!disabled) {\n rippleRef.current?.onRipple(event);\n }\n };\n\n const onDeleteMouseDown = (event: React.MouseEvent) => {\n onDeleteMouseDownProp?.(event);\n event.stopPropagation();\n };\n\n const classes = cn(\n \"smwb-chip\",\n `smwb-${variant}`,\n `smwb-chip_size-${size}`,\n color !== \"default\" && `smwb-chip_color-${color}`,\n className,\n { \"smwb-disabled\": disabled, \"smwb-selected\": selected }\n );\n\n const deleteBtn = !!onDelete && (\n <button\n type=\"button\"\n className=\"smwb-chip__delete-icon\"\n aria-label={deleteAriaLabel}\n disabled={disabled}\n onClick={onDelete}\n onMouseDown={onDeleteMouseDown}\n >\n {deleteIcon ? deleteIcon : <Icon name=\"cancel\" size={18} fill={1} />}\n </button>\n );\n\n const inner = (\n <>\n {icon && <span className=\"smwb-chip__icon\">{icon}</span>}\n <span className=\"smwb-chip__label\">{label}</span>\n {deleteBtn}\n <Ripple actionRef={rippleRef} />\n </>\n );\n\n if (asLink && href) {\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n data-testid=\"chip-link\"\n className={classes}\n href={href}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n target={target}\n rel=\"noreferrer\"\n {...rest}\n >\n {inner}\n </a>\n );\n }\n\n const clickable = !!onClick && !disabled;\n\n return (\n <span\n ref={ref}\n data-testid=\"chip\"\n className={classes}\n role={clickable ? \"button\" : undefined}\n tabIndex={clickable ? 0 : undefined}\n aria-disabled={disabled || undefined}\n onClick={clickable ? onClick : undefined}\n onKeyDown={\n clickable\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }\n : undefined\n }\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {inner}\n </span>\n );\n});\n\nexport default Chip;\n"],"names":["Chip","React","label","className","deleteIcon","icon","onDelete","onMouseDownProp","onDeleteMouseDownProp","asLink","href","target","selected","variant","size","color","disabled","onClick","deleteAriaLabel","rest","ref","rippleRef","onMouseDown","event","onPointerDown","_a","onDeleteMouseDown","classes","cn","inner","jsxs","Fragment","jsx","Icon","Ripple","clickable"],"mappings":";;;;;;AA6BO,MAAMA,IAAOC,EAAM,WAA2D,SACnF;AAAA,EACE,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAaC;AAAA,EACb,mBAAmBC;AAAA,EACnB,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAYpB,EAAM,OAAyB,IAAI,GAE/CqB,IAAc,CAACC,MAAiE;AACpF,IAAAhB,KAAA,QAAAA,EAAkBgB;AAAA,EACpB,GAGMC,IAAgB,CAACD,MAAmE;;AACxF,IAAKP,MACHS,IAAAJ,EAAU,YAAV,QAAAI,EAAmB,SAASF;AAAA,EAEhC,GAEMG,IAAoB,CAACH,MAA4B;AACrD,IAAAf,KAAA,QAAAA,EAAwBe,IACxBA,EAAM,gBAAA;AAAA,EACR,GAEMI,IAAUC;AAAA,IACd;AAAA,IACA,QAAQf,CAAO;AAAA,IACf,kBAAkBC,CAAI;AAAA,IACtBC,MAAU,aAAa,mBAAmBA,CAAK;AAAA,IAC/CZ;AAAA,IACA,EAAE,iBAAiBa,GAAU,iBAAiBJ,EAAA;AAAA,EAAS,GAgBnDiB,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA1B,KAAQ,gBAAA2B,EAAC,QAAA,EAAK,WAAU,mBAAmB,UAAA3B,GAAK;AAAA,IACjD,gBAAA2B,EAAC,QAAA,EAAK,WAAU,oBAAoB,UAAA9B,GAAM;AAAA,IAhB5B,CAAC,CAACI,KAClB,gBAAA0B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,cAAYd;AAAA,QACZ,UAAAF;AAAA,QACA,SAASV;AAAA,QACT,aAAaoB;AAAA,QAEZ,UAAAtB,KAA0B,gBAAA4B,EAACC,GAAA,EAAK,MAAK,UAAS,MAAM,IAAI,MAAM,EAAA,CAAG;AAAA,MAAA;AAAA,IAAA;AAAA,IASlE,gBAAAD,EAACE,GAAA,EAAO,WAAWb,EAAA,CAAW;AAAA,EAAA,GAChC;AAGF,MAAIZ,KAAUC;AACZ,WACE,gBAAAsB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,eAAY;AAAA,QACZ,WAAWO;AAAA,QACX,MAAAjB;AAAA,QACA,aAAAY;AAAA,QACA,eAAAE;AAAA,QACA,QAAAb;AAAA,QACA,KAAI;AAAA,QACH,GAAGQ;AAAA,QAEH,UAAAU;AAAA,MAAA;AAAA,IAAA;AAKP,QAAMM,IAAY,CAAC,CAAClB,KAAW,CAACD;AAEhC,SACE,gBAAAgB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAZ;AAAA,MACA,eAAY;AAAA,MACZ,WAAWO;AAAA,MACX,MAAMQ,IAAY,WAAW;AAAA,MAC7B,UAAUA,IAAY,IAAI;AAAA,MAC1B,iBAAenB,KAAY;AAAA,MAC3B,SAASmB,IAAYlB,IAAU;AAAA,MAC/B,WACEkB,IACI,CAAC,MAAM;AACL,SAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,SACjC,EAAE,eAAA,GACFlB,KAAA,QAAAA;AAAA,MAEJ,IACA;AAAA,MAEN,aAAAK;AAAA,MACA,eAAAE;AAAA,MACC,GAAGL;AAAA,MAEH,UAAAU;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
1
+ {"version":3,"file":"chip.js","sources":["../../../../src/components/dataDisplay/chip/chip.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\nimport Icon from \"../../base/icon/icon\";\n\nexport type ChipColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement | HTMLAnchorElement> {\n className?: string;\n variant?: \"filled\" | \"outlined\";\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n onDelete?: (event: React.SyntheticEvent) => void;\n icon?: React.ReactNode;\n deleteIcon?: React.ReactNode;\n label: string;\n onClick?: () => void;\n onDeleteMouseDown?: React.MouseEventHandler;\n disabled?: boolean;\n asLink?: boolean;\n href?: string;\n /** Open the link in a new tab (asLink only). */\n target?: string;\n selected?: boolean;\n /** Accessible label for the delete control. */\n deleteAriaLabel?: string;\n}\n\nexport const Chip = React.forwardRef<HTMLSpanElement | HTMLAnchorElement, ChipProps>(function Chip(\n {\n label,\n className,\n deleteIcon,\n icon,\n onDelete,\n onMouseDown: onMouseDownProp,\n onDeleteMouseDown: onDeleteMouseDownProp,\n asLink,\n href,\n target = \"_blank\",\n selected,\n variant = \"filled\",\n size = \"medium\",\n color = \"default\",\n disabled = false,\n onClick,\n deleteAriaLabel = \"Remove\",\n ...rest\n },\n ref\n) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLSpanElement | HTMLAnchorElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLSpanElement | HTMLAnchorElement>) => {\n if (!disabled) {\n rippleRef.current?.onRipple(event);\n }\n };\n\n const onDeleteMouseDown = (event: React.MouseEvent) => {\n onDeleteMouseDownProp?.(event);\n event.stopPropagation();\n };\n\n const classes = cn(\n \"smwb-chip\",\n `smwb-${variant}`,\n `smwb-chip_size-${size}`,\n color !== \"default\" && `smwb-chip_color-${color}`,\n className,\n { \"smwb-disabled\": disabled, \"smwb-selected\": selected }\n );\n\n const deleteBtn = !!onDelete && (\n <button\n type=\"button\"\n className=\"smwb-chip__delete-icon\"\n aria-label={deleteAriaLabel}\n disabled={disabled}\n onClick={onDelete}\n onMouseDown={onDeleteMouseDown}\n >\n {deleteIcon ? deleteIcon : <Icon name=\"cancel\" size={18} fill={1} />}\n </button>\n );\n\n const inner = (\n <>\n {icon && <span className=\"smwb-chip__icon\">{icon}</span>}\n <span className=\"smwb-chip__label\">{label}</span>\n {deleteBtn}\n <Ripple actionRef={rippleRef} />\n </>\n );\n\n if (asLink && href) {\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n data-testid=\"chip-link\"\n className={classes}\n href={href}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n target={target}\n rel=\"noreferrer\"\n {...rest}\n >\n {inner}\n </a>\n );\n }\n\n const clickable = !!onClick && !disabled;\n\n return (\n <span\n ref={ref}\n data-testid=\"chip\"\n className={classes}\n role={clickable ? \"button\" : undefined}\n tabIndex={clickable ? 0 : undefined}\n aria-disabled={disabled || undefined}\n onClick={clickable ? onClick : undefined}\n onKeyDown={\n clickable\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }\n : undefined\n }\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {inner}\n </span>\n );\n});\n\nexport default Chip;\n"],"names":["Chip","React","label","className","deleteIcon","icon","onDelete","onMouseDownProp","onDeleteMouseDownProp","asLink","href","target","selected","variant","size","color","disabled","onClick","deleteAriaLabel","rest","ref","rippleRef","onMouseDown","event","onPointerDown","_a","onDeleteMouseDown","classes","cn","inner","jsxs","Fragment","jsx","Icon","Ripple","clickable"],"mappings":";;;;;;;AA8BO,MAAMA,IAAOC,EAAM,WAA2D,SACnF;AAAA,EACE,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAaC;AAAA,EACb,mBAAmBC;AAAA,EACnB,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAYpB,EAAM,OAAyB,IAAI,GAE/CqB,IAAc,CAACC,MAAiE;AACpF,IAAAhB,KAAA,QAAAA,EAAkBgB;AAAA,EACpB,GAGMC,IAAgB,CAACD,MAAmE;;AACxF,IAAKP,MACHS,IAAAJ,EAAU,YAAV,QAAAI,EAAmB,SAASF;AAAA,EAEhC,GAEMG,IAAoB,CAACH,MAA4B;AACrD,IAAAf,KAAA,QAAAA,EAAwBe,IACxBA,EAAM,gBAAA;AAAA,EACR,GAEMI,IAAUC;AAAA,IACd;AAAA,IACA,QAAQf,CAAO;AAAA,IACf,kBAAkBC,CAAI;AAAA,IACtBC,MAAU,aAAa,mBAAmBA,CAAK;AAAA,IAC/CZ;AAAA,IACA,EAAE,iBAAiBa,GAAU,iBAAiBJ,EAAA;AAAA,EAAS,GAgBnDiB,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA1B,KAAQ,gBAAA2B,EAAC,QAAA,EAAK,WAAU,mBAAmB,UAAA3B,GAAK;AAAA,IACjD,gBAAA2B,EAAC,QAAA,EAAK,WAAU,oBAAoB,UAAA9B,GAAM;AAAA,IAhB5B,CAAC,CAACI,KAClB,gBAAA0B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,cAAYd;AAAA,QACZ,UAAAF;AAAA,QACA,SAASV;AAAA,QACT,aAAaoB;AAAA,QAEZ,UAAAtB,KAA0B,gBAAA4B,EAACC,GAAA,EAAK,MAAK,UAAS,MAAM,IAAI,MAAM,EAAA,CAAG;AAAA,MAAA;AAAA,IAAA;AAAA,IASlE,gBAAAD,EAACE,GAAA,EAAO,WAAWb,EAAA,CAAW;AAAA,EAAA,GAChC;AAGF,MAAIZ,KAAUC;AACZ,WACE,gBAAAsB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,eAAY;AAAA,QACZ,WAAWO;AAAA,QACX,MAAAjB;AAAA,QACA,aAAAY;AAAA,QACA,eAAAE;AAAA,QACA,QAAAb;AAAA,QACA,KAAI;AAAA,QACH,GAAGQ;AAAA,QAEH,UAAAU;AAAA,MAAA;AAAA,IAAA;AAKP,QAAMM,IAAY,CAAC,CAAClB,KAAW,CAACD;AAEhC,SACE,gBAAAgB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAZ;AAAA,MACA,eAAY;AAAA,MACZ,WAAWO;AAAA,MACX,MAAMQ,IAAY,WAAW;AAAA,MAC7B,UAAUA,IAAY,IAAI;AAAA,MAC1B,iBAAenB,KAAY;AAAA,MAC3B,SAASmB,IAAYlB,IAAU;AAAA,MAC/B,WACEkB,IACI,CAAC,MAAM;AACL,SAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,SACjC,EAAE,eAAA,GACFlB,KAAA,QAAAA;AAAA,MAEJ,IACA;AAAA,MAEN,aAAAK;AAAA,MACA,eAAAE;AAAA,MACC,GAAGL;AAAA,MAEH,UAAAU;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -1,11 +1,12 @@
1
- import { jsx as u } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/chipGroup/chipGroup.entry.css';/* empty css */
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import '../../../assets/styles/less/components/chipGroup/chipGroup.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
3
4
  import A from "clsx";
4
5
  import { Chip as j } from "../chip/chip.js";
5
- function S({
6
- options: d,
6
+ function V({
7
+ options: u,
7
8
  value: e,
8
- multiple: t,
9
+ multiple: d,
9
10
  onChange: l,
10
11
  size: m = "medium",
11
12
  color: f = "primary",
@@ -14,13 +15,13 @@ function S({
14
15
  ...p
15
16
  }) {
16
17
  const c = () => e == null ? [] : Array.isArray(e) ? e : [e], i = (r) => c().includes(r), v = (r) => {
17
- if (t) {
18
+ if (d) {
18
19
  const s = c(), x = s.includes(r) ? s.filter((y) => y !== r) : [...s, r];
19
20
  l == null || l(x);
20
21
  } else
21
22
  l == null || l(r);
22
23
  };
23
- return /* @__PURE__ */ u("div", { ...p, role: "group", className: A("smwb-chip-group", b), children: d.map((r) => /* @__PURE__ */ u(
24
+ return /* @__PURE__ */ t("div", { ...p, role: "group", className: A("smwb-chip-group", b), children: u.map((r) => /* @__PURE__ */ t(
24
25
  j,
25
26
  {
26
27
  label: r.label,
@@ -36,7 +37,7 @@ function S({
36
37
  )) });
37
38
  }
38
39
  export {
39
- S as ChipGroup,
40
- S as default
40
+ V as ChipGroup,
41
+ V as default
41
42
  };
42
43
  //# sourceMappingURL=chipGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chipGroup.js","sources":["../../../../src/components/dataDisplay/chipGroup/chipGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { Chip, type ChipColor } from \"../chip\";\n\nexport interface ChipGroupOption {\n value: string;\n label: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface ChipGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: ChipGroupOption[];\n /** Selected value (single) or values (when `multiple`). */\n value?: string | string[];\n /** Allow more than one selected chip (value becomes a string[]). */\n multiple?: boolean;\n onChange?: (value: string | string[]) => void;\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n disabled?: boolean;\n}\n\n/**\n * A multi/single-select toggle group built on `Chip` — the \"chip as a toggle\"\n * loop (selected → filled, else outlined; `role=group`) apps re-hand-roll for\n * filters / segmented controls. Pass an `options` array and a controlled\n * `value`; `onChange` returns the next value (string, or string[] when multiple).\n */\nexport function ChipGroup({\n options,\n value,\n multiple,\n onChange,\n size = \"medium\",\n color = \"primary\",\n disabled,\n className,\n ...rest\n}: ChipGroupProps): React.ReactElement {\n const selectedValues = (): string[] => {\n if (value == null) return [];\n return Array.isArray(value) ? value : [value];\n };\n const isSelected = (option: string): boolean => selectedValues().includes(option);\n\n const toggle = (option: string): void => {\n if (multiple) {\n const current = selectedValues();\n const next = current.includes(option) ? current.filter((v) => v !== option) : [...current, option];\n onChange?.(next);\n } else {\n onChange?.(option);\n }\n };\n\n return (\n <div {...rest} role=\"group\" className={cn(\"smwb-chip-group\", className)}>\n {options.map((option) => (\n <Chip\n key={option.value}\n label={option.label}\n icon={option.icon}\n size={size}\n color={color}\n selected={isSelected(option.value)}\n variant={isSelected(option.value) ? \"filled\" : \"outlined\"}\n disabled={!!(disabled || option.disabled)}\n onClick={() => toggle(option.value)}\n />\n ))}\n </div>\n );\n}\n\nexport default ChipGroup;\n"],"names":["ChipGroup","options","value","multiple","onChange","size","color","disabled","className","rest","selectedValues","isSelected","option","toggle","current","next","v","jsx","cn","Chip"],"mappings":";;;;AA8BO,SAASA,EAAU;AAAA,EACxB,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAuC;AACrC,QAAMC,IAAiB,MACjBR,KAAS,OAAa,CAAA,IACnB,MAAM,QAAQA,CAAK,IAAIA,IAAQ,CAACA,CAAK,GAExCS,IAAa,CAACC,MAA4BF,EAAA,EAAiB,SAASE,CAAM,GAE1EC,IAAS,CAACD,MAAyB;AACvC,QAAIT,GAAU;AACZ,YAAMW,IAAUJ,EAAA,GACVK,IAAOD,EAAQ,SAASF,CAAM,IAAIE,EAAQ,OAAO,CAACE,MAAMA,MAAMJ,CAAM,IAAI,CAAC,GAAGE,GAASF,CAAM;AACjG,MAAAR,KAAA,QAAAA,EAAWW;AAAA,IACb;AACE,MAAAX,KAAA,QAAAA,EAAWQ;AAAA,EAEf;AAEA,SACE,gBAAAK,EAAC,OAAA,EAAK,GAAGR,GAAM,MAAK,SAAQ,WAAWS,EAAG,mBAAmBV,CAAS,GACnE,UAAAP,EAAQ,IAAI,CAACW,MACZ,gBAAAK;AAAA,IAACE;AAAA,IAAA;AAAA,MAEC,OAAOP,EAAO;AAAA,MACd,MAAMA,EAAO;AAAA,MACb,MAAAP;AAAA,MACA,OAAAC;AAAA,MACA,UAAUK,EAAWC,EAAO,KAAK;AAAA,MACjC,SAASD,EAAWC,EAAO,KAAK,IAAI,WAAW;AAAA,MAC/C,UAAU,CAAC,EAAEL,KAAYK,EAAO;AAAA,MAChC,SAAS,MAAMC,EAAOD,EAAO,KAAK;AAAA,IAAA;AAAA,IAR7BA,EAAO;AAAA,EAAA,CAUf,GACH;AAEJ;"}
1
+ {"version":3,"file":"chipGroup.js","sources":["../../../../src/components/dataDisplay/chipGroup/chipGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { Chip, type ChipColor } from \"../chip\";\n\nexport interface ChipGroupOption {\n value: string;\n label: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface ChipGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: ChipGroupOption[];\n /** Selected value (single) or values (when `multiple`). */\n value?: string | string[];\n /** Allow more than one selected chip (value becomes a string[]). */\n multiple?: boolean;\n onChange?: (value: string | string[]) => void;\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n disabled?: boolean;\n}\n\n/**\n * A multi/single-select toggle group built on `Chip` — the \"chip as a toggle\"\n * loop (selected → filled, else outlined; `role=group`) apps re-hand-roll for\n * filters / segmented controls. Pass an `options` array and a controlled\n * `value`; `onChange` returns the next value (string, or string[] when multiple).\n */\nexport function ChipGroup({\n options,\n value,\n multiple,\n onChange,\n size = \"medium\",\n color = \"primary\",\n disabled,\n className,\n ...rest\n}: ChipGroupProps): React.ReactElement {\n const selectedValues = (): string[] => {\n if (value == null) return [];\n return Array.isArray(value) ? value : [value];\n };\n const isSelected = (option: string): boolean => selectedValues().includes(option);\n\n const toggle = (option: string): void => {\n if (multiple) {\n const current = selectedValues();\n const next = current.includes(option) ? current.filter((v) => v !== option) : [...current, option];\n onChange?.(next);\n } else {\n onChange?.(option);\n }\n };\n\n return (\n <div {...rest} role=\"group\" className={cn(\"smwb-chip-group\", className)}>\n {options.map((option) => (\n <Chip\n key={option.value}\n label={option.label}\n icon={option.icon}\n size={size}\n color={color}\n selected={isSelected(option.value)}\n variant={isSelected(option.value) ? \"filled\" : \"outlined\"}\n disabled={!!(disabled || option.disabled)}\n onClick={() => toggle(option.value)}\n />\n ))}\n </div>\n );\n}\n\nexport default ChipGroup;\n"],"names":["ChipGroup","options","value","multiple","onChange","size","color","disabled","className","rest","selectedValues","isSelected","option","toggle","current","next","v","jsx","cn","Chip"],"mappings":";;;;;AA+BO,SAASA,EAAU;AAAA,EACxB,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAuC;AACrC,QAAMC,IAAiB,MACjBR,KAAS,OAAa,CAAA,IACnB,MAAM,QAAQA,CAAK,IAAIA,IAAQ,CAACA,CAAK,GAExCS,IAAa,CAACC,MAA4BF,EAAA,EAAiB,SAASE,CAAM,GAE1EC,IAAS,CAACD,MAAyB;AACvC,QAAIT,GAAU;AACZ,YAAMW,IAAUJ,EAAA,GACVK,IAAOD,EAAQ,SAASF,CAAM,IAAIE,EAAQ,OAAO,CAACE,MAAMA,MAAMJ,CAAM,IAAI,CAAC,GAAGE,GAASF,CAAM;AACjG,MAAAR,KAAA,QAAAA,EAAWW;AAAA,IACb;AACE,MAAAX,KAAA,QAAAA,EAAWQ;AAAA,EAEf;AAEA,SACE,gBAAAK,EAAC,OAAA,EAAK,GAAGR,GAAM,MAAK,SAAQ,WAAWS,EAAG,mBAAmBV,CAAS,GACnE,UAAAP,EAAQ,IAAI,CAACW,MACZ,gBAAAK;AAAA,IAACE;AAAA,IAAA;AAAA,MAEC,OAAOP,EAAO;AAAA,MACd,MAAMA,EAAO;AAAA,MACb,MAAAP;AAAA,MACA,OAAAC;AAAA,MACA,UAAUK,EAAWC,EAAO,KAAK;AAAA,MACjC,SAASD,EAAWC,EAAO,KAAK,IAAI,WAAW;AAAA,MAC/C,UAAU,CAAC,EAAEL,KAAYK,EAAO;AAAA,MAChC,SAAS,MAAMC,EAAOD,EAAO,KAAK;AAAA,IAAA;AAAA,IAR7BA,EAAO;AAAA,EAAA,CAUf,GACH;AAEJ;"}
@@ -0,0 +1,37 @@
1
+ import React, { HTMLAttributes, ReactNode } from "react";
2
+ export interface DescriptionListEntry {
3
+ term: ReactNode;
4
+ description: ReactNode;
5
+ /** React key; the index is used without it. */
6
+ key?: React.Key;
7
+ }
8
+ /**
9
+ * `auto`: the term beside its description while the list's container is at
10
+ * least 420px wide, above it when narrower (a container query). `row` and
11
+ * `stacked` fix one layout.
12
+ */
13
+ export type DescriptionListLayout = "auto" | "row" | "stacked";
14
+ export interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {
15
+ className?: string;
16
+ /** The pairs as data; `DescriptionItem` children work too, and come after them. */
17
+ items?: DescriptionListEntry[];
18
+ layout?: DescriptionListLayout;
19
+ /** Width of the term column in the row layout: px or any CSS track size. 30% of the list, at least 6rem, by default. */
20
+ termWidth?: number | string;
21
+ /** Tighter spacing, for side panels. */
22
+ dense?: boolean;
23
+ }
24
+ export interface DescriptionItemProps extends HTMLAttributes<HTMLDivElement> {
25
+ className?: string;
26
+ /** The field's name. */
27
+ term: ReactNode;
28
+ }
29
+ /** One pair: the term and, as children, its description. */
30
+ export declare const DescriptionItem: React.ForwardRefExoticComponent<DescriptionItemProps & {
31
+ children?: ReactNode | undefined;
32
+ } & React.RefAttributes<HTMLDivElement>>;
33
+ /** Field–value pairs (a `<dl>`): side by side, stacking on a narrow container. */
34
+ export declare const DescriptionList: React.ForwardRefExoticComponent<DescriptionListProps & {
35
+ children?: ReactNode | undefined;
36
+ } & React.RefAttributes<HTMLDListElement>>;
37
+ export default DescriptionList;
@@ -0,0 +1,43 @@
1
+ import { jsxs as p, jsx as n } from "react/jsx-runtime";
2
+ import '../../../assets/styles/less/components/descriptionList/descriptionList.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
4
+ import m from "react";
5
+ import l from "clsx";
6
+ const x = m.forwardRef(
7
+ function({ className: t, term: r, children: i, ...e }, s) {
8
+ return /* @__PURE__ */ p("div", { ...e, ref: s, className: l("smwb-description-list__item", t), children: [
9
+ /* @__PURE__ */ n("dt", { className: "smwb-description-list__term", children: r }),
10
+ /* @__PURE__ */ n("dd", { className: "smwb-description-list__details", children: i })
11
+ ] });
12
+ }
13
+ ), v = m.forwardRef(
14
+ function({ className: t, style: r, items: i, layout: e = "auto", termWidth: s, dense: f, children: w, ...b }, _) {
15
+ const c = typeof s == "number" ? `${s}px` : s;
16
+ return /* @__PURE__ */ p(
17
+ "dl",
18
+ {
19
+ ...b,
20
+ ref: _,
21
+ className: l(
22
+ "smwb-description-list",
23
+ `smwb-description-list_${e}`,
24
+ { "smwb-description-list_dense": f },
25
+ t
26
+ ),
27
+ style: c === void 0 ? r : { ...r, "--smwb-description-term": c },
28
+ children: [
29
+ i == null ? void 0 : i.map((o, u) => {
30
+ var d;
31
+ return /* @__PURE__ */ n(x, { term: o.term, children: o.description }, (d = o.key) != null ? d : u);
32
+ }),
33
+ w
34
+ ]
35
+ }
36
+ );
37
+ }
38
+ );
39
+ export {
40
+ x as DescriptionItem,
41
+ v as DescriptionList
42
+ };
43
+ //# sourceMappingURL=descriptionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptionList.js","sources":["../../../../src/components/dataDisplay/descriptionList/descriptionList.tsx"],"sourcesContent":["import React, { CSSProperties, HTMLAttributes, PropsWithChildren, ReactNode } from \"react\";\nimport cn from \"clsx\";\n\nexport interface DescriptionListEntry {\n term: ReactNode;\n description: ReactNode;\n /** React key; the index is used without it. */\n key?: React.Key;\n}\n\n/**\n * `auto`: the term beside its description while the list's container is at\n * least 420px wide, above it when narrower (a container query). `row` and\n * `stacked` fix one layout.\n */\nexport type DescriptionListLayout = \"auto\" | \"row\" | \"stacked\";\n\nexport interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {\n className?: string;\n /** The pairs as data; `DescriptionItem` children work too, and come after them. */\n items?: DescriptionListEntry[];\n layout?: DescriptionListLayout;\n /** Width of the term column in the row layout: px or any CSS track size. 30% of the list, at least 6rem, by default. */\n termWidth?: number | string;\n /** Tighter spacing, for side panels. */\n dense?: boolean;\n}\n\nexport interface DescriptionItemProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n /** The field's name. */\n term: ReactNode;\n}\n\n/** One pair: the term and, as children, its description. */\nexport const DescriptionItem = React.forwardRef<HTMLDivElement, PropsWithChildren<DescriptionItemProps>>(\n function DescriptionItem({ className, term, children, ...rest }, ref) {\n return (\n <div {...rest} ref={ref} className={cn(\"smwb-description-list__item\", className)}>\n <dt className=\"smwb-description-list__term\">{term}</dt>\n <dd className=\"smwb-description-list__details\">{children}</dd>\n </div>\n );\n }\n);\n\n/** Field–value pairs (a `<dl>`): side by side, stacking on a narrow container. */\nexport const DescriptionList = React.forwardRef<HTMLDListElement, PropsWithChildren<DescriptionListProps>>(\n function DescriptionList({ className, style, items, layout = \"auto\", termWidth, dense, children, ...rest }, ref) {\n const width = typeof termWidth === \"number\" ? `${termWidth}px` : termWidth;\n return (\n <dl\n {...rest}\n ref={ref}\n className={cn(\n \"smwb-description-list\",\n `smwb-description-list_${layout}`,\n { \"smwb-description-list_dense\": dense },\n className\n )}\n style={width === undefined ? style : ({ ...style, \"--smwb-description-term\": width } as CSSProperties)}\n >\n {items?.map((item, index) => (\n <DescriptionItem key={item.key ?? index} term={item.term}>\n {item.description}\n </DescriptionItem>\n ))}\n {children}\n </dl>\n );\n }\n);\n\nexport default DescriptionList;\n"],"names":["DescriptionItem","React","className","term","children","rest","ref","jsxs","cn","jsx","DescriptionList","style","items","layout","termWidth","dense","width","item","index","_a"],"mappings":";;;;;AAqCO,MAAMA,IAAkBC,EAAM;AAAA,EACnC,SAAyB,EAAE,WAAAC,GAAW,MAAAC,GAAM,UAAAC,GAAU,GAAGC,EAAA,GAAQC,GAAK;AACpE,WACE,gBAAAC,EAAC,SAAK,GAAGF,GAAM,KAAAC,GAAU,WAAWE,EAAG,+BAA+BN,CAAS,GAC7E,UAAA;AAAA,MAAA,gBAAAO,EAAC,MAAA,EAAG,WAAU,+BAA+B,UAAAN,GAAK;AAAA,MAClD,gBAAAM,EAAC,MAAA,EAAG,WAAU,kCAAkC,UAAAL,EAAA,CAAS;AAAA,IAAA,GAC3D;AAAA,EAEJ;AACF,GAGaM,IAAkBT,EAAM;AAAA,EACnC,SAAyB,EAAE,WAAAC,GAAW,OAAAS,GAAO,OAAAC,GAAO,QAAAC,IAAS,QAAQ,WAAAC,GAAW,OAAAC,GAAO,UAAAX,GAAU,GAAGC,EAAA,GAAQC,GAAK;AAC/G,UAAMU,IAAQ,OAAOF,KAAc,WAAW,GAAGA,CAAS,OAAOA;AACjE,WACE,gBAAAP;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAGF;AAAA,QACJ,KAAAC;AAAA,QACA,WAAWE;AAAA,UACT;AAAA,UACA,yBAAyBK,CAAM;AAAA,UAC/B,EAAE,+BAA+BE,EAAA;AAAA,UACjCb;AAAA,QAAA;AAAA,QAEF,OAAOc,MAAU,SAAYL,IAAS,EAAE,GAAGA,GAAO,2BAA2BK,EAAA;AAAA,QAE5E,UAAA;AAAA,UAAAJ,KAAA,gBAAAA,EAAO,IAAI,CAACK,GAAMC,MAAA;;qCAChBlB,GAAA,EAAwC,MAAMiB,EAAK,MACjD,UAAAA,EAAK,YAAA,IADcE,IAAAF,EAAK,QAAL,OAAAE,IAAYD,CAElC;AAAA;AAAA,UAEDd;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;"}