@uva-glass/component-library 3.55.1 → 3.55.2

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 (921) hide show
  1. package/dist/Accordion-BpnBHYIx.js +69 -0
  2. package/dist/Accordion-BpnBHYIx.js.map +1 -0
  3. package/dist/AccordionCard-BXy-plB7.js +43 -0
  4. package/dist/AccordionCard-BXy-plB7.js.map +1 -0
  5. package/dist/ActionList-O9w1hqNg.js +95 -0
  6. package/dist/ActionList-O9w1hqNg.js.map +1 -0
  7. package/dist/AddCatalogueLinkForm-Cy6fPNvN.js +117 -0
  8. package/dist/AddCatalogueLinkForm-Cy6fPNvN.js.map +1 -0
  9. package/dist/AppStatusBar-Bca0KFDR.js +20 -0
  10. package/dist/AppStatusBar-Bca0KFDR.js.map +1 -0
  11. package/dist/Attention-Bq5UU9I8.js +13 -0
  12. package/dist/Attention-Bq5UU9I8.js.map +1 -0
  13. package/dist/Backdrop-D8AHeuBn.js +10 -0
  14. package/dist/Backdrop-D8AHeuBn.js.map +1 -0
  15. package/dist/Button.module-DJlNwQUj.js +16 -0
  16. package/dist/Button.module-DJlNwQUj.js.map +1 -0
  17. package/dist/ButtonGroup-DR80lTLz.js +21 -0
  18. package/dist/ButtonGroup-DR80lTLz.js.map +1 -0
  19. package/dist/Card-DMFyuTmy.js +32 -0
  20. package/dist/Card-DMFyuTmy.js.map +1 -0
  21. package/dist/Checkbox-D6-b_4dC.js +12 -0
  22. package/dist/Checkbox-D6-b_4dC.js.map +1 -0
  23. package/dist/CheckboxButtonBar-CalU0IYK.js +79 -0
  24. package/dist/CheckboxButtonBar-CalU0IYK.js.map +1 -0
  25. package/dist/Chip-DJHvFToV.js +22 -0
  26. package/dist/Chip-DJHvFToV.js.map +1 -0
  27. package/dist/ClipboardButton-geHjMl2J.js +43 -0
  28. package/dist/ClipboardButton-geHjMl2J.js.map +1 -0
  29. package/dist/Column-BwKEOOuL.js +84 -0
  30. package/dist/Column-BwKEOOuL.js.map +1 -0
  31. package/dist/Container-BLjtYDqq.js +31 -0
  32. package/dist/Container-BLjtYDqq.js.map +1 -0
  33. package/dist/ControlsButton-zemVxTlg.js +64 -0
  34. package/dist/ControlsButton-zemVxTlg.js.map +1 -0
  35. package/dist/CopyableText-DkyhZ6wk.js +57 -0
  36. package/dist/CopyableText-DkyhZ6wk.js.map +1 -0
  37. package/dist/Drawer-Ggofac6y.js +77 -0
  38. package/dist/Drawer-Ggofac6y.js.map +1 -0
  39. package/dist/EmptyStateDataDisplay-D0QiI8nE.js +46 -0
  40. package/dist/EmptyStateDataDisplay-D0QiI8nE.js.map +1 -0
  41. package/dist/ExpandableInfoPanel-CnBVVNlJ.js +58 -0
  42. package/dist/ExpandableInfoPanel-CnBVVNlJ.js.map +1 -0
  43. package/dist/FeedbackBar-ByKp32HE.js +43 -0
  44. package/dist/FeedbackBar-ByKp32HE.js.map +1 -0
  45. package/dist/FeedbackBox-Bu7uB9DP.js +29 -0
  46. package/dist/FeedbackBox-Bu7uB9DP.js.map +1 -0
  47. package/dist/FieldHint-D0HtbTnt.js +16 -0
  48. package/dist/FieldHint-D0HtbTnt.js.map +1 -0
  49. package/dist/Fieldset-CoNu_Owa.js +23 -0
  50. package/dist/Fieldset-CoNu_Owa.js.map +1 -0
  51. package/dist/Flyout-DEpzfZOC.js +18 -0
  52. package/dist/Flyout-DEpzfZOC.js.map +1 -0
  53. package/dist/FormField-BZSoQdp9.js +21 -0
  54. package/dist/FormField-BZSoQdp9.js.map +1 -0
  55. package/dist/HorizontalList-C22DaDz-.js +20 -0
  56. package/dist/HorizontalList-C22DaDz-.js.map +1 -0
  57. package/dist/IconButton-CWCMH9uf.js +24 -0
  58. package/dist/IconButton-CWCMH9uf.js.map +1 -0
  59. package/dist/InfoBanner-DyznQLGr.js +13 -0
  60. package/dist/InfoBanner-DyznQLGr.js.map +1 -0
  61. package/dist/InfoMessage-I-VlwxVc.js +19 -0
  62. package/dist/InfoMessage-I-VlwxVc.js.map +1 -0
  63. package/dist/Input-Bn-arMaC.js +25 -0
  64. package/dist/Input-Bn-arMaC.js.map +1 -0
  65. package/dist/InputField-BWAy19w9.js +51 -0
  66. package/dist/InputField-BWAy19w9.js.map +1 -0
  67. package/dist/Label-o0BcWTUS.js +21 -0
  68. package/dist/Label-o0BcWTUS.js.map +1 -0
  69. package/dist/Lexical.prod-DCGjHGxG.js +5235 -0
  70. package/dist/Lexical.prod-DCGjHGxG.js.map +1 -0
  71. package/dist/LexicalClipboard.prod-CGG14aoP.js +248 -0
  72. package/dist/LexicalClipboard.prod-CGG14aoP.js.map +1 -0
  73. package/dist/LexicalComposerContext.prod-Ca-YN_fj.js +22 -0
  74. package/dist/LexicalComposerContext.prod-Ca-YN_fj.js.map +1 -0
  75. package/dist/LexicalExtension.prod-DWt1IjPF.js +854 -0
  76. package/dist/LexicalExtension.prod-DWt1IjPF.js.map +1 -0
  77. package/dist/LexicalLink.prod-Dy1gE75H.js +665 -0
  78. package/dist/LexicalLink.prod-Dy1gE75H.js.map +1 -0
  79. package/dist/LexicalList.prod-D9R0L7cu.js +760 -0
  80. package/dist/LexicalList.prod-D9R0L7cu.js.map +1 -0
  81. package/dist/LexicalTable.prod-C2FP47Lm.js +1991 -0
  82. package/dist/LexicalTable.prod-C2FP47Lm.js.map +1 -0
  83. package/dist/LexicalUtils.prod-BzrjMu6t.js +242 -0
  84. package/dist/LexicalUtils.prod-BzrjMu6t.js.map +1 -0
  85. package/dist/LinkContextMenu-DZlKfbg1.js +101 -0
  86. package/dist/LinkContextMenu-DZlKfbg1.js.map +1 -0
  87. package/dist/MenuLink-Cm1yZO_5.js +21 -0
  88. package/dist/MenuLink-Cm1yZO_5.js.map +1 -0
  89. package/dist/MetaDataBar-C4QO9oBV.js +23 -0
  90. package/dist/MetaDataBar-C4QO9oBV.js.map +1 -0
  91. package/dist/MetaDataList-CAR1HTYs.js +24 -0
  92. package/dist/MetaDataList-CAR1HTYs.js.map +1 -0
  93. package/dist/ModalDialog-HUkDdAJ-.js +114 -0
  94. package/dist/ModalDialog-HUkDdAJ-.js.map +1 -0
  95. package/dist/MultiSelectBox-Cuh_o-A1.js +189 -0
  96. package/dist/MultiSelectBox-Cuh_o-A1.js.map +1 -0
  97. package/dist/MultiSelectItem-BF5xRjz5.js +36 -0
  98. package/dist/MultiSelectItem-BF5xRjz5.js.map +1 -0
  99. package/dist/Notification-CIhsHuF0.js +68 -0
  100. package/dist/Notification-CIhsHuF0.js.map +1 -0
  101. package/dist/OverlayCloseButton-rttFbAM_.js +22 -0
  102. package/dist/OverlayCloseButton-rttFbAM_.js.map +1 -0
  103. package/dist/OverlayStepBar-CjaoYdsh.js +45 -0
  104. package/dist/OverlayStepBar-CjaoYdsh.js.map +1 -0
  105. package/dist/PageOverlay-D_wG2oie.js +108 -0
  106. package/dist/PageOverlay-D_wG2oie.js.map +1 -0
  107. package/dist/PasteHandlerPlugin-DUdocSHB.js +235 -0
  108. package/dist/PasteHandlerPlugin-DUdocSHB.js.map +1 -0
  109. package/dist/Periods-BYETtB6R.js +40 -0
  110. package/dist/Periods-BYETtB6R.js.map +1 -0
  111. package/dist/ProgrammeCard-76gG7ksx.js +27 -0
  112. package/dist/ProgrammeCard-76gG7ksx.js.map +1 -0
  113. package/dist/RadioButton-Bto2p5B9.js +35 -0
  114. package/dist/RadioButton-Bto2p5B9.js.map +1 -0
  115. package/dist/RadioGroup-JeTjVp5B.js +50 -0
  116. package/dist/RadioGroup-JeTjVp5B.js.map +1 -0
  117. package/dist/Repeater-BhkTEUai.js +22 -0
  118. package/dist/Repeater-BhkTEUai.js.map +1 -0
  119. package/dist/RteEditor.module-Jk80F1FA.js +42 -0
  120. package/dist/RteEditor.module-Jk80F1FA.js.map +1 -0
  121. package/dist/SearchField.module-BgxjHaPG.js +19 -0
  122. package/dist/SearchField.module-BgxjHaPG.js.map +1 -0
  123. package/dist/SectionNotification-CQqwPTqP.js +14 -0
  124. package/dist/SectionNotification-CQqwPTqP.js.map +1 -0
  125. package/dist/SelectListbox.module-HaPs1CLD.js +30 -0
  126. package/dist/SelectListbox.module-HaPs1CLD.js.map +1 -0
  127. package/dist/Slider-BlLyrET9.js +102 -0
  128. package/dist/Slider-BlLyrET9.js.map +1 -0
  129. package/dist/Sortable.module-BTUOSbOU.js +27 -0
  130. package/dist/Sortable.module-BTUOSbOU.js.map +1 -0
  131. package/dist/SortableProvider-Dc7hwkb5.js +147 -0
  132. package/dist/SortableProvider-Dc7hwkb5.js.map +1 -0
  133. package/dist/Spinner-D8tWqg9j.js +31 -0
  134. package/dist/Spinner-D8tWqg9j.js.map +1 -0
  135. package/dist/StatusBage-DQDOF5-U.js +13 -0
  136. package/dist/StatusBage-DQDOF5-U.js.map +1 -0
  137. package/dist/StatusPill-DM7n3I4W.js +30 -0
  138. package/dist/StatusPill-DM7n3I4W.js.map +1 -0
  139. package/dist/TableCellContextMenu-D0IMQr3E.js +119 -0
  140. package/dist/TableCellContextMenu-D0IMQr3E.js.map +1 -0
  141. package/dist/TableCellResizerPlugin-BGolbi44.js +208 -0
  142. package/dist/TableCellResizerPlugin-BGolbi44.js.map +1 -0
  143. package/dist/TextArea-DqKIpOfT.js +68 -0
  144. package/dist/TextArea-DqKIpOfT.js.map +1 -0
  145. package/dist/ToggleSwitch-C7z7JVtx.js +51 -0
  146. package/dist/ToggleSwitch-C7z7JVtx.js.map +1 -0
  147. package/dist/Tooltip-BzB3jznk.js +80 -0
  148. package/dist/Tooltip-BzB3jznk.js.map +1 -0
  149. package/dist/VarIndicator-C-GueOZD.js +50 -0
  150. package/dist/VarIndicator-C-GueOZD.js.map +1 -0
  151. package/dist/WeekSelector.module-BLPrVYgn.js +18 -0
  152. package/dist/WeekSelector.module-BLPrVYgn.js.map +1 -0
  153. package/dist/__mocks__/svgrMock.js +12 -9
  154. package/dist/__mocks__/svgrMock.js.map +1 -1
  155. package/dist/assets/Accordion.css +1 -1
  156. package/dist/assets/AccordionCard.css +1 -1
  157. package/dist/assets/ActionList.css +1 -1
  158. package/dist/assets/AddCatalogueLinkForm.css +1 -1
  159. package/dist/assets/AppStatusBar.css +1 -1
  160. package/dist/assets/Attention.css +1 -1
  161. package/dist/assets/Backdrop.css +1 -1
  162. package/dist/assets/Backdrop2.css +1 -1
  163. package/dist/assets/Button.css +1 -1
  164. package/dist/assets/ButtonGroup.css +1 -1
  165. package/dist/assets/Card.css +1 -1
  166. package/dist/assets/Checkbox.css +1 -1
  167. package/dist/assets/CheckboxButtonBar.css +1 -1
  168. package/dist/assets/Chip.css +1 -1
  169. package/dist/assets/ClipboardButton.css +1 -1
  170. package/dist/assets/Column.css +1 -1
  171. package/dist/assets/Container.css +1 -1
  172. package/dist/assets/ControlsButton.css +1 -1
  173. package/dist/assets/CopyableText.css +1 -1
  174. package/dist/assets/Drawer.css +1 -1
  175. package/dist/assets/EmptyStateDataDisplay.css +1 -1
  176. package/dist/assets/ExpandableInfoPanel.css +1 -1
  177. package/dist/assets/FeedbackBar.css +1 -1
  178. package/dist/assets/FeedbackBox.css +1 -1
  179. package/dist/assets/Fieldset.css +1 -1
  180. package/dist/assets/Flyout.css +1 -1
  181. package/dist/assets/FormField.css +1 -1
  182. package/dist/assets/GridRow.css +1 -1
  183. package/dist/assets/HorizontalList.css +1 -1
  184. package/dist/assets/Icon.css +1 -1
  185. package/dist/assets/IconButton.css +1 -1
  186. package/dist/assets/InfoBanner.css +1 -1
  187. package/dist/assets/InfoMessage.css +1 -1
  188. package/dist/assets/Input.css +1 -1
  189. package/dist/assets/InputField.css +1 -1
  190. package/dist/assets/Label.css +1 -1
  191. package/dist/assets/LinkContextMenu.css +1 -1
  192. package/dist/assets/MenuLink.css +1 -1
  193. package/dist/assets/MenuLink2.css +1 -1
  194. package/dist/assets/MetaDataBar.css +1 -1
  195. package/dist/assets/MetaDataList.css +1 -1
  196. package/dist/assets/ModalDialog.css +1 -1
  197. package/dist/assets/MultiSelectBox.css +1 -1
  198. package/dist/assets/MultiSelectItem.css +1 -1
  199. package/dist/assets/Notification.css +1 -1
  200. package/dist/assets/OverlayCloseButton.css +1 -1
  201. package/dist/assets/OverlayStepBar.css +1 -1
  202. package/dist/assets/PageOverlay.css +1 -1
  203. package/dist/assets/Periods.css +1 -1
  204. package/dist/assets/ProgrammeCard.css +1 -1
  205. package/dist/assets/RadioButton.css +1 -1
  206. package/dist/assets/RadioButton2.css +1 -1
  207. package/dist/assets/RadioGroup.css +1 -1
  208. package/dist/assets/RteEditor.css +1 -1
  209. package/dist/assets/SearchField.css +1 -1
  210. package/dist/assets/SectionNotification.css +1 -1
  211. package/dist/assets/SelectListbox.css +1 -1
  212. package/dist/assets/Slider.css +1 -1
  213. package/dist/assets/Sortable.css +1 -1
  214. package/dist/assets/Spinner.css +1 -1
  215. package/dist/assets/StatusBage.css +1 -1
  216. package/dist/assets/StatusPill.css +1 -1
  217. package/dist/assets/TableCellContextMenu.css +1 -1
  218. package/dist/assets/TextArea.css +1 -1
  219. package/dist/assets/ToggleSwitch.css +1 -1
  220. package/dist/assets/Tooltip.css +1 -1
  221. package/dist/assets/VarIndicator.css +1 -1
  222. package/dist/assets/WeekSelector.css +1 -1
  223. package/dist/assets/components.css +1 -0
  224. package/dist/chunk-DeC0fbbY.js +23 -0
  225. package/dist/chunk-OPOZOKLO-CXKdjnjn.js +8448 -0
  226. package/dist/chunk-OPOZOKLO-CXKdjnjn.js.map +1 -0
  227. package/dist/client-C0JVBgoR.js +18953 -0
  228. package/dist/client-C0JVBgoR.js.map +1 -0
  229. package/dist/clsx-BD2qMUU1.js +18 -0
  230. package/dist/clsx-BD2qMUU1.js.map +1 -0
  231. package/dist/components/Accordion/Accordion.js +2 -94
  232. package/dist/components/Accordion/Accordion.stories.js +30 -32
  233. package/dist/components/Accordion/Accordion.stories.js.map +1 -1
  234. package/dist/components/Accordion/Accordion.test.js +49 -27
  235. package/dist/components/Accordion/Accordion.test.js.map +1 -1
  236. package/dist/components/Accordion/index.js +2 -5
  237. package/dist/components/AccordionCard/AccordionCard.js +2 -58
  238. package/dist/components/AccordionCard/AccordionCard.stories.js +31 -32
  239. package/dist/components/AccordionCard/AccordionCard.stories.js.map +1 -1
  240. package/dist/components/AccordionCard/AccordionCard.test.js +54 -31
  241. package/dist/components/AccordionCard/AccordionCard.test.js.map +1 -1
  242. package/dist/components/AccordionCard/index.js +2 -5
  243. package/dist/components/ActionList/ActionList.js +2 -83
  244. package/dist/components/ActionList/ActionList.stories.js +49 -38
  245. package/dist/components/ActionList/ActionList.stories.js.map +1 -1
  246. package/dist/components/ActionList/ActionList.test.js +97 -57
  247. package/dist/components/ActionList/ActionList.test.js.map +1 -1
  248. package/dist/components/ActionList/index.js +2 -5
  249. package/dist/components/AppStatusBar/AppStatusBar.js +2 -13
  250. package/dist/components/AppStatusBar/AppStatusBar.stories.js +25 -26
  251. package/dist/components/AppStatusBar/AppStatusBar.stories.js.map +1 -1
  252. package/dist/components/AppStatusBar/AppStatusBar.test.js +17 -8
  253. package/dist/components/AppStatusBar/AppStatusBar.test.js.map +1 -1
  254. package/dist/components/AppStatusBar/index.js +2 -5
  255. package/dist/components/Attention/Attention.js +2 -12
  256. package/dist/components/Attention/Attention.stories.js +18 -16
  257. package/dist/components/Attention/Attention.stories.js.map +1 -1
  258. package/dist/components/Attention/Attention.test.js +14 -8
  259. package/dist/components/Attention/Attention.test.js.map +1 -1
  260. package/dist/components/Attention/index.js +2 -5
  261. package/dist/components/Backdrop/Backdrop.js +2 -8
  262. package/dist/components/Backdrop/Backdrop.stories.js +32 -28
  263. package/dist/components/Backdrop/Backdrop.stories.js.map +1 -1
  264. package/dist/components/Backdrop/Backdrop.test.js +13 -7
  265. package/dist/components/Backdrop/Backdrop.test.js.map +1 -1
  266. package/dist/components/Backdrop/index.js +2 -5
  267. package/dist/components/ButtonGroup/ButtonGroup.js +2 -26
  268. package/dist/components/ButtonGroup/ButtonGroup.stories.js +29 -39
  269. package/dist/components/ButtonGroup/ButtonGroup.stories.js.map +1 -1
  270. package/dist/components/ButtonGroup/index.js +2 -5
  271. package/dist/components/Buttons/Button.js +16 -22
  272. package/dist/components/Buttons/Button.js.map +1 -1
  273. package/dist/components/Buttons/Button.stories.js +43 -56
  274. package/dist/components/Buttons/Button.stories.js.map +1 -1
  275. package/dist/components/Buttons/Button.test.js +60 -33
  276. package/dist/components/Buttons/Button.test.js.map +1 -1
  277. package/dist/components/Buttons/LinkButton.js +14 -11
  278. package/dist/components/Buttons/LinkButton.js.map +1 -1
  279. package/dist/components/Buttons/LinkButton.stories.js +41 -57
  280. package/dist/components/Buttons/LinkButton.stories.js.map +1 -1
  281. package/dist/components/Buttons/LinkButton.test.js +71 -65
  282. package/dist/components/Buttons/LinkButton.test.js.map +1 -1
  283. package/dist/components/Buttons/MenuButton.js +18 -15
  284. package/dist/components/Buttons/MenuButton.js.map +1 -1
  285. package/dist/components/Buttons/MenuButton.stories.js +45 -61
  286. package/dist/components/Buttons/MenuButton.stories.js.map +1 -1
  287. package/dist/components/Buttons/MenuButton.test.js +70 -64
  288. package/dist/components/Buttons/MenuButton.test.js.map +1 -1
  289. package/dist/components/Buttons/index.js +4 -9
  290. package/dist/components/Card/Card.js +2 -39
  291. package/dist/components/Card/Card.stories.js +42 -49
  292. package/dist/components/Card/Card.stories.js.map +1 -1
  293. package/dist/components/Card/Card.test.js +14 -8
  294. package/dist/components/Card/Card.test.js.map +1 -1
  295. package/dist/components/Card/index.js +2 -5
  296. package/dist/components/Checkbox/Checkbox.js +2 -9
  297. package/dist/components/Checkbox/Checkbox.stories.js +44 -41
  298. package/dist/components/Checkbox/Checkbox.stories.js.map +1 -1
  299. package/dist/components/Checkbox/Checkbox.test.js +21 -15
  300. package/dist/components/Checkbox/Checkbox.test.js.map +1 -1
  301. package/dist/components/Checkbox/index.js +2 -5
  302. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js +2 -114
  303. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +277 -310
  304. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js.map +1 -1
  305. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +71 -85
  306. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js.map +1 -1
  307. package/dist/components/CheckboxButtonBar/index.js +2 -5
  308. package/dist/components/CheckboxTree/CheckboxTree.js +3 -172
  309. package/dist/components/CheckboxTree/CheckboxTree.stories.js +89 -139
  310. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  311. package/dist/components/CheckboxTree/index.js +3 -5
  312. package/dist/components/Chip/Chip.js +2 -14
  313. package/dist/components/Chip/Chip.stories.js +24 -28
  314. package/dist/components/Chip/Chip.stories.js.map +1 -1
  315. package/dist/components/Chip/index.js +2 -5
  316. package/dist/components/ControlsButton/ControlsButton.js +2 -82
  317. package/dist/components/ControlsButton/ControlsButton.stories.js +98 -122
  318. package/dist/components/ControlsButton/ControlsButton.stories.js.map +1 -1
  319. package/dist/components/ControlsButton/index.js +2 -5
  320. package/dist/components/CopyableText/CopyableText.js +2 -64
  321. package/dist/components/CopyableText/CopyableText.stories.js +36 -35
  322. package/dist/components/CopyableText/CopyableText.stories.js.map +1 -1
  323. package/dist/components/CopyableText/index.js +2 -5
  324. package/dist/components/Drawer/Drawer.js +2 -62
  325. package/dist/components/Drawer/Drawer.stories.js +49 -68
  326. package/dist/components/Drawer/Drawer.stories.js.map +1 -1
  327. package/dist/components/Drawer/index.js +2 -5
  328. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.js +2 -50
  329. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.stories.js +17 -18
  330. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.stories.js.map +1 -1
  331. package/dist/components/EmptyStateDataDisplay/index.js +2 -5
  332. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.js +2 -57
  333. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.stories.js +57 -50
  334. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.stories.js.map +1 -1
  335. package/dist/components/ExpandableInfoPanel/index.js +2 -5
  336. package/dist/components/FeedbackBar/FeedbackBar.js +2 -30
  337. package/dist/components/FeedbackBar/FeedbackBar.stories.js +30 -33
  338. package/dist/components/FeedbackBar/FeedbackBar.stories.js.map +1 -1
  339. package/dist/components/FeedbackBar/FeedbackBar.test.js +18 -12
  340. package/dist/components/FeedbackBar/FeedbackBar.test.js.map +1 -1
  341. package/dist/components/FeedbackBar/index.js +2 -5
  342. package/dist/components/FeedbackBox/FeedbackBox.js +2 -31
  343. package/dist/components/FeedbackBox/FeedbackBox.stories.js +30 -34
  344. package/dist/components/FeedbackBox/FeedbackBox.stories.js.map +1 -1
  345. package/dist/components/FeedbackBox/index.js +2 -5
  346. package/dist/components/FieldHint/FieldHint.js +2 -15
  347. package/dist/components/FieldHint/FieldHint.stories.js +27 -35
  348. package/dist/components/FieldHint/FieldHint.stories.js.map +1 -1
  349. package/dist/components/FieldHint/index.js +2 -5
  350. package/dist/components/Fieldset/Fieldset.js +2 -32
  351. package/dist/components/Fieldset/Fieldset.stories.js +40 -46
  352. package/dist/components/Fieldset/Fieldset.stories.js.map +1 -1
  353. package/dist/components/Fieldset/index.js +2 -5
  354. package/dist/components/FormField/FormField.js +2 -23
  355. package/dist/components/FormField/FormField.stories.js +40 -45
  356. package/dist/components/FormField/FormField.stories.js.map +1 -1
  357. package/dist/components/FormField/index.js +2 -5
  358. package/dist/components/FormInput/FormInput.js +3 -79
  359. package/dist/components/FormInput/FormInput.stories.js +60 -40
  360. package/dist/components/FormInput/FormInput.stories.js.map +1 -1
  361. package/dist/components/FormInput/index.js +3 -5
  362. package/dist/components/GridRow/Column/Column.js +2 -7
  363. package/dist/components/GridRow/Column/index.js +2 -5
  364. package/dist/components/GridRow/GridRow.js +27 -38
  365. package/dist/components/GridRow/GridRow.js.map +1 -1
  366. package/dist/components/GridRow/GridRow.stories.js +198 -95
  367. package/dist/components/GridRow/GridRow.stories.js.map +1 -1
  368. package/dist/components/GridRow/index.js +2 -5
  369. package/dist/components/HorizontalList/HorizontalList.js +2 -13
  370. package/dist/components/HorizontalList/HorizontalList.stories.js +44 -46
  371. package/dist/components/HorizontalList/HorizontalList.stories.js.map +1 -1
  372. package/dist/components/HorizontalList/index.js +2 -5
  373. package/dist/components/Icon/Icon.js +16 -9
  374. package/dist/components/Icon/Icon.js.map +1 -1
  375. package/dist/components/Icon/Icon.stories.js +47 -50
  376. package/dist/components/Icon/Icon.stories.js.map +1 -1
  377. package/dist/components/Icon/icons/index.js +2 -672
  378. package/dist/components/Icon/index.js +2 -5
  379. package/dist/components/IconButton/IconButton.js +2 -28
  380. package/dist/components/IconButton/IconButton.stories.js +55 -58
  381. package/dist/components/IconButton/IconButton.stories.js.map +1 -1
  382. package/dist/components/IconButton/index.js +2 -5
  383. package/dist/components/InfoBanner/InfoBanner.js +2 -12
  384. package/dist/components/InfoBanner/InfoBanner.stories.js +18 -22
  385. package/dist/components/InfoBanner/InfoBanner.stories.js.map +1 -1
  386. package/dist/components/InfoBanner/index.js +2 -5
  387. package/dist/components/InfoMessage/InfoMessage.js +2 -23
  388. package/dist/components/InfoMessage/InfoMessage.stories.js +21 -26
  389. package/dist/components/InfoMessage/InfoMessage.stories.js.map +1 -1
  390. package/dist/components/InfoMessage/index.js +2 -5
  391. package/dist/components/Input/Input.js +2 -28
  392. package/dist/components/Input/Input.stories.js +31 -50
  393. package/dist/components/Input/Input.stories.js.map +1 -1
  394. package/dist/components/Input/index.js +2 -5
  395. package/dist/components/InputField/InputField.js +2 -70
  396. package/dist/components/InputField/InputField.stories.js +81 -109
  397. package/dist/components/InputField/InputField.stories.js.map +1 -1
  398. package/dist/components/InputField/index.js +2 -5
  399. package/dist/components/Label/Label.js +2 -24
  400. package/dist/components/Label/Label.stories.js +26 -37
  401. package/dist/components/Label/Label.stories.js.map +1 -1
  402. package/dist/components/Label/Label.test.js +35 -20
  403. package/dist/components/Label/Label.test.js.map +1 -1
  404. package/dist/components/Label/index.js +2 -5
  405. package/dist/components/MenuLink/MenuLink.js +2 -25
  406. package/dist/components/MenuLink/MenuLink.stories.js +64 -27
  407. package/dist/components/MenuLink/MenuLink.stories.js.map +1 -1
  408. package/dist/components/MenuLink/index.js +2 -5
  409. package/dist/components/MetaDataBar/MetaDataBar.js +2 -13
  410. package/dist/components/MetaDataBar/MetaDataBar.stories.js +20 -20
  411. package/dist/components/MetaDataBar/MetaDataBar.stories.js.map +1 -1
  412. package/dist/components/MetaDataBar/MetaDataBar.test.js +26 -16
  413. package/dist/components/MetaDataBar/MetaDataBar.test.js.map +1 -1
  414. package/dist/components/MetaDataBar/index.js +2 -5
  415. package/dist/components/MetaDataList/MetaDataList.js +2 -14
  416. package/dist/components/MetaDataList/MetaDataList.stories.js +21 -23
  417. package/dist/components/MetaDataList/MetaDataList.stories.js.map +1 -1
  418. package/dist/components/MetaDataList/index.js +2 -5
  419. package/dist/components/ModalDialog/ModalDialog.js +2 -130
  420. package/dist/components/ModalDialog/ModalDialog.stories.js +80 -93
  421. package/dist/components/ModalDialog/ModalDialog.stories.js.map +1 -1
  422. package/dist/components/ModalDialog/index.js +2 -5
  423. package/dist/components/MultiSelect/MultiSelect.js +3 -8
  424. package/dist/components/MultiSelect/MultiSelect.stories.js +83 -93
  425. package/dist/components/MultiSelect/MultiSelect.stories.js.map +1 -1
  426. package/dist/components/MultiSelect/components/MultiSelectHeader.js +3 -34
  427. package/dist/components/MultiSelect/components/MultiSelectItem.js +2 -9
  428. package/dist/components/MultiSelect/index.js +3 -5
  429. package/dist/components/MultiSelectBox/MultiSelectBox.js +2 -207
  430. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +101 -70
  431. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js.map +1 -1
  432. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +54 -29
  433. package/dist/components/MultiSelectBox/MultiSelectBox.test.js.map +1 -1
  434. package/dist/components/MultiSelectBox/index.js +2 -5
  435. package/dist/components/Notification/Notification.js +2 -58
  436. package/dist/components/Notification/Notification.stories.js +43 -40
  437. package/dist/components/Notification/Notification.stories.js.map +1 -1
  438. package/dist/components/Notification/Notification.test.js +24 -10
  439. package/dist/components/Notification/Notification.test.js.map +1 -1
  440. package/dist/components/Notification/index.js +2 -5
  441. package/dist/components/OverlayCloseButton/OverlayCloseButton.js +2 -25
  442. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +30 -29
  443. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js.map +1 -1
  444. package/dist/components/OverlayCloseButton/index.js +2 -5
  445. package/dist/components/OverlayStepBar/OverlayStepBar.js +2 -57
  446. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js +44 -49
  447. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js.map +1 -1
  448. package/dist/components/OverlayStepBar/index.js +2 -5
  449. package/dist/components/PageOverlay/PageOverlay.js +2 -114
  450. package/dist/components/PageOverlay/PageOverlay.stories.js +155 -163
  451. package/dist/components/PageOverlay/PageOverlay.stories.js.map +1 -1
  452. package/dist/components/PageOverlay/index.js +2 -5
  453. package/dist/components/PeriodSelector/PeriodSelector.js +3 -96
  454. package/dist/components/PeriodSelector/PeriodSelector.stories.js +27 -24
  455. package/dist/components/PeriodSelector/PeriodSelector.stories.js.map +1 -1
  456. package/dist/components/PeriodSelector/index.js +3 -5
  457. package/dist/components/Periods/Periods.js +2 -46
  458. package/dist/components/Periods/Periods.stories.js +53 -60
  459. package/dist/components/Periods/Periods.stories.js.map +1 -1
  460. package/dist/components/Periods/index.js +2 -5
  461. package/dist/components/ProgrammeCard/ProgrammeCard.js +2 -29
  462. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +71 -80
  463. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js.map +1 -1
  464. package/dist/components/ProgrammeCard/index.js +2 -5
  465. package/dist/components/RadioButton/RadioButton.js +2 -26
  466. package/dist/components/RadioButton/RadioButton.stories.js +30 -40
  467. package/dist/components/RadioButton/RadioButton.stories.js.map +1 -1
  468. package/dist/components/RadioButton/index.js +2 -5
  469. package/dist/components/RadioGroup/RadioGroup.js +2 -52
  470. package/dist/components/RadioGroup/RadioGroup.stories.js +39 -46
  471. package/dist/components/RadioGroup/RadioGroup.stories.js.map +1 -1
  472. package/dist/components/RadioGroup/Radiogroup.test.js +46 -22
  473. package/dist/components/RadioGroup/Radiogroup.test.js.map +1 -1
  474. package/dist/components/RadioGroup/index.js +2 -5
  475. package/dist/components/RadioTabSelector/RadioTabSelector.js +3 -94
  476. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +76 -74
  477. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js.map +1 -1
  478. package/dist/components/RadioTabSelector/index.js +3 -5
  479. package/dist/components/Repeater/Repeater.js +2 -19
  480. package/dist/components/Repeater/Repeater.stories.js +32 -42
  481. package/dist/components/Repeater/Repeater.stories.js.map +1 -1
  482. package/dist/components/Repeater/index.js +2 -5
  483. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +3 -43
  484. package/dist/components/RteEditor/EditorHeader/index.js +3 -5
  485. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +45 -47
  486. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js.map +1 -1
  487. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/index.js +2 -5
  488. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +2 -108
  489. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +2 -5
  490. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +150 -194
  491. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js.map +1 -1
  492. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.js +2 -5
  493. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +3 -81
  494. package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +3 -5
  495. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +3 -38
  496. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +2 -95
  497. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +3 -217
  498. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +2 -12
  499. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +3 -5
  500. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +75 -83
  501. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js.map +1 -1
  502. package/dist/components/RteEditor/Plugins/ListPlugin/index.js +2 -5
  503. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +2 -31
  504. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +2 -5
  505. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +2 -14
  506. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +2 -5
  507. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +3 -36
  508. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +2 -133
  509. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/index.js +2 -5
  510. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +3 -42
  511. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +69 -92
  512. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js.map +1 -1
  513. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +4 -7
  514. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +3 -90
  515. package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +3 -5
  516. package/dist/components/RteEditor/Plugins/index.js +7 -21
  517. package/dist/components/RteEditor/Providers/LanguageProvider.js +22 -17
  518. package/dist/components/RteEditor/Providers/LanguageProvider.js.map +1 -1
  519. package/dist/components/RteEditor/RteEditor.js +3 -871
  520. package/dist/components/RteEditor/RteEditor.stories.js +160 -207
  521. package/dist/components/RteEditor/RteEditor.stories.js.map +1 -1
  522. package/dist/components/RteEditor/UvaTheme/UvaTheme.js +41 -40
  523. package/dist/components/RteEditor/UvaTheme/UvaTheme.js.map +1 -1
  524. package/dist/components/RteEditor/UvaTheme/index.js +2 -5
  525. package/dist/components/RteEditor/helpers.js +33 -40
  526. package/dist/components/RteEditor/helpers.js.map +1 -1
  527. package/dist/components/RteEditor/hooks/components/Flyout.js +2 -11
  528. package/dist/components/RteEditor/hooks/useFlyout.js +35 -23
  529. package/dist/components/RteEditor/hooks/useFlyout.js.map +1 -1
  530. package/dist/components/RteEditor/hooks/useTranslation.js +9 -8
  531. package/dist/components/RteEditor/hooks/useTranslation.js.map +1 -1
  532. package/dist/components/RteEditor/index.js +3 -6
  533. package/dist/components/RteEditor/mockCatalogueSearchData.js +484 -484
  534. package/dist/components/RteEditor/mockCatalogueSearchData.js.map +1 -1
  535. package/dist/components/RteEditor/mockRteContent.js +6 -100
  536. package/dist/components/RteEditor/mockRteContent.js.map +1 -1
  537. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +98 -122
  538. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js.map +1 -1
  539. package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.js +2 -11
  540. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +58 -72
  541. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js.map +1 -1
  542. package/dist/components/RteEditor/nodes/TableWrapperNode/index.js +2 -10
  543. package/dist/components/RteEditor/nodes/index.js +3 -18
  544. package/dist/components/RteEditor/translations.js +216 -215
  545. package/dist/components/RteEditor/translations.js.map +1 -1
  546. package/dist/components/SearchField/SearchField.js +104 -105
  547. package/dist/components/SearchField/SearchField.js.map +1 -1
  548. package/dist/components/SearchField/SearcheField.stories.js +89 -118
  549. package/dist/components/SearchField/SearcheField.stories.js.map +1 -1
  550. package/dist/components/SearchField/components/ResultOptionBox.js +19 -12
  551. package/dist/components/SearchField/components/ResultOptionBox.js.map +1 -1
  552. package/dist/components/SearchField/components/ResultsOption.js +50 -55
  553. package/dist/components/SearchField/components/ResultsOption.js.map +1 -1
  554. package/dist/components/SearchField/index.js +2 -5
  555. package/dist/components/SearchField/mockData.js +136 -135
  556. package/dist/components/SearchField/mockData.js.map +1 -1
  557. package/dist/components/SectionNotification/SectionNotification.js +2 -18
  558. package/dist/components/SectionNotification/SectionNotification.stories.js +21 -24
  559. package/dist/components/SectionNotification/SectionNotification.stories.js.map +1 -1
  560. package/dist/components/SectionNotification/index.js +2 -5
  561. package/dist/components/SelectListbox/SelectListBox.stories.js +3415 -248
  562. package/dist/components/SelectListbox/SelectListBox.stories.js.map +1 -1
  563. package/dist/components/SelectListbox/SelectListbox.js +45 -56
  564. package/dist/components/SelectListbox/SelectListbox.js.map +1 -1
  565. package/dist/components/SelectListbox/SelectProvider.js +42 -43
  566. package/dist/components/SelectListbox/SelectProvider.js.map +1 -1
  567. package/dist/components/SelectListbox/components/SelectButton.js +63 -77
  568. package/dist/components/SelectListbox/components/SelectButton.js.map +1 -1
  569. package/dist/components/SelectListbox/components/SelectContainer.js +22 -21
  570. package/dist/components/SelectListbox/components/SelectContainer.js.map +1 -1
  571. package/dist/components/SelectListbox/components/SelectOption.js +69 -66
  572. package/dist/components/SelectListbox/components/SelectOption.js.map +1 -1
  573. package/dist/components/SelectListbox/components/SelectOptionBox.js +28 -30
  574. package/dist/components/SelectListbox/components/SelectOptionBox.js.map +1 -1
  575. package/dist/components/SelectListbox/index.js +2 -5
  576. package/dist/components/Slider/Slider.js +2 -113
  577. package/dist/components/Slider/Slider.stories.js +59 -38
  578. package/dist/components/Slider/Slider.stories.js.map +1 -1
  579. package/dist/components/Slider/index.js +2 -5
  580. package/dist/components/Sortable/Sortable.js +25 -41
  581. package/dist/components/Sortable/Sortable.js.map +1 -1
  582. package/dist/components/Sortable/Sortable.stories.js +79 -59
  583. package/dist/components/Sortable/Sortable.stories.js.map +1 -1
  584. package/dist/components/Sortable/SortableProvider.js +2 -10
  585. package/dist/components/Sortable/actions.js +24 -32
  586. package/dist/components/Sortable/actions.js.map +1 -1
  587. package/dist/components/Sortable/components/SortableContainer.js +2 -9
  588. package/dist/components/Sortable/components/SortableHandle.js +13 -9
  589. package/dist/components/Sortable/components/SortableHandle.js.map +1 -1
  590. package/dist/components/Sortable/components/SortableItem.js +103 -113
  591. package/dist/components/Sortable/components/SortableItem.js.map +1 -1
  592. package/dist/components/Sortable/constants.js +6 -14
  593. package/dist/components/Sortable/constants.js.map +1 -1
  594. package/dist/components/Sortable/index.js +1 -4
  595. package/dist/components/Sortable/sortableReducer.js +76 -90
  596. package/dist/components/Sortable/sortableReducer.js.map +1 -1
  597. package/dist/components/Spinner/Spinner.js +2 -22
  598. package/dist/components/Spinner/Spinner.stories.js +21 -26
  599. package/dist/components/Spinner/Spinner.stories.js.map +1 -1
  600. package/dist/components/Spinner/index.js +2 -5
  601. package/dist/components/StatusBadge/StatusBadge.stories.js +18 -21
  602. package/dist/components/StatusBadge/StatusBadge.stories.js.map +1 -1
  603. package/dist/components/StatusBadge/StatusBadge.test.js +19 -10
  604. package/dist/components/StatusBadge/StatusBadge.test.js.map +1 -1
  605. package/dist/components/StatusBadge/StatusBage.js +2 -10
  606. package/dist/components/StatusBadge/index.js +2 -5
  607. package/dist/components/StatusPill/StatusPill.js +2 -35
  608. package/dist/components/StatusPill/StatusPill.stories.js +20 -20
  609. package/dist/components/StatusPill/StatusPill.stories.js.map +1 -1
  610. package/dist/components/StatusPill/index.js +2 -5
  611. package/dist/components/TextArea/TextArea.js +2 -65
  612. package/dist/components/TextArea/TextArea.stories.js +30 -31
  613. package/dist/components/TextArea/TextArea.stories.js.map +1 -1
  614. package/dist/components/TextArea/TextArea.test.js +38 -22
  615. package/dist/components/TextArea/TextArea.test.js.map +1 -1
  616. package/dist/components/TextArea/index.js +2 -5
  617. package/dist/components/ToggleSwitch/ToggleSwitch.js +2 -66
  618. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +20 -26
  619. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js.map +1 -1
  620. package/dist/components/ToggleSwitch/index.js +2 -5
  621. package/dist/components/Tooltip/Tooltip.js +2 -75
  622. package/dist/components/Tooltip/Tooltip.stories.js +27 -32
  623. package/dist/components/Tooltip/Tooltip.stories.js.map +1 -1
  624. package/dist/components/Tooltip/index.js +2 -5
  625. package/dist/components/VarIndicator/VarIndicator.js +2 -62
  626. package/dist/components/VarIndicator/VarIndicator.stories.js +31 -30
  627. package/dist/components/VarIndicator/VarIndicator.stories.js.map +1 -1
  628. package/dist/components/VarIndicator/VarIndicator.test.js +72 -54
  629. package/dist/components/VarIndicator/VarIndicator.test.js.map +1 -1
  630. package/dist/components/VarIndicator/index.js +2 -5
  631. package/dist/components/WeekSelector/WeekSelector.js +89 -97
  632. package/dist/components/WeekSelector/WeekSelector.js.map +1 -1
  633. package/dist/components/WeekSelector/WeekSelector.stories.js +146 -191
  634. package/dist/components/WeekSelector/WeekSelector.stories.js.map +1 -1
  635. package/dist/components/WeekSelector/components/WeekSelectorButton.js +20 -22
  636. package/dist/components/WeekSelector/components/WeekSelectorButton.js.map +1 -1
  637. package/dist/components/WeekSelector/components/WeekSelectorOption.js +72 -85
  638. package/dist/components/WeekSelector/components/WeekSelectorOption.js.map +1 -1
  639. package/dist/components/WeekSelector/components/WeekSelectorOptionContainer.js +30 -17
  640. package/dist/components/WeekSelector/components/WeekSelectorOptionContainer.js.map +1 -1
  641. package/dist/components/WeekSelector/index.js +2 -5
  642. package/dist/components/WeekSelector/mockdata.js +470 -469
  643. package/dist/components/WeekSelector/mockdata.js.map +1 -1
  644. package/dist/components/hooks/useDebounce.js +17 -16
  645. package/dist/components/hooks/useDebounce.js.map +1 -1
  646. package/dist/components/hooks/useOnClickOutside.js +15 -14
  647. package/dist/components/hooks/useOnClickOutside.js.map +1 -1
  648. package/dist/components/hooks/usePositionedFloaters.js +66 -71
  649. package/dist/components/hooks/usePositionedFloaters.js.map +1 -1
  650. package/dist/components/hooks/useResponsive.js +36 -32
  651. package/dist/components/hooks/useResponsive.js.map +1 -1
  652. package/dist/components/index.js +64 -139
  653. package/dist/components-DVUYdcHS.js +1992 -0
  654. package/dist/components-DVUYdcHS.js.map +1 -0
  655. package/dist/dist-D6qYwmKD.js +2005 -0
  656. package/dist/dist-D6qYwmKD.js.map +1 -0
  657. package/dist/esm-Cmy7DlsJ.js +2781 -0
  658. package/dist/esm-Cmy7DlsJ.js.map +1 -0
  659. package/dist/helpers-DcFTH1J1.js +34 -0
  660. package/dist/helpers-DcFTH1J1.js.map +1 -0
  661. package/dist/icons-TRhI-4V6.js +2681 -0
  662. package/dist/icons-TRhI-4V6.js.map +1 -0
  663. package/dist/index.js +64 -139
  664. package/dist/lib-6BbFZdI7.js +5595 -0
  665. package/dist/lib-6BbFZdI7.js.map +1 -0
  666. package/dist/react-18-PI4Gvl2f.js +43 -0
  667. package/dist/react-18-PI4Gvl2f.js.map +1 -0
  668. package/dist/react.esm-Cev8dB-E.js +3297 -0
  669. package/dist/react.esm-Cev8dB-E.js.map +1 -0
  670. package/dist/setupTests.js +1226 -36
  671. package/dist/setupTests.js.map +1 -1
  672. package/dist/storyComponents/ClipboardButton/ClipboardButton.js +2 -45
  673. package/dist/storyComponents/ClipboardButton/index.js +2 -5
  674. package/dist/storyComponents/Container/Container.js +2 -40
  675. package/dist/storyComponents/Container/index.js +2 -5
  676. package/dist/storybook__react.d.js +6939 -7524
  677. package/dist/storybook__react.d.js.map +1 -1
  678. package/dist/test-CPFNM-bL.js +21586 -0
  679. package/dist/test-CPFNM-bL.js.map +1 -0
  680. package/dist/test-utils-BSs0eZfL.js +21 -0
  681. package/dist/test-utils-BSs0eZfL.js.map +1 -0
  682. package/dist/types/UserInterface.js +0 -2
  683. package/dist/vite-env.d.js +0 -2
  684. package/package.json +22 -22
  685. package/dist/Button.module-S1-6tV9o.js +0 -16
  686. package/dist/Button.module-S1-6tV9o.js.map +0 -1
  687. package/dist/Column-BL3dsYxn.js +0 -101
  688. package/dist/Column-BL3dsYxn.js.map +0 -1
  689. package/dist/Lexical.prod-o6Eq_uLx.js +0 -5202
  690. package/dist/Lexical.prod-o6Eq_uLx.js.map +0 -1
  691. package/dist/LexicalClipboard.prod-CnUrf2_p.js +0 -265
  692. package/dist/LexicalClipboard.prod-CnUrf2_p.js.map +0 -1
  693. package/dist/LexicalComposerContext.prod-DOyoZx0P.js +0 -22
  694. package/dist/LexicalComposerContext.prod-DOyoZx0P.js.map +0 -1
  695. package/dist/LexicalExtension.prod-CanXuzFO.js +0 -551
  696. package/dist/LexicalExtension.prod-CanXuzFO.js.map +0 -1
  697. package/dist/LexicalLink.prod-DAVbKER8.js +0 -561
  698. package/dist/LexicalLink.prod-DAVbKER8.js.map +0 -1
  699. package/dist/LexicalList.prod-C6cknPBV.js +0 -632
  700. package/dist/LexicalList.prod-C6cknPBV.js.map +0 -1
  701. package/dist/LexicalSelection.prod-B8GGrzJ3.js +0 -116
  702. package/dist/LexicalSelection.prod-B8GGrzJ3.js.map +0 -1
  703. package/dist/LexicalTable.prod-upbwOtcE.js +0 -1892
  704. package/dist/LexicalTable.prod-upbwOtcE.js.map +0 -1
  705. package/dist/LexicalUtils.prod-CF7x-KWm.js +0 -134
  706. package/dist/LexicalUtils.prod-CF7x-KWm.js.map +0 -1
  707. package/dist/MultiSelectItem-BzBmsKof.js +0 -24
  708. package/dist/MultiSelectItem-BzBmsKof.js.map +0 -1
  709. package/dist/RteEditor.module-CoTOIw5i.js +0 -41
  710. package/dist/RteEditor.module-CoTOIw5i.js.map +0 -1
  711. package/dist/SearchField.module-CMUEgX7d.js +0 -17
  712. package/dist/SearchField.module-CMUEgX7d.js.map +0 -1
  713. package/dist/SelectListbox.module-CXqMuXRB.js +0 -29
  714. package/dist/SelectListbox.module-CXqMuXRB.js.map +0 -1
  715. package/dist/Sortable.module-DCVXxKnw.js +0 -26
  716. package/dist/Sortable.module-DCVXxKnw.js.map +0 -1
  717. package/dist/SortableProvider-BbwlEPIr.js +0 -160
  718. package/dist/SortableProvider-BbwlEPIr.js.map +0 -1
  719. package/dist/TableCellResizerPlugin-qMtSAoKT.js +0 -248
  720. package/dist/TableCellResizerPlugin-qMtSAoKT.js.map +0 -1
  721. package/dist/TablePlugin-BRZcXq73.js +0 -308
  722. package/dist/TablePlugin-BRZcXq73.js.map +0 -1
  723. package/dist/WeekSelector.module-Clco7jTs.js +0 -17
  724. package/dist/WeekSelector.module-Clco7jTs.js.map +0 -1
  725. package/dist/_commonjsHelpers-DaMA6jEr.js +0 -9
  726. package/dist/_commonjsHelpers-DaMA6jEr.js.map +0 -1
  727. package/dist/assets/CheckboxTree.css +0 -1
  728. package/dist/assets/EditorHeader.css +0 -1
  729. package/dist/assets/FormInput.css +0 -1
  730. package/dist/assets/PeriodSelector.css +0 -1
  731. package/dist/assets/RadioTabSelector.css +0 -1
  732. package/dist/assets/TablePlugin.css +0 -1
  733. package/dist/chunk-OPOZOKLO-nJkI9rUN.js +0 -4508
  734. package/dist/chunk-OPOZOKLO-nJkI9rUN.js.map +0 -1
  735. package/dist/client-D5eE1v54.js +0 -27222
  736. package/dist/client-D5eE1v54.js.map +0 -1
  737. package/dist/clsx-OuTLNxxd.js +0 -17
  738. package/dist/clsx-OuTLNxxd.js.map +0 -1
  739. package/dist/components/Accordion/Accordion.js.map +0 -1
  740. package/dist/components/Accordion/index.js.map +0 -1
  741. package/dist/components/AccordionCard/AccordionCard.js.map +0 -1
  742. package/dist/components/AccordionCard/index.js.map +0 -1
  743. package/dist/components/ActionList/ActionList.js.map +0 -1
  744. package/dist/components/ActionList/index.js.map +0 -1
  745. package/dist/components/AppStatusBar/AppStatusBar.js.map +0 -1
  746. package/dist/components/AppStatusBar/index.js.map +0 -1
  747. package/dist/components/Attention/Attention.js.map +0 -1
  748. package/dist/components/Attention/index.js.map +0 -1
  749. package/dist/components/Backdrop/Backdrop.js.map +0 -1
  750. package/dist/components/Backdrop/index.js.map +0 -1
  751. package/dist/components/ButtonGroup/ButtonGroup.js.map +0 -1
  752. package/dist/components/ButtonGroup/index.js.map +0 -1
  753. package/dist/components/Buttons/index.js.map +0 -1
  754. package/dist/components/Card/Card.js.map +0 -1
  755. package/dist/components/Card/index.js.map +0 -1
  756. package/dist/components/Checkbox/Checkbox.js.map +0 -1
  757. package/dist/components/Checkbox/index.js.map +0 -1
  758. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js.map +0 -1
  759. package/dist/components/CheckboxButtonBar/index.js.map +0 -1
  760. package/dist/components/CheckboxTree/CheckboxTree.js.map +0 -1
  761. package/dist/components/CheckboxTree/index.js.map +0 -1
  762. package/dist/components/Chip/Chip.js.map +0 -1
  763. package/dist/components/Chip/index.js.map +0 -1
  764. package/dist/components/ControlsButton/ControlsButton.js.map +0 -1
  765. package/dist/components/ControlsButton/index.js.map +0 -1
  766. package/dist/components/CopyableText/CopyableText.js.map +0 -1
  767. package/dist/components/CopyableText/index.js.map +0 -1
  768. package/dist/components/Drawer/Drawer.js.map +0 -1
  769. package/dist/components/Drawer/index.js.map +0 -1
  770. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.js.map +0 -1
  771. package/dist/components/EmptyStateDataDisplay/index.js.map +0 -1
  772. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.js.map +0 -1
  773. package/dist/components/ExpandableInfoPanel/index.js.map +0 -1
  774. package/dist/components/FeedbackBar/FeedbackBar.js.map +0 -1
  775. package/dist/components/FeedbackBar/index.js.map +0 -1
  776. package/dist/components/FeedbackBox/FeedbackBox.js.map +0 -1
  777. package/dist/components/FeedbackBox/index.js.map +0 -1
  778. package/dist/components/FieldHint/FieldHint.js.map +0 -1
  779. package/dist/components/FieldHint/index.js.map +0 -1
  780. package/dist/components/Fieldset/Fieldset.js.map +0 -1
  781. package/dist/components/Fieldset/index.js.map +0 -1
  782. package/dist/components/FormField/FormField.js.map +0 -1
  783. package/dist/components/FormField/index.js.map +0 -1
  784. package/dist/components/FormInput/FormInput.js.map +0 -1
  785. package/dist/components/FormInput/index.js.map +0 -1
  786. package/dist/components/GridRow/Column/Column.js.map +0 -1
  787. package/dist/components/GridRow/Column/index.js.map +0 -1
  788. package/dist/components/GridRow/index.js.map +0 -1
  789. package/dist/components/HorizontalList/HorizontalList.js.map +0 -1
  790. package/dist/components/HorizontalList/index.js.map +0 -1
  791. package/dist/components/Icon/icons/index.js.map +0 -1
  792. package/dist/components/Icon/index.js.map +0 -1
  793. package/dist/components/IconButton/IconButton.js.map +0 -1
  794. package/dist/components/IconButton/index.js.map +0 -1
  795. package/dist/components/InfoBanner/InfoBanner.js.map +0 -1
  796. package/dist/components/InfoBanner/index.js.map +0 -1
  797. package/dist/components/InfoMessage/InfoMessage.js.map +0 -1
  798. package/dist/components/InfoMessage/index.js.map +0 -1
  799. package/dist/components/Input/Input.js.map +0 -1
  800. package/dist/components/Input/index.js.map +0 -1
  801. package/dist/components/InputField/InputField.js.map +0 -1
  802. package/dist/components/InputField/index.js.map +0 -1
  803. package/dist/components/Label/Label.js.map +0 -1
  804. package/dist/components/Label/index.js.map +0 -1
  805. package/dist/components/MenuLink/MenuLink.js.map +0 -1
  806. package/dist/components/MenuLink/index.js.map +0 -1
  807. package/dist/components/MetaDataBar/MetaDataBar.js.map +0 -1
  808. package/dist/components/MetaDataBar/index.js.map +0 -1
  809. package/dist/components/MetaDataList/MetaDataList.js.map +0 -1
  810. package/dist/components/MetaDataList/index.js.map +0 -1
  811. package/dist/components/ModalDialog/ModalDialog.js.map +0 -1
  812. package/dist/components/ModalDialog/index.js.map +0 -1
  813. package/dist/components/MultiSelect/MultiSelect.js.map +0 -1
  814. package/dist/components/MultiSelect/components/MultiSelectHeader.js.map +0 -1
  815. package/dist/components/MultiSelect/components/MultiSelectItem.js.map +0 -1
  816. package/dist/components/MultiSelect/index.js.map +0 -1
  817. package/dist/components/MultiSelectBox/MultiSelectBox.js.map +0 -1
  818. package/dist/components/MultiSelectBox/index.js.map +0 -1
  819. package/dist/components/Notification/Notification.js.map +0 -1
  820. package/dist/components/Notification/index.js.map +0 -1
  821. package/dist/components/OverlayCloseButton/OverlayCloseButton.js.map +0 -1
  822. package/dist/components/OverlayCloseButton/index.js.map +0 -1
  823. package/dist/components/OverlayStepBar/OverlayStepBar.js.map +0 -1
  824. package/dist/components/OverlayStepBar/index.js.map +0 -1
  825. package/dist/components/PageOverlay/PageOverlay.js.map +0 -1
  826. package/dist/components/PageOverlay/index.js.map +0 -1
  827. package/dist/components/PeriodSelector/PeriodSelector.js.map +0 -1
  828. package/dist/components/PeriodSelector/index.js.map +0 -1
  829. package/dist/components/Periods/Periods.js.map +0 -1
  830. package/dist/components/Periods/index.js.map +0 -1
  831. package/dist/components/ProgrammeCard/ProgrammeCard.js.map +0 -1
  832. package/dist/components/ProgrammeCard/index.js.map +0 -1
  833. package/dist/components/RadioButton/RadioButton.js.map +0 -1
  834. package/dist/components/RadioButton/index.js.map +0 -1
  835. package/dist/components/RadioGroup/RadioGroup.js.map +0 -1
  836. package/dist/components/RadioGroup/index.js.map +0 -1
  837. package/dist/components/RadioTabSelector/RadioTabSelector.js.map +0 -1
  838. package/dist/components/RadioTabSelector/index.js.map +0 -1
  839. package/dist/components/Repeater/Repeater.js.map +0 -1
  840. package/dist/components/Repeater/index.js.map +0 -1
  841. package/dist/components/RteEditor/EditorHeader/EditorHeader.js.map +0 -1
  842. package/dist/components/RteEditor/EditorHeader/index.js.map +0 -1
  843. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/index.js.map +0 -1
  844. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js.map +0 -1
  845. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js.map +0 -1
  846. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.js.map +0 -1
  847. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js.map +0 -1
  848. package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js.map +0 -1
  849. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js.map +0 -1
  850. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js.map +0 -1
  851. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js.map +0 -1
  852. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js.map +0 -1
  853. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js.map +0 -1
  854. package/dist/components/RteEditor/Plugins/ListPlugin/index.js.map +0 -1
  855. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js.map +0 -1
  856. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js.map +0 -1
  857. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js.map +0 -1
  858. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js.map +0 -1
  859. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js.map +0 -1
  860. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js.map +0 -1
  861. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/index.js.map +0 -1
  862. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js.map +0 -1
  863. package/dist/components/RteEditor/Plugins/TablePlugin/index.js.map +0 -1
  864. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js.map +0 -1
  865. package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js.map +0 -1
  866. package/dist/components/RteEditor/Plugins/index.js.map +0 -1
  867. package/dist/components/RteEditor/RteEditor.js.map +0 -1
  868. package/dist/components/RteEditor/UvaTheme/index.js.map +0 -1
  869. package/dist/components/RteEditor/hooks/components/Flyout.js.map +0 -1
  870. package/dist/components/RteEditor/index.js.map +0 -1
  871. package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.js.map +0 -1
  872. package/dist/components/RteEditor/nodes/TableWrapperNode/index.js.map +0 -1
  873. package/dist/components/RteEditor/nodes/index.js.map +0 -1
  874. package/dist/components/SearchField/index.js.map +0 -1
  875. package/dist/components/SectionNotification/SectionNotification.js.map +0 -1
  876. package/dist/components/SectionNotification/index.js.map +0 -1
  877. package/dist/components/SelectListbox/index.js.map +0 -1
  878. package/dist/components/Slider/Slider.js.map +0 -1
  879. package/dist/components/Slider/index.js.map +0 -1
  880. package/dist/components/Sortable/SortableProvider.js.map +0 -1
  881. package/dist/components/Sortable/components/SortableContainer.js.map +0 -1
  882. package/dist/components/Sortable/index.js.map +0 -1
  883. package/dist/components/Spinner/Spinner.js.map +0 -1
  884. package/dist/components/Spinner/index.js.map +0 -1
  885. package/dist/components/StatusBadge/StatusBage.js.map +0 -1
  886. package/dist/components/StatusBadge/index.js.map +0 -1
  887. package/dist/components/StatusPill/StatusPill.js.map +0 -1
  888. package/dist/components/StatusPill/index.js.map +0 -1
  889. package/dist/components/TextArea/TextArea.js.map +0 -1
  890. package/dist/components/TextArea/index.js.map +0 -1
  891. package/dist/components/ToggleSwitch/ToggleSwitch.js.map +0 -1
  892. package/dist/components/ToggleSwitch/index.js.map +0 -1
  893. package/dist/components/Tooltip/Tooltip.js.map +0 -1
  894. package/dist/components/Tooltip/index.js.map +0 -1
  895. package/dist/components/VarIndicator/VarIndicator.js.map +0 -1
  896. package/dist/components/VarIndicator/index.js.map +0 -1
  897. package/dist/components/WeekSelector/index.js.map +0 -1
  898. package/dist/components/index.js.map +0 -1
  899. package/dist/index-B_q_4aBT.js +0 -24946
  900. package/dist/index-B_q_4aBT.js.map +0 -1
  901. package/dist/index-CULNJwuI.js +0 -2355
  902. package/dist/index-CULNJwuI.js.map +0 -1
  903. package/dist/index-D6WVIfcJ.js +0 -6039
  904. package/dist/index-D6WVIfcJ.js.map +0 -1
  905. package/dist/index-YdDr6J97.js +0 -3099
  906. package/dist/index-YdDr6J97.js.map +0 -1
  907. package/dist/index-yEhaxKq-.js +0 -238
  908. package/dist/index-yEhaxKq-.js.map +0 -1
  909. package/dist/index.js.map +0 -1
  910. package/dist/react-18-CxCoNkIN.js +0 -41
  911. package/dist/react-18-CxCoNkIN.js.map +0 -1
  912. package/dist/react.esm-C68fQMAi.js +0 -4237
  913. package/dist/react.esm-C68fQMAi.js.map +0 -1
  914. package/dist/storyComponents/ClipboardButton/ClipboardButton.js.map +0 -1
  915. package/dist/storyComponents/ClipboardButton/index.js.map +0 -1
  916. package/dist/storyComponents/Container/Container.js.map +0 -1
  917. package/dist/storyComponents/Container/index.js.map +0 -1
  918. package/dist/test-utils-BcpWLsLH.js +0 -56
  919. package/dist/test-utils-BcpWLsLH.js.map +0 -1
  920. package/dist/types/UserInterface.js.map +0 -1
  921. package/dist/vite-env.d.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IconButton.js","sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef } from 'react';\n\nimport type { ButtonHTMLAttributes } from 'react';\n\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'style'> {\n /** The value of the aria-label. */\n 'aria-label': string;\n /** The variant of the button. */\n variant?: 'destructive';\n /** true if the button should be rendered without a border; otherwise, false. The default is false. */\n noBorder?: boolean;\n /** true to render the button a bit wider; otherwise, false. The default is false. */\n wide?: boolean;\n}\n\n/** Represents a component for a button with an icon. */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ children, type = 'button', variant, noBorder, wide, ...restProps }: IconButtonProps, forwardedRef) => (\n <button\n {...restProps}\n className={clsx(styles['icon-button'], {\n [styles['icon-button--destructive']]: variant === 'destructive',\n [styles['icon-button--no-border']]: noBorder,\n [styles['icon-button--wide']]: wide,\n })}\n ref={forwardedRef}\n type={type}\n >\n {children}\n </button>\n )\n);\n"],"names":["IconButton","forwardRef","children","type","variant","noBorder","wide","restProps","forwardedRef","jsx","clsx","styles"],"mappings":";;;;;;;;GAmBaA,IAAaC;AAAA,EACxB,CAAC,EAAE,UAAAC,GAAU,MAAAC,IAAO,UAAU,SAAAC,GAAS,UAAAC,GAAU,MAAAC,GAAM,GAAGC,KAA8BC,MACtF,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,WAAWG,EAAKC,EAAO,aAAa,GAAG;AAAA,QACrC,CAACA,EAAO,0BAA0B,CAAC,GAAGP,MAAY;AAAA,QAClD,CAACO,EAAO,wBAAwB,CAAC,GAAGN;AAAA,QACpC,CAACM,EAAO,mBAAmB,CAAC,GAAGL;AAAA,MAAA,CAChC;AAAA,MACD,KAAKE;AAAA,MACL,MAAAL;AAAA,MAEC,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InfoBanner.js","sources":["../../../src/components/InfoBanner/InfoBanner.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\r\nimport type { IconProps } from 'components/Icon';\r\n\r\nimport styles from './InfoBanner.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface InfoBannerProps {\r\n /** The name of the icon to display in the banner. */\r\n iconName?: IconProps['name'];\r\n /** Content or message as sting or react component. */\r\n content?: string | ReactNode;\r\n}\r\n\r\nexport const InfoBanner = ({ iconName, content }: InfoBannerProps) => {\r\n return (\r\n <div className={styles['infobanner_wrapper']}>\r\n {iconName && <Icon name={iconName} size={24} />}\r\n {content}\r\n </div>\r\n );\r\n};\r\n"],"names":["InfoBanner","iconName","content","jsxs","styles","jsx","Icon"],"mappings":";;;;GAcaA,IAAa,CAAC,EAAE,UAAAC,GAAU,SAAAC,QAEnC,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,oBACpB,UAAA;AAAA,EAAAH,KAAY,gBAAAI,EAACC,GAAA,EAAK,MAAML,GAAU,MAAM,IAAI;AAAA,EAC5CC;AAAA,GACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InfoMessage.js","sources":["../../../src/components/InfoMessage/InfoMessage.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './InfoMessage.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface InfoMessageProps {\n /** The message to show. */\n message: string | ReactNode;\n /** `true` if the info message should be wrapped in a container; otherwise, `false`. */\n hasOwnContainer?: boolean;\n}\n\n/** Represents a component to show an info message. */\nexport const InfoMessage = ({ message, hasOwnContainer = false }: PropsWithChildren<InfoMessageProps>) => (\n <div\n className={clsx(styles['info-message'], {\n [styles['info-message__container']]: hasOwnContainer,\n })}\n >\n <Icon name=\"InformationCircleFillMini\" className={styles['info-message__icon']} />\n {message}\n </div>\n);\n"],"names":["InfoMessage","message","hasOwnContainer","jsxs","clsx","styles","jsx","Icon"],"mappings":";;;;;;;GAgBaA,IAAc,CAAC,EAAE,SAAAC,GAAS,iBAAAC,IAAkB,SACvD,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC,EAAKC,EAAO,cAAc,GAAG;AAAA,MACtC,CAACA,EAAO,yBAAyB,CAAC,GAAGH;AAAA,IAAA,CACtC;AAAA,IAED,UAAA;AAAA,MAAA,gBAAAI,EAACC,KAAK,MAAK,6BAA4B,WAAWF,EAAO,oBAAoB,GAAG;AAAA,MAC/EJ;AAAA,IAAA;AAAA,EAAA;AACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input.js","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes } from 'react';\n\nimport styles from './Input.module.css';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'> {\n /** The appearance of the element. Possible values: `error`. */\n appearance?: 'error';\n /** The type of the input element. */\n type?: 'text' | 'search' | 'password' | 'email' | 'file';\n /** `true` if the element should render at full width of its container; otherwise, `false`. The default is `false`. */\n fullWidth?: boolean;\n /** The id of the element. */\n id: string;\n /** `true` if the element is used for numeric values; otherwise, `false`. The default is `false`. */\n isNumeric?: boolean;\n}\n\n/** Represents a component for an input element. */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { id, appearance, type = 'text', isNumeric, fullWidth, ...restProps }: InputProps,\n forwardedRef\n) {\n return (\n <input\n {...restProps}\n ref={forwardedRef}\n id={id}\n className={clsx(styles['input'], {\n [styles['input--error']]: appearance === 'error',\n [styles['input--full-with']]: fullWidth,\n [styles['input--numeric']]: isNumeric,\n })}\n type={type}\n />\n );\n});\n"],"names":["Input","forwardRef","id","appearance","type","isNumeric","fullWidth","restProps","forwardedRef","jsx","clsx","styles"],"mappings":";;;;;;;;GAqBaA,IAAQC,EAAyC,SAC5D,EAAE,IAAAC,GAAI,YAAAC,GAAY,MAAAC,IAAO,QAAQ,WAAAC,GAAW,WAAAC,GAAW,GAAGC,EAAA,GAC1DC,GACA;AACA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,KAAKC;AAAA,MACL,IAAAN;AAAA,MACA,WAAWQ,EAAKC,EAAO,OAAU;AAAA,QAC/B,CAACA,EAAO,cAAc,CAAC,GAAGR,MAAe;AAAA,QACzC,CAACQ,EAAO,kBAAkB,CAAC,GAAGL;AAAA,QAC9B,CAACK,EAAO,gBAAgB,CAAC,GAAGN;AAAA,MAAA,CAC7B;AAAA,MACD,MAAAD;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputField.js","sources":["../../../src/components/InputField/InputField.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes, ReactNode } from 'react';\n\nimport styles from './InputField.module.css';\n\nexport interface InputFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'> {\n /** The variant to render. */\n variant?: 'large';\n /** The width to render. */\n width?: 'small' | 'compact';\n /** The type of the input element. */\n type?: 'text' | 'password' | 'email';\n /** The background color of the input. InputField is by default transparent. */\n background?: 'white';\n /** The id of the input element. */\n id: string;\n /** An element that represents a clear button. */\n clearTrigger?: ReactNode;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** The callback that is invoked when the clear button is triggered. */\n onClear?: () => void;\n}\n\n/** Represents a component that renders an input field which can have a clear button. */\nexport const InputField = forwardRef<HTMLInputElement, InputFieldProps>(\n (\n {\n autoComplete = 'off',\n id,\n value,\n variant,\n width,\n type = 'text',\n background,\n clearTrigger,\n notValid = false,\n onClear,\n ...restProps\n }: InputFieldProps,\n forwardedRef\n ) => {\n const [clearButtonWidth, setClearButtonWidth] = useState<number>(0);\n const clearButtonRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (clearButtonRef.current) {\n setClearButtonWidth(clearButtonRef.current.offsetWidth);\n }\n }, [value]);\n\n const handleClearTriggerClick = () => {\n if (onClear && forwardedRef && 'current' in forwardedRef && forwardedRef.current) {\n onClear();\n forwardedRef.current.focus();\n }\n };\n\n return (\n <div className={styles['input-field-wrapper']}>\n <input\n {...restProps}\n autoComplete={autoComplete}\n ref={forwardedRef}\n id={id}\n className={clsx(styles['input-field'], {\n [styles['input-field--large']]: variant === 'large',\n [styles[`input-field--${width}`]]: width,\n [styles[`input-field--${background}`]]: background,\n [styles[`input-field--not-valid`]]: notValid,\n })}\n type={type}\n value={value}\n style={{ paddingRight: value && clearTrigger ? clearButtonWidth : undefined }}\n />\n {Boolean(value) && clearTrigger && (\n <button\n type=\"button\"\n className={styles['input-field__clear-button']}\n onClick={handleClearTriggerClick}\n ref={clearButtonRef}\n aria-label={`clear trigger for ${id}`}\n >\n {clearTrigger}\n </button>\n )}\n </div>\n );\n }\n);\n"],"names":["InputField","forwardRef","autoComplete","id","value","variant","width","type","background","clearTrigger","notValid","onClear","restProps","forwardedRef","clearButtonWidth","setClearButtonWidth","useState","clearButtonRef","useRef","useEffect","handleClearTriggerClick","jsxs","styles","jsx","clsx"],"mappings":";;;;;;;;;;;;GA2BaA,IAAaC;AAAA,EACxB,CACE;AAAA,IACE,cAAAC,IAAe;AAAA,IACf,IAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,SAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAiB,CAAC,GAC5DC,IAAiBC,EAA0B,IAAI;AAErD,IAAAC,EAAU,MAAM;AACd,MAAIF,EAAe,WACjBF,EAAoBE,EAAe,QAAQ,WAAW;AAAA,IAE1D,GAAG,CAACb,CAAK,CAAC;AAEV,UAAMgB,IAA0B,MAAM;AACpC,MAAIT,KAAWE,KAAgB,aAAaA,KAAgBA,EAAa,YACvEF,EAAA,GACAE,EAAa,QAAQ,MAAA;AAAA,IAEzB;AAEA,WACE,gBAAAQ,EAAC,OAAA,EAAI,WAAWC,EAAO,qBAAqB,GAC1C,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAGX;AAAA,UACJ,cAAAV;AAAA,UACA,KAAKW;AAAA,UACL,IAAAV;AAAA,UACA,WAAWqB,EAAKF,EAAO,aAAa,GAAG;AAAA,YACrC,CAACA,EAAO,oBAAoB,CAAC,GAAGjB,MAAY;AAAA,YAC5C,CAACiB,EAAO,gBAAgBhB,CAAK,EAAE,CAAC,GAAGA;AAAA,YACnC,CAACgB,EAAO,gBAAgBd,CAAU,EAAE,CAAC,GAAGA;AAAA,YACxC,CAACc,EAAO,wBAAwB,CAAC,GAAGZ;AAAA,UAAA,CACrC;AAAA,UACD,MAAAH;AAAA,UACA,OAAAH;AAAA,UACA,OAAO,EAAE,cAAcA,KAASK,IAAeK,IAAmB,OAAA;AAAA,QAAU;AAAA,MAAA;AAAA,MAE7E,EAAQV,KAAUK,KACjB,gBAAAc;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWD,EAAO,2BAA2B;AAAA,UAC7C,SAASF;AAAA,UACT,KAAKH;AAAA,UACL,cAAY,qBAAqBd,CAAE;AAAA,UAElC,UAAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GAEJ;AAAA,EAEJ;AACF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Label.js","sources":["../../../src/components/Label/Label.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport type { LabelHTMLAttributes } from 'react';\n\nimport styles from './Label.module.css';\n\nexport interface LabelProps extends Omit<LabelHTMLAttributes<HTMLLabelElement>, 'className' | 'style'> {\n /** The id of the element for which the label is intended. */\n htmlFor: string;\n /** `true` if the font-weight needs to be unset; otherwise, `false`. The default is `false`. */\n noFontWeight?: boolean;\n /** `true` to show an asterisk to indicate an item is required; otherwise, `false`. */\n required?: boolean;\n /** `true` to align text right; otherwise, `false`. */\n alignRight?: boolean;\n}\n\n/** Represents a component that renders a label for an input element. */\nexport const Label = ({ children, htmlFor, noFontWeight, required = false, alignRight, ...restProps }: LabelProps) => (\n <label\n {...restProps}\n htmlFor={htmlFor}\n className={clsx(styles['label'], {\n [styles['label--unset-font-weight']]: noFontWeight,\n [styles['label--required']]: required,\n [styles['label--align-right']]: alignRight,\n })}\n >\n {children}\n </label>\n);\n"],"names":["Label","children","htmlFor","noFontWeight","required","alignRight","restProps","jsx","clsx","styles"],"mappings":";;;;;;;GAkBaA,IAAQ,CAAC,EAAE,UAAAC,GAAU,SAAAC,GAAS,cAAAC,GAAc,UAAAC,IAAW,IAAO,YAAAC,GAAY,GAAGC,EAAA,MACxF,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAGD;AAAA,IACJ,SAAAJ;AAAA,IACA,WAAWM,EAAKC,EAAO,OAAU;AAAA,MAC/B,CAACA,EAAO,0BAA0B,CAAC,GAAGN;AAAA,MACtC,CAACM,EAAO,iBAAiB,CAAC,GAAGL;AAAA,MAC7B,CAACK,EAAO,oBAAoB,CAAC,GAAGJ;AAAA,IAAA,CACjC;AAAA,IAEA,UAAAJ;AAAA,EAAA;AACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MenuLink.js","sources":["../../../src/components/MenuLink/MenuLink.tsx"],"sourcesContent":["import classNames from 'clsx';\nimport { NavLink, useLocation } from 'react-router';\n\nimport type { NavLinkProps } from 'react-router';\n\nimport styles from './MenuLink.module.css';\n\n/** Represents a component for a [NavLink](https://reactrouter.com/en/main/components/nav-link) with styling. */\n// Omit style so it cannot be accidentally used\nexport interface MenuLinkProps extends Omit<NavLinkProps, 'style'> {\n overrideDefault?: boolean;\n}\n\nexport const MenuLink = ({ overrideDefault, ...props }: MenuLinkProps) => {\n const location = useLocation();\n\n // Helper function to remove trailing 's' from a string\n const singularize = (str: string) => str.replace(/s$/, '');\n\n // Check if 'to' path (singular version) matches any segment (singular version)\n const isActiveSingular = (to: string) => {\n const currentSegments = location.pathname.split('/').filter(Boolean);\n const latestToPath = to.split('/').filter(Boolean).slice(-1)[0]; // return only lates path removing any prepend path\n const singularizedToPath = singularize(latestToPath);\n\n return currentSegments.some((segment) => singularize(segment) === singularizedToPath);\n };\n\n return (\n <NavLink\n {...props}\n className={({ isActive }) =>\n classNames(styles['menu-link'], {\n [styles['menu-link--active']]: overrideDefault ? '' : isActive || isActiveSingular(props.to as string),\n })\n }\n />\n );\n};\n"],"names":["MenuLink","overrideDefault","props","location","useLocation","singularize","str","isActiveSingular","to","currentSegments","latestToPath","singularizedToPath","segment","jsx","NavLink","isActive","classNames","styles"],"mappings":";;;;;;GAaaA,IAAW,CAAC,EAAE,iBAAAC,GAAiB,GAAGC,QAA2B;AACxE,QAAMC,IAAWC,EAAA,GAGXC,IAAc,CAACC,MAAgBA,EAAI,QAAQ,MAAM,EAAE,GAGnDC,IAAmB,CAACC,MAAe;AACvC,UAAMC,IAAkBN,EAAS,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO,GAC7DO,IAAeF,EAAG,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GACxDG,IAAqBN,EAAYK,CAAY;AAEnD,WAAOD,EAAgB,KAAK,CAACG,MAAYP,EAAYO,CAAO,MAAMD,CAAkB;AAAA,EACtF;AAEA,SACE,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGZ;AAAA,MACJ,WAAW,CAAC,EAAE,UAAAa,EAAA,MACZC,EAAWC,EAAO,WAAW,GAAG;AAAA,QAC9B,CAACA,EAAO,mBAAmB,CAAC,GAAGhB,IAAkB,KAAKc,KAAYR,EAAiBL,EAAM,EAAY;AAAA,MAAA,CACtG;AAAA,IAAA;AAAA,EAAA;AAIT;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MetaDataBar.js","sources":["../../../src/components/MetaDataBar/MetaDataBar.tsx"],"sourcesContent":["import type { IconProps } from 'components/Icon';\n\nimport styles from './MetaDataBar.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport type itemType = {\n iconName: IconProps['name'];\n itemLabel: string;\n};\n\nexport interface MetaDataBarProps {\n /** A array of itemType object's to display in the bar. itemType { iconName: IconProps['name']; itemLabel: string; } */\n itemData: itemType[];\n}\n\n/** Represents a component that displays a array of data in a bar. */\nexport const MetaDataBar = ({ itemData }: MetaDataBarProps) => {\n return (\n <div className={styles['meta-data-bar']}>\n {itemData.map(({ iconName, itemLabel }) => {\n return (\n itemLabel.indexOf('undefined') === -1 && (\n <div className={styles['meta-data-bar__item']} key={itemLabel}>\n <Icon name={iconName} size={16} />\n <span className={styles['meta-data-bar__item-label']}>{itemLabel}</span>\n </div>\n )\n );\n })}\n </div>\n );\n};\n"],"names":["MetaDataBar","itemData","jsx","styles","iconName","itemLabel","Icon"],"mappings":";;;;;GAiBaA,IAAc,CAAC,EAAE,UAAAC,QAE1B,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,eAAe,GACnC,UAAAF,EAAS,IAAI,CAAC,EAAE,UAAAG,GAAU,WAAAC,EAAA,MAEvBA,EAAU,QAAQ,WAAW,MAAM,wBAChC,OAAA,EAAI,WAAWF,EAAO,qBAAqB,GAC1C,UAAA;AAAA,EAAA,gBAAAD,EAACI,GAAA,EAAK,MAAMF,GAAU,MAAM,IAAI;AAAA,oBAC/B,QAAA,EAAK,WAAWD,EAAO,2BAA2B,GAAI,UAAAE,EAAA,CAAU;AAAA,EAAA,GAFfA,CAGpD,CAGL,EAAA,CACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MetaDataList.js","sources":["../../../src/components/MetaDataList/MetaDataList.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport styles from './MetaDataList.module.css';\n\nexport interface MetaDataListProps {\n /** A list of key value pairs to display. The value is be a [ReactNode](https://reactnative.dev/docs/react-node). */\n items: Record<string, ReactNode>;\n}\n\n/** Represents a component of a list of key value pairs. */\nexport const MetaDataList = ({ items }: MetaDataListProps) => (\n <dl className={styles['meta-data-list']}>\n {Object.entries(items).map(([term, description]) => (\n <div key={term} className={styles['meta-data-list__item']}>\n <dt className={styles['meta-data-list__term']}>{term}</dt>\n <dd className={styles['meta-data-list__description']}>{description}</dd>\n </div>\n ))}\n </dl>\n);\n"],"names":["MetaDataList","items","jsx","styles","term","description","jsxs"],"mappings":";;;;;;GAUaA,IAAe,CAAC,EAAE,OAAAC,EAAA,MAC7B,gBAAAC,EAAC,MAAA,EAAG,WAAWC,EAAO,gBAAgB,GACnC,UAAA,OAAO,QAAQF,CAAK,EAAE,IAAI,CAAC,CAACG,GAAMC,CAAW,MAC5C,gBAAAC,EAAC,OAAA,EAAe,WAAWH,EAAO,sBAAsB,GACtD,UAAA;AAAA,EAAA,gBAAAD,EAAC,MAAA,EAAG,WAAWC,EAAO,sBAAsB,GAAI,UAAAC,GAAK;AAAA,oBACpD,MAAA,EAAG,WAAWD,EAAO,6BAA6B,GAAI,UAAAE,EAAA,CAAY;AAAA,EAAA,GAF3DD,CAGV,CACD,EAAA,CACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModalDialog.js","sources":["../../../src/components/ModalDialog/ModalDialog.tsx"],"sourcesContent":["import { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useModal, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport type { FormHTMLAttributes, KeyboardEvent, PropsWithChildren, ReactNode } from 'react';\nimport type { AriaDialogProps } from '@react-types/dialog';\n\nimport styles from './ModalDialog.module.css';\n\nimport { Backdrop } from 'components/Backdrop';\nimport { OverlayCloseButton } from 'components/OverlayCloseButton';\nimport { Spinner } from 'components/Spinner';\n\nexport interface ModalDialogProps {\n /** The buttons of the dialog. */\n buttons?: ReactNode;\n /** `true` if the dialog can be closed by clicking outside of it; otherwise, `false`. The default is `false`. */\n isDismissable?: boolean;\n /** `true` to disable closing the dialog with the keyboard; otherwise, `false`. The default is `false`. */\n isKeyboardDismissDisabled?: boolean;\n /** `true` to show a spinner, if the contents of the dialog is lazy loaded; otherwise, `false`. The default is `false`. */\n isLoading?: boolean;\n /** The `aria-valuetext` value of the [Spinner](/story/atoms-spinner--spinner-example) component. The default is `'Loading'` Used together with `isLoading`. */\n spinnerAriaValueText?: string;\n /** The `aria-label` value of the [OverlayCloseButton](/story/atoms-overlayclosebutton--overlay-close-button-example) component. The default is `'Close'` */\n closeButtonAriaValueText?: string;\n /** `true` to render the dialog opened; otherwise, `false`. The default is `false`. */\n isOpen: boolean;\n /** `true` to disable form validation; otherwise, `false`. The default is `false`. */\n noValidate?: boolean;\n /** The callback function that is invoked when the dialog is closed. */\n onClose?(): void;\n /** The callback function that is invoked when the form is submitted. */\n onSubmit?: FormHTMLAttributes<HTMLFormElement>['onSubmit'];\n /** The `aria-role` value of the dialog. Possible values are `'dialog'`, `'alertdialog'`. The default is `'dialog'`. */\n role?: AriaDialogProps['role'];\n /** The title of the dialog. */\n title?: string;\n /** The contents of the dialog header. */\n headerContent?: ReactNode;\n /** The variant of the dialog. */\n variant?: 'confirm' | 'dialog';\n /** `true` to add padding to the dialog; otherwise, `false`. The default is `false`. */\n padded?: boolean;\n /** Size of the dialog. */\n size?: 'small' | 'regular' | 'medium' | 'large';\n /** `true` to show a border between the main content of the dialog and the buttons; otherwise, `false`. The default is `false`. */\n noButtonBorder?: boolean;\n}\n\n/** Represents a component for a modal dialog. */\nexport function ModalDialog(props: PropsWithChildren<ModalDialogProps>) {\n const {\n buttons,\n children,\n isDismissable = true,\n isKeyboardDismissDisabled = !isDismissable,\n isLoading,\n spinnerAriaValueText = 'Loading',\n closeButtonAriaValueText = 'Close',\n isOpen,\n noValidate = false,\n onClose,\n onSubmit,\n role = 'dialog',\n title,\n headerContent,\n variant = 'dialog',\n padded,\n size = 'regular',\n noButtonBorder = false,\n } = props;\n\n const ref = useRef<HTMLDivElement>(null);\n const formRef = useRef<HTMLFormElement>(null);\n const [isScrollable, setIsScrollable] = useState(false);\n const [isScrolledToBottom, setIsScrolledToBottom] = useState(false);\n\n const { dialogProps, titleProps } = useDialog({ role }, ref);\n const { modalProps } = useModal({ isDisabled: !isOpen });\n const { overlayProps, underlayProps } = useOverlay(\n { isDismissable, isKeyboardDismissDisabled, isOpen, onClose },\n ref\n );\n\n usePreventScroll({ isDisabled: !isOpen });\n\n useEffect(() => {\n const formElement = formRef.current;\n\n function checkScrollable() {\n if (formElement) {\n const scrollHeight = formElement.scrollHeight;\n const clientHeight = formElement.clientHeight;\n const scrollTop = formElement.scrollTop;\n\n setIsScrollable(scrollHeight > clientHeight);\n setIsScrolledToBottom(scrollTop + clientHeight >= scrollHeight);\n }\n }\n\n function handleScrollAndResize() {\n checkScrollable();\n }\n\n if (formElement) {\n formElement.addEventListener('scroll', handleScrollAndResize);\n window.addEventListener('resize', handleScrollAndResize);\n }\n\n const timeoutId = setTimeout(() => {\n checkScrollable();\n }, 0);\n\n return () => {\n if (formElement) {\n formElement.removeEventListener('scroll', handleScrollAndResize);\n }\n window.removeEventListener('resize', handleScrollAndResize);\n clearTimeout(timeoutId);\n };\n }, [isOpen, headerContent]);\n\n function onKeyUp(event: KeyboardEvent) {\n event.stopPropagation();\n }\n\n if (!isOpen) return null;\n\n return (\n <OverlayContainer>\n <Backdrop {...underlayProps}>\n {isLoading ? (\n <Spinner ariaValueText={spinnerAriaValueText} />\n ) : (\n <>\n {/* eslint-disable-next-line jsx-a11y/no-autofocus */}\n <FocusScope autoFocus contain restoreFocus>\n <div\n {...dialogProps}\n {...modalProps}\n {...overlayProps}\n className={clsx(styles['modal-dialog'], [styles[`modal-dialog--${size}`]], {\n [styles['modal-dialog--confirm']]: variant === 'confirm',\n [styles['modal-dialog--padded']]: padded,\n })}\n onKeyUp={onKeyUp}\n role=\"presentation\"\n ref={ref}\n >\n {(title || headerContent) && variant === 'dialog' && (\n <>\n {title && (\n <h1 {...titleProps} className={styles['modal-dialog__title']}>\n {title}\n </h1>\n )}\n {headerContent}\n {variant === 'dialog' && (\n <span className={styles['modal-dialog__close']}>\n <OverlayCloseButton\n aria-label={closeButtonAriaValueText}\n onClick={onClose}\n paddedModal={padded}\n />\n </span>\n )}\n </>\n )}\n <form\n className={clsx(styles['modal-dialog__content'], {\n [styles['modal-dialog--content-with-buttons']]: buttons,\n })}\n onSubmit={onSubmit}\n noValidate={noValidate}\n ref={formRef}\n >\n <div className={clsx({ [styles['modal-dialog__children']]: !noButtonBorder })}>{children}</div>\n {buttons && (\n <div\n className={clsx(styles['modal-dialog__buttons'], {\n [styles['modal-dialog__buttons--border']]: !noButtonBorder,\n [styles['modal-dialog__buttons--shadow']]: isScrollable && !isScrolledToBottom,\n })}\n >\n {buttons}\n </div>\n )}\n </form>\n </div>\n </FocusScope>\n </>\n )}\n </Backdrop>\n </OverlayContainer>\n );\n}\n"],"names":["ModalDialog","props","buttons","children","isDismissable","isKeyboardDismissDisabled","isLoading","spinnerAriaValueText","closeButtonAriaValueText","isOpen","noValidate","onClose","onSubmit","role","title","headerContent","variant","padded","size","noButtonBorder","ref","useRef","formRef","isScrollable","setIsScrollable","useState","isScrolledToBottom","setIsScrolledToBottom","dialogProps","titleProps","useDialog","modalProps","useModal","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","formElement","checkScrollable","scrollHeight","clientHeight","scrollTop","handleScrollAndResize","timeoutId","onKeyUp","event","jsx","OverlayContainer","Backdrop","Spinner","Fragment","FocusScope","jsxs","clsx","styles","OverlayCloseButton"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultiSelect.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultiSelectHeader.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultiSelectItem.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultiSelectBox.js","sources":["../../../src/components/MultiSelectBox/MultiSelectBox.tsx"],"sourcesContent":["import { useRef, useState, useId, useEffect, useCallback } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { KeyboardEvent, ChangeEvent, MouseEvent } from 'react';\n\nimport styles from './MultiSelectBox.module.css';\n\nimport { Icon } from 'components/Icon';\nimport { Checkbox } from 'components/Checkbox';\nimport { usePositionedFloaters } from 'components/hooks/usePositionedFloaters';\n\nexport type MultiSelectData = {\n label: string;\n value: string | number;\n disabled?: boolean;\n};\n\nexport interface MultiSelectBoxProps {\n /** Array of label, values pairs */\n selectData: MultiSelectData[];\n /** Retuns selected label, values */\n onChange: (values: MultiSelectData[]) => void;\n /** Array of label, value pairs that should be check by default */\n defaultSelectedItems?: MultiSelectData[];\n /** Suffix label in the selectbutton '[count] selected' */\n labelSuffix?: string;\n /** Disables the multiselect */\n disabled?: boolean;\n /** If true sets the option dropdown min-width to the width of the select button. */\n fullWidth?: boolean;\n /** Dark border. */\n darkBorder?: boolean;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** The max height of the options. */\n maxOptionHeight?: `${number}${'px' | 'rem'}`;\n /** `true` to align the right side of the options with the select box; otherwise, `false` to align on the left side. */\n optionPositionRight?: boolean;\n}\n\nexport const MultiSelectBox = ({\n selectData,\n onChange,\n defaultSelectedItems,\n labelSuffix = 'geselecteerd',\n disabled = false,\n fullWidth = false,\n darkBorder = false,\n notValid = false,\n maxOptionHeight,\n optionPositionRight,\n}: MultiSelectBoxProps) => {\n const multiselectboxId = useId();\n const [selectedItems, setSelectedItems] = useState<MultiSelectData[]>(defaultSelectedItems || []);\n const [selectedItemsCount, setSelectedItemsCount] = useState(defaultSelectedItems?.length || 0);\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const optionListRef = useRef<HTMLUListElement>(null);\n\n const [positionElement, setPositionElement] = useState<HTMLElement | null>(null);\n const [referenceElement, setReferenceElement] = useState<HTMLButtonElement | null>(null);\n const { style: positionStyle, updatePosition } = usePositionedFloaters(positionElement, referenceElement, {\n mouseEvent: 'click',\n position: 'bottomLeft',\n offset: 4,\n maxFixedHeight: maxOptionHeight,\n horizontalPosition: optionPositionRight ? 'right' : 'left',\n mobileBreakpoint: '28rem',\n fullWidth,\n });\n\n const onMouseEventOutside = useCallback(\n ({ target }: Event | MouseEvent) => {\n if (!target || !wrapperRef.current) return;\n\n if (!wrapperRef.current.contains(target as Node)) {\n setIsOpen(false);\n }\n },\n [setIsOpen]\n );\n\n const onTriggerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>) => {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n setIsOpen(true);\n break;\n case 'Escape':\n if (isOpen) {\n event.stopPropagation();\n setIsOpen(false);\n }\n break;\n default:\n break;\n }\n },\n [isOpen]\n );\n\n const onOptionKeyDown = useCallback(\n (event: KeyboardEvent<HTMLLIElement>) => {\n if (!isOpen) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n setActiveIndex((prev) => {\n let nextIndex = prev;\n do {\n nextIndex = nextIndex < selectData.length - 1 ? nextIndex + 1 : 0;\n } while (selectData[nextIndex]?.disabled);\n return nextIndex;\n });\n break;\n case 'ArrowUp':\n event.preventDefault();\n setActiveIndex((prev) => {\n let nextIndex = prev;\n do {\n nextIndex = nextIndex <= 0 ? selectData.length - 1 : nextIndex - 1;\n } while (selectData[nextIndex]?.disabled);\n return nextIndex;\n });\n break;\n case 'Enter': {\n event.preventDefault();\n const selectedItem = selectData[activeIndex];\n if (!selectedItem || selectedItem.disabled) break;\n const isAlreadySelected = selectedItems.some((item) => item.value === selectedItem.value);\n const updatedSelectedItems = isAlreadySelected\n ? selectedItems.filter((item) => item.value !== selectedItem.value)\n : [...selectedItems, selectedItem];\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n break;\n }\n case 'Tab':\n event.preventDefault();\n setIsOpen(false);\n break;\n case 'Escape':\n event.stopPropagation();\n setIsOpen(false);\n break;\n default:\n break;\n }\n },\n [activeIndex, isOpen, selectData, selectedItems, onChange]\n );\n\n const onOptionClick = (event: MouseEvent<HTMLLIElement>, option: MultiSelectData) => {\n if (option.disabled) return;\n\n // Prevent toggle if click originated from the checkbox\n if ((event.target as HTMLElement).tagName === 'INPUT') return;\n\n const isAlreadySelected = selectedItems.some((item) => item.value === option.value);\n const updatedSelectedItems = isAlreadySelected\n ? selectedItems.filter((item) => item.value !== option.value)\n : [...selectedItems, option];\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n updatePosition();\n };\n\n const handleSelect = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { checked, value } = event.target;\n let updatedSelectedItems = [...selectedItems];\n\n if (checked) {\n const selectedItem = selectData.find((item) => item.value === value);\n if (selectedItem) {\n updatedSelectedItems.push(selectedItem);\n }\n } else {\n updatedSelectedItems = updatedSelectedItems.filter((item) => item.value !== value);\n }\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n updatePosition();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [selectData, selectedItems, onChange]\n );\n\n useEffect(() => {\n if (isOpen) {\n setActiveIndex(0);\n }\n }, [isOpen]);\n\n useEffect(() => {\n const activeOption = optionListRef.current?.children[activeIndex] as HTMLElement;\n activeOption?.focus();\n }, [activeIndex]);\n\n useEffect(() => {\n if (!isOpen) return;\n\n document.addEventListener('click', onMouseEventOutside, true);\n document.addEventListener('scroll', onMouseEventOutside, true);\n\n return () => {\n document.removeEventListener('click', onMouseEventOutside, true);\n document.removeEventListener('scroll', onMouseEventOutside, true);\n };\n }, [onMouseEventOutside, isOpen]);\n\n return (\n <div className={styles['multi-select-box-wrapper']} ref={wrapperRef}>\n <button\n className={clsx(styles['multi-select-box-trigger'], {\n [styles['multi-select-box-trigger--darkBorder']]: darkBorder,\n [styles['multi-select-box-trigger--not-valid']]: notValid,\n })}\n type=\"button\"\n onClick={() => {\n setIsOpen(!isOpen);\n }}\n onKeyDown={onTriggerKeyDown}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-label={`${selectedItemsCount} ${labelSuffix}`}\n disabled={disabled}\n {...(isOpen && { 'aria-controls': multiselectboxId })}\n ref={setReferenceElement}\n >\n <span className={styles['multi-select-box-trigger-label']}>\n {selectedItemsCount} {labelSuffix}\n </span>\n <Icon\n className={clsx(styles['multi-select-box-trigger-icon'], {\n [styles['multi-select-box-trigger-icon--open']]: isOpen,\n })}\n name=\"CheveronDown\"\n size={16}\n />\n </button>\n\n <div\n id={multiselectboxId}\n className={clsx(styles['multi-select-box-listbox--wrapper'])}\n style={{ ...positionStyle.style, visibility: isOpen ? 'visible' : 'hidden' }}\n role=\"listbox\"\n ref={setPositionElement}\n >\n <ul className={styles['multi-select-box-listbox']} ref={optionListRef}>\n {selectData.map(({ label, value, disabled }, index) => (\n <li\n className={clsx(styles['multi-select-box-listbox-option'], {\n [styles['multi-select-box-listbox-option--active']]: index === activeIndex,\n [styles['multi-select-box-listbox-option--disabled']]: disabled,\n })}\n key={value}\n role=\"option\"\n onKeyDown={onOptionKeyDown}\n onClick={(event) => onOptionClick(event, { label, value, disabled })}\n onMouseOver={() => setActiveIndex(index)}\n onFocus={() => setActiveIndex(index)}\n tabIndex={0}\n aria-selected={selectedItems.some((item) => item.value === value)}\n >\n <label htmlFor={label} className={styles['multi-select-box-listbox-option-content']} tabIndex={-1}>\n <Checkbox\n id={`${label}-${multiselectboxId}`}\n onChange={handleSelect}\n value={value}\n tabIndex={-1}\n disabled={disabled}\n checked={selectedItems.some((item) => item.value === value)}\n />\n <span>{label}</span>\n </label>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n"],"names":["MultiSelectBox","selectData","onChange","defaultSelectedItems","labelSuffix","disabled","fullWidth","darkBorder","notValid","maxOptionHeight","optionPositionRight","multiselectboxId","useId","selectedItems","setSelectedItems","useState","selectedItemsCount","setSelectedItemsCount","isOpen","setIsOpen","activeIndex","setActiveIndex","wrapperRef","useRef","optionListRef","positionElement","setPositionElement","referenceElement","setReferenceElement","positionStyle","updatePosition","usePositionedFloaters","onMouseEventOutside","useCallback","target","onTriggerKeyDown","event","onOptionKeyDown","prev","nextIndex","selectedItem","updatedSelectedItems","item","onOptionClick","option","handleSelect","checked","value","useEffect","styles","jsxs","clsx","jsx","Icon","label","index","Checkbox"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Notification.js","sources":["../../../src/components/Notification/Notification.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport type { ReactNode } from 'react';\n\nimport styles from './Notification.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport type NotificationVariant = 'default' | 'bar';\nexport type NotificationLevel = 'neutral' | 'information' | 'success' | 'warning' | 'danger';\n\nexport interface NotificationProps {\n title?: string;\n subtitle?: string;\n action?: ReactNode;\n variant?: NotificationVariant;\n level: NotificationLevel;\n onClose?: () => void;\n}\n\nexport const Notification = ({ title, subtitle, action, variant = 'default', level, onClose }: NotificationProps) => {\n const isBar = variant === 'bar';\n\n function setIconName(toastType: NotificationLevel) {\n if (toastType === 'neutral') return 'CalendarEdit';\n if (toastType === 'information') return 'SquareInfo';\n if (toastType === 'success') return 'CheckCircle';\n return 'ExclamationTriangleMini';\n }\n\n return (\n <div className={clsx(styles['notification'], styles[`notification--${variant}`], styles[`notification--${level}`])}>\n <div className={styles['notification-content']}>\n <Icon name={setIconName(level)} />\n <div className={styles['notification-content--text']}>\n {title && <p className={styles['notification-title']}>{title}</p>}\n {subtitle && <p className={styles['notification-subtitle']}>{subtitle}</p>}\n {action && <div className={styles['notification-action']}>{action}</div>}\n </div>\n </div>\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"close\"\n className={clsx(styles['notification-close-button'], styles[`notification-close-button--${level}`], {\n [styles[`notification-close-button--bar--${level}`]]: isBar,\n })}\n >\n <Icon name=\"Cross\" size={24} />\n </button>\n )}\n </div>\n );\n};\n"],"names":["Notification","title","subtitle","action","variant","level","onClose","isBar","setIconName","toastType","clsx","styles","jsxs","jsx","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;GAoBaA,IAAe,CAAC,EAAE,OAAAC,GAAO,UAAAC,GAAU,QAAAC,GAAQ,SAAAC,IAAU,WAAW,OAAAC,GAAO,SAAAC,QAAiC;AACnH,QAAMC,IAAQH,MAAY;AAE1B,WAASI,EAAYC,GAA8B;AACjD,WAAIA,MAAc,YAAkB,iBAChCA,MAAc,gBAAsB,eACpCA,MAAc,YAAkB,gBAC7B;AAAA,EACT;AAEA,2BACG,OAAA,EAAI,WAAWC,EAAKC,EAAO,cAAiBA,EAAO,iBAAiBP,CAAO,EAAE,GAAGO,EAAO,iBAAiBN,CAAK,EAAE,CAAC,GAC/G,UAAA;AAAA,IAAA,gBAAAO,EAAC,OAAA,EAAI,WAAWD,EAAO,sBAAsB,GAC3C,UAAA;AAAA,MAAA,gBAAAE,EAACC,GAAA,EAAK,MAAMN,EAAYH,CAAK,EAAA,CAAG;AAAA,MAChC,gBAAAO,EAAC,OAAA,EAAI,WAAWD,EAAO,4BAA4B,GAChD,UAAA;AAAA,QAAAV,uBAAU,KAAA,EAAE,WAAWU,EAAO,oBAAoB,GAAI,UAAAV,GAAM;AAAA,QAC5DC,KAAY,gBAAAW,EAAC,KAAA,EAAE,WAAWF,EAAO,uBAAuB,GAAI,UAAAT,GAAS;AAAA,QACrEC,KAAU,gBAAAU,EAAC,OAAA,EAAI,WAAWF,EAAO,qBAAqB,GAAI,UAAAR,EAAA,CAAO;AAAA,MAAA,EAAA,CACpE;AAAA,IAAA,GACF;AAAA,IACCG,KACC,gBAAAO;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAW;AAAA,QACX,WAAWH,EAAKC,EAAO,2BAA2B,GAAGA,EAAO,8BAA8BN,CAAK,EAAE,GAAG;AAAA,UAClG,CAACM,EAAO,mCAAmCN,CAAK,EAAE,CAAC,GAAGE;AAAA,QAAA,CACvD;AAAA,QAED,UAAA,gBAAAM,EAACC,GAAA,EAAK,MAAK,SAAQ,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAC/B,GAEJ;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OverlayCloseButton.js","sources":["../../../src/components/OverlayCloseButton/OverlayCloseButton.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef } from 'react';\n\nimport type { ButtonHTMLAttributes } from 'react';\n\nimport styles from './OverlayCloseButton.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface OverlayCloseButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'style'> {\n /** The `aria-label` value of the button. */\n 'aria-label': string; // mandatory\n /** `true` to add padding around the button; otherwise, `false`. The default is `false`. */\n paddedModal?: boolean;\n}\n\n/** Represents a component to render a close button in the top right corner of a container. */\nexport const OverlayCloseButton = forwardRef<HTMLButtonElement, OverlayCloseButtonProps>(\n ({ paddedModal, ...restProps }, forwardedRef) => (\n <button\n {...restProps}\n type=\"button\"\n ref={forwardedRef}\n className={clsx(styles['overlay-close-button'], {\n [styles['overlay-close-button--padded']]: paddedModal,\n })}\n >\n <Icon name=\"Cross\" size={24} />\n </button>\n )\n);\n"],"names":["OverlayCloseButton","forwardRef","paddedModal","restProps","forwardedRef","jsx","clsx","styles","Icon"],"mappings":";;;;;;;GAiBaA,IAAqBC;AAAA,EAChC,CAAC,EAAE,aAAAC,GAAa,GAAGC,EAAA,GAAaC,MAC9B,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,MAAK;AAAA,MACL,KAAKC;AAAA,MACL,WAAWE,EAAKC,EAAO,sBAAsB,GAAG;AAAA,QAC9C,CAACA,EAAO,8BAA8B,CAAC,GAAGL;AAAA,MAAA,CAC3C;AAAA,MAED,UAAA,gBAAAG,EAACG,GAAA,EAAK,MAAK,SAAQ,MAAM,GAAA,CAAI;AAAA,IAAA;AAAA,EAAA;AAGnC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OverlayStepBar.js","sources":["../../../src/components/OverlayStepBar/OverlayStepBar.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport styles from './OverlayStepBar.module.css';\n\nexport interface OverlayStepBarProps {\n /** Array of strings. */\n stepLabels: string[];\n /** activeStep number starting with 1. */\n activeStep: number;\n /** Array of prefix numbers to not show in the steplabels */\n disabledCountPrefix?: number[];\n /** navigate to step. */\n onStepClick?: (step: number) => void;\n}\n\nexport const OverlayStepBar = ({\n stepLabels,\n activeStep = 0,\n disabledCountPrefix = [],\n onStepClick,\n}: OverlayStepBarProps) => {\n if (activeStep > stepLabels.length) {\n console.error('activeStep is greater than the number of steps');\n }\n\n const getStepDisplayNumber = (stepIndex: number): string => {\n const stepNumber = stepIndex + 1;\n\n if (disabledCountPrefix.includes(stepNumber)) {\n return '';\n }\n\n const enabledStepsBefore = Array.from({ length: stepIndex }, (_, count) => count + 1).filter(\n (step) => !disabledCountPrefix.includes(step)\n ).length;\n\n return String(enabledStepsBefore + 1);\n };\n\n return (\n <div className={styles['overlay-step-bar__container']}>\n {stepLabels.length &&\n stepLabels.map((label, index) => (\n <span key={`${index}_${label}`} className={styles[`overlay-step-bar__step-wrapper`]}>\n <button\n className={clsx(styles[`overlay-step-bar__step`], [\n index === activeStep - 1 && styles[`overlay-step-bar__step--active`],\n ])}\n {...(onStepClick && { onClick: () => onStepClick(index + 1) })}\n type=\"button\"\n aria-label={`Step ${index + 1}`}\n aria-current={index === activeStep - 1 ? 'step' : undefined}\n disabled={index === activeStep - 1}\n >\n <span className={styles[`overlay-step-bar__step--index`]}>{getStepDisplayNumber(index)}</span>\n <span\n className={clsx(\n styles[`overlay-step-bar__step--label`],\n disabledCountPrefix.includes(index + 1) && styles[`overlay-step-bar__step--label-show`]\n )}\n >\n {label}\n </span>\n </button>\n </span>\n ))}\n </div>\n );\n};\n"],"names":["OverlayStepBar","stepLabels","activeStep","disabledCountPrefix","onStepClick","getStepDisplayNumber","stepIndex","stepNumber","enabledStepsBefore","_","count","step","styles","label","index","jsx","jsxs","clsx"],"mappings":";;;;;;;;;;GAeaA,IAAiB,CAAC;AAAA,EAC7B,YAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,qBAAAC,IAAsB,CAAA;AAAA,EACtB,aAAAC;AACF,MAA2B;AACzB,EAAIF,IAAaD,EAAW,UAC1B,QAAQ,MAAM,gDAAgD;AAGhE,QAAMI,IAAuB,CAACC,MAA8B;AAC1D,UAAMC,IAAaD,IAAY;AAE/B,QAAIH,EAAoB,SAASI,CAAU;AACzC,aAAO;AAGT,UAAMC,IAAqB,MAAM,KAAK,EAAE,QAAQF,KAAa,CAACG,GAAGC,MAAUA,IAAQ,CAAC,EAAE;AAAA,MACpF,CAACC,MAAS,CAACR,EAAoB,SAASQ,CAAI;AAAA,IAAA,EAC5C;AAEF,WAAO,OAAOH,IAAqB,CAAC;AAAA,EACtC;AAEA,2BACG,OAAA,EAAI,WAAWI,EAAO,6BAA6B,GACjD,YAAW,UACVX,EAAW,IAAI,CAACY,GAAOC,MACrB,gBAAAC,EAAC,UAA+B,WAAWH,EAAO,gCAAgC,GAChF,UAAA,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKL,EAAO,wBAAwB,GAAG;AAAA,QAChDE,MAAUZ,IAAa,KAAKU,EAAO,gCAAgC;AAAA,MAAA,CACpE;AAAA,MACA,GAAIR,KAAe,EAAE,SAAS,MAAMA,EAAYU,IAAQ,CAAC,EAAA;AAAA,MAC1D,MAAK;AAAA,MACL,cAAY,QAAQA,IAAQ,CAAC;AAAA,MAC7B,gBAAcA,MAAUZ,IAAa,IAAI,SAAS;AAAA,MAClD,UAAUY,MAAUZ,IAAa;AAAA,MAEjC,UAAA;AAAA,QAAA,gBAAAa,EAAC,UAAK,WAAWH,EAAO,+BAA+B,GAAI,UAAAP,EAAqBS,CAAK,EAAA,CAAE;AAAA,QACvF,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWE;AAAA,cACTL,EAAO,+BAA+B;AAAA,cACtCT,EAAoB,SAASW,IAAQ,CAAC,KAAKF,EAAO,oCAAoC;AAAA,YAAA;AAAA,YAGvF,UAAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA,KAnBO,GAAGC,CAAK,IAAID,CAAK,EAqB5B,CACD,GACL;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageOverlay.js","sources":["../../../src/components/PageOverlay/PageOverlay.tsx"],"sourcesContent":["import { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useModal, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport classNames, { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport type { FormHTMLAttributes, KeyboardEvent, PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './PageOverlay.module.css';\n\nimport { OverlayCloseButton } from 'components/OverlayCloseButton';\nimport { Spinner } from 'components/Spinner';\nimport { Backdrop } from 'components/Backdrop';\n\nexport interface PageOverlayProps {\n /** The buttons of the dialog. */\n buttons?: ReactNode;\n /** `true` to show a spinner, if the contents of the dialog is lazy loaded; otherwise, `false`. */\n isLoading?: boolean;\n /** The `aria-valuetext` value of the [Spinner](/story/atoms-spinner--spinner-example) component. Used together with `isLoading`. */\n spinnerAriaValueText?: string;\n /** The `aria-label` value of the [OverlayCloseButton](/story/atoms-overlayclosebutton--overlay-close-button-example) component. */\n closeButtonAriaValueText?: string;\n /** `true` to render the dialog opened; otherwise, `false`. */\n isOpen: boolean;\n /** `true` to disable form validation; otherwise, `false`. */\n noValidate?: boolean;\n /** The callback function that is invoked when the dialog is closed. */\n onClose?(): void;\n /** The callback function that is invoked when the form is submitted. */\n onSubmit?: FormHTMLAttributes<HTMLFormElement>['onSubmit'];\n /** The title of the dialog. */\n title?: string;\n /** The contents of the dialog header. */\n headerContent?: ReactNode;\n /** The variant styling of the dialog. */\n variant?: 'full-screen' | 'with-gutters';\n /** The content background color of the dialog. Default grey-300*/\n contentBackgroundColor?: 'grey' | 'white';\n}\n\n/** Represents a component for a modal dialog. */\nexport function PageOverlay({\n buttons,\n children,\n isLoading,\n spinnerAriaValueText = 'Loading',\n closeButtonAriaValueText = 'Close',\n isOpen,\n noValidate = false,\n onClose,\n onSubmit,\n title,\n headerContent,\n variant = 'full-screen',\n contentBackgroundColor = 'grey',\n}: PropsWithChildren<PageOverlayProps>) {\n const ref = useRef<HTMLDivElement>(null);\n const formRef = useRef<HTMLFormElement>(null);\n const [isScrollable, setIsScrollable] = useState(false);\n const [isScrolledToBottom, setIsScrolledToBottom] = useState(false);\n\n const { dialogProps, titleProps } = useDialog({ role: 'dialog' }, ref);\n const { modalProps } = useModal({ isDisabled: !isOpen });\n const { overlayProps, underlayProps } = useOverlay({ isOpen, onClose }, ref);\n\n usePreventScroll({ isDisabled: !isOpen });\n\n useEffect(() => {\n const formElement = formRef.current;\n\n if (!formElement) return;\n\n function checkScrollable() {\n const scrollHeight = formElement!.scrollHeight;\n const clientHeight = formElement!.clientHeight;\n const scrollTop = formElement!.scrollTop;\n\n setIsScrollable(scrollHeight > clientHeight);\n setIsScrolledToBottom(scrollTop + clientHeight >= scrollHeight);\n }\n\n function handleScrollAndResize() {\n checkScrollable();\n }\n\n formElement.addEventListener('scroll', handleScrollAndResize);\n window.addEventListener('resize', handleScrollAndResize);\n\n const timeoutId = setTimeout(() => {\n checkScrollable();\n }, 0);\n\n return () => {\n formElement.removeEventListener('scroll', handleScrollAndResize);\n\n window.removeEventListener('resize', handleScrollAndResize);\n clearTimeout(timeoutId);\n };\n }, [isOpen, headerContent]);\n\n function onKeyUp(event: KeyboardEvent) {\n event.stopPropagation();\n }\n\n if (!isOpen) return null;\n\n return (\n <OverlayContainer className={styles['page-overlay__container']}>\n <Backdrop {...underlayProps}>\n {isLoading ? (\n <Spinner ariaValueText={spinnerAriaValueText} />\n ) : (\n <>\n {/* eslint-disable-next-line jsx-a11y/no-autofocus */}\n <FocusScope autoFocus contain restoreFocus>\n <div\n {...dialogProps}\n {...modalProps}\n {...overlayProps}\n className={clsx(styles['page-overlay'], {\n [styles[`page-overlay--${variant}`]]: variant,\n })}\n onKeyUp={onKeyUp}\n role=\"presentation\"\n ref={ref}\n >\n {(title || headerContent) && (\n <div className={styles['page-overlay__title-wrapper']}>\n {title && (\n <h1 {...titleProps} className={styles['page-overlay__title']}>\n {title}\n </h1>\n )}\n {headerContent}\n {\n <span className={styles['page-overlay__close']}>\n <OverlayCloseButton aria-label={closeButtonAriaValueText} onClick={onClose} />\n </span>\n }\n </div>\n )}\n <form\n className={classNames(\n styles['page-overlay__content'],\n styles[`page-overlay__content--${contentBackgroundColor}`],\n {\n [styles['page-overlay--content-with-buttons']]: buttons,\n }\n )}\n onSubmit={onSubmit}\n noValidate={noValidate}\n ref={formRef}\n >\n <div className={styles['page-overlay__children']}>{children}</div>\n {buttons && (\n <div\n className={classNames(styles['page-overlay__buttons-bar'], {\n [styles['page-overlay__buttons-bar--shadow']]: isScrollable && !isScrolledToBottom,\n })}\n >\n {buttons}\n </div>\n )}\n </form>\n </div>\n </FocusScope>\n </>\n )}\n </Backdrop>\n </OverlayContainer>\n );\n}\n"],"names":["PageOverlay","buttons","children","isLoading","spinnerAriaValueText","closeButtonAriaValueText","isOpen","noValidate","onClose","onSubmit","title","headerContent","variant","contentBackgroundColor","ref","useRef","formRef","isScrollable","setIsScrollable","useState","isScrolledToBottom","setIsScrolledToBottom","dialogProps","titleProps","useDialog","modalProps","useModal","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","formElement","checkScrollable","scrollHeight","clientHeight","scrollTop","handleScrollAndResize","timeoutId","onKeyUp","event","jsx","OverlayContainer","styles","Backdrop","Spinner","Fragment","FocusScope","jsxs","clsx","OverlayCloseButton","classNames"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PeriodSelector.js","sources":["../../../src/components/PeriodSelector/PeriodSelector.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport styles from './PeriodSelector.module.css';\n\nimport { Label, CheckboxButtonBar, FeedbackBox } from 'components';\n\nexport interface PeriodSelectorProps {\n /** Indicates how many periods are shown. */\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n maxPeriods: 6 | 7;\n /** array of period values [3, 5 ...] */\n defaultValues?: number[];\n label?: string;\n labelPosition?: 'top' | 'left';\n /** Shows red * */\n required?: boolean;\n /** error text to display if set */\n notValidatedText?: string;\n /** Returns array of selected values as number */\n onChange: (values: number[]) => void;\n}\n\nconst SEMESTER_1 = 0;\nconst SEMESTER_2 = 1;\nconst SEMESTER_3 = 2;\n\nconst PERIODS_PER_SEMESTER = 3;\nconst MAX_PERIODS = 7;\n\nconst chunkPeriods = (array: number[]): number[][] => {\n const result: number[][] = [];\n for (let count = 0; count < array.length; count += PERIODS_PER_SEMESTER) {\n result.push(array.slice(count, count + PERIODS_PER_SEMESTER));\n }\n return result;\n};\n\n/** Checkbox group for selecting periods */\nexport const PeriodSelector = ({\n maxPeriods = MAX_PERIODS,\n defaultValues,\n label,\n labelPosition = 'top',\n required = false,\n notValidatedText = '',\n onChange,\n}: PeriodSelectorProps) => {\n const maxPeriodsList = Array.from({ length: maxPeriods }, (_, index) => index + 1);\n const chunkedPeriods = chunkPeriods(maxPeriodsList);\n\n const checkboxItems = chunkedPeriods.map((periods, _) => {\n return periods.map((period) => ({\n label: period.toString(),\n value: period.toString(),\n }));\n });\n\n const returnValues = useRef<number[][]>(\n chunkedPeriods.map((semester) =>\n semester.reduce((periods, period) => {\n if (defaultValues?.includes(period)) periods.push(period);\n return periods;\n }, [] as number[])\n )\n );\n const [disableSemesters, setDisableSemesters] = useState<number[]>([]);\n\n const disableGroups = (selects: number[][]) => {\n if (selects[SEMESTER_1].length !== 0 || selects[SEMESTER_2].length !== 0) return [SEMESTER_3];\n if (selects[SEMESTER_3].length !== 0) return [SEMESTER_1, SEMESTER_2];\n return [];\n };\n\n const handleChange = (values: string[], index: number) => {\n returnValues.current[index] = values.map((num) => Number(num));\n setDisableSemesters(disableGroups(returnValues.current));\n onChange([...returnValues.current.flat()].sort());\n };\n\n useEffect(() => {\n setDisableSemesters(disableGroups(returnValues.current));\n }, []);\n\n return (\n <div\n className={clsx(\n styles['period-selector__container'],\n styles[`period-selector__container--label-${labelPosition}`]\n )}\n >\n {label && (\n <Label htmlFor=\"\" required={required}>\n {label}\n </Label>\n )}\n <div className={styles['period-selector__selector-container']}>\n <div className={styles['period-selector__selector-row']}>\n {checkboxItems.map((checkboxes, semester) => (\n <CheckboxButtonBar\n key={`group_${semester}`}\n checkboxes={checkboxes}\n defaultValues={returnValues.current[semester].map((num) => num.toString())}\n disableGroup={disableSemesters.includes(semester)}\n required={required}\n onSetValues={(event) => handleChange(event, semester)}\n notValid={notValidatedText !== ''}\n />\n ))}\n </div>\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\n </div>\n </div>\n );\n};\n"],"names":["SEMESTER_1","SEMESTER_2","SEMESTER_3","PERIODS_PER_SEMESTER","MAX_PERIODS","chunkPeriods","array","result","count","PeriodSelector","maxPeriods","defaultValues","label","labelPosition","required","notValidatedText","onChange","maxPeriodsList","_","index","chunkedPeriods","checkboxItems","periods","period","returnValues","useRef","semester","disableSemesters","setDisableSemesters","useState","disableGroups","selects","handleChange","values","num","useEffect","jsxs","clsx","styles","jsx","Label","checkboxes","CheckboxButtonBar","event","FeedbackBox"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Periods.js","sources":["../../../src/components/Periods/Periods.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useId } from 'react';\n\nimport styles from './Periods.module.css';\n\ninterface Period {\n id: string;\n number: number;\n semesterNumber: number;\n periodInSemester: number;\n}\n\ninterface TooltipTranslations {\n period: string;\n periods: string;\n and: string;\n}\n\nexport interface PeriodsProps {\n /** Indicates which periods are selected. */\n periods: Period[] | number[];\n /** Indicates the maximum number of periods to show in the selector. */\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n maxPeriods?: 3 | 6 | 7;\n /** A object of translations for the tooltip. */\n tooltipTranslations?: TooltipTranslations;\n}\n\nconst MAX_PERIODS = 6;\n\n/** Represents a component for a period indicator. */\nexport const Periods = ({ periods, tooltipTranslations, maxPeriods = MAX_PERIODS }: PeriodsProps) => {\n const maxPeriodsList = Array.from({ length: maxPeriods }, (_, index) => index + 1);\n const idPrefix = useId();\n\n const isArrayOfNumbers = periods.some((value) => {\n return typeof value === 'number';\n });\n\n const getTitles = (tooltipTranslations: TooltipTranslations): string => {\n const semesterPeriods: Record<number, number[]> = {};\n\n // Group periods by semester\n isArrayOfNumbers\n ? periods.forEach((period) => {\n if (typeof period === 'number') {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n const groupKey = Math.ceil(period / 3); // Determine the semester (1, 2, or 3)\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n const mappedValue = ((period - 1) % 3) + 1; // Map period to semester\n\n if (!semesterPeriods[groupKey]) {\n semesterPeriods[groupKey] = [];\n }\n semesterPeriods[groupKey].push(mappedValue);\n }\n })\n : periods.forEach((period) => {\n const { semesterNumber, periodInSemester } = period as Period;\n\n if (!semesterPeriods[semesterNumber]) {\n semesterPeriods[semesterNumber] = [];\n }\n semesterPeriods[semesterNumber].push(periodInSemester);\n });\n\n // Build the title string\n const title = Object.keys(semesterPeriods).reduce((acc, semesterKey, index) => {\n const semesterNumber = Number(semesterKey);\n const periodsInSemester = semesterPeriods[semesterNumber];\n let periodTitle = '';\n\n // Determine if we need singular or plural form for \"period\"\n const blokLabel = periodsInSemester.length > 1 ? tooltipTranslations.periods : tooltipTranslations.period;\n\n // Build period sequence for the current semester\n if (periodsInSemester.length > 1) {\n const lastPeriod = periodsInSemester.pop();\n periodTitle = `Semester ${semesterNumber} ${blokLabel} ${periodsInSemester.join(', ')} ${tooltipTranslations.and} ${lastPeriod}`;\n } else {\n periodTitle = `Semester ${semesterNumber} ${blokLabel} ${periodsInSemester[0]}`;\n }\n\n // Add proper spacing and periods\n return `${acc}${index > 0 ? '. ' : ''}${periodTitle}`;\n }, '');\n\n return title.trim() + '.';\n };\n\n const isPeriodActive = (periodIndex: number): boolean => {\n if (isArrayOfNumbers) {\n return (periods as number[]).includes(periodIndex);\n } else {\n return periods.find((period) => (period as Period).number === periodIndex) ? true : false;\n }\n };\n\n return (\n <div className={styles['periods__container']} title={tooltipTranslations ? getTitles(tooltipTranslations) : ''}>\n {maxPeriodsList.map((periodIndex) => {\n return (\n <span\n className={clsx(\n styles['periods__item'],\n isPeriodActive(periodIndex) ? styles['periods__item--active'] : ''\n )}\n data-period-item\n key={`${idPrefix}-${periodIndex}`}\n />\n );\n })}\n </div>\n );\n};\n"],"names":["MAX_PERIODS","Periods","periods","tooltipTranslations","maxPeriods","maxPeriodsList","_","index","idPrefix","useId","isArrayOfNumbers","value","getTitles","semesterPeriods","period","groupKey","mappedValue","semesterNumber","periodInSemester","acc","semesterKey","periodsInSemester","periodTitle","blokLabel","lastPeriod","isPeriodActive","periodIndex","jsx","styles","clsx"],"mappings":";;;;;;;GA4BMA,IAAc,GAGPC,IAAU,CAAC,EAAE,SAAAC,GAAS,qBAAAC,GAAqB,YAAAC,IAAaJ,QAAgC;AACnG,QAAMK,IAAiB,MAAM,KAAK,EAAE,QAAQD,EAAA,GAAc,CAACE,GAAGC,MAAUA,IAAQ,CAAC,GAC3EC,IAAWC,EAAA,GAEXC,IAAmBR,EAAQ,KAAK,CAACS,MAC9B,OAAOA,KAAU,QACzB,GAEKC,IAAY,CAACT,MAAqD;AACtE,UAAMU,IAA4C,CAAA;AAGlD,WAAAH,IACIR,EAAQ,QAAQ,CAACY,MAAW;AAC1B,UAAI,OAAOA,KAAW,UAAU;AAE9B,cAAMC,IAAW,KAAK,KAAKD,IAAS,CAAC,GAE/BE,KAAgBF,IAAS,KAAK,IAAK;AAEzC,QAAKD,EAAgBE,CAAQ,MAC3BF,EAAgBE,CAAQ,IAAI,CAAA,IAE9BF,EAAgBE,CAAQ,EAAE,KAAKC,CAAW;AAAA,MAC5C;AAAA,IACF,CAAC,IACDd,EAAQ,QAAQ,CAACY,MAAW;AAC1B,YAAM,EAAE,gBAAAG,GAAgB,kBAAAC,EAAA,IAAqBJ;AAE7C,MAAKD,EAAgBI,CAAc,MACjCJ,EAAgBI,CAAc,IAAI,CAAA,IAEpCJ,EAAgBI,CAAc,EAAE,KAAKC,CAAgB;AAAA,IACvD,CAAC,GAGS,OAAO,KAAKL,CAAe,EAAE,OAAO,CAACM,GAAKC,GAAab,MAAU;AAC7E,YAAMU,IAAiB,OAAOG,CAAW,GACnCC,IAAoBR,EAAgBI,CAAc;AACxD,UAAIK,IAAc;AAGlB,YAAMC,IAAYF,EAAkB,SAAS,IAAIlB,EAAoB,UAAUA,EAAoB;AAGnG,UAAIkB,EAAkB,SAAS,GAAG;AAChC,cAAMG,IAAaH,EAAkB,IAAA;AACrC,QAAAC,IAAc,YAAYL,CAAc,IAAIM,CAAS,IAAIF,EAAkB,KAAK,IAAI,CAAC,IAAIlB,EAAoB,GAAG,IAAIqB,CAAU;AAAA,MAChI;AACE,QAAAF,IAAc,YAAYL,CAAc,IAAIM,CAAS,IAAIF,EAAkB,CAAC,CAAC;AAI/E,aAAO,GAAGF,CAAG,GAAGZ,IAAQ,IAAI,OAAO,EAAE,GAAGe,CAAW;AAAA,IACrD,GAAG,EAAE,EAEQ,SAAS;AAAA,EACxB,GAEMG,IAAiB,CAACC,MAClBhB,IACMR,EAAqB,SAASwB,CAAW,IAE1C,EAAAxB,EAAQ,KAAK,CAACY,MAAYA,EAAkB,WAAWY,CAAW;AAI7E,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,oBAAuB,OAAOzB,IAAsBS,EAAUT,CAAmB,IAAI,IACzG,UAAAE,EAAe,IAAI,CAACqB,MAEjB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWE;AAAA,QACTD,EAAO;AAAA,QACPH,EAAeC,CAAW,IAAIE,EAAO,uBAAuB,IAAI;AAAA,MAAA;AAAA,MAElE,oBAAgB;AAAA,IAAA;AAAA,IACX,GAAGpB,CAAQ,IAAIkB,CAAW;AAAA,EAAA,CAGpC,EAAA,CACH;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProgrammeCard.js","sources":["../../../src/components/ProgrammeCard/ProgrammeCard.tsx"],"sourcesContent":["import { useNavigate } from 'react-router';\nimport { clsx } from 'clsx';\n\nimport type { ReactNode } from 'react';\n\nimport styles from './ProgrammeCard.module.css';\n\nexport interface ProgrammeCardProps {\n /** The URL to navigate to when the card is clicked. */\n href: string;\n /** The header contents. */\n header?: ReactNode;\n /** The programme details. */\n details?: ReactNode;\n isNew?: boolean;\n}\n\n/** Represents a component to render a card for a programme. */\nexport const ProgrammeCard = ({ href, header, details, isNew }: ProgrammeCardProps) => {\n const navigate = useNavigate();\n\n return (\n <a\n className={clsx(styles['programme-card'], isNew && styles['programme-card--new'])}\n href={href}\n onClick={(event) => {\n // lets browser handle new tab\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0) {\n return;\n }\n event.preventDefault();\n // lets react-router handle SPA-style navigation\n navigate(href);\n }}\n >\n {header}\n {details && <hr className={styles['programme-card__divider']} />}\n {details}\n </a>\n );\n};\n"],"names":["ProgrammeCard","href","header","details","isNew","navigate","useNavigate","jsxs","clsx","styles","event","jsx"],"mappings":";;;;;;;GAkBaA,IAAgB,CAAC,EAAE,MAAAC,GAAM,QAAAC,GAAQ,SAAAC,GAAS,OAAAC,QAAgC;AACrF,QAAMC,IAAWC,EAAA;AAEjB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKC,EAAO,gBAAgB,GAAGL,KAASK,EAAO,qBAAqB,CAAC;AAAA,MAChF,MAAAR;AAAA,MACA,SAAS,CAACS,MAAU;AAElB,QAAIA,EAAM,WAAWA,EAAM,WAAWA,EAAM,YAAYA,EAAM,UAAUA,EAAM,WAAW,MAGzFA,EAAM,eAAA,GAENL,EAASJ,CAAI;AAAA,MACf;AAAA,MAEC,UAAA;AAAA,QAAAC;AAAA,QACAC,KAAW,gBAAAQ,EAAC,MAAA,EAAG,WAAWF,EAAO,yBAAyB,GAAG;AAAA,QAC7DN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioButton.js","sources":["../../../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes } from 'react';\n\nimport styles from './RadioButton.module.css';\n\nexport interface RadioButtonProps extends InputHTMLAttributes<HTMLInputElement> {\n /** The id of the element. */\n id: string;\n /** The label of the radio button. */\n label: string;\n /** The description that is shown under the label. */\n description?: string;\n /** The gap between the label and radio button. */\n gap?: 'normal' | 'large';\n}\n\n/** Represents a component for a radio button. */\nexport const RadioButton = ({ id, label, gap = 'normal', description, ...restProps }: RadioButtonProps) => (\n <div className={clsx(styles['radio-button'], styles[`radio-button--gap-${gap}`])}>\n <input\n className={styles['radio-button__input']}\n {...restProps}\n id={id}\n type=\"radio\"\n aria-describedby={description ? `${id}-description` : undefined}\n />\n <label className={styles['radio-button__label']} htmlFor={id}>\n {label}\n </label>\n {description && (\n <p id={`${id}-description`} className={styles['radio-button__description']}>\n {description}\n </p>\n )}\n </div>\n);\n"],"names":["RadioButton","id","label","gap","description","restProps","clsx","styles","jsx"],"mappings":";;;;;;;;GAkBaA,IAAc,CAAC,EAAE,IAAAC,GAAI,OAAAC,GAAO,KAAAC,IAAM,UAAU,aAAAC,GAAa,GAAGC,0BACtE,OAAA,EAAI,WAAWC,EAAKC,EAAO,cAAc,GAAGA,EAAO,qBAAqBJ,CAAG,EAAE,CAAC,GAC7E,UAAA;AAAA,EAAA,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWD,EAAO,qBAAqB;AAAA,MACtC,GAAGF;AAAA,MACJ,IAAAJ;AAAA,MACA,MAAK;AAAA,MACL,oBAAkBG,IAAc,GAAGH,CAAE,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAAA,EAExD,gBAAAO,EAAC,WAAM,WAAWD,EAAO,qBAAqB,GAAG,SAASN,GACvD,UAAAC,GACH;AAAA,EACCE,KACC,gBAAAI,EAAC,KAAA,EAAE,IAAI,GAAGP,CAAE,gBAAgB,WAAWM,EAAO,2BAA2B,GACtE,UAAAH,EAAA,CACH;AAAA,EAAA,CAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioGroup.js","sources":["../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport styles from './RadioGroup.module.css';\n\nimport { RadioButton } from 'components/RadioButton/RadioButton';\n\ntype Option = {\n id: string;\n titleLabel: string;\n descriptionLabel?: string;\n value: string;\n};\n\nexport interface RadioGroupProps {\n /** The label of the radio group */\n label: string;\n /** Radio options. */\n options: Option[];\n /** Returns selected values as string */\n onChange: (value: string) => void;\n /** If true, the whole group will be disabled. */\n disabled?: boolean;\n}\n\n/** Represents a component for dispalying grouped styled radio buttons. */\nexport const RadioGroup = ({ label, options, onChange, disabled }: RadioGroupProps) => {\n const [selectedValue, setSelectedValue] = useState<string | null>(null);\n\n const handleSelection = (value: string) => {\n if (!disabled) {\n setSelectedValue(value);\n onChange(value);\n }\n };\n\n return (\n <div className={styles['radio-group__wrapper']}>\n <h2 className={styles['radio-group__header']}>{label}</h2>\n <div className={styles['radio-group']}>\n {options.map(({ id, descriptionLabel, titleLabel, value }) => (\n <div\n className={clsx(styles['radio-group__option'], {\n [styles['radio-group__option--disabled']]: disabled,\n })}\n key={id}\n onClick={() => handleSelection(value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelection(value);\n }\n }}\n role=\"presentation\"\n >\n <RadioButton\n id={id}\n label={titleLabel}\n description={descriptionLabel}\n name={label}\n onChange={(event) => {\n handleSelection(event.target.value);\n }}\n value={value}\n checked={selectedValue === value}\n disabled={disabled}\n gap=\"large\"\n />\n </div>\n ))}\n </div>\n </div>\n );\n};\n"],"names":["RadioGroup","label","options","onChange","disabled","selectedValue","setSelectedValue","useState","handleSelection","value","jsxs","styles","jsx","id","descriptionLabel","titleLabel","clsx","event","RadioButton"],"mappings":";;;;;;;;;;GA0BaA,IAAa,CAAC,EAAE,OAAAC,GAAO,SAAAC,GAAS,UAAAC,GAAU,UAAAC,QAAgC;AACrF,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAwB,IAAI,GAEhEC,IAAkB,CAACC,MAAkB;AACzC,IAAKL,MACHE,EAAiBG,CAAK,GACtBN,EAASM,CAAK;AAAA,EAElB;AAEA,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,sBAAsB,GAC3C,UAAA;AAAA,IAAA,gBAAAC,EAAC,MAAA,EAAG,WAAWD,EAAO,qBAAqB,GAAI,UAAAV,GAAM;AAAA,IACrD,gBAAAW,EAAC,OAAA,EAAI,WAAWD,EAAO,aAAa,GACjC,UAAAT,EAAQ,IAAI,CAAC,EAAE,IAAAW,GAAI,kBAAAC,GAAkB,YAAAC,GAAY,OAAAN,QAChD,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWI,EAAKL,EAAO,qBAAqB,GAAG;AAAA,UAC7C,CAACA,EAAO,+BAA+B,CAAC,GAAGP;AAAA,QAAA,CAC5C;AAAA,QAED,SAAS,MAAMI,EAAgBC,CAAK;AAAA,QACpC,WAAW,CAACQ,MAAU;AACpB,WAAIA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,QACzCT,EAAgBC,CAAK;AAAA,QAEzB;AAAA,QACA,MAAK;AAAA,QAEL,UAAA,gBAAAG;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,IAAAL;AAAA,YACA,OAAOE;AAAA,YACP,aAAaD;AAAA,YACb,MAAMb;AAAA,YACN,UAAU,CAACgB,MAAU;AACnB,cAAAT,EAAgBS,EAAM,OAAO,KAAK;AAAA,YACpC;AAAA,YACA,OAAAR;AAAA,YACA,SAASJ,MAAkBI;AAAA,YAC3B,UAAAL;AAAA,YACA,KAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MACN;AAAA,MArBKS;AAAA,IAAA,CAuBR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioTabSelector.js","sources":["../../../src/components/RadioTabSelector/RadioTabSelector.tsx"],"sourcesContent":["import { clsx } from 'clsx';\r\nimport { useState } from 'react';\r\n\r\nimport type { ChangeEvent } from 'react';\r\nimport type { IconProps } from 'components';\r\n\r\nimport styles from './RadioTabSelector.module.css';\r\n\r\nimport { ControlsButton, FeedbackBox, Label } from 'components';\r\n\r\ntype ButtonProps = {\r\n label: string;\r\n value: string;\r\n iconName?: IconProps['name'];\r\n disabled?: boolean;\r\n};\r\n\r\nexport interface RadioTabSelectorProps {\r\n /** array with button objects with label, value and optional iconName or disabled-state */\r\n buttons: ButtonProps[];\r\n /** name of the radiogroup */\r\n radioGroupName: string;\r\n /** innitial value */\r\n defaultValue?: string;\r\n /** label takst */\r\n label?: string;\r\n /** 'top' | 'left' */\r\n labelPosition?: 'top' | 'left';\r\n /** show red star */\r\n required?: boolean;\r\n /** error text to display if set */\r\n notValidatedText?: string;\r\n /** The callback function that is invoked when the radio tab selector changes value. */\r\n onSetValue: (value: string | null) => void;\r\n}\r\n\r\nexport const RadioTabSelector = ({\r\n buttons,\r\n radioGroupName,\r\n defaultValue,\r\n label,\r\n labelPosition = 'top',\r\n required = false,\r\n notValidatedText = '',\r\n onSetValue,\r\n}: RadioTabSelectorProps) => {\r\n const [currentValue, setCurrentValue] = useState<string | null>(defaultValue || null);\r\n\r\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\r\n setCurrentValue(event.target.value);\r\n onSetValue(event.target.value);\r\n };\r\n\r\n return (\r\n <div\r\n className={clsx(\r\n styles['radio-tab-selector-button-bar__container'],\r\n styles[`radio-tab-selector-button-bar__container--label-${labelPosition}`]\r\n )}\r\n >\r\n {label && (\r\n <Label htmlFor=\"\" required={required}>\r\n {label}\r\n </Label>\r\n )}\r\n <div className={styles['radio-tab-selector-button-bar__row-container']}>\r\n <div\r\n className={clsx(styles['radio-tab-selector-button-bar__row'], {\r\n [styles['radio-tab-selector-button-bar__row--not-validated']]: notValidatedText,\r\n })}\r\n >\r\n {buttons.map(({ label, value, iconName, disabled }) => (\r\n <ControlsButton\r\n type=\"radio\"\r\n name={radioGroupName}\r\n key={`${value}`}\r\n label={label}\r\n value={value}\r\n iconName={iconName}\r\n checked={currentValue === value}\r\n disabled={disabled}\r\n onSetValue={handleChange}\r\n />\r\n ))}\r\n </div>\r\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["RadioTabSelector","buttons","radioGroupName","defaultValue","label","labelPosition","required","notValidatedText","onSetValue","currentValue","setCurrentValue","useState","handleChange","event","jsxs","clsx","styles","jsx","Label","value","iconName","disabled","ControlsButton","FeedbackBox"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCaA,KAAmB,CAAC;AAAA,EAC/B,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,UAAAC,IAAW;AAAA,EACX,kBAAAC,IAAmB;AAAA,EACnB,YAAAC;AACF,MAA6B;AAC3B,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAwBR,KAAgB,IAAI,GAE9ES,IAAe,CAACC,MAAyC;AAC7D,IAAAH,EAAgBG,EAAM,OAAO,KAAK,GAClCL,EAAWK,EAAM,OAAO,KAAK;AAAA,EAC/B;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO,0CAA0C;AAAA,QACjDA,EAAO,mDAAmDX,CAAa,EAAE;AAAA,MAAA;AAAA,MAG1E,UAAA;AAAA,QAAAD,KACC,gBAAAa,EAACC,GAAA,EAAM,SAAQ,IAAG,UAAAZ,GACf,UAAAF,GACH;AAAA,QAEF,gBAAAU,EAAC,OAAA,EAAI,WAAWE,EAAO,8CAA8C,GACnE,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWF,EAAKC,EAAO,oCAAoC,GAAG;AAAA,gBAC5D,CAACA,EAAO,mDAAmD,CAAC,GAAGT;AAAA,cAAA,CAChE;AAAA,cAEA,UAAAN,EAAQ,IAAI,CAAC,EAAE,OAAAG,GAAO,OAAAe,GAAO,UAAAC,GAAU,UAAAC,EAAA,MACtC,gBAAAJ;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,MAAMpB;AAAA,kBAEN,OAAOE;AAAAA,kBACP,OAAAe;AAAA,kBACA,UAAAC;AAAA,kBACA,SAASX,MAAiBU;AAAA,kBAC1B,UAAAE;AAAA,kBACA,YAAYT;AAAA,gBAAA;AAAA,gBANP,GAAGO,CAAK;AAAA,cAAA,CAQhB;AAAA,YAAA;AAAA,UAAA;AAAA,UAEFZ,MAAqB,MAAM,gBAAAU,EAACM,KAAY,OAAM,SAAQ,UAAUhB,EAAA,CAAkB;AAAA,QAAA,EAAA,CACrF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Repeater.js","sources":["../../../src/components/Repeater/Repeater.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport type { PropsWithChildren } from 'react';\n\nimport styles from './Repeater.module.css';\n\nexport interface RepeaterProps {\n /** The direction of the items. */\n flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse';\n /** The gap between the items. */\n gap?: '025' | '050' | '075' | '100' | '150' | '200';\n}\n\n/** Represents a component to show a list of items. */\nexport const Repeater = ({ children, flexDirection = 'column', gap = '050' }: PropsWithChildren<RepeaterProps>) => {\n return (\n <div className={clsx(styles['repeater'], styles[`repeater--${flexDirection}`], styles[`repeater--gap-${gap}`])}>\n {children}\n </div>\n );\n};\n"],"names":["Repeater","children","flexDirection","gap","clsx","styles"],"mappings":";;;;;;;;;;;;;;GAcaA,IAAW,CAAC,EAAE,UAAAC,GAAU,eAAAC,IAAgB,UAAU,KAAAC,IAAM,8BAEhE,OAAA,EAAI,WAAWC,EAAKC,EAAO,UAAaA,EAAO,aAAaH,CAAa,EAAE,GAAGG,EAAO,iBAAiBF,CAAG,EAAE,CAAC,GAC1G,UAAAF,GACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditorHeader.js","sources":["../../../../src/components/RteEditor/EditorHeader/EditorHeader.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport styles from './EditorHeader.module.css';\n\nimport { Label } from 'components';\n\ninterface EditorHeaderProps {\n label: string;\n info?: string;\n required?: boolean;\n}\n\nexport const EditorHeader = ({ label, info = '', required = false }: EditorHeaderProps) => {\n const infoId = `info_${useId()}`;\n\n return (\n <div className={styles['editor-header__container']}>\n {label !== '' && (\n <div>\n <Label htmlFor={infoId} required={required}>\n {label}\n </Label>\n </div>\n )}\n {info !== '' && <div className={styles['editor-header__info']} dangerouslySetInnerHTML={{ __html: info }} />}\n </div>\n );\n};\n"],"names":["EditorHeader","label","info","required","infoId","useId","jsxs","styles","jsx","Label"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAYaA,IAAe,CAAC,EAAE,OAAAC,GAAO,MAAAC,IAAO,IAAI,UAAAC,IAAW,SAA+B;AACzF,QAAMC,IAAS,QAAQC,EAAA,CAAO;AAE9B,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,0BAA0B,GAC9C,UAAA;AAAA,IAAAN,MAAU,wBACR,OAAA,EACC,UAAA,gBAAAO,EAACC,KAAM,SAASL,GAAQ,UAAAD,GACrB,UAAAF,EAAA,CACH,EAAA,CACF;AAAA,IAEDC,MAAS,MAAM,gBAAAM,EAAC,OAAA,EAAI,WAAWD,EAAO,qBAAqB,GAAG,yBAAyB,EAAE,QAAQL,EAAA,EAAK,CAAG;AAAA,EAAA,GAC5G;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AddCatalogueLinkForm.js","sources":["../../../../../../src/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.tsx"],"sourcesContent":["import { useEffect, useId, useRef } from 'react';\r\n\r\nimport type { KeyboardEvent } from 'react';\r\n\r\nimport styles from './AddCatalogueLinkForm.module.css';\r\n\r\nimport { Button } from 'components/Buttons';\r\nimport { FormField } from 'components/FormField';\r\nimport { Label } from 'components/Label';\r\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\r\nimport { InputField } from 'components/InputField';\r\nimport { useLanguage } from 'components/RteEditor/Providers/LanguageProvider';\r\nimport { Repeater } from 'components/Repeater';\r\n\r\ntype SearchResult = {\r\n code: string;\r\n id: string;\r\n name: {\r\n EN: string;\r\n NL: string;\r\n };\r\n programmeType: string;\r\n};\r\n\r\nexport type SearchResponse = {\r\n state: 'idle' | 'pending' | 'ready';\r\n results: SearchResult[];\r\n};\r\n\r\ninterface AddCatalogueLinkFormProps {\r\n linkType: 'course' | 'programme';\r\n onCloseHandler: () => void;\r\n onSearchHandler: (query: string, type: 'course' | 'programme') => void;\r\n searchResponse?: SearchResponse;\r\n onSelect?: (code: string, label: string, type: 'course' | 'programme') => void;\r\n}\r\n\r\nexport const AddCatalogueLinkForm = ({\r\n linkType,\r\n onCloseHandler,\r\n onSearchHandler,\r\n searchResponse,\r\n onSelect,\r\n}: AddCatalogueLinkFormProps) => {\r\n const t = useTranslation();\r\n const searchId = `search_${useId()}`;\r\n const searchFieldRef = useRef<HTMLInputElement>(null);\r\n const resultListRef = useRef<HTMLDivElement>(null);\r\n const { currentLanguage } = useLanguage();\r\n\r\n const handleSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const query = event.target.value;\r\n if (onSearchHandler) {\r\n onSearchHandler(query, linkType);\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n onCloseHandler();\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n const container = resultListRef.current;\r\n const firstFocusable = container?.querySelector<HTMLElement>('button');\r\n firstFocusable?.focus();\r\n }\r\n };\r\n\r\n const onResultKeyDown = (\r\n event: KeyboardEvent<HTMLButtonElement>,\r\n code: string,\r\n name: string,\r\n linkType: 'course' | 'programme'\r\n ) => {\r\n switch (event.key) {\r\n case 'Escape':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleClose();\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n onSelect && onSelect(code, name, linkType);\r\n break;\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const nextElement = event.currentTarget.nextElementSibling;\r\n (nextElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const previousElement = event.currentTarget.previousElementSibling;\r\n (previousElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'Tab':\r\n event.preventDefault();\r\n handleClose();\r\n break;\r\n default:\r\n event.preventDefault();\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (searchFieldRef.current) {\r\n onSearchHandler('', linkType);\r\n searchFieldRef.current.value = '';\r\n searchFieldRef.current.focus();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <div className={styles['courselinkform']}>\r\n <Repeater gap=\"050\">\r\n <FormField className={styles['courselinkform__input-field']}>\r\n <Label htmlFor={searchId}>\r\n {t.cataloguelinks[linkType === 'course' ? 'searchCourseFieldLabel' : 'searchProgrammeFieldLabel']}\r\n </Label>\r\n <div className={styles['linkform__input-url-wrapper']}>\r\n <InputField\r\n id={searchId}\r\n placeholder={t.cataloguelinks.searchFieldPlaceholder}\r\n onChange={handleSearch}\r\n onKeyDown={handleKeyDown}\r\n ref={searchFieldRef}\r\n aria-label={t.aria.labels.searchField}\r\n />\r\n </div>\r\n </FormField>\r\n {searchResponse && searchResponse.state === 'pending' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.loading}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length === 0 && searchResponse.state === 'ready' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.noResults}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length > 0 && (\r\n <div className={styles['courselinkform__results-wrapper']}>\r\n <div className={styles['courselinkform__results-header']}>\r\n <span>\r\n {\r\n t.cataloguelinks[\r\n linkType === 'course' ? 'resultCourseListCatalogNumber' : 'resultProgrammeListCatalogNumber'\r\n ]\r\n }\r\n </span>\r\n <span>{t.cataloguelinks.resultListName}</span>\r\n </div>\r\n <div className={styles['courselinkform__results']} ref={resultListRef}>\r\n {searchResponse.results.map(({ id, code, name }) => (\r\n <button\r\n key={id}\r\n type=\"button\"\r\n className={styles['courselinkform__result-item']}\r\n onClick={() => onSelect && onSelect(code, name[currentLanguage], linkType)}\r\n onKeyDown={(event) => onResultKeyDown(event, code, name[currentLanguage], linkType)}\r\n tabIndex={0}\r\n aria-label={`${code} ${name[currentLanguage]}`}\r\n >\r\n <span>{code}</span>\r\n <span>{name[currentLanguage]}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </Repeater>\r\n <div className={styles['courselinkform__footer']}>\r\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\r\n {t.common.cancel}\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["AddCatalogueLinkForm","linkType","onCloseHandler","onSearchHandler","searchResponse","onSelect","t","useTranslation","searchId","useId","searchFieldRef","useRef","resultListRef","currentLanguage","useLanguage","handleSearch","event","query","handleClose","handleKeyDown","onResultKeyDown","code","name","useEffect","jsxs","styles","Repeater","FormField","jsx","Label","InputField","id","Button"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HistoryPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { CAN_UNDO_COMMAND, CAN_REDO_COMMAND, UNDO_COMMAND, REDO_COMMAND } from 'lexical';\nimport { useEffect, useState } from 'react';\n\nimport { Icon } from 'components';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nexport const HistoryPlugin = () => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n\n const handleUndo = () => {\n editor.dispatchCommand(UNDO_COMMAND, undefined);\n };\n\n const handleRedo = () => {\n editor.dispatchCommand(REDO_COMMAND, undefined);\n };\n\n useEffect(() => {\n return editor.registerCommand<boolean>(\n CAN_UNDO_COMMAND,\n (payload) => {\n setCanUndo(payload);\n return false;\n },\n 1\n );\n }, [editor]);\n\n useEffect(() => {\n return editor.registerCommand<boolean>(\n CAN_REDO_COMMAND,\n (payload) => {\n setCanRedo(payload);\n return false;\n },\n 1\n );\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n <button\n onClick={handleUndo}\n className={clsx(styles['editor__toolbar-button'], styles[`editor__toolbar-button--undo`])}\n aria-label={t.aria.labels.undo}\n aria-keyshortcuts={t.aria.keyshortcuts.undo}\n disabled={!canUndo}\n title={t.format.undoTooltip}\n type=\"button\"\n >\n <Icon name=\"StepBack\" size={24} />\n </button>\n <button\n onClick={handleRedo}\n className={clsx(styles['editor__toolbar-button'], styles[`editor__toolbar-button--redo`])}\n aria-label={t.aria.labels.redo}\n aria-keyshortcuts={t.aria.keyshortcuts.redo}\n disabled={!canRedo}\n title={t.format.redoTooltip}\n type=\"button\"\n >\n <Icon name=\"StepForwards\" size={24} />\n </button>\n </div>\n );\n};\n"],"names":["HistoryPlugin","t","useTranslation","editor","useLexicalComposerContext","canUndo","setCanUndo","useState","canRedo","setCanRedo","handleUndo","UNDO_COMMAND","handleRedo","REDO_COMMAND","useEffect","CAN_UNDO_COMMAND","payload","CAN_REDO_COMMAND","jsxs","styles","jsx","clsx","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAMA,KAAgB,MAAM;AACjC,QAAMC,IAAIC,EAAA,GACJ,CAACC,CAAM,IAAIC,EAAA,GACX,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtC,CAACC,GAASC,CAAU,IAAIF,EAAS,EAAK,GAEtCG,IAAa,MAAM;AACvB,IAAAP,EAAO,gBAAgBQ,GAAc,MAAS;AAAA,EAChD,GAEMC,IAAa,MAAM;AACvB,IAAAT,EAAO,gBAAgBU,GAAc,MAAS;AAAA,EAChD;AAEA,SAAAC,EAAU,MACDX,EAAO;AAAA,IACZY;AAAAA,IACA,CAACC,OACCV,EAAWU,CAAO,GACX;AAAA,IAET;AAAA,EAAA,GAED,CAACb,CAAM,CAAC,GAEXW,EAAU,MACDX,EAAO;AAAA,IACZc;AAAAA,IACA,CAACD,OACCP,EAAWO,CAAO,GACX;AAAA,IAET;AAAA,EAAA,GAED,CAACb,CAAM,CAAC,GAGT,gBAAAe,EAAC,OAAA,EAAI,WAAWC,EAAO,8BAA8B,GACnD,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAASV;AAAA,QACT,WAAWW,EAAKF,EAAO,wBAAwB,GAAGA,EAAO,8BAA8B,CAAC;AAAA,QACxF,cAAYlB,EAAE,KAAK,OAAO;AAAA,QAC1B,qBAAmBA,EAAE,KAAK,aAAa;AAAA,QACvC,UAAU,CAACI;AAAA,QACX,OAAOJ,EAAE,OAAO;AAAA,QAChB,MAAK;AAAA,QAEL,UAAA,gBAAAmB,EAACE,GAAA,EAAK,MAAK,YAAW,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAElC,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAASR;AAAA,QACT,WAAWS,EAAKF,EAAO,wBAAwB,GAAGA,EAAO,8BAA8B,CAAC;AAAA,QACxF,cAAYlB,EAAE,KAAK,OAAO;AAAA,QAC1B,qBAAmBA,EAAE,KAAK,aAAa;AAAA,QACvC,UAAU,CAACO;AAAA,QACX,OAAOP,EAAE,OAAO;AAAA,QAChB,MAAK;AAAA,QAEL,UAAA,gBAAAmB,EAACE,GAAA,EAAK,MAAK,gBAAe,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EACtC,GACF;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AddLinkFrom.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkContextMenu.js","sources":["../../../../../../src/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.tsx"],"sourcesContent":["import { forwardRef, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';\n\nimport styles from './LinkContextMenu.module.css';\n\nimport { ensureHttps } from 'components/RteEditor/Plugins/LinkPlugin/helpers';\nimport { Icon } from 'components/Icon';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\nimport { Button } from 'components/Buttons';\n\ninterface LinkContextMenuProps {\n url: string;\n onSave: (url: string) => void;\n onDelete: () => void;\n onClose: () => void;\n}\n\nexport interface linkFormMethods {\n clearForm: () => void;\n}\n\nexport const LinkContextMenu = forwardRef(({ url, onSave, onDelete, onClose }: LinkContextMenuProps, ref) => {\n const t = useTranslation();\n const [link, setLink] = useState(url);\n const [editable, setEditable] = useState(false);\n const linkRef = useRef<HTMLInputElement>(null);\n\n const reset = () => {\n setLink(url);\n setEditable(false);\n linkRef.current?.blur();\n };\n\n const handleSave = () => {\n onSave(link);\n reset();\n };\n\n const handleDelete = () => {\n onDelete();\n setLink('');\n reset();\n };\n\n const handleClose = () => {\n reset();\n onClose();\n };\n\n const handlePreview = () => {\n window.open(ensureHttps(url), '_blank');\n };\n\n useImperativeHandle(ref, () => ({\n clearForm: reset,\n }));\n\n useLayoutEffect(() => {\n setLink(url);\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.key === 'L') {\n event.preventDefault();\n setEditable(true);\n setTimeout(() => linkRef.current?.focus(), 0);\n }\n\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit1') {\n event.preventDefault();\n handlePreview();\n setTimeout(() => linkRef.current?.focus(), 0);\n }\n\n if (event.ctrlKey && event.shiftKey && event.key === 'Q') {\n event.preventDefault();\n handleDelete();\n setTimeout(() => linkRef.current?.focus(), 0);\n }\n };\n\n window.addEventListener('keydown', handleKeydown);\n\n return () => {\n window.removeEventListener('keydown', handleKeydown);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url]);\n\n return (\n <>\n <div className={styles['link-context-menu__wrapper']}>\n <input\n type=\"text\"\n value={link}\n onChange={(event) => setLink(event.target.value)}\n className={styles['link-context-menu__input']}\n disabled={!editable}\n ref={linkRef}\n />\n {!editable && (\n <button\n type=\"button\"\n className={styles['link-context-menu__button']}\n onClick={() => setEditable(true)}\n title={t.links.linkEdittip}\n aria-label={t.aria.labels.link}\n aria-keyshortcuts={t.aria.keyshortcuts.editlink}\n >\n <Icon name=\"Pencil\" size={20} />\n </button>\n )}\n <button\n type=\"button\"\n className={styles['link-context-menu__button']}\n onClick={handlePreview}\n title={t.links.linkTesttip}\n aria-label={t.aria.labels.link}\n aria-keyshortcuts={t.aria.keyshortcuts.testlink}\n >\n <Icon name=\"ArrowTopRightOnSquare\" size={20} />\n </button>\n <button\n type=\"button\"\n className={styles['link-context-menu__button']}\n onClick={handleDelete}\n title={t.links.linkDeletetip}\n aria-label={t.aria.labels.link}\n aria-keyshortcuts={t.aria.keyshortcuts.deletelink}\n >\n <Icon name=\"LinkSlash\" size={20} />\n </button>\n </div>\n {editable && (\n <div className={styles['link-context-menu__actions']}>\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\n {t.common.cancel}\n </Button>\n <Button variant={'primary'} onClick={handleSave} aria-label={t.aria.labels.linkOkButton} type=\"button\">\n {t.links.addLink}\n </Button>\n </div>\n )}\n </>\n );\n});\n"],"names":["LinkContextMenu","forwardRef","url","onSave","onDelete","onClose","ref","useTranslation","link","setLink","useState","editable","setEditable","linkRef","useRef","reset","handleSave","handleDelete","handleClose","handlePreview","ensureHttps","useImperativeHandle","useLayoutEffect","handleKeydown","event","jsxs","Fragment","styles","jsx","Icon","Button"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { clsx } from 'clsx';\nimport { $toggleLink, TOGGLE_LINK_COMMAND, LinkNode } from '@lexical/link';\nimport { useEffect, useRef, useState } from 'react';\nimport {\n $createTextNode,\n $getSelection,\n $isRangeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n KEY_DOWN_COMMAND,\n mergeRegister,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical';\nimport { $getNearestNodeOfType } from '@lexical/utils';\n\nimport type { ElementNode, BaseSelection } from 'lexical';\nimport type { addLinkFormMethods } from './AddLinkForm/AddLinkFrom';\nimport type { linkFormMethods } from './LinkContextMenu/LinkContextMenu';\n\nimport { AddLinkForm } from './AddLinkForm/AddLinkFrom';\nimport { ensureHttps } from './helpers';\nimport { LinkContextMenu } from './LinkContextMenu/LinkContextMenu';\n\nimport { useFlyout } from 'components/RteEditor/hooks/useFlyout';\nimport { Icon } from 'components';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nconst PREVENT_OPEN_DELAY = 200;\n\nexport interface LinkType {\n active: boolean;\n url: string;\n linktext: string;\n}\n\ntype Position = {\n top: number;\n left: number;\n};\n\ninterface LinkPluginProps {\n parentScrollPosition: number;\n}\n\nexport const LinkPlugin = ({ parentScrollPosition }: LinkPluginProps) => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const { flyout, showFlyout, hideFlyout, isVisible } = useFlyout();\n const addLinkForm = useRef<addLinkFormMethods>(undefined);\n const preventOpen = useRef(false);\n const previousLinkText = useRef('');\n const selectedText = useRef('');\n const [isLink, setIsLink] = useState<LinkType>({ active: false, url: '', linktext: '' });\n const isVisibleRef = useRef(isVisible);\n const storedSelection = useRef<BaseSelection | null>(null);\n const linkButtonRef = useRef<HTMLButtonElement>(null);\n const editLinkForm = useRef<linkFormMethods>(undefined);\n\n const storeCursorPosition = () => {\n editor.update(() => {\n const selection = $getSelection();\n storedSelection.current = selection;\n });\n };\n\n const rePositionCursor = () => {\n editor.update(() => {\n if (storedSelection.current) {\n $setSelection(storedSelection.current);\n }\n });\n };\n\n const openContextMenu = (url: string, position: Position) => {\n showFlyout({\n position,\n children: (\n <LinkContextMenu\n url={url}\n onSave={(url) => insertLink(url, '')}\n onDelete={() => removeLink()}\n onClose={closeContextMenu}\n ref={editLinkForm}\n />\n ),\n });\n };\n\n const closeContextMenu = () => {\n editLinkForm.current?.clearForm();\n hideFlyout();\n rePositionCursor();\n };\n\n const openFlyout = () => {\n const rect = linkButtonRef.current?.getBoundingClientRect();\n if (!preventOpen.current && rect) {\n storeCursorPosition();\n showFlyout({ position: { top: rect.bottom, left: rect.left }, ...flyoutOptions });\n setTimeout(() => addLinkForm.current?.setDefaults('', selectedText.current), 0);\n }\n };\n\n const closeFlyout = () => {\n hideFlyout();\n rePositionCursor();\n };\n\n const insertLink = (url: string, linktext: string) => {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const linkNode = $getNearestNodeOfType(anchorNode, LinkNode);\n\n if (linktext && linktext !== '') {\n if (linkNode) {\n const newTextNode = $createTextNode(linktext);\n linkNode.replace(newTextNode);\n newTextNode.select();\n }\n if (linktext !== previousLinkText.current && previousLinkText.current === '') {\n const { anchor, focus } = selection;\n selection.insertText(linktext);\n anchor.offset -= linktext.length;\n focus.offset = anchor.offset + linktext.length;\n }\n }\n $toggleLink(ensureHttps(url), { target: '_blank' });\n }\n\n closeFlyout();\n });\n };\n\n const removeLink = (): void => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n closeContextMenu();\n };\n\n const flyoutOptions = {\n children: (\n <AddLinkForm\n isLink={isLink}\n onCloseHandler={closeFlyout}\n onSaveHandler={(url, linktext) => insertLink(url, linktext)}\n ref={addLinkForm}\n />\n ),\n };\n\n useEffect(() => {\n if (!isVisible) {\n addLinkForm.current?.clearForm();\n previousLinkText.current = selectedText.current = '';\n setTimeout(() => (preventOpen.current = false), PREVENT_OPEN_DELAY);\n } else {\n preventOpen.current = true;\n addLinkForm.current?.focusFirstField();\n }\n }, [addLinkForm, isVisible]);\n\n useEffect(() => {\n const handleSelectionClickOrChange = (selection: BaseSelection | null) => {\n if ($isRangeSelection(selection) && selection.isCollapsed()) {\n const anchorNode = selection.anchor.getNode() as ElementNode;\n const node = $getNearestNodeOfType(anchorNode, LinkNode);\n\n if (node) {\n const domNode = editor.getElementByKey(selection.anchor.getNode().getKey());\n const position = domNode\n ? { top: domNode.getBoundingClientRect().bottom, left: domNode.getBoundingClientRect().left }\n : { top: 0, left: 0 };\n openContextMenu(node.getURL(), position);\n return true;\n }\n }\n return false;\n };\n\n const unregisterSelect = editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const selection = $getSelection();\n selectedText.current = selection?.getTextContent() ?? '';\n handleSelectionClickOrChange(selection);\n return false;\n },\n 0\n );\n\n const unregisterClick = editor.registerCommand(\n CLICK_COMMAND,\n (event) => {\n const selection = $getSelection();\n storeCursorPosition();\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n handleSelectionClickOrChange(selection);\n return false;\n },\n 0\n );\n\n return () => {\n unregisterClick();\n unregisterSelect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.key === 'U') {\n const selection = $getSelection();\n storeCursorPosition();\n\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode() as ElementNode;\n const node = $getNearestNodeOfType(anchorNode, LinkNode);\n\n const openFlyoutWithDefaults = (url = '', linkText = '') => {\n openFlyout();\n setTimeout(() => addLinkForm.current?.setDefaults(url, linkText), 0);\n };\n\n if (node) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n previousLinkText.current = node.getTextContent();\n openFlyoutWithDefaults(node.getURL(), node.getTextContent());\n\n return true;\n }\n\n const selectedTextContent = selection.getTextContent();\n if (selectedTextContent !== '') {\n selectedText.current = selectedTextContent;\n openFlyoutWithDefaults('', selectedText.current);\n\n return true;\n }\n\n openFlyout();\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n setIsLink(\n editorState.read(() => {\n const selection = $getSelection();\n storeCursorPosition();\n\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode() as ElementNode;\n const node = $getNearestNodeOfType(anchorNode, LinkNode);\n\n if (node) {\n return {\n active: true,\n url: node.getURL(),\n linktext: node.getTextContent(),\n };\n }\n }\n\n return {\n active: false,\n url: '',\n linktext: '',\n };\n })\n );\n });\n\n return () => {\n removeKeyboardShortcut();\n removeStatusListener();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n useEffect(() => {\n isVisibleRef.current = isVisible;\n if (!isVisible) editLinkForm.current?.clearForm();\n }, [isVisible]);\n\n useEffect(() => {\n if (isVisible) {\n closeFlyout();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parentScrollPosition]);\n\n useEffect(() => {\n if (!isLink.active) {\n hideFlyout();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLink]);\n\n const handleOnScroll = () => {\n hideFlyout();\n };\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isVisibleRef.current) {\n event.preventDefault();\n closeFlyout();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n\n editor.registerRootListener((rootElement, prevRootElement) => {\n if (prevRootElement) {\n prevRootElement.removeEventListener('scroll', handleOnScroll);\n }\n\n if (rootElement) {\n rootElement.addEventListener('scroll', handleOnScroll);\n }\n })\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n <div className={styles['editor__toolbar-button-flyoutwrapper']}>\n <button\n onClick={openFlyout}\n title={t.links.linkTooltip}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--link`],\n isLink.active && styles['editor__toolbar-button--active']\n )}\n aria-label={t.aria.labels.link}\n aria-keyshortcuts={t.aria.keyshortcuts.link}\n type=\"button\"\n ref={linkButtonRef}\n >\n <Icon name=\"Link\" size={20} />\n </button>\n {flyout}\n </div>\n </div>\n );\n};\n"],"names":["PREVENT_OPEN_DELAY","LinkPlugin","parentScrollPosition","t","useTranslation","editor","useLexicalComposerContext","flyout","showFlyout","hideFlyout","isVisible","useFlyout","addLinkForm","useRef","preventOpen","previousLinkText","selectedText","isLink","setIsLink","useState","isVisibleRef","storedSelection","linkButtonRef","editLinkForm","storeCursorPosition","selection","$getSelection","rePositionCursor","$setSelection","openContextMenu","url","position","jsx","LinkContextMenu","insertLink","removeLink","closeContextMenu","openFlyout","rect","flyoutOptions","closeFlyout","linktext","$isRangeSelection","anchorNode","linkNode","$getNearestNodeOfType","LinkNode","newTextNode","$createTextNode","anchor","focus","$toggleLink","ensureHttps","TOGGLE_LINK_COMMAND","AddLinkForm","useEffect","handleSelectionClickOrChange","node","domNode","unregisterSelect","SELECTION_CHANGE_COMMAND","unregisterClick","CLICK_COMMAND","event","removeKeyboardShortcut","KEY_DOWN_COMMAND","openFlyoutWithDefaults","linkText","selectedTextContent","COMMAND_PRIORITY_CRITICAL","removeStatusListener","editorState","handleOnScroll","mergeRegister","COMMAND_PRIORITY_LOW","rootElement","prevRootElement","styles","jsxs","clsx","Icon"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/components/RteEditor/Plugins/LinkPlugin/helpers.ts"],"sourcesContent":["import { createLinkMatcherWithRegExp } from '@lexical/react/LexicalAutoLinkPlugin';\n\nconst PROTOCOL_REGEX = /^(http|https):\\/\\//;\n\nconst URL_REGEX =\n /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/;\n\nconst EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/;\n\nconst URL_REGEX_OR_BLANK =\n /^(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})?$/;\n\nexport const validateUrl = (url: string): boolean => {\n return url === 'https://' || URL_REGEX.test(url);\n};\n\nexport const validateUrlWithProtocol = (url: string): boolean => {\n return url === 'https://' || URL_REGEX_OR_BLANK.test(url);\n};\n\nexport const MATCHERS = [\n createLinkMatcherWithRegExp(URL_REGEX, (text: string): string => {\n return !PROTOCOL_REGEX.test(text) ? `//${text}` : text;\n }),\n createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => {\n return `mailto:${text}`;\n }),\n];\n\nexport const ensureHttps = (url: string) => {\n if (!/^https?:\\/\\//i.test(url)) {\n return `https://${url}`;\n }\n return url;\n};\n"],"names":["PROTOCOL_REGEX","URL_REGEX","EMAIL_REGEX","URL_REGEX_OR_BLANK","validateUrl","url","validateUrlWithProtocol","MATCHERS","createLinkMatcherWithRegExp","text","ensureHttps"],"mappings":";AAEA,MAAMA,IAAiB,sBAEjBC,IACJ,qNAEIC,IACJ,uJAEIC,IACJ,wNAEWC,IAAc,CAACC,MACnBA,MAAQ,cAAcJ,EAAU,KAAKI,CAAG,GAGpCC,IAA0B,CAACD,MAC/BA,MAAQ,cAAcF,EAAmB,KAAKE,CAAG,GAG7CE,IAAW;AAAA,EACtBC,EAA4BP,GAAW,CAACQ,MAC9BT,EAAe,KAAKS,CAAI,IAAkBA,IAAd,KAAKA,CAAI,EAC9C;AAAA,EACDD,EAA4BN,GAAa,CAACO,MACjC,UAAUA,CAAI,EACtB;AACH,GAEaC,IAAc,CAACL,MACrB,gBAAgB,KAAKA,CAAG,IAGtBA,IAFE,WAAWA,CAAG;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}