@uva-glass/component-library 3.30.1 → 3.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/{Lexical.prod-UwAbgYpF.js → Lexical.prod-B84LhBo3.js} +1196 -1224
  2. package/dist/Lexical.prod-B84LhBo3.js.map +1 -0
  3. package/dist/{LexicalClipboard.prod-DHIGjydG.js → LexicalClipboard.prod-DLgWWXys.js} +4 -4
  4. package/dist/{LexicalClipboard.prod-DHIGjydG.js.map → LexicalClipboard.prod-DLgWWXys.js.map} +1 -1
  5. package/dist/{LexicalLink.prod-Bsa9J7L-.js → LexicalLink.prod-DoU9RL94.js} +3 -3
  6. package/dist/{LexicalLink.prod-Bsa9J7L-.js.map → LexicalLink.prod-DoU9RL94.js.map} +1 -1
  7. package/dist/{LexicalList.prod-jxGuZd4b.js → LexicalList.prod-Cw2TK1jY.js} +4 -4
  8. package/dist/{LexicalList.prod-jxGuZd4b.js.map → LexicalList.prod-Cw2TK1jY.js.map} +1 -1
  9. package/dist/{LexicalSelection.prod-xk5MiZnZ.js → LexicalSelection.prod-TB5pn9xc.js} +2 -2
  10. package/dist/{LexicalSelection.prod-xk5MiZnZ.js.map → LexicalSelection.prod-TB5pn9xc.js.map} +1 -1
  11. package/dist/{LexicalTable.prod-BSjs04iE.js → LexicalTable.prod-9xjyWB0C.js} +4 -4
  12. package/dist/{LexicalTable.prod-BSjs04iE.js.map → LexicalTable.prod-9xjyWB0C.js.map} +1 -1
  13. package/dist/{LexicalUtils.prod-cQutjKA3.js → LexicalUtils.prod-CD3xGFhm.js} +2 -2
  14. package/dist/{LexicalUtils.prod-cQutjKA3.js.map → LexicalUtils.prod-CD3xGFhm.js.map} +1 -1
  15. package/dist/Sortable.module--kgnzOjW.js +26 -0
  16. package/dist/Sortable.module--kgnzOjW.js.map +1 -0
  17. package/dist/SortableProvider-DisCfTTN.js +160 -0
  18. package/dist/SortableProvider-DisCfTTN.js.map +1 -0
  19. package/dist/{TablePlugin-NmJsn2fm.js → TablePlugin-oF-gInNx.js} +86 -91
  20. package/dist/{TablePlugin-NmJsn2fm.js.map → TablePlugin-oF-gInNx.js.map} +1 -1
  21. package/dist/assets/Backdrop.css +1 -1
  22. package/dist/assets/Button.css +1 -1
  23. package/dist/assets/ClipboardButton.css +1 -1
  24. package/dist/assets/ExpandableInfoPanel.css +1 -1
  25. package/dist/assets/FormInput.css +1 -1
  26. package/dist/assets/IconButton.css +1 -1
  27. package/dist/assets/Input.css +1 -1
  28. package/dist/assets/InputField.css +1 -1
  29. package/dist/assets/LinkContextMenu.css +1 -1
  30. package/dist/assets/Notification.css +1 -1
  31. package/dist/assets/OverlayCloseButton.css +1 -1
  32. package/dist/assets/OverlayStepBar.css +1 -1
  33. package/dist/assets/PageOverlay.css +1 -1
  34. package/dist/assets/Sortable.css +1 -1
  35. package/dist/assets/VarIndicator.css +1 -1
  36. package/dist/components/Accordion/Accordion.test.js +3 -3
  37. package/dist/components/AccordionCard/AccordionCard.test.js +3 -3
  38. package/dist/components/ActionList/ActionList.test.js +3 -3
  39. package/dist/components/AppStatusBar/AppStatusBar.test.js +2 -2
  40. package/dist/components/Attention/Attention.test.js +2 -2
  41. package/dist/components/Backdrop/Backdrop.test.js +2 -2
  42. package/dist/components/Buttons/Button.stories.js +1 -1
  43. package/dist/components/Buttons/Button.test.js +2 -2
  44. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  45. package/dist/components/Buttons/LinkButton.test.js +2 -2
  46. package/dist/components/Buttons/MenuButton.stories.js +5 -5
  47. package/dist/components/Buttons/MenuButton.test.js +2 -2
  48. package/dist/components/Card/Card.test.js +2 -2
  49. package/dist/components/Checkbox/Checkbox.stories.js +1 -1
  50. package/dist/components/Checkbox/Checkbox.test.js +3 -3
  51. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +1 -1
  52. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +2 -2
  53. package/dist/components/CheckboxTree/CheckboxTree.js +58 -59
  54. package/dist/components/CheckboxTree/CheckboxTree.js.map +1 -1
  55. package/dist/components/CheckboxTree/CheckboxTree.stories.js +58 -59
  56. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  57. package/dist/components/Chip/Chip.stories.js +5 -5
  58. package/dist/components/ControlsButton/ControlsButton.stories.js +5 -5
  59. package/dist/components/Drawer/Drawer.stories.js +1 -1
  60. package/dist/components/FeedbackBar/FeedbackBar.test.js +2 -2
  61. package/dist/components/FormInput/FormInput.js +3 -3
  62. package/dist/components/FormInput/FormInput.stories.js +1 -1
  63. package/dist/components/HorizontalList/HorizontalList.js +7 -7
  64. package/dist/components/HorizontalList/HorizontalList.js.map +1 -1
  65. package/dist/components/IconButton/IconButton.stories.js +1 -1
  66. package/dist/components/InputField/InputField.stories.js +10 -10
  67. package/dist/components/Label/Label.test.js +2 -2
  68. package/dist/components/ModalDialog/ModalDialog.stories.js +8 -8
  69. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  70. package/dist/components/MultiSelect/MultiSelect.stories.js +8 -8
  71. package/dist/components/MultiSelect/components/MultiSelectHeader.js +3 -3
  72. package/dist/components/MultiSelect/index.js +1 -1
  73. package/dist/components/MultiSelectBox/MultiSelectBox.js +66 -70
  74. package/dist/components/MultiSelectBox/MultiSelectBox.js.map +1 -1
  75. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +1 -1
  76. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +2 -2
  77. package/dist/components/Notification/Notification.stories.js +6 -6
  78. package/dist/components/Notification/Notification.test.js +2 -2
  79. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +4 -4
  80. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js +19 -20
  81. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js.map +1 -1
  82. package/dist/components/PeriodSelector/PeriodSelector.js +33 -33
  83. package/dist/components/PeriodSelector/PeriodSelector.js.map +1 -1
  84. package/dist/components/PeriodSelector/PeriodSelector.stories.js +4 -4
  85. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +3 -3
  86. package/dist/components/RadioGroup/RadioGroup.stories.js +1 -1
  87. package/dist/components/RadioGroup/Radiogroup.test.js +2 -2
  88. package/dist/components/RadioTabSelector/RadioTabSelector.js +3 -3
  89. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +1 -1
  90. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +3 -3
  91. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +1 -1
  92. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +4 -4
  93. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +4 -4
  94. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +51 -61
  95. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js.map +1 -1
  96. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +79 -89
  97. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js.map +1 -1
  98. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  99. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +3 -3
  100. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +4 -4
  101. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +3 -3
  102. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +19 -19
  103. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js.map +1 -1
  104. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +5 -5
  105. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +17 -18
  106. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js.map +1 -1
  107. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -1
  108. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +31 -32
  109. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js.map +1 -1
  110. package/dist/components/RteEditor/Plugins/index.js +1 -1
  111. package/dist/components/RteEditor/RteEditor.js +10 -10
  112. package/dist/components/RteEditor/helpers.js +4 -4
  113. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  114. package/dist/components/SelectListbox/components/SelectButton.js +31 -32
  115. package/dist/components/SelectListbox/components/SelectButton.js.map +1 -1
  116. package/dist/components/SelectListbox/components/SelectOption.js +29 -30
  117. package/dist/components/SelectListbox/components/SelectOption.js.map +1 -1
  118. package/dist/components/Sortable/Sortable.d.ts +10 -3
  119. package/dist/components/Sortable/Sortable.js +38 -23
  120. package/dist/components/Sortable/Sortable.js.map +1 -1
  121. package/dist/components/Sortable/Sortable.stories.d.ts +3 -3
  122. package/dist/components/Sortable/Sortable.stories.js +28 -20
  123. package/dist/components/Sortable/Sortable.stories.js.map +1 -1
  124. package/dist/components/Sortable/SortableProvider.d.ts +10 -6
  125. package/dist/components/Sortable/SortableProvider.js +1 -1
  126. package/dist/components/Sortable/components/SortableContainer.d.ts +2 -1
  127. package/dist/components/Sortable/components/SortableContainer.js +2 -2
  128. package/dist/components/Sortable/components/SortableHandle.js +1 -1
  129. package/dist/components/Sortable/components/SortableItem.d.ts +3 -1
  130. package/dist/components/Sortable/components/SortableItem.js +48 -47
  131. package/dist/components/Sortable/components/SortableItem.js.map +1 -1
  132. package/dist/components/StatusBadge/StatusBadge.test.js +2 -2
  133. package/dist/components/TextArea/TextArea.stories.js +1 -1
  134. package/dist/components/TextArea/TextArea.test.js +3 -3
  135. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +1 -1
  136. package/dist/components/VarIndicator/VarIndicator.stories.js +1 -1
  137. package/dist/components/VarIndicator/VarIndicator.test.js +3 -3
  138. package/dist/components/hooks/usePositionedFloaters.js +39 -39
  139. package/dist/components/hooks/usePositionedFloaters.js.map +1 -1
  140. package/dist/components/index.js +1 -1
  141. package/dist/{helpers-DZIm3MiJ.js → helpers-CMG0anwr.js} +4 -4
  142. package/dist/{helpers-DZIm3MiJ.js.map → helpers-CMG0anwr.js.map} +1 -1
  143. package/dist/{index-DV47hRzi.js → index-Br0QepD6.js} +8 -10
  144. package/dist/{index-DV47hRzi.js.map → index-Br0QepD6.js.map} +1 -1
  145. package/dist/{index-Di9WPZUe.js → index-C2E9FY6V.js} +9149 -9854
  146. package/dist/index-C2E9FY6V.js.map +1 -0
  147. package/dist/{index-PaHiqSUg.js → index-Ds1dMTvJ.js} +29 -29
  148. package/dist/{index-PaHiqSUg.js.map → index-Ds1dMTvJ.js.map} +1 -1
  149. package/dist/{index-BVAvx58-.js → index-KJPw-7za.js} +2209 -2280
  150. package/dist/{index-BVAvx58-.js.map → index-KJPw-7za.js.map} +1 -1
  151. package/dist/{index-DllfJcv4.js → index-nrPtQ1dv.js} +2 -2
  152. package/dist/{index-DllfJcv4.js.map → index-nrPtQ1dv.js.map} +1 -1
  153. package/dist/index.js +1 -1
  154. package/dist/{react.esm-CFMwGdo5.js → react.esm-BKjCIfbB.js} +373 -374
  155. package/dist/{react.esm-CFMwGdo5.js.map → react.esm-BKjCIfbB.js.map} +1 -1
  156. package/dist/setupTests.js +6 -9
  157. package/dist/setupTests.js.map +1 -1
  158. package/dist/storybook__react.d.js +2056 -2072
  159. package/dist/storybook__react.d.js.map +1 -1
  160. package/package.json +14 -14
  161. package/dist/Lexical.prod-UwAbgYpF.js.map +0 -1
  162. package/dist/Sortable.module-CekPNg54.js +0 -23
  163. package/dist/Sortable.module-CekPNg54.js.map +0 -1
  164. package/dist/SortableProvider-CwX1lFMa.js +0 -152
  165. package/dist/SortableProvider-CwX1lFMa.js.map +0 -1
  166. package/dist/index-Di9WPZUe.js.map +0 -1
