@uva-glass/component-library 3.42.2 → 3.42.4

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 (203) hide show
  1. package/dist/{Lexical.prod-C1B_JvcI.js → Lexical.prod-qYl_ifJ6.js} +221 -221
  2. package/dist/Lexical.prod-qYl_ifJ6.js.map +1 -0
  3. package/dist/{LexicalClipboard.prod-Dd64YQH0.js → LexicalClipboard.prod-DIGbXq4v.js} +25 -25
  4. package/dist/{LexicalClipboard.prod-Dd64YQH0.js.map → LexicalClipboard.prod-DIGbXq4v.js.map} +1 -1
  5. package/dist/{LexicalComposerContext.prod-DLlRM5wP.js → LexicalComposerContext.prod-DOyoZx0P.js} +3 -3
  6. package/dist/{LexicalComposerContext.prod-DLlRM5wP.js.map → LexicalComposerContext.prod-DOyoZx0P.js.map} +1 -1
  7. package/dist/{LexicalLink.prod-ldhpNY9X.js → LexicalLink.prod-ZZwC5ABn.js} +14 -14
  8. package/dist/{LexicalLink.prod-ldhpNY9X.js.map → LexicalLink.prod-ZZwC5ABn.js.map} +1 -1
  9. package/dist/{LexicalList.prod-7DmvPZ_J.js → LexicalList.prod-UurCu6DK.js} +30 -30
  10. package/dist/{LexicalList.prod-7DmvPZ_J.js.map → LexicalList.prod-UurCu6DK.js.map} +1 -1
  11. package/dist/{LexicalSelection.prod-Dmiwka3x.js → LexicalSelection.prod-DXruZeFN.js} +2 -2
  12. package/dist/{LexicalSelection.prod-Dmiwka3x.js.map → LexicalSelection.prod-DXruZeFN.js.map} +1 -1
  13. package/dist/{LexicalTable.prod-iqHmKv_G.js → LexicalTable.prod-COFf1Spn.js} +115 -115
  14. package/dist/{LexicalTable.prod-iqHmKv_G.js.map → LexicalTable.prod-COFf1Spn.js.map} +1 -1
  15. package/dist/{LexicalUtils.prod-w0fZ_Z8S.js → LexicalUtils.prod-C3To3vrm.js} +5 -5
  16. package/dist/{LexicalUtils.prod-w0fZ_Z8S.js.map → LexicalUtils.prod-C3To3vrm.js.map} +1 -1
  17. package/dist/SortableProvider-l8-7ClBJ.js.map +1 -1
  18. package/dist/TableCellResizerPlugin-B9MT1fxA.js +248 -0
  19. package/dist/TableCellResizerPlugin-B9MT1fxA.js.map +1 -0
  20. package/dist/{TablePlugin-cMMBdz-x.js → TablePlugin-FQQwnq2m.js} +7 -7
  21. package/dist/{TablePlugin-cMMBdz-x.js.map → TablePlugin-FQQwnq2m.js.map} +1 -1
  22. package/dist/{client-BIzWgcD3.js → client-BK9NlSVR.js} +13 -13
  23. package/dist/{client-BIzWgcD3.js.map → client-BK9NlSVR.js.map} +1 -1
  24. package/dist/components/Accordion/Accordion.js.map +1 -1
  25. package/dist/components/Accordion/Accordion.test.js +3 -3
  26. package/dist/components/Accordion/Accordion.test.js.map +1 -1
  27. package/dist/components/AccordionCard/AccordionCard.js.map +1 -1
  28. package/dist/components/AccordionCard/AccordionCard.test.js +3 -3
  29. package/dist/components/AccordionCard/AccordionCard.test.js.map +1 -1
  30. package/dist/components/ActionList/ActionList.js.map +1 -1
  31. package/dist/components/ActionList/ActionList.test.js +3 -3
  32. package/dist/components/ActionList/ActionList.test.js.map +1 -1
  33. package/dist/components/AppStatusBar/AppStatusBar.test.js +2 -2
  34. package/dist/components/AppStatusBar/AppStatusBar.test.js.map +1 -1
  35. package/dist/components/Attention/Attention.test.js +2 -2
  36. package/dist/components/Attention/Attention.test.js.map +1 -1
  37. package/dist/components/Backdrop/Backdrop.test.js +2 -2
  38. package/dist/components/Backdrop/Backdrop.test.js.map +1 -1
  39. package/dist/components/Buttons/Button.stories.js +1 -1
  40. package/dist/components/Buttons/Button.test.js +2 -2
  41. package/dist/components/Buttons/Button.test.js.map +1 -1
  42. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  43. package/dist/components/Buttons/LinkButton.test.js +2 -2
  44. package/dist/components/Buttons/LinkButton.test.js.map +1 -1
  45. package/dist/components/Buttons/MenuButton.stories.js +1 -1
  46. package/dist/components/Buttons/MenuButton.test.js +2 -2
  47. package/dist/components/Buttons/MenuButton.test.js.map +1 -1
  48. package/dist/components/Card/Card.test.js +2 -2
  49. package/dist/components/Card/Card.test.js.map +1 -1
  50. package/dist/components/Checkbox/Checkbox.stories.js +1 -1
  51. package/dist/components/Checkbox/Checkbox.test.js +3 -3
  52. package/dist/components/Checkbox/Checkbox.test.js.map +1 -1
  53. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js.map +1 -1
  54. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +1 -1
  55. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +2 -2
  56. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js.map +1 -1
  57. package/dist/components/CheckboxTree/CheckboxTree.js +2 -2
  58. package/dist/components/CheckboxTree/CheckboxTree.js.map +1 -1
  59. package/dist/components/CheckboxTree/CheckboxTree.stories.js +2 -2
  60. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  61. package/dist/components/Chip/Chip.stories.js +1 -1
  62. package/dist/components/ControlsButton/ControlsButton.stories.js +1 -1
  63. package/dist/components/Drawer/Drawer.js.map +1 -1
  64. package/dist/components/Drawer/Drawer.stories.js +1 -1
  65. package/dist/components/FeedbackBar/FeedbackBar.js.map +1 -1
  66. package/dist/components/FeedbackBar/FeedbackBar.test.js +2 -2
  67. package/dist/components/FeedbackBar/FeedbackBar.test.js.map +1 -1
  68. package/dist/components/FormInput/FormInput.js +2 -2
  69. package/dist/components/FormInput/FormInput.js.map +1 -1
  70. package/dist/components/FormInput/FormInput.stories.js +1 -1
  71. package/dist/components/IconButton/IconButton.stories.js +1 -1
  72. package/dist/components/InputField/InputField.js.map +1 -1
  73. package/dist/components/InputField/InputField.stories.js +3 -3
  74. package/dist/components/InputField/InputField.stories.js.map +1 -1
  75. package/dist/components/Label/Label.test.js +2 -2
  76. package/dist/components/Label/Label.test.js.map +1 -1
  77. package/dist/components/MenuLink/MenuLink.js.map +1 -1
  78. package/dist/components/ModalDialog/ModalDialog.js.map +1 -1
  79. package/dist/components/ModalDialog/ModalDialog.stories.js +1 -1
  80. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  81. package/dist/components/MultiSelect/MultiSelect.stories.js +2 -2
  82. package/dist/components/MultiSelect/MultiSelect.stories.js.map +1 -1
  83. package/dist/components/MultiSelect/components/MultiSelectHeader.js +2 -2
  84. package/dist/components/MultiSelect/index.js +1 -1
  85. package/dist/components/MultiSelectBox/MultiSelectBox.js.map +1 -1
  86. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +1 -1
  87. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +2 -2
  88. package/dist/components/MultiSelectBox/MultiSelectBox.test.js.map +1 -1
  89. package/dist/components/Notification/Notification.js.map +1 -1
  90. package/dist/components/Notification/Notification.stories.js +1 -1
  91. package/dist/components/Notification/Notification.test.js +2 -2
  92. package/dist/components/Notification/Notification.test.js.map +1 -1
  93. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +1 -1
  94. package/dist/components/OverlayStepBar/OverlayStepBar.js.map +1 -1
  95. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js.map +1 -1
  96. package/dist/components/PageOverlay/PageOverlay.js.map +1 -1
  97. package/dist/components/PageOverlay/PageOverlay.stories.js.map +1 -1
  98. package/dist/components/PeriodSelector/PeriodSelector.js +2 -2
  99. package/dist/components/PeriodSelector/PeriodSelector.js.map +1 -1
  100. package/dist/components/PeriodSelector/PeriodSelector.stories.js +1 -1
  101. package/dist/components/Periods/Periods.js.map +1 -1
  102. package/dist/components/ProgrammeCard/ProgrammeCard.js.map +1 -1
  103. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +2 -2
  104. package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
  105. package/dist/components/RadioGroup/RadioGroup.stories.js +1 -1
  106. package/dist/components/RadioGroup/Radiogroup.test.js +2 -2
  107. package/dist/components/RadioGroup/Radiogroup.test.js.map +1 -1
  108. package/dist/components/RadioTabSelector/RadioTabSelector.js +2 -2
  109. package/dist/components/RadioTabSelector/RadioTabSelector.js.map +1 -1
  110. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +1 -1
  111. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +2 -2
  112. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +2 -2
  113. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js.map +1 -1
  114. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +4 -4
  115. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js.map +1 -1
  116. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +3 -3
  117. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
  118. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js.map +1 -1
  119. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +6 -6
  120. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js.map +1 -1
  121. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  122. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +4 -4
  123. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js.map +1 -1
  124. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +5 -5
  125. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js.map +1 -1
  126. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +7 -6
  127. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js.map +1 -1
  128. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
  129. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +2 -2
  130. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +1 -1
  131. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js.map +1 -1
  132. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +6 -6
  133. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.d.ts +2 -1
  134. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +39 -29
  135. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js.map +1 -1
  136. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -1
  137. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +5 -5
  138. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js.map +1 -1
  139. package/dist/components/RteEditor/Plugins/index.js +2 -2
  140. package/dist/components/RteEditor/Providers/LanguageProvider.js.map +1 -1
  141. package/dist/components/RteEditor/RteEditor.js +149 -149
  142. package/dist/components/RteEditor/RteEditor.js.map +1 -1
  143. package/dist/components/RteEditor/helpers.js +32 -34
  144. package/dist/components/RteEditor/helpers.js.map +1 -1
  145. package/dist/components/RteEditor/hooks/useFlyout.js.map +1 -1
  146. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +4 -4
  147. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js.map +1 -1
  148. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  149. package/dist/components/SelectListbox/SelectProvider.js.map +1 -1
  150. package/dist/components/SelectListbox/components/SelectButton.js.map +1 -1
  151. package/dist/components/SelectListbox/components/SelectContainer.js.map +1 -1
  152. package/dist/components/SelectListbox/components/SelectOption.js.map +1 -1
  153. package/dist/components/Sortable/Sortable.stories.js +1 -1
  154. package/dist/components/Sortable/components/SortableItem.js.map +1 -1
  155. package/dist/components/Sortable/sortableReducer.js.map +1 -1
  156. package/dist/components/Spinner/Spinner.js.map +1 -1
  157. package/dist/components/StatusBadge/StatusBadge.test.js +2 -2
  158. package/dist/components/StatusBadge/StatusBadge.test.js.map +1 -1
  159. package/dist/components/TextArea/TextArea.js.map +1 -1
  160. package/dist/components/TextArea/TextArea.stories.js +1 -1
  161. package/dist/components/TextArea/TextArea.test.js +3 -3
  162. package/dist/components/TextArea/TextArea.test.js.map +1 -1
  163. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +1 -1
  164. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  165. package/dist/components/VarIndicator/VarIndicator.stories.js +1 -1
  166. package/dist/components/VarIndicator/VarIndicator.test.js +3 -3
  167. package/dist/components/VarIndicator/VarIndicator.test.js.map +1 -1
  168. package/dist/components/hooks/useDebounce.js +2 -2
  169. package/dist/components/hooks/useDebounce.js.map +1 -1
  170. package/dist/components/hooks/useOnClickOutside.js.map +1 -1
  171. package/dist/components/hooks/usePositionedFloaters.js.map +1 -1
  172. package/dist/components/hooks/useResponsive.js.map +1 -1
  173. package/dist/components/index.js +1 -1
  174. package/dist/{helpers-BO6Gg9y6.js → helpers-D3SODeVc.js} +19 -19
  175. package/dist/{helpers-BO6Gg9y6.js.map → helpers-D3SODeVc.js.map} +1 -1
  176. package/dist/{index-BwBhYsdx.js → index-B32mP_-H.js} +2219 -2342
  177. package/dist/index-B32mP_-H.js.map +1 -0
  178. package/dist/{index-B7xrLR5N.js → index-BVrrnUn0.js} +16 -16
  179. package/dist/{index-B7xrLR5N.js.map → index-BVrrnUn0.js.map} +1 -1
  180. package/dist/{index-BYGu3RV5.js → index-BamlKH-k.js} +43 -43
  181. package/dist/{index-BYGu3RV5.js.map → index-BamlKH-k.js.map} +1 -1
  182. package/dist/{index-BeAF9HWV.js → index-iImjiPdB.js} +16 -16
  183. package/dist/{index-BeAF9HWV.js.map → index-iImjiPdB.js.map} +1 -1
  184. package/dist/{index-nrPtQ1dv.js → index-yEhaxKq-.js} +3 -3
  185. package/dist/{index-nrPtQ1dv.js.map → index-yEhaxKq-.js.map} +1 -1
  186. package/dist/index.js +1 -1
  187. package/dist/{react-18-CbXtwYTX.js → react-18-DXfB7ZX7.js} +2 -2
  188. package/dist/{react-18-CbXtwYTX.js.map → react-18-DXfB7ZX7.js.map} +1 -1
  189. package/dist/{react.esm-CJKnSGEF.js → react.esm-WLX_DeH0.js} +19 -19
  190. package/dist/react.esm-WLX_DeH0.js.map +1 -0
  191. package/dist/setupTests.js +1 -1
  192. package/dist/setupTests.js.map +1 -1
  193. package/dist/storyComponents/ClipboardButton/ClipboardButton.js.map +1 -1
  194. package/dist/storybook__react.d.js +13 -13
  195. package/dist/storybook__react.d.js.map +1 -1
  196. package/dist/{test-utils-ea_YDVtd.js → test-utils-BP59mSnn.js} +3 -3
  197. package/dist/{test-utils-ea_YDVtd.js.map → test-utils-BP59mSnn.js.map} +1 -1
  198. package/package.json +1 -1
  199. package/dist/Lexical.prod-C1B_JvcI.js.map +0 -1
  200. package/dist/TableCellResizerPlugin-Bao8R6Lv.js +0 -241
  201. package/dist/TableCellResizerPlugin-Bao8R6Lv.js.map +0 -1
  202. package/dist/index-BwBhYsdx.js.map +0 -1
  203. package/dist/react.esm-CJKnSGEF.js.map +0 -1
@@ -1 +1 @@
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,EAChB;AAGF,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,QACvB;AAAA,QAEF,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,YAAA;AAAA,YAEpC,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
+ {"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,5 +1,5 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { l as a } from "../../index-BYGu3RV5.js";
2
+ import { l as a } from "../../index-BamlKH-k.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-BwBhYsdx.js";
3
- import { r as l, s as t, f as s } from "../../react.esm-CJKnSGEF.js";
2
+ import "../../index-B32mP_-H.js";
3
+ import { r as l, s as t, f as s } from "../../react.esm-WLX_DeH0.js";
4
4
  import { RadioGroup as a } from "./RadioGroup.js";
5
5
  const i = [
6
6
  { id: "1", titleLabel: "Option 1", value: "option1" },
@@ -1 +1 @@
1
- {"version":3,"file":"Radiogroup.test.js","sources":["../../../src/components/RadioGroup/Radiogroup.test.tsx"],"sourcesContent":["import '@testing-library/jest-dom';\nimport { render, screen, fireEvent } from '@testing-library/react';\n\nimport { RadioGroup } from './RadioGroup';\n\nconst options = [\n { id: '1', titleLabel: 'Option 1', value: 'option1' },\n { id: '2', titleLabel: 'Option 2', value: 'option2' },\n];\n\ndescribe('RadioGroup', () => {\n it('should render correctly', () => {\n render(<RadioGroup label=\"Test Label\" options={options} onChange={jest.fn()} />);\n expect(screen.getByText('Test Label')).toBeInTheDocument();\n expect(screen.getByText('Option 1')).toBeInTheDocument();\n expect(screen.getByText('Option 2')).toBeInTheDocument();\n });\n\n it('should call onChange when an option is selected', () => {\n const handleChange = jest.fn();\n render(<RadioGroup label=\"Test Label\" options={options} onChange={handleChange} />);\n\n const option1 = screen.getByLabelText('Option 1');\n fireEvent.click(option1);\n expect(handleChange).toHaveBeenCalledWith('option1');\n });\n\n it('should not allow selection when disabled', () => {\n const handleChange = jest.fn();\n render(<RadioGroup label=\"Test Label\" options={options} onChange={handleChange} disabled />);\n\n const option1 = screen.getByLabelText('Option 1');\n fireEvent.click(option1);\n expect(handleChange).not.toHaveBeenCalled();\n });\n});\n"],"names":["options","render","jsx","RadioGroup","screen","handleChange","option1","fireEvent"],"mappings":";;;;AAKA,MAAMA,IAAU;AAAA,EACd,EAAE,IAAI,KAAK,YAAY,YAAY,OAAO,UAAA;AAAA,EAC1C,EAAE,IAAI,KAAK,YAAY,YAAY,OAAO,UAAA;AAC5C;AAEA,SAAS,cAAc,MAAM;AAC3B,KAAG,2BAA2B,MAAM;AAClC,IAAAC,EAAO,gBAAAC,EAACC,KAAW,OAAM,cAAa,SAAAH,GAAkB,UAAU,KAAK,GAAA,EAAG,CAAG,CAAE,GAC/E,OAAOI,EAAO,UAAU,YAAY,CAAC,EAAE,kBAAA,GACvC,OAAOA,EAAO,UAAU,UAAU,CAAC,EAAE,kBAAA,GACrC,OAAOA,EAAO,UAAU,UAAU,CAAC,EAAE,kBAAA;AAAA,EAAkB,CACxD,GAED,GAAG,mDAAmD,MAAM;AAC1D,UAAMC,IAAe,KAAK,GAAA;AAC1B,IAAAJ,oBAAQE,GAAA,EAAW,OAAM,cAAa,SAAAH,GAAkB,UAAUK,GAAc,CAAE;AAElF,UAAMC,IAAUF,EAAO,eAAe,UAAU;AAChD,IAAAG,EAAU,MAAMD,CAAO,GACvB,OAAOD,CAAY,EAAE,qBAAqB,SAAS;AAAA,EAAA,CACpD,GAED,GAAG,4CAA4C,MAAM;AACnD,UAAMA,IAAe,KAAK,GAAA;AAC1B,IAAAJ,EAAO,gBAAAC,EAACC,KAAW,OAAM,cAAa,SAAAH,GAAkB,UAAUK,GAAc,UAAQ,GAAA,CAAC,CAAE;AAE3F,UAAMC,IAAUF,EAAO,eAAe,UAAU;AAChD,IAAAG,EAAU,MAAMD,CAAO,GACvB,OAAOD,CAAY,EAAE,IAAI,iBAAA;AAAA,EAAiB,CAC3C;AACH,CAAC;"}
1
+ {"version":3,"file":"Radiogroup.test.js","sources":["../../../src/components/RadioGroup/Radiogroup.test.tsx"],"sourcesContent":["import '@testing-library/jest-dom';\nimport { render, screen, fireEvent } from '@testing-library/react';\n\nimport { RadioGroup } from './RadioGroup';\n\nconst options = [\n { id: '1', titleLabel: 'Option 1', value: 'option1' },\n { id: '2', titleLabel: 'Option 2', value: 'option2' },\n];\n\ndescribe('RadioGroup', () => {\n it('should render correctly', () => {\n render(<RadioGroup label=\"Test Label\" options={options} onChange={jest.fn()} />);\n expect(screen.getByText('Test Label')).toBeInTheDocument();\n expect(screen.getByText('Option 1')).toBeInTheDocument();\n expect(screen.getByText('Option 2')).toBeInTheDocument();\n });\n\n it('should call onChange when an option is selected', () => {\n const handleChange = jest.fn();\n render(<RadioGroup label=\"Test Label\" options={options} onChange={handleChange} />);\n\n const option1 = screen.getByLabelText('Option 1');\n fireEvent.click(option1);\n expect(handleChange).toHaveBeenCalledWith('option1');\n });\n\n it('should not allow selection when disabled', () => {\n const handleChange = jest.fn();\n render(<RadioGroup label=\"Test Label\" options={options} onChange={handleChange} disabled />);\n\n const option1 = screen.getByLabelText('Option 1');\n fireEvent.click(option1);\n expect(handleChange).not.toHaveBeenCalled();\n });\n});\n"],"names":["options","render","jsx","RadioGroup","screen","handleChange","option1","fireEvent"],"mappings":";;;;AAKA,MAAMA,IAAU;AAAA,EACd,EAAE,IAAI,KAAK,YAAY,YAAY,OAAO,UAAA;AAAA,EAC1C,EAAE,IAAI,KAAK,YAAY,YAAY,OAAO,UAAA;AAC5C;AAEA,SAAS,cAAc,MAAM;AAC3B,KAAG,2BAA2B,MAAM;AAClC,IAAAC,EAAO,gBAAAC,EAACC,KAAW,OAAM,cAAa,SAAAH,GAAkB,UAAU,KAAK,GAAA,EAAG,CAAG,CAAE,GAC/E,OAAOI,EAAO,UAAU,YAAY,CAAC,EAAE,kBAAA,GACvC,OAAOA,EAAO,UAAU,UAAU,CAAC,EAAE,kBAAA,GACrC,OAAOA,EAAO,UAAU,UAAU,CAAC,EAAE,kBAAA;AAAA,EACvC,CAAC,GAED,GAAG,mDAAmD,MAAM;AAC1D,UAAMC,IAAe,KAAK,GAAA;AAC1B,IAAAJ,oBAAQE,GAAA,EAAW,OAAM,cAAa,SAAAH,GAAkB,UAAUK,GAAc,CAAE;AAElF,UAAMC,IAAUF,EAAO,eAAe,UAAU;AAChD,IAAAG,EAAU,MAAMD,CAAO,GACvB,OAAOD,CAAY,EAAE,qBAAqB,SAAS;AAAA,EACrD,CAAC,GAED,GAAG,4CAA4C,MAAM;AACnD,UAAMA,IAAe,KAAK,GAAA;AAC1B,IAAAJ,EAAO,gBAAAC,EAACC,KAAW,OAAM,cAAa,SAAAH,GAAkB,UAAUK,GAAc,UAAQ,GAAA,CAAC,CAAE;AAE3F,UAAMC,IAAUF,EAAO,eAAe,UAAU;AAChD,IAAAG,EAAU,MAAMD,CAAO,GACvB,OAAOD,CAAY,EAAE,IAAI,iBAAA;AAAA,EAC3B,CAAC;AACH,CAAC;"}
@@ -18,12 +18,12 @@ import "../IconButton/IconButton.js";
18
18
  import "../Input/Input.js";
19
19
  import "../InputField/InputField.js";
20
20
  import "react-router";
21
- import "../../TablePlugin-cMMBdz-x.js";
21
+ import "../../TablePlugin-FQQwnq2m.js";
22
22
  import "../RteEditor/Providers/LanguageProvider.js";
23
23
  import "../RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
24
24
  import "../RteEditor/hooks/components/Flyout.js";
25
25
  import "react-dom";
26
- import "../../index-nrPtQ1dv.js";
26
+ import "../../index-yEhaxKq-.js";
27
27
  import "../SelectListbox/SelectListbox.js";
28
28
  import "../SelectListbox/SelectProvider.js";
29
29
  import "../Sortable/components/SortableItem.js";
@@ -1 +1 @@
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,IAAmB,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,EAAA;AAG/B,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
+ {"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,IAAmB,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,5 +1,5 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { l as t } from "../../index-BYGu3RV5.js";
2
+ import { l as t } from "../../index-BamlKH-k.js";
3
3
  import { RadioTabSelector as e } from "./RadioTabSelector.js";
4
4
  const i = "<RadioTabSelector radioButtons={} defaultValue={} label={} labelPosition={} required={} notValidatedText={} onSetValue={} />", b = {
5
5
  title: "Molecules/RadioTabSelector",
@@ -15,12 +15,12 @@ import "../../IconButton/IconButton.js";
15
15
  import "../../Input/Input.js";
16
16
  import "../../InputField/InputField.js";
17
17
  import "react-router";
18
- import "../../../TablePlugin-cMMBdz-x.js";
18
+ import "../../../TablePlugin-FQQwnq2m.js";
19
19
  import "../Providers/LanguageProvider.js";
20
20
  import "../Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
21
21
  import "../hooks/components/Flyout.js";
22
22
  import "react-dom";
23
- import "../../../index-nrPtQ1dv.js";
23
+ import "../../../index-yEhaxKq-.js";
24
24
  import "../../SelectListbox/SelectListbox.js";
25
25
  import "../../SelectListbox/SelectProvider.js";
26
26
  import "../../Sortable/components/SortableItem.js";
@@ -1,7 +1,7 @@
1
1
  import { jsx as s } from "react/jsx-runtime";
2
- import { o as u } from "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
2
+ import { o as u } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
3
3
  import { c as f } from "../../../../clsx-OuTLNxxd.js";
4
- import { P as _, _ as p, X as h } from "../../../../Lexical.prod-C1B_JvcI.js";
4
+ import { P as _, _ as p, X as h } from "../../../../Lexical.prod-qYl_ifJ6.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-dE9wQTC9.js";
@@ -1 +1 @@
1
- {"version":3,"file":"BlockFormatPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { clsx } from 'clsx';\nimport { $getSelection, $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical';\nimport { useEffect, useState } from 'react';\n\nimport type { JSX } from 'react';\n\nimport { Icon } from 'components/Icon';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ntype BlockTypesType = 'bold' | 'italic';\nconst BLOCK_TYPE_ICONS = {\n bold: 'Bold',\n italic: 'Italic',\n};\n\nconst BlockTypes = ['bold', 'italic'];\n\nexport const BlockFormatPlugin = (): JSX.Element => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n\n const onClick = (type: BlockTypesType): void => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, type);\n };\n\n useEffect(() => {\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n setIsBold(selection.hasFormat('bold'));\n setIsItalic(selection.hasFormat('italic'));\n }\n });\n });\n\n return () => {\n removeStatusListener();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n {BlockTypes.map((type) => (\n <button\n onClick={() => onClick(type as BlockTypesType)}\n key={type}\n title={type === 'bold' ? t.format.boldTooltip : t.format.italicTooltip}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--${type}`],\n type === 'bold' && isBold && styles['editor__toolbar-button--active'],\n type === 'italic' && isItalic && styles['editor__toolbar-button--active']\n )}\n aria-label={`${type === 'bold' ? t.aria.labels.bold : t.aria.labels.italic}`}\n aria-keyshortcuts={`${type === 'bold' ? t.aria.keyshortcuts.bold : t.aria.keyshortcuts.italic}`}\n type=\"button\"\n >\n <Icon name={BLOCK_TYPE_ICONS[type as keyof typeof Icon]} size={24} />\n </button>\n ))}\n </div>\n );\n};\n"],"names":["BLOCK_TYPE_ICONS","BlockTypes","BlockFormatPlugin","useTranslation","editor","useLexicalComposerContext","isBold","setIsBold","useState","isItalic","setIsItalic","onClick","type","FORMAT_TEXT_COMMAND","useEffect","removeStatusListener","editorState","selection","$getSelection","$isRangeSelection","jsx","styles","clsx","Icon"],"mappings":";;;;;;;;AAYA,MAAMA,IAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AACV,GAEMC,IAAa,CAAC,QAAQ,QAAQ,GAEvBC,IAAoB,MAAmB;AAClD,QAAM,IAAIC,EAAA,GACJ,CAACC,CAAM,IAAIC,EAAA,GACX,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpC,CAACC,GAAUC,CAAW,IAAIF,EAAS,EAAK,GAExCG,IAAU,CAACC,MAA+B;AAC9C,IAAAR,EAAO,gBAAgBS,GAAqBD,CAAI;AAAA,EAAA;AAGlD,SAAAE,EAAU,MAAM;AACd,UAAMC,IAAuBX,EAAO,uBAAuB,CAAC,EAAE,aAAAY,QAAkB;AAC9E,MAAAA,EAAY,KAAK,MAAM;AACrB,cAAMC,IAAYC,EAAA;AAClB,QAAIC,EAAkBF,CAAS,MAC7BV,EAAUU,EAAU,UAAU,MAAM,CAAC,GACrCP,EAAYO,EAAU,UAAU,QAAQ,CAAC;AAAA,MAC3C,CACD;AAAA,IAAA,CACF;AAED,WAAO,MAAM;AACX,MAAAF,EAAA;AAAA,IAAqB;AAAA,EACvB,GAEC,CAACX,CAAM,CAAC,GAGT,gBAAAgB,EAAC,SAAI,WAAWC,EAAO,8BAA8B,GAClD,UAAApB,EAAW,IAAI,CAACW,MACf,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAMT,EAAQC,CAAsB;AAAA,MAE7C,OAAOA,MAAS,SAAS,EAAE,OAAO,cAAc,EAAE,OAAO;AAAA,MACzD,WAAWU;AAAA,QACTD,EAAO,wBAAwB;AAAA,QAC/BA,EAAO,2BAA2BT,CAAI,EAAE;AAAA,QACxCA,MAAS,UAAUN,KAAUe,EAAO,gCAAgC;AAAA,QACpET,MAAS,YAAYH,KAAYY,EAAO,gCAAgC;AAAA,MAAA;AAAA,MAE1E,cAAY,GAAGT,MAAS,SAAS,EAAE,KAAK,OAAO,OAAO,EAAE,KAAK,OAAO,MAAM;AAAA,MAC1E,qBAAmB,GAAGA,MAAS,SAAS,EAAE,KAAK,aAAa,OAAO,EAAE,KAAK,aAAa,MAAM;AAAA,MAC7F,MAAK;AAAA,MAEL,4BAACW,GAAA,EAAK,MAAMvB,EAAiBY,CAAyB,GAAG,MAAM,GAAA,CAAI;AAAA,IAAA;AAAA,IAZ9DA;AAAA,EAAA,CAcR,GACH;AAEJ;"}
1
+ {"version":3,"file":"BlockFormatPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { clsx } from 'clsx';\nimport { $getSelection, $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical';\nimport { useEffect, useState } from 'react';\n\nimport type { JSX } from 'react';\n\nimport { Icon } from 'components/Icon';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ntype BlockTypesType = 'bold' | 'italic';\nconst BLOCK_TYPE_ICONS = {\n bold: 'Bold',\n italic: 'Italic',\n};\n\nconst BlockTypes = ['bold', 'italic'];\n\nexport const BlockFormatPlugin = (): JSX.Element => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n\n const onClick = (type: BlockTypesType): void => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, type);\n };\n\n useEffect(() => {\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n setIsBold(selection.hasFormat('bold'));\n setIsItalic(selection.hasFormat('italic'));\n }\n });\n });\n\n return () => {\n removeStatusListener();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n {BlockTypes.map((type) => (\n <button\n onClick={() => onClick(type as BlockTypesType)}\n key={type}\n title={type === 'bold' ? t.format.boldTooltip : t.format.italicTooltip}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--${type}`],\n type === 'bold' && isBold && styles['editor__toolbar-button--active'],\n type === 'italic' && isItalic && styles['editor__toolbar-button--active']\n )}\n aria-label={`${type === 'bold' ? t.aria.labels.bold : t.aria.labels.italic}`}\n aria-keyshortcuts={`${type === 'bold' ? t.aria.keyshortcuts.bold : t.aria.keyshortcuts.italic}`}\n type=\"button\"\n >\n <Icon name={BLOCK_TYPE_ICONS[type as keyof typeof Icon]} size={24} />\n </button>\n ))}\n </div>\n );\n};\n"],"names":["BLOCK_TYPE_ICONS","BlockTypes","BlockFormatPlugin","useTranslation","editor","useLexicalComposerContext","isBold","setIsBold","useState","isItalic","setIsItalic","onClick","type","FORMAT_TEXT_COMMAND","useEffect","removeStatusListener","editorState","selection","$getSelection","$isRangeSelection","jsx","styles","clsx","Icon"],"mappings":";;;;;;;;AAYA,MAAMA,IAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AACV,GAEMC,IAAa,CAAC,QAAQ,QAAQ,GAEvBC,IAAoB,MAAmB;AAClD,QAAM,IAAIC,EAAA,GACJ,CAACC,CAAM,IAAIC,EAAA,GACX,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpC,CAACC,GAAUC,CAAW,IAAIF,EAAS,EAAK,GAExCG,IAAU,CAACC,MAA+B;AAC9C,IAAAR,EAAO,gBAAgBS,GAAqBD,CAAI;AAAA,EAClD;AAEA,SAAAE,EAAU,MAAM;AACd,UAAMC,IAAuBX,EAAO,uBAAuB,CAAC,EAAE,aAAAY,QAAkB;AAC9E,MAAAA,EAAY,KAAK,MAAM;AACrB,cAAMC,IAAYC,EAAA;AAClB,QAAIC,EAAkBF,CAAS,MAC7BV,EAAUU,EAAU,UAAU,MAAM,CAAC,GACrCP,EAAYO,EAAU,UAAU,QAAQ,CAAC;AAAA,MAE7C,CAAC;AAAA,IACH,CAAC;AAED,WAAO,MAAM;AACX,MAAAF,EAAA;AAAA,IACF;AAAA,EAEF,GAAG,CAACX,CAAM,CAAC,GAGT,gBAAAgB,EAAC,SAAI,WAAWC,EAAO,8BAA8B,GAClD,UAAApB,EAAW,IAAI,CAACW,MACf,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAMT,EAAQC,CAAsB;AAAA,MAE7C,OAAOA,MAAS,SAAS,EAAE,OAAO,cAAc,EAAE,OAAO;AAAA,MACzD,WAAWU;AAAA,QACTD,EAAO,wBAAwB;AAAA,QAC/BA,EAAO,2BAA2BT,CAAI,EAAE;AAAA,QACxCA,MAAS,UAAUN,KAAUe,EAAO,gCAAgC;AAAA,QACpET,MAAS,YAAYH,KAAYY,EAAO,gCAAgC;AAAA,MAAA;AAAA,MAE1E,cAAY,GAAGT,MAAS,SAAS,EAAE,KAAK,OAAO,OAAO,EAAE,KAAK,OAAO,MAAM;AAAA,MAC1E,qBAAmB,GAAGA,MAAS,SAAS,EAAE,KAAK,aAAa,OAAO,EAAE,KAAK,aAAa,MAAM;AAAA,MAC7F,MAAK;AAAA,MAEL,4BAACW,GAAA,EAAK,MAAMvB,EAAiBY,CAAyB,GAAG,MAAM,GAAA,CAAI;AAAA,IAAA;AAAA,IAZ9DA;AAAA,EAAA,CAcR,GACH;AAEJ;"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs as f, jsx as i } from "react/jsx-runtime";
2
2
  import { c as e } from "../../../../clsx-OuTLNxxd.js";
3
- import { o as h } from "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
4
- import { at as _, au as y, av as C, aw as k } from "../../../../Lexical.prod-C1B_JvcI.js";
3
+ import { o as h } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
4
+ import { at as _, au as y, av as C, aw as k } from "../../../../Lexical.prod-qYl_ifJ6.js";
5
5
  import { useState as s, useEffect as m } from "react";
6
6
  import "../../../Accordion/Accordion.js";
7
7
  import { Icon as n } from "../../../Icon/Icon.js";
@@ -18,13 +18,13 @@ import "../../../IconButton/IconButton.js";
18
18
  import "../../../Input/Input.js";
19
19
  import "../../../InputField/InputField.js";
20
20
  import "react-router";
21
- import "../../../../TablePlugin-cMMBdz-x.js";
21
+ import "../../../../TablePlugin-FQQwnq2m.js";
22
22
  import { s as r } from "../../../../RteEditor.module-dE9wQTC9.js";
23
23
  import { useTranslation as g } from "../../hooks/useTranslation.js";
24
24
  import "../LinkPlugin/LinkContextMenu/LinkContextMenu.js";
25
25
  import "../../hooks/components/Flyout.js";
26
26
  import "react-dom";
27
- import "../../../../index-nrPtQ1dv.js";
27
+ import "../../../../index-yEhaxKq-.js";
28
28
  import "../../Providers/LanguageProvider.js";
29
29
  import "../../../SelectListbox/SelectListbox.js";
30
30
  import "../../../SelectListbox/SelectProvider.js";
@@ -1 +1 @@
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,EAAA,GAG1CC,IAAa,MAAM;AACvB,IAAAT,EAAO,gBAAgBU,GAAc,MAAS;AAAA,EAAA;AAGhD,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
+ {"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,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
- import { A as G } from "../../../../../TablePlugin-cMMBdz-x.js";
4
- import "../../../../../helpers-BO6Gg9y6.js";
3
+ import { A as G } from "../../../../../TablePlugin-FQQwnq2m.js";
4
+ import "../../../../../helpers-D3SODeVc.js";
5
5
  import "../../../../Accordion/Accordion.js";
6
6
  import "../../../../Icon/Icon.js";
7
7
  import "../../../../Buttons/Button.js";
@@ -24,7 +24,7 @@ import "../../../hooks/useTranslation.js";
24
24
  import "../LinkContextMenu/LinkContextMenu.js";
25
25
  import "../../../hooks/components/Flyout.js";
26
26
  import "react-dom";
27
- import "../../../../../index-nrPtQ1dv.js";
27
+ import "../../../../../index-yEhaxKq-.js";
28
28
  import "../../../Providers/LanguageProvider.js";
29
29
  import "../../../../SelectListbox/SelectListbox.js";
30
30
  import "../../../../SelectListbox/SelectProvider.js";
@@ -1,6 +1,6 @@
1
1
  import { jsxs as u, Fragment as L, jsx as n } from "react/jsx-runtime";
2
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-BO6Gg9y6.js";
3
+ import { e as E } from "../../../../../helpers-D3SODeVc.js";
4
4
  import { Icon as k } from "../../../../Icon/Icon.js";
5
5
  import { useTranslation as R } from "../../../hooks/useTranslation.js";
6
6
  import { Button as b } from "../../../../Buttons/Button.js";
@@ -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","useTranslation","link","setLink","useState","editable","setEditable","linkRef","useRef","reset","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,EACnB,GAEMG,IAAa,MAAM;AACvB,IAAAb,EAAOK,CAAI,GACXO,EAAA;AAAA,EACF,GAEME,IAAe,MAAM;AACzB,IAAAb,EAAA,GACAK,EAAQ,EAAE,GACVM,EAAA;AAAA,EACF,GAEMG,IAAc,MAAM;AACxB,IAAAH,EAAA,GACAV,EAAA;AAAA,EACF,GAEMc,IAAgB,MAAM;AAC1B,WAAO,KAAKC,EAAYlB,CAAG,GAAG,QAAQ;AAAA,EACxC;AAEA,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,IAEhD,CAAC;AAAA,EAEH,GAAG,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;"}
@@ -1,11 +1,11 @@
1
1
  import { jsx as k, jsxs as J } from "react/jsx-runtime";
2
- import { o as W } from "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
2
+ import { o as W } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
3
3
  import { c as Y } from "../../../../clsx-OuTLNxxd.js";
4
- import { p as I, k as q, v as G } from "../../../../LexicalLink.prod-ldhpNY9X.js";
4
+ import { p as I, k as q, v as G } from "../../../../LexicalLink.prod-ZZwC5ABn.js";
5
5
  import { useRef as a, useState as Q, useEffect as m } from "react";
6
- import { a2 as X, P as p, p as Z, as as $, _ as w, J as tt, M as et, i as ot } from "../../../../Lexical.prod-C1B_JvcI.js";
7
- import { A as rt } from "../../../../TablePlugin-cMMBdz-x.js";
8
- import { e as nt } from "../../../../helpers-BO6Gg9y6.js";
6
+ import { a2 as X, P as p, p as Z, as as $, _ as w, J as tt, M as et, i as ot } from "../../../../Lexical.prod-qYl_ifJ6.js";
7
+ import { A as rt } from "../../../../TablePlugin-FQQwnq2m.js";
8
+ import { e as nt } from "../../../../helpers-D3SODeVc.js";
9
9
  import { LinkContextMenu as it } from "./LinkContextMenu/LinkContextMenu.js";
10
10
  import { useFlyout as st } from "../../hooks/useFlyout.js";
11
11
  import "../../../Accordion/Accordion.js";
@@ -27,7 +27,7 @@ import { setScrollableContainers as B, removeScrollableContainers as lt } from "
27
27
  import { s as h } from "../../../../RteEditor.module-dE9wQTC9.js";
28
28
  import { useTranslation as at } from "../../hooks/useTranslation.js";
29
29
  import "react-dom";
30
- import "../../../../index-nrPtQ1dv.js";
30
+ import "../../../../index-yEhaxKq-.js";
31
31
  import "../../Providers/LanguageProvider.js";
32
32
  import "../../../SelectListbox/SelectListbox.js";
33
33
  import "../../../SelectListbox/SelectProvider.js";
@@ -1 +1 @@
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 { $isLinkNode, $toggleLink, TOGGLE_LINK_COMMAND } from '@lexical/link';\nimport { useEffect, useRef, useState } from 'react';\nimport {\n $createTextNode,\n $getSelection,\n $isRangeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_EDITOR,\n KEY_DOWN_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical';\n\nimport type { LinkNode } from '@lexical/link';\nimport type { ElementNode, TextNode, 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';\nimport { removeScrollableContainers, setScrollableContainers } from 'components/RteEditor/helpers';\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\nconst getLinkNode = (node: ElementNode | null): ElementNode | null => {\n let currentNode: TextNode | ElementNode | null = node;\n\n while (currentNode) {\n if ($isLinkNode(currentNode)) {\n return currentNode;\n }\n currentNode = currentNode.getParent();\n }\n\n return null;\n};\n\nexport const getLinkNodeTag = (anchorNode: ElementNode | TextNode): boolean | LinkType => {\n let currentNode: TextNode | ElementNode | null = anchorNode;\n\n while (currentNode) {\n if ($isLinkNode(currentNode)) {\n return {\n active: true,\n url: currentNode.getURL(),\n linktext: currentNode.getTextContent(),\n };\n }\n currentNode = currentNode.getParent();\n }\n\n return false;\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 anchor = selection.anchor;\n const node = anchor.getNode() as ElementNode;\n const linkNode = getLinkNode(node);\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 node = getLinkNodeTag(selection.anchor.getNode()) as LinkType;\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.url, 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 node = getLinkNodeTag(selection.anchor.getNode()) as LinkType;\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.linktext;\n openFlyoutWithDefaults(node.url, node.linktext);\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_EDITOR\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 linkNode = getLinkNode(anchorNode) as LinkNode;\n\n if (linkNode) {\n return {\n active: true,\n url: linkNode.getURL(),\n linktext: linkNode.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 useEffect(() => {\n const removeKeydown = (event: KeyboardEvent): boolean => {\n setScrollableContainers(handleResizeScroll);\n\n if (event.key === 'Escape' && isVisibleRef.current) {\n event.preventDefault();\n event.stopPropagation();\n closeFlyout();\n }\n return true;\n };\n\n window.addEventListener('keydown', removeKeydown, { capture: true });\n\n const handleResizeScroll = () => {\n hideFlyout();\n };\n\n setScrollableContainers(handleResizeScroll);\n\n window.addEventListener('scroll', handleResizeScroll);\n window.addEventListener('resize', handleResizeScroll);\n\n return () => {\n window.removeEventListener('keydown', removeKeydown);\n window.removeEventListener('scroll', handleResizeScroll);\n window.removeEventListener('resize', handleResizeScroll);\n removeScrollableContainers(handleResizeScroll);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\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","getLinkNode","node","currentNode","$isLinkNode","getLinkNodeTag","anchorNode","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","linkNode","newTextNode","$createTextNode","anchor","focus","$toggleLink","ensureHttps","TOGGLE_LINK_COMMAND","AddLinkForm","useEffect","handleSelectionClickOrChange","domNode","unregisterSelect","SELECTION_CHANGE_COMMAND","unregisterClick","CLICK_COMMAND","event","removeKeyboardShortcut","KEY_DOWN_COMMAND","openFlyoutWithDefaults","linkText","selectedTextContent","COMMAND_PRIORITY_EDITOR","removeStatusListener","editorState","removeKeydown","setScrollableContainers","handleResizeScroll","removeScrollableContainers","styles","jsxs","clsx","Icon"],"mappings":"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"}
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 { $isLinkNode, $toggleLink, TOGGLE_LINK_COMMAND } from '@lexical/link';\nimport { useEffect, useRef, useState } from 'react';\nimport {\n $createTextNode,\n $getSelection,\n $isRangeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_EDITOR,\n KEY_DOWN_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical';\n\nimport type { LinkNode } from '@lexical/link';\nimport type { ElementNode, TextNode, 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';\nimport { removeScrollableContainers, setScrollableContainers } from 'components/RteEditor/helpers';\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\nconst getLinkNode = (node: ElementNode | null): ElementNode | null => {\n let currentNode: TextNode | ElementNode | null = node;\n\n while (currentNode) {\n if ($isLinkNode(currentNode)) {\n return currentNode;\n }\n currentNode = currentNode.getParent();\n }\n\n return null;\n};\n\nexport const getLinkNodeTag = (anchorNode: ElementNode | TextNode): boolean | LinkType => {\n let currentNode: TextNode | ElementNode | null = anchorNode;\n\n while (currentNode) {\n if ($isLinkNode(currentNode)) {\n return {\n active: true,\n url: currentNode.getURL(),\n linktext: currentNode.getTextContent(),\n };\n }\n currentNode = currentNode.getParent();\n }\n\n return false;\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 anchor = selection.anchor;\n const node = anchor.getNode() as ElementNode;\n const linkNode = getLinkNode(node);\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 node = getLinkNodeTag(selection.anchor.getNode()) as LinkType;\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.url, 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 node = getLinkNodeTag(selection.anchor.getNode()) as LinkType;\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.linktext;\n openFlyoutWithDefaults(node.url, node.linktext);\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_EDITOR\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 linkNode = getLinkNode(anchorNode) as LinkNode;\n\n if (linkNode) {\n return {\n active: true,\n url: linkNode.getURL(),\n linktext: linkNode.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 useEffect(() => {\n const removeKeydown = (event: KeyboardEvent): boolean => {\n setScrollableContainers(handleResizeScroll);\n\n if (event.key === 'Escape' && isVisibleRef.current) {\n event.preventDefault();\n event.stopPropagation();\n closeFlyout();\n }\n return true;\n };\n\n window.addEventListener('keydown', removeKeydown, { capture: true });\n\n const handleResizeScroll = () => {\n hideFlyout();\n };\n\n setScrollableContainers(handleResizeScroll);\n\n window.addEventListener('scroll', handleResizeScroll);\n window.addEventListener('resize', handleResizeScroll);\n\n return () => {\n window.removeEventListener('keydown', removeKeydown);\n window.removeEventListener('scroll', handleResizeScroll);\n window.removeEventListener('resize', handleResizeScroll);\n removeScrollableContainers(handleResizeScroll);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\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","getLinkNode","node","currentNode","$isLinkNode","getLinkNodeTag","anchorNode","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","linkNode","newTextNode","$createTextNode","anchor","focus","$toggleLink","ensureHttps","TOGGLE_LINK_COMMAND","AddLinkForm","useEffect","handleSelectionClickOrChange","domNode","unregisterSelect","SELECTION_CHANGE_COMMAND","unregisterClick","CLICK_COMMAND","event","removeKeyboardShortcut","KEY_DOWN_COMMAND","openFlyoutWithDefaults","linkText","selectedTextContent","COMMAND_PRIORITY_EDITOR","removeStatusListener","editorState","removeKeydown","setScrollableContainers","handleResizeScroll","removeScrollableContainers","styles","jsxs","clsx","Icon"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { M as e, e as r, a as s, v as l } from "../../../../helpers-BO6Gg9y6.js";
1
+ import { M as e, e as r, a as s, v as l } from "../../../../helpers-D3SODeVc.js";
2
2
  export {
3
3
  e as MATCHERS,
4
4
  r as ensureHttps,
@@ -1,10 +1,10 @@
1
1
  import { jsx as d } from "react/jsx-runtime";
2
- import { o as I } from "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
3
- import { T as N, C as P, y as v, n as K, a as f, c as S } from "../../../../LexicalList.prod-7DmvPZ_J.js";
4
- import { _ as B } from "../../../../LexicalSelection.prod-Dmiwka3x.js";
2
+ import { o as I } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
3
+ import { T as N, C as P, y as v, n as K, a as f, c as S } from "../../../../LexicalList.prod-UurCu6DK.js";
4
+ import { _ as B } from "../../../../LexicalSelection.prod-DXruZeFN.js";
5
5
  import { useState as p, useEffect as k } from "react";
6
6
  import { c as $ } from "../../../../clsx-OuTLNxxd.js";
7
- import { as as w, J as x, a0 as O, P as b, _ as h, $ as U, B as E } from "../../../../Lexical.prod-C1B_JvcI.js";
7
+ import { as as w, J as x, a0 as O, P as b, _ as h, $ as U, B as E } from "../../../../Lexical.prod-qYl_ifJ6.js";
8
8
  import { Icon as J } from "../../../Icon/Icon.js";
9
9
  import { s as l } from "../../../../RteEditor.module-dE9wQTC9.js";
10
10
  import { useTranslation as T } from "../../hooks/useTranslation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ListPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/ListPlugin/ListPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport {\n $createListNode,\n $isListItemNode,\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from '@lexical/list';\nimport { $setBlocksType } from '@lexical/selection';\nimport { useEffect, useState } from 'react';\nimport { clsx } from 'clsx';\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_LOW,\n KEY_DOWN_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical';\n\nimport type { ElementNode, RangeSelection } from 'lexical';\n\nimport { Icon } from 'components/Icon';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ntype ListTypesType = 'bullet' | 'number' | 'paragraph';\nconst LIST_TYPE_ICONS = {\n bullet: 'BulletList',\n number: 'NumberedList',\n};\n\nconst ListTypes = ['bullet', 'number'];\n\nexport const ListPlugin = () => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState<ListTypesType>('paragraph');\n const [isUList, setIsUList] = useState<boolean>(false);\n const [isOList, setIsOList] = useState<boolean>(false);\n\n const formatParagraph = () => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode());\n }\n });\n };\n\n const formatList = (listType: ListTypesType): void => {\n if (listType === 'number' && blockType !== 'number') {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n setBlockType('number');\n } else if (listType === 'bullet' && blockType !== 'bullet') {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n setBlockType('bullet');\n } else {\n formatParagraph();\n setBlockType('paragraph');\n }\n };\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit7') {\n event.preventDefault();\n if (isOList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit8') {\n event.preventDefault();\n if (isUList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_EDITOR\n );\n\n return () => {\n removeKeyboardShortcut();\n };\n }, [editor, isOList, isUList]);\n\n useEffect(() => {\n editor.registerCommand(\n KEY_TAB_COMMAND,\n (event) => {\n event.preventDefault();\n editor.update(() => {\n const selection = $getSelection() as RangeSelection;\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const currentNode = selection.anchor.getNode();\n const parent = currentNode.getParent();\n if (!$isListItemNode(parent)) {\n return;\n }\n\n const listParent = parent.getParent();\n if ($isListNode(listParent)) {\n const newList = $createListNode($isListNode(listParent) ? listParent.getListType() : 'bullet');\n parent.append(newList);\n newList.append(currentNode);\n }\n });\n return true;\n },\n COMMAND_PRIORITY_LOW\n );\n\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n let anchorNode = selection.anchor.getNode() as ElementNode;\n while (anchorNode !== null) {\n if ($isListNode(anchorNode)) {\n const tag = anchorNode.getTag();\n setIsUList(tag === 'ul');\n setIsOList(tag === 'ol');\n if (tag === 'ul') {\n setBlockType('bullet');\n }\n if (tag === 'ol') {\n setBlockType('number');\n }\n return;\n }\n const parentNode = anchorNode.getParent();\n if (parentNode === null) break;\n anchorNode = parentNode;\n }\n setIsUList(false);\n setIsOList(false);\n setBlockType('paragraph');\n }\n return false;\n });\n });\n\n return () => {\n removeStatusListener();\n };\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n {ListTypes.map((listType) => (\n <button\n onClick={() => formatList(listType as ListTypesType)}\n key={listType}\n title={t.format[`${listType}Tooltip` as keyof typeof t.format]}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--${listType}`],\n listType === 'bullet' && isUList && styles['editor__toolbar-button--active'],\n listType === 'number' && isOList && styles['editor__toolbar-button--active']\n )}\n aria-label={t.aria.labels[listType as keyof typeof t.aria.labels]}\n aria-keyshortcuts={t.aria.keyshortcuts[listType as keyof typeof t.aria.keyshortcuts]}\n type=\"button\"\n >\n <Icon name={LIST_TYPE_ICONS[listType as keyof typeof Icon]} size={24} />\n </button>\n ))}\n </div>\n );\n};\n"],"names":["LIST_TYPE_ICONS","ListTypes","ListPlugin","t","useTranslation","editor","useLexicalComposerContext","blockType","setBlockType","useState","isUList","setIsUList","isOList","setIsOList","formatParagraph","selection","$getSelection","$isRangeSelection","$setBlocksType","$createParagraphNode","formatList","listType","INSERT_ORDERED_LIST_COMMAND","INSERT_UNORDERED_LIST_COMMAND","useEffect","removeKeyboardShortcut","KEY_DOWN_COMMAND","event","REMOVE_LIST_COMMAND","COMMAND_PRIORITY_EDITOR","KEY_TAB_COMMAND","currentNode","parent","$isListItemNode","listParent","$isListNode","newList","$createListNode","COMMAND_PRIORITY_LOW","removeStatusListener","editorState","anchorNode","tag","parentNode","jsx","styles","clsx","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"ListPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/ListPlugin/ListPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport {\n $createListNode,\n $isListItemNode,\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from '@lexical/list';\nimport { $setBlocksType } from '@lexical/selection';\nimport { useEffect, useState } from 'react';\nimport { clsx } from 'clsx';\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_LOW,\n KEY_DOWN_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical';\n\nimport type { ElementNode, RangeSelection } from 'lexical';\n\nimport { Icon } from 'components/Icon';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ntype ListTypesType = 'bullet' | 'number' | 'paragraph';\nconst LIST_TYPE_ICONS = {\n bullet: 'BulletList',\n number: 'NumberedList',\n};\n\nconst ListTypes = ['bullet', 'number'];\n\nexport const ListPlugin = () => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState<ListTypesType>('paragraph');\n const [isUList, setIsUList] = useState<boolean>(false);\n const [isOList, setIsOList] = useState<boolean>(false);\n\n const formatParagraph = () => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode());\n }\n });\n };\n\n const formatList = (listType: ListTypesType): void => {\n if (listType === 'number' && blockType !== 'number') {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n setBlockType('number');\n } else if (listType === 'bullet' && blockType !== 'bullet') {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n setBlockType('bullet');\n } else {\n formatParagraph();\n setBlockType('paragraph');\n }\n };\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit7') {\n event.preventDefault();\n if (isOList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit8') {\n event.preventDefault();\n if (isUList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_EDITOR\n );\n\n return () => {\n removeKeyboardShortcut();\n };\n }, [editor, isOList, isUList]);\n\n useEffect(() => {\n editor.registerCommand(\n KEY_TAB_COMMAND,\n (event) => {\n event.preventDefault();\n editor.update(() => {\n const selection = $getSelection() as RangeSelection;\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const currentNode = selection.anchor.getNode();\n const parent = currentNode.getParent();\n if (!$isListItemNode(parent)) {\n return;\n }\n\n const listParent = parent.getParent();\n if ($isListNode(listParent)) {\n const newList = $createListNode($isListNode(listParent) ? listParent.getListType() : 'bullet');\n parent.append(newList);\n newList.append(currentNode);\n }\n });\n return true;\n },\n COMMAND_PRIORITY_LOW\n );\n\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n let anchorNode = selection.anchor.getNode() as ElementNode;\n while (anchorNode !== null) {\n if ($isListNode(anchorNode)) {\n const tag = anchorNode.getTag();\n setIsUList(tag === 'ul');\n setIsOList(tag === 'ol');\n if (tag === 'ul') {\n setBlockType('bullet');\n }\n if (tag === 'ol') {\n setBlockType('number');\n }\n return;\n }\n const parentNode = anchorNode.getParent();\n if (parentNode === null) break;\n anchorNode = parentNode;\n }\n setIsUList(false);\n setIsOList(false);\n setBlockType('paragraph');\n }\n return false;\n });\n });\n\n return () => {\n removeStatusListener();\n };\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n {ListTypes.map((listType) => (\n <button\n onClick={() => formatList(listType as ListTypesType)}\n key={listType}\n title={t.format[`${listType}Tooltip` as keyof typeof t.format]}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--${listType}`],\n listType === 'bullet' && isUList && styles['editor__toolbar-button--active'],\n listType === 'number' && isOList && styles['editor__toolbar-button--active']\n )}\n aria-label={t.aria.labels[listType as keyof typeof t.aria.labels]}\n aria-keyshortcuts={t.aria.keyshortcuts[listType as keyof typeof t.aria.keyshortcuts]}\n type=\"button\"\n >\n <Icon name={LIST_TYPE_ICONS[listType as keyof typeof Icon]} size={24} />\n </button>\n ))}\n </div>\n );\n};\n"],"names":["LIST_TYPE_ICONS","ListTypes","ListPlugin","t","useTranslation","editor","useLexicalComposerContext","blockType","setBlockType","useState","isUList","setIsUList","isOList","setIsOList","formatParagraph","selection","$getSelection","$isRangeSelection","$setBlocksType","$createParagraphNode","formatList","listType","INSERT_ORDERED_LIST_COMMAND","INSERT_UNORDERED_LIST_COMMAND","useEffect","removeKeyboardShortcut","KEY_DOWN_COMMAND","event","REMOVE_LIST_COMMAND","COMMAND_PRIORITY_EDITOR","KEY_TAB_COMMAND","currentNode","parent","$isListItemNode","listParent","$isListNode","newList","$createListNode","COMMAND_PRIORITY_LOW","removeStatusListener","editorState","anchorNode","tag","parentNode","jsx","styles","clsx","Icon"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { o as m } from "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
1
+ import { o as m } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
2
2
  import { useEffect as c } from "react";
3
- import { af as f, V as p, P as u } from "../../../../Lexical.prod-C1B_JvcI.js";
4
- import { L as i } from "../../../../LexicalUtils.prod-w0fZ_Z8S.js";
5
- import { A as d } from "../../../../LexicalClipboard.prod-Dd64YQH0.js";
6
- import { d as D } from "../../../../index-nrPtQ1dv.js";
3
+ import { af as f, V as p, P as u } from "../../../../Lexical.prod-qYl_ifJ6.js";
4
+ import { L as i } from "../../../../LexicalUtils.prod-C3To3vrm.js";
5
+ import { A as d } from "../../../../LexicalClipboard.prod-DIGbXq4v.js";
6
+ import { d as D } from "../../../../index-yEhaxKq-.js";
7
7
  const w = () => {
8
8
  const [e] = m(), l = (t) => {
9
9
  t.preventDefault(), e.update(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"PasteHandlerPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { useEffect } from 'react';\nimport { $getSelection, COMMAND_PRIORITY_CRITICAL, type CommandPayloadType, PASTE_COMMAND } from 'lexical';\nimport { objectKlassEquals } from '@lexical/utils';\nimport { $insertDataTransferForRichText } from '@lexical/clipboard';\nimport { MSWordNormalizer } from '@staartwind.nl/lexical-paste-from-word';\n\nexport const PasteHandlerPlugin = () => {\n const [editor] = useLexicalComposerContext();\n\n const handlePaste = (event: CommandPayloadType<typeof PASTE_COMMAND>) => {\n event.preventDefault();\n editor.update(() => {\n const selection = $getSelection();\n const clipboardData =\n objectKlassEquals(event, InputEvent) || objectKlassEquals(event, KeyboardEvent) ? null : event.clipboardData;\n if (clipboardData != null && selection !== null) {\n const content = clipboardData.getData('text/html') || clipboardData.getData('text/plain');\n const newData = new DataTransfer();\n const wordNormalizer = new MSWordNormalizer();\n newData.setData('text/html', content);\n if (wordNormalizer.isActive(content)) {\n newData.setData('text/html', wordNormalizer.normalize(content));\n }\n $insertDataTransferForRichText(newData, selection, editor);\n }\n });\n };\n\n useEffect(() => {\n const removePasteListener = editor.registerCommand(\n PASTE_COMMAND,\n (event) => {\n if (event instanceof ClipboardEvent) {\n handlePaste(event);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n\n return () => {\n removePasteListener();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n return null;\n};\n"],"names":["PasteHandlerPlugin","editor","useLexicalComposerContext","handlePaste","event","selection","$getSelection","clipboardData","objectKlassEquals","content","newData","wordNormalizer","MSWordNormalizer","$insertDataTransferForRichText","useEffect","removePasteListener","PASTE_COMMAND","COMMAND_PRIORITY_CRITICAL"],"mappings":";;;;;;AAOO,MAAMA,IAAqB,MAAM;AACtC,QAAM,CAACC,CAAM,IAAIC,EAAA,GAEXC,IAAc,CAACC,MAAoD;AACvE,IAAAA,EAAM,eAAA,GACNH,EAAO,OAAO,MAAM;AAClB,YAAMI,IAAYC,EAAA,GACZC,IACJC,EAAkBJ,GAAO,UAAU,KAAKI,EAAkBJ,GAAO,aAAa,IAAI,OAAOA,EAAM;AACjG,UAAIG,KAAiB,QAAQF,MAAc,MAAM;AAC/C,cAAMI,IAAUF,EAAc,QAAQ,WAAW,KAAKA,EAAc,QAAQ,YAAY,GAClFG,IAAU,IAAI,aAAA,GACdC,IAAiB,IAAIC,mBAAA;AAC3B,QAAAF,EAAQ,QAAQ,aAAaD,CAAO,GAChCE,EAAe,SAASF,CAAO,KACjCC,EAAQ,QAAQ,aAAaC,EAAe,UAAUF,CAAO,CAAC,GAEhEI,EAA+BH,GAASL,GAAWJ,CAAM;AAAA,MAAA;AAAA,IAC3D,CACD;AAAA,EAAA;AAGH,SAAAa,EAAU,MAAM;AACd,UAAMC,IAAsBd,EAAO;AAAA,MACjCe;AAAAA,MACA,CAACZ,MACKA,aAAiB,kBACnBD,EAAYC,CAAK,GACV,MAEF;AAAA,MAETa;AAAAA,IAAA;AAGF,WAAO,MAAM;AACX,MAAAF,EAAA;AAAA,IAAoB;AAAA,EACtB,GAEC,CAACd,CAAM,CAAC,GAEJ;AACT;"}
1
+ {"version":3,"file":"PasteHandlerPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { useEffect } from 'react';\nimport { $getSelection, COMMAND_PRIORITY_CRITICAL, type CommandPayloadType, PASTE_COMMAND } from 'lexical';\nimport { objectKlassEquals } from '@lexical/utils';\nimport { $insertDataTransferForRichText } from '@lexical/clipboard';\nimport { MSWordNormalizer } from '@staartwind.nl/lexical-paste-from-word';\n\nexport const PasteHandlerPlugin = () => {\n const [editor] = useLexicalComposerContext();\n\n const handlePaste = (event: CommandPayloadType<typeof PASTE_COMMAND>) => {\n event.preventDefault();\n editor.update(() => {\n const selection = $getSelection();\n const clipboardData =\n objectKlassEquals(event, InputEvent) || objectKlassEquals(event, KeyboardEvent) ? null : event.clipboardData;\n if (clipboardData != null && selection !== null) {\n const content = clipboardData.getData('text/html') || clipboardData.getData('text/plain');\n const newData = new DataTransfer();\n const wordNormalizer = new MSWordNormalizer();\n newData.setData('text/html', content);\n if (wordNormalizer.isActive(content)) {\n newData.setData('text/html', wordNormalizer.normalize(content));\n }\n $insertDataTransferForRichText(newData, selection, editor);\n }\n });\n };\n\n useEffect(() => {\n const removePasteListener = editor.registerCommand(\n PASTE_COMMAND,\n (event) => {\n if (event instanceof ClipboardEvent) {\n handlePaste(event);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n\n return () => {\n removePasteListener();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n return null;\n};\n"],"names":["PasteHandlerPlugin","editor","useLexicalComposerContext","handlePaste","event","selection","$getSelection","clipboardData","objectKlassEquals","content","newData","wordNormalizer","MSWordNormalizer","$insertDataTransferForRichText","useEffect","removePasteListener","PASTE_COMMAND","COMMAND_PRIORITY_CRITICAL"],"mappings":";;;;;;AAOO,MAAMA,IAAqB,MAAM;AACtC,QAAM,CAACC,CAAM,IAAIC,EAAA,GAEXC,IAAc,CAACC,MAAoD;AACvE,IAAAA,EAAM,eAAA,GACNH,EAAO,OAAO,MAAM;AAClB,YAAMI,IAAYC,EAAA,GACZC,IACJC,EAAkBJ,GAAO,UAAU,KAAKI,EAAkBJ,GAAO,aAAa,IAAI,OAAOA,EAAM;AACjG,UAAIG,KAAiB,QAAQF,MAAc,MAAM;AAC/C,cAAMI,IAAUF,EAAc,QAAQ,WAAW,KAAKA,EAAc,QAAQ,YAAY,GAClFG,IAAU,IAAI,aAAA,GACdC,IAAiB,IAAIC,mBAAA;AAC3B,QAAAF,EAAQ,QAAQ,aAAaD,CAAO,GAChCE,EAAe,SAASF,CAAO,KACjCC,EAAQ,QAAQ,aAAaC,EAAe,UAAUF,CAAO,CAAC,GAEhEI,EAA+BH,GAASL,GAAWJ,CAAM;AAAA,MAC3D;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAAa,EAAU,MAAM;AACd,UAAMC,IAAsBd,EAAO;AAAA,MACjCe;AAAAA,MACA,CAACZ,MACKA,aAAiB,kBACnBD,EAAYC,CAAK,GACV,MAEF;AAAA,MAETa;AAAAA,IAAA;AAGF,WAAO,MAAM;AACX,MAAAF,EAAA;AAAA,IACF;AAAA,EAEF,GAAG,CAACd,CAAM,CAAC,GAEJ;AACT;"}
@@ -1,13 +1,14 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
- import "../../../../LexicalComposerContext.prod-DLlRM5wP.js";
4
- import { T } from "../../../../TableCellResizerPlugin-Bao8R6Lv.js";
5
- import "../../../../LexicalTable.prod-iqHmKv_G.js";
6
- import "../../../../LexicalUtils.prod-w0fZ_Z8S.js";
7
- import "../../../../Lexical.prod-C1B_JvcI.js";
3
+ import "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
4
+ import { T as b } from "../../../../TableCellResizerPlugin-B9MT1fxA.js";
5
+ import "../../../../LexicalTable.prod-COFf1Spn.js";
6
+ import "../../../../LexicalUtils.prod-C3To3vrm.js";
7
+ import "../../../../Lexical.prod-qYl_ifJ6.js";
8
8
  import "react-dom";
9
+ import "../TablePlugin/helpers.js";
9
10
  import "../../nodes/TableWrapperNode/TableWrapperNode.js";
10
11
  export {
11
- T as TableCellResizerPlugin
12
+ b as TableCellResizerPlugin
12
13
  };
13
14
  //# sourceMappingURL=TableCellResizerPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableCellResizerPlugin.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"TableCellResizerPlugin.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { T as r } from "../../../../TableCellResizerPlugin-Bao8R6Lv.js";
1
+ import { T as r } from "../../../../TableCellResizerPlugin-B9MT1fxA.js";
2
2
  export {
3
3
  r as TableCellResizerPlugin
4
4
  };
@@ -1,6 +1,6 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
- import { b as D } from "../../../../TablePlugin-cMMBdz-x.js";
3
+ import { b as D } from "../../../../TablePlugin-FQQwnq2m.js";
4
4
  import "../../../Accordion/Accordion.js";
5
5
  import "../../../Buttons/Button.js";
6
6
  import "../../../Buttons/LinkButton.js";
@@ -22,7 +22,7 @@ import "../../hooks/useTranslation.js";
22
22
  import "../LinkPlugin/LinkContextMenu/LinkContextMenu.js";
23
23
  import "../../hooks/components/Flyout.js";
24
24
  import "react-dom";
25
- import "../../../../index-nrPtQ1dv.js";
25
+ import "../../../../index-yEhaxKq-.js";
26
26
  import "../../Providers/LanguageProvider.js";
27
27
  import "../../../SelectListbox/SelectListbox.js";
28
28
  import "../../../SelectListbox/SelectProvider.js";