@@ -1 +1 @@
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, semester) => {\n return periods.map((period) => ({\n label: `${semester + 1}${periods.length === 1 ? '' : `.${((period - 1) % PERIODS_PER_SEMESTER) + 1}`}`,\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 notValidated={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","semester","period","returnValues","useRef","disableSemesters","setDisableSemesters","useState","disableGroups","selects","handleChange","values","num","useEffect","jsxs","clsx","styles","jsx","Label","checkboxes","CheckboxButtonBar","event","FeedbackBox"],"mappings":"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"}
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, semester) => {\n return periods.map((period) => ({\n label: `${semester + 1}${periods.length === 1 ? '' : `.${((period - 1) % PERIODS_PER_SEMESTER) + 1}`}`,\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 notValidated={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","semester","period","returnValues","useRef","disableSemesters","setDisableSemesters","useState","disableGroups","selects","handleChange","values","num","useEffect","jsxs","clsx","styles","jsx","Label","checkboxes","CheckboxButtonBar","event","FeedbackBox"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { W as t } from "../../index-Di9WPZUe.js";
2
+ import { l as t } from "../../index-C2E9FY6V.js";
3
3
  import { PeriodSelector as e } from "./PeriodSelector.js";
4
4
  const i = "<PeriodSelector maxPeriods={} defaultValues={} label={} labelPosition={} required={} onChange={} />", m = {
5
5
  title: "Organisms/PeriodSelector",
@@ -8,8 +8,8 @@ const i = "<PeriodSelector maxPeriods={} defaultValues={} label={} labelPosition
8
8
  inspectComponent: e,
9
9
  codeString: i
10
10
  }
11
- }, a = (o) => /* @__PURE__ */ r(e, { ...o }), l = a.bind({});
12
- l.args = {
11
+ }, l = (o) => /* @__PURE__ */ r(e, { ...o }), a = l.bind({});
12
+ a.args = {
13
13
  maxPeriods: 7,
14
14
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
15
15
  defaultValues: [1, 5, 6],
@@ -19,7 +19,7 @@ l.args = {
19
19
  onChange: t()
20
20
  };
21
21
  export {
22
- l as PeriodSelectorExample,
22
+ a as PeriodSelectorExample,
23
23
  m as default
24
24
  };
25
25
  //# sourceMappingURL=PeriodSelector.stories.js.map
@@ -17,15 +17,15 @@ import "../GridRow/GridRow.js";
17
17
  import "../IconButton/IconButton.js";
18
18
  import "../Input/Input.js";
19
19
  import "../InputField/InputField.js";
20
- import "../../TablePlugin-NmJsn2fm.js";
20
+ import "../../TablePlugin-oF-gInNx.js";
21
21
  import "../RteEditor/Providers/LanguageProvider.js";
22
22
  import "../RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
23
23
  import "../RteEditor/hooks/components/Flyout.js";
24
- import "../../index-DllfJcv4.js";
24
+ import "../../index-nrPtQ1dv.js";
25
25
  import "../SelectListbox/SelectListbox.js";
26
26
  import "../SelectListbox/SelectProvider.js";
27
27
  import "../Sortable/components/SortableItem.js";
28
- import "../../SortableProvider-CwX1lFMa.js";
28
+ import "../../SortableProvider-DisCfTTN.js";
29
29
  const p = "<ProgrammeCard key={key} header={header} details={details} href={href} />", J = {
30
30
  title: "Atoms/ProgrammeCard",
31
31
  component: o,
@@ -1,5 +1,5 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { W as a } from "../../index-Di9WPZUe.js";
2
+ import { l as a } from "../../index-C2E9FY6V.js";
3
3
  import { RadioGroup as o } from "./RadioGroup.js";
4
4
  const l = `
5
5
  <RadioGroup label={label} options={options}
@@ -1,6 +1,6 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
- import "../../index-DV47hRzi.js";
3
- import { r as l, s as t, f as s } from "../../react.esm-CFMwGdo5.js";
2
+ import "../../index-Br0QepD6.js";
3
+ import { r as l, s as t, f as s } from "../../react.esm-BKjCIfbB.js";
4
4
  import { RadioGroup as a } from "./RadioGroup.js";
5
5
  const i = [
6
6
  { id: "1", titleLabel: "Option 1", value: "option1" },
@@ -17,15 +17,15 @@ import "../IconButton/IconButton.js";
17
17
  import "../Input/Input.js";
18
18
  import "../InputField/InputField.js";
19
19
  import "react-router";
20
- import "../../TablePlugin-NmJsn2fm.js";
20
+ import "../../TablePlugin-oF-gInNx.js";
21
21
  import "../RteEditor/Providers/LanguageProvider.js";
22
22
  import "../RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
23
23
  import "../RteEditor/hooks/components/Flyout.js";
24
- import "../../index-DllfJcv4.js";
24
+ import "../../index-nrPtQ1dv.js";
25
25
  import "../SelectListbox/SelectListbox.js";
26
26
  import "../SelectListbox/SelectProvider.js";
27
27
  import "../Sortable/components/SortableItem.js";
28
- import "../../SortableProvider-CwX1lFMa.js";
28
+ import "../../SortableProvider-DisCfTTN.js";
29
29
  import '../../assets/RadioTabSelector.css';const t = {
30
30
  "radio-tab-selector-button-bar__container": "_radio-tab-selector-button-bar__container_a4wnc_1",
31
31
  "radio-tab-selector-button-bar__container--label-left": "_radio-tab-selector-button-bar__container--label-left_a4wnc_6",
@@ -1,5 +1,5 @@
1
1
  import { jsx as a } from "react/jsx-runtime";
2
- import { W as o } from "../../index-Di9WPZUe.js";
2
+ import { l as o } from "../../index-C2E9FY6V.js";
3
3
  import { RadioTabSelector as e } from "./RadioTabSelector.js";
4
4
  const l = "<RadioTabSelector radioButtons={} defaultValue={} label={} labelPosition={} required={} notValidatedText={} onSetValue={} />", u = {
5
5
  title: "Molecules/RadioTabSelector",
@@ -14,15 +14,15 @@ import "../../IconButton/IconButton.js";
14
14
  import "../../Input/Input.js";
15
15
  import "../../InputField/InputField.js";
16
16
  import "react-router";
17
- import "../../../TablePlugin-NmJsn2fm.js";
17
+ import "../../../TablePlugin-oF-gInNx.js";
18
18
  import "../Providers/LanguageProvider.js";
19
19
  import "../Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
20
20
  import "../hooks/components/Flyout.js";
21
- import "../../../index-DllfJcv4.js";
21
+ import "../../../index-nrPtQ1dv.js";
22
22
  import "../../SelectListbox/SelectListbox.js";
23
23
  import "../../SelectListbox/SelectProvider.js";
24
24
  import "../../Sortable/components/SortableItem.js";
25
- import "../../../SortableProvider-CwX1lFMa.js";
25
+ import "../../../SortableProvider-DisCfTTN.js";
26
26
  import '../../../assets/EditorHeader.css';const t = {
27
27
  "editor-header__container": "_editor-header__container_9khdz_1",
28
28
  "editor-header__info": "_editor-header__info_9khdz_10"
@@ -1,7 +1,7 @@
1
1
  import { jsx as s } from "react/jsx-runtime";
2
2
  import { o as u } from "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
3
3
  import { c as f } from "../../../../clsx-OuTLNxxd.js";
4
- import { N as _, c as p, R as h } from "../../../../Lexical.prod-UwAbgYpF.js";
4
+ import { N as _, c as p, R as h } from "../../../../Lexical.prod-B84LhBo3.js";
5
5
  import { useState as l, useEffect as k } from "react";
6
6
  import { Icon as I } from "../../../Icon/Icon.js";
7
7
  import { s as a } from "../../../../RteEditor.module-B_3uFnFu.js";
@@ -1,7 +1,7 @@
1
1
  import { jsxs as f, jsx as a } from "react/jsx-runtime";
2
2
  import { c as i } from "../../../../clsx-OuTLNxxd.js";
3
3
  import { o as h } from "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
4
- import { ar as _, as as C, at as y, au as k } from "../../../../Lexical.prod-UwAbgYpF.js";
4
+ import { ar as _, as as C, at as y, au as k } from "../../../../Lexical.prod-B84LhBo3.js";
5
5
  import { useState as s, useEffect as m } from "react";
6
6
  import { Icon as n } from "../../../Icon/Icon.js";
7
7
  import "../../../Buttons/Button.js";
@@ -17,17 +17,17 @@ import "../../../IconButton/IconButton.js";
17
17
  import "../../../Input/Input.js";
18
18
  import "../../../InputField/InputField.js";
19
19
  import "react-router";
20
- import "../../../../TablePlugin-NmJsn2fm.js";
20
+ import "../../../../TablePlugin-oF-gInNx.js";
21
21
  import { s as r } from "../../../../RteEditor.module-B_3uFnFu.js";
22
22
  import { useTranslation as x } from "../../hooks/useTranslation.js";
23
23
  import "../LinkPlugin/LinkContextMenu/LinkContextMenu.js";
24
24
  import "../../hooks/components/Flyout.js";
25
25
  import "../../Providers/LanguageProvider.js";
26
- import "../../../../index-DllfJcv4.js";
26
+ import "../../../../index-nrPtQ1dv.js";
27
27
  import "../../../SelectListbox/SelectListbox.js";
28
28
  import "../../../SelectListbox/SelectProvider.js";
29
29
  import "../../../Sortable/components/SortableItem.js";
30
- import "../../../../SortableProvider-CwX1lFMa.js";
30
+ import "../../../../SortableProvider-DisCfTTN.js";
31
31
  const Z = () => {
32
32
  const o = x(), [t] = h(), [p, d] = s(!1), [l, c] = s(!1), u = () => {
33
33
  t.dispatchCommand(y, void 0);
@@ -1,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
- import { A as D } from "../../../../../TablePlugin-NmJsn2fm.js";
4
- import "../../../../../helpers-DZIm3MiJ.js";
3
+ import { A as D } from "../../../../../TablePlugin-oF-gInNx.js";
4
+ import "../../../../../helpers-CMG0anwr.js";
5
5
  import "../../../../Icon/Icon.js";
6
6
  import "../../../../Buttons/Button.js";
7
7
  import "../../../../Buttons/LinkButton.js";
@@ -23,11 +23,11 @@ import "../../../hooks/useTranslation.js";
23
23
  import "../LinkContextMenu/LinkContextMenu.js";
24
24
  import "../../../hooks/components/Flyout.js";
25
25
  import "../../../Providers/LanguageProvider.js";
26
- import "../../../../../index-DllfJcv4.js";
26
+ import "../../../../../index-nrPtQ1dv.js";
27
27
  import "../../../../SelectListbox/SelectListbox.js";
28
28
  import "../../../../SelectListbox/SelectProvider.js";
29
29
  import "../../../../Sortable/components/SortableItem.js";
30
- import "../../../../../SortableProvider-CwX1lFMa.js";
30
+ import "../../../../../SortableProvider-DisCfTTN.js";
31
31
  export {
32
32
  D as AddLinkForm
33
33
  };
@@ -1,101 +1,91 @@
1
- import { jsxs as k, Fragment as K, jsx as n } from "react/jsx-runtime";
2
- import { forwardRef as N, useState as b, useRef as T, useImperativeHandle as g, useLayoutEffect as E } from "react";
3
- import { e as R } from "../../../../../helpers-DZIm3MiJ.js";
4
- import { Icon as m } from "../../../../Icon/Icon.js";
5
- import { useTranslation as S } from "../../../hooks/useTranslation.js";
6
- import { Button as y } from "../../../../Buttons/Button.js";
1
+ import { jsxs as u, Fragment as L, jsx as n } from "react/jsx-runtime";
2
+ import { forwardRef as K, useState as d, useRef as N, useImperativeHandle as T, useLayoutEffect as g } from "react";
3
+ import { e as E } from "../../../../../helpers-CMG0anwr.js";
4
+ import { Icon as k } from "../../../../Icon/Icon.js";
5
+ import { useTranslation as R } from "../../../hooks/useTranslation.js";
6
+ import { Button as b } from "../../../../Buttons/Button.js";
7
7
  import "../../../../Buttons/LinkButton.js";
8
8
  import "@react-aria/button";
9
- import '../../../../../assets/LinkContextMenu.css';const l = {
9
+ import '../../../../../assets/LinkContextMenu.css';const i = {
10
10
  "link-context-menu__wrapper": "_link-context-menu__wrapper_139l7_1",
11
11
  "link-context-menu__input": "_link-context-menu__input_139l7_7",
12
12
  "link-context-menu__button": "_link-context-menu__button_139l7_25",
13
13
  "link-context-menu__actions": "_link-context-menu__actions_139l7_36"
14
- }, O = N(({ url: a, onSave: f, onDelete: h, onClose: x }, w) => {
15
- const e = S(), [_, s] = b(a), [c, u] = b(!1), o = T(null), r = () => {
16
- var t;
17
- s(a), u(!1), (t = o.current) == null || t.blur();
14
+ }, I = K(({ url: l, onSave: y, onDelete: f, onClose: h }, x) => {
15
+ const t = R(), [m, o] = d(l), [r, c] = d(!1), a = N(null), s = () => {
16
+ o(l), c(!1), a.current?.blur();
17
+ }, w = () => {
18
+ y(m), s();
19
+ }, _ = () => {
20
+ f(), o(""), s();
18
21
  }, C = () => {
19
- f(_), r();
22
+ s(), h();
20
23
  }, p = () => {
21
- h(), s(""), r();
22
- }, L = () => {
23
- r(), x();
24
- }, d = () => {
25
- window.open(R(a), "_blank");
24
+ window.open(E(l), "_blank");
26
25
  };
27
- return g(w, () => ({
28
- clearForm: r
29
- })), E(() => {
30
- s(a), window.addEventListener("keydown", (t) => {
31
- t.ctrlKey && t.shiftKey && t.key === "L" && (u(!0), setTimeout(() => {
32
- var i;
33
- return (i = o.current) == null ? void 0 : i.focus();
34
- }, 0)), t.ctrlKey && t.shiftKey && t.code === "Digit1" && (d(), setTimeout(() => {
35
- var i;
36
- return (i = o.current) == null ? void 0 : i.focus();
37
- }, 0)), t.ctrlKey && t.shiftKey && t.key === "Q" && (p(), setTimeout(() => {
38
- var i;
39
- return (i = o.current) == null ? void 0 : i.focus();
40
- }, 0));
26
+ return T(x, () => ({
27
+ clearForm: s
28
+ })), g(() => {
29
+ o(l), window.addEventListener("keydown", (e) => {
30
+ e.ctrlKey && e.shiftKey && e.key === "L" && (c(!0), setTimeout(() => a.current?.focus(), 0)), e.ctrlKey && e.shiftKey && e.code === "Digit1" && (p(), setTimeout(() => a.current?.focus(), 0)), e.ctrlKey && e.shiftKey && e.key === "Q" && (_(), setTimeout(() => a.current?.focus(), 0));
41
31
  });
42
- }, [a]), /* @__PURE__ */ k(K, { children: [
43
- /* @__PURE__ */ k("div", { className: l["link-context-menu__wrapper"], children: [
32
+ }, [l]), /* @__PURE__ */ u(L, { children: [
33
+ /* @__PURE__ */ u("div", { className: i["link-context-menu__wrapper"], children: [
44
34
  /* @__PURE__ */ n(
45
35
  "input",
46
36
  {
47
37
  type: "text",
48
- value: _,
49
- onChange: (t) => s(t.target.value),
50
- className: l["link-context-menu__input"],
51
- disabled: !c,
52
- ref: o
38
+ value: m,
39
+ onChange: (e) => o(e.target.value),
40
+ className: i["link-context-menu__input"],
41
+ disabled: !r,
42
+ ref: a
53
43
  }
54
44
  ),
55
- !c && /* @__PURE__ */ n(
45
+ !r && /* @__PURE__ */ n(
56
46
  "button",
57
47
  {
58
48
  type: "button",
59
- className: l["link-context-menu__button"],
60
- onClick: () => u(!0),
61
- title: e.links.linkEdittip,
62
- "aria-label": e.aria.labels.link,
63
- "aria-keyshortcuts": e.aria.keyshortcuts.editlink,
64
- children: /* @__PURE__ */ n(m, { name: "Pencil", size: 20 })
49
+ className: i["link-context-menu__button"],
50
+ onClick: () => c(!0),
51
+ title: t.links.linkEdittip,
52
+ "aria-label": t.aria.labels.link,
53
+ "aria-keyshortcuts": t.aria.keyshortcuts.editlink,
54
+ children: /* @__PURE__ */ n(k, { name: "Pencil", size: 20 })
65
55
  }
66
56
  ),
67
57
  /* @__PURE__ */ n(
68
58
  "button",
69
59
  {
70
60
  type: "button",
71
- className: l["link-context-menu__button"],
72
- onClick: d,
73
- title: e.links.linkTesttip,
74
- "aria-label": e.aria.labels.link,
75
- "aria-keyshortcuts": e.aria.keyshortcuts.testlink,
76
- children: /* @__PURE__ */ n(m, { name: "ArrowTopRightOnSquare", size: 20 })
61
+ className: i["link-context-menu__button"],
62
+ onClick: p,
63
+ title: t.links.linkTesttip,
64
+ "aria-label": t.aria.labels.link,
65
+ "aria-keyshortcuts": t.aria.keyshortcuts.testlink,
66
+ children: /* @__PURE__ */ n(k, { name: "ArrowTopRightOnSquare", size: 20 })
77
67
  }
78
68
  ),
79
69
  /* @__PURE__ */ n(
80
70
  "button",
81
71
  {
82
72
  type: "button",
83
- className: l["link-context-menu__button"],
84
- onClick: p,
85
- title: e.links.linkDeletetip,
86
- "aria-label": e.aria.labels.link,
87
- "aria-keyshortcuts": e.aria.keyshortcuts.deletelink,
88
- children: /* @__PURE__ */ n(m, { name: "LinkSlash", size: 20 })
73
+ className: i["link-context-menu__button"],
74
+ onClick: _,
75
+ title: t.links.linkDeletetip,
76
+ "aria-label": t.aria.labels.link,
77
+ "aria-keyshortcuts": t.aria.keyshortcuts.deletelink,
78
+ children: /* @__PURE__ */ n(k, { name: "LinkSlash", size: 20 })
89
79
  }
90
80
  )
91
81
  ] }),
92
- c && /* @__PURE__ */ k("div", { className: l["link-context-menu__actions"], children: [
93
- /* @__PURE__ */ n(y, { variant: "secondary", onClick: L, "aria-label": e.common.cancel, type: "button", children: e.common.cancel }),
94
- /* @__PURE__ */ n(y, { variant: "primary", onClick: C, "aria-label": e.aria.labels.linkOkButton, type: "button", children: e.links.addLink })
82
+ r && /* @__PURE__ */ u("div", { className: i["link-context-menu__actions"], children: [
83
+ /* @__PURE__ */ n(b, { variant: "secondary", onClick: C, "aria-label": t.common.cancel, type: "button", children: t.common.cancel }),
84
+ /* @__PURE__ */ n(b, { variant: "primary", onClick: w, "aria-label": t.aria.labels.linkOkButton, type: "button", children: t.links.addLink })
95
85
  ] })
96
86
  ] });
97
87
  });
98
88
  export {
99
- O as LinkContextMenu
89
+ I as LinkContextMenu
100
90
  };
101
91
  //# sourceMappingURL=LinkContextMenu.js.map
@@ -1 +1 @@
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 window.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.shiftKey && event.key === 'L') {\n setEditable(true);\n setTimeout(() => linkRef.current?.focus(), 0);\n }\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit1') {\n handlePreview();\n setTimeout(() => linkRef.current?.focus(), 0);\n }\n if (event.ctrlKey && event.shiftKey && event.key === 'Q') {\n handleDelete();\n setTimeout(() => linkRef.current?.focus(), 0);\n }\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","t","useTranslation","link","setLink","useState","editable","setEditable","linkRef","useRef","reset","_a","handleSave","handleDelete","handleClose","handlePreview","ensureHttps","useImperativeHandle","useLayoutEffect","event","jsxs","Fragment","styles","jsx","Icon","Button"],"mappings":"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"}
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 window.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.shiftKey && event.key === 'L') {\n setEditable(true);\n setTimeout(() => linkRef.current?.focus(), 0);\n }\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit1') {\n handlePreview();\n setTimeout(() => linkRef.current?.focus(), 0);\n }\n if (event.ctrlKey && event.shiftKey && event.key === 'Q') {\n handleDelete();\n setTimeout(() => linkRef.current?.focus(), 0);\n }\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","event","jsxs","Fragment","styles","jsx","Icon","Button"],"mappings":";;;;;;;;;;;;;GAoBaA,IAAkBC,EAAW,CAAC,EAAE,KAAAC,GAAK,QAAAC,GAAQ,UAAAC,GAAU,SAAAC,EAAA,GAAiCC,MAAQ;AAC3G,QAAM,IAAIC,EAAA,GACJ,CAACC,GAAMC,CAAO,IAAIC,EAASR,CAAG,GAC9B,CAACS,GAAUC,CAAW,IAAIF,EAAS,EAAK,GACxCG,IAAUC,EAAyB,IAAI,GAEvCC,IAAQ,MAAM;AAClB,IAAAN,EAAQP,CAAG,GACXU,EAAY,EAAK,GACjBC,EAAQ,SAAS,KAAA;AAAA,EAAK,GAGlBG,IAAa,MAAM;AACvB,IAAAb,EAAOK,CAAI,GACXO,EAAA;AAAA,EAAM,GAGFE,IAAe,MAAM;AACzB,IAAAb,EAAA,GACAK,EAAQ,EAAE,GACVM,EAAA;AAAA,EAAM,GAGFG,IAAc,MAAM;AACxB,IAAAH,EAAA,GACAV,EAAA;AAAA,EAAQ,GAGJc,IAAgB,MAAM;AAC1B,WAAO,KAAKC,EAAYlB,CAAG,GAAG,QAAQ;AAAA,EAAA;AAGxC,SAAAmB,EAAoBf,GAAK,OAAO;AAAA,IAC9B,WAAWS;AAAA,EAAA,EACX,GAEFO,EAAgB,MAAM;AACpB,IAAAb,EAAQP,CAAG,GACX,OAAO,iBAAiB,WAAW,CAACqB,MAAU;AAC5C,MAAIA,EAAM,WAAWA,EAAM,YAAYA,EAAM,QAAQ,QACnDX,EAAY,EAAI,GAChB,WAAW,MAAMC,EAAQ,SAAS,MAAA,GAAS,CAAC,IAE1CU,EAAM,WAAWA,EAAM,YAAYA,EAAM,SAAS,aACpDJ,EAAA,GACA,WAAW,MAAMN,EAAQ,SAAS,MAAA,GAAS,CAAC,IAE1CU,EAAM,WAAWA,EAAM,YAAYA,EAAM,QAAQ,QACnDN,EAAA,GACA,WAAW,MAAMJ,EAAQ,SAAS,MAAA,GAAS,CAAC;AAAA,IAC9C,CACD;AAAA,EAAA,GAEA,CAACX,CAAG,CAAC,GAGN,gBAAAsB,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWE,EAAO,4BAA4B,GACjD,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAOnB;AAAA,UACP,UAAU,CAACe,MAAUd,EAAQc,EAAM,OAAO,KAAK;AAAA,UAC/C,WAAWG,EAAO,0BAA0B;AAAA,UAC5C,UAAU,CAACf;AAAA,UACX,KAAKE;AAAA,QAAA;AAAA,MAAA;AAAA,MAEN,CAACF,KACA,gBAAAgB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWD,EAAO,2BAA2B;AAAA,UAC7C,SAAS,MAAMd,EAAY,EAAI;AAAA,UAC/B,OAAO,EAAE,MAAM;AAAA,UACf,cAAY,EAAE,KAAK,OAAO;AAAA,UAC1B,qBAAmB,EAAE,KAAK,aAAa;AAAA,UAEvC,UAAA,gBAAAe,EAACC,GAAA,EAAK,MAAK,UAAS,MAAM,GAAA,CAAI;AAAA,QAAA;AAAA,MAAA;AAAA,MAGlC,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWD,EAAO,2BAA2B;AAAA,UAC7C,SAASP;AAAA,UACT,OAAO,EAAE,MAAM;AAAA,UACf,cAAY,EAAE,KAAK,OAAO;AAAA,UAC1B,qBAAmB,EAAE,KAAK,aAAa;AAAA,UAEvC,UAAA,gBAAAQ,EAACC,GAAA,EAAK,MAAK,yBAAwB,MAAM,GAAA,CAAI;AAAA,QAAA;AAAA,MAAA;AAAA,MAE/C,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAWD,EAAO,2BAA2B;AAAA,UAC7C,SAAST;AAAA,UACT,OAAO,EAAE,MAAM;AAAA,UACf,cAAY,EAAE,KAAK,OAAO;AAAA,UAC1B,qBAAmB,EAAE,KAAK,aAAa;AAAA,UAEvC,UAAA,gBAAAU,EAACC,GAAA,EAAK,MAAK,aAAY,MAAM,GAAA,CAAI;AAAA,QAAA;AAAA,MAAA;AAAA,IACnC,GACF;AAAA,IACCjB,KACC,gBAAAa,EAAC,OAAA,EAAI,WAAWE,EAAO,4BAA4B,GACjD,UAAA;AAAA,MAAA,gBAAAC,EAACE,GAAA,EAAO,SAAS,aAAa,SAASX,GAAa,cAAY,EAAE,OAAO,QAAQ,MAAK,UACnF,UAAA,EAAE,OAAO,QACZ;AAAA,MACA,gBAAAS,EAACE,GAAA,EAAO,SAAS,WAAW,SAASb,GAAY,cAAY,EAAE,KAAK,OAAO,cAAc,MAAK,UAC3F,UAAA,EAAE,MAAM,QAAA,CACX;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ,CAAC;"}