@uva-glass/component-library 3.52.11 → 3.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Lexical.prod-sd_e2sqT.js → Lexical.prod-DH2XfwvA.js} +58 -58
- package/dist/{Lexical.prod-sd_e2sqT.js.map → Lexical.prod-DH2XfwvA.js.map} +1 -1
- package/dist/{LexicalClipboard.prod-Co2PF1UJ.js → LexicalClipboard.prod-DTuNvXAS.js} +22 -22
- package/dist/{LexicalClipboard.prod-Co2PF1UJ.js.map → LexicalClipboard.prod-DTuNvXAS.js.map} +1 -1
- package/dist/{LexicalLink.prod-BCE6Bg2N.js → LexicalLink.prod-BV5Y2RYj.js} +8 -9
- package/dist/{LexicalLink.prod-BCE6Bg2N.js.map → LexicalLink.prod-BV5Y2RYj.js.map} +1 -1
- package/dist/{LexicalList.prod-CIB0K0ja.js → LexicalList.prod-DA9du3qx.js} +4 -4
- package/dist/{LexicalList.prod-CIB0K0ja.js.map → LexicalList.prod-DA9du3qx.js.map} +1 -1
- package/dist/{LexicalSelection.prod-CCmcTP6S.js → LexicalSelection.prod-mQk00-U_.js} +2 -2
- package/dist/{LexicalSelection.prod-CCmcTP6S.js.map → LexicalSelection.prod-mQk00-U_.js.map} +1 -1
- package/dist/{LexicalTable.prod-Oa2YPHLl.js → LexicalTable.prod-RGq0GKAR.js} +4 -4
- package/dist/{LexicalTable.prod-Oa2YPHLl.js.map → LexicalTable.prod-RGq0GKAR.js.map} +1 -1
- package/dist/{LexicalUtils.prod-CjKjgnmx.js → LexicalUtils.prod-DU4QwthB.js} +2 -2
- package/dist/{LexicalUtils.prod-CjKjgnmx.js.map → LexicalUtils.prod-DU4QwthB.js.map} +1 -1
- package/dist/RteEditor.module-DaBh86FK.js +41 -0
- package/dist/RteEditor.module-DaBh86FK.js.map +1 -0
- package/dist/{TableCellResizerPlugin-DATbSzfg.js → TableCellResizerPlugin-DRwI83s2.js} +4 -4
- package/dist/{TableCellResizerPlugin-DATbSzfg.js.map → TableCellResizerPlugin-DRwI83s2.js.map} +1 -1
- package/dist/{TablePlugin-CqCjNBW_.js → TablePlugin-DmE96vN7.js} +20 -20
- package/dist/{TablePlugin-CqCjNBW_.js.map → TablePlugin-DmE96vN7.js.map} +1 -1
- package/dist/assets/AddCatalogueLinkForm.css +1 -0
- package/dist/assets/Flyout.css +1 -1
- package/dist/assets/RteEditor.css +1 -1
- package/dist/assets/variables.css +72 -72
- package/dist/chunk-SS2NHR7W-qmI2h7CJ.js +4507 -0
- package/dist/chunk-SS2NHR7W-qmI2h7CJ.js.map +1 -0
- package/dist/{client-CFLMKOFW.js → client-D4oO7Spw.js} +11 -11
- package/dist/{client-CFLMKOFW.js.map → client-D4oO7Spw.js.map} +1 -1
- package/dist/components/Accordion/Accordion.test.js +2 -2
- package/dist/components/AccordionCard/AccordionCard.test.js +2 -2
- package/dist/components/ActionList/ActionList.test.js +2 -2
- package/dist/components/AppStatusBar/AppStatusBar.test.js +1 -1
- package/dist/components/Attention/Attention.test.js +1 -1
- package/dist/components/Backdrop/Backdrop.test.js +1 -1
- package/dist/components/Buttons/Button.stories.js +1 -1
- package/dist/components/Buttons/Button.test.js +1 -1
- package/dist/components/Buttons/LinkButton.stories.js +1 -1
- package/dist/components/Buttons/LinkButton.test.js +1 -1
- package/dist/components/Buttons/MenuButton.stories.js +1 -1
- package/dist/components/Buttons/MenuButton.test.js +1 -1
- package/dist/components/Card/Card.test.js +1 -1
- package/dist/components/Checkbox/Checkbox.stories.js +1 -1
- package/dist/components/Checkbox/Checkbox.test.js +2 -2
- package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +1 -1
- package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +1 -1
- package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
- package/dist/components/CheckboxTree/CheckboxTree.stories.js +111 -55
- package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
- package/dist/components/Chip/Chip.stories.js +1 -1
- package/dist/components/ControlsButton/ControlsButton.stories.js +1 -1
- package/dist/components/Drawer/Drawer.stories.js +1 -1
- package/dist/components/FeedbackBar/FeedbackBar.test.js +1 -1
- package/dist/components/FormInput/FormInput.js +1 -1
- package/dist/components/FormInput/FormInput.stories.js +1 -1
- package/dist/components/IconButton/IconButton.stories.js +1 -1
- package/dist/components/InputField/InputField.stories.js +2 -2
- package/dist/components/Label/Label.test.js +1 -1
- package/dist/components/MetaDataBar/MetaDataBar.test.js +1 -1
- package/dist/components/ModalDialog/ModalDialog.stories.js +1 -1
- package/dist/components/MultiSelect/MultiSelect.js +1 -1
- package/dist/components/MultiSelect/MultiSelect.stories.js +2 -2
- package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
- package/dist/components/MultiSelect/index.js +1 -1
- package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +1 -1
- package/dist/components/MultiSelectBox/MultiSelectBox.test.js +1 -1
- package/dist/components/Notification/Notification.stories.js +1 -1
- package/dist/components/Notification/Notification.test.js +1 -1
- package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +1 -1
- package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
- package/dist/components/PeriodSelector/PeriodSelector.stories.js +1 -1
- package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +1 -1
- package/dist/components/RadioGroup/RadioGroup.stories.js +1 -1
- package/dist/components/RadioGroup/Radiogroup.test.js +1 -1
- package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -1
- package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +1 -1
- package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
- package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +2 -2
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.d.ts +22 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +108 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js.map +1 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.d.ts +1 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +5 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js.map +1 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.d.ts +8 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +182 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js.map +1 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.d.ts +1 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.js +5 -0
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.js.map +1 -0
- package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +8 -8
- package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +2 -2
- package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.d.ts +0 -2
- package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +112 -132
- package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js.map +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +2 -3
- package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +52 -57
- package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js.map +1 -1
- package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +3 -3
- package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +4 -4
- package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +2 -2
- package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +6 -6
- package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +24 -23
- package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js.map +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.d.ts +4 -1
- package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +65 -52
- package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js.map +1 -1
- package/dist/components/RteEditor/Plugins/index.js +8 -9
- package/dist/components/RteEditor/Providers/LanguageProvider.d.ts +2 -2
- package/dist/components/RteEditor/Providers/LanguageProvider.js +4 -4
- package/dist/components/RteEditor/Providers/LanguageProvider.js.map +1 -1
- package/dist/components/RteEditor/RteEditor.d.ts +8 -3
- package/dist/components/RteEditor/RteEditor.js +334 -309
- package/dist/components/RteEditor/RteEditor.js.map +1 -1
- package/dist/components/RteEditor/RteEditor.stories.js +69 -33
- package/dist/components/RteEditor/RteEditor.stories.js.map +1 -1
- package/dist/components/RteEditor/UvaTheme/UvaTheme.d.ts +1 -0
- package/dist/components/RteEditor/UvaTheme/UvaTheme.js +3 -2
- package/dist/components/RteEditor/UvaTheme/UvaTheme.js.map +1 -1
- package/dist/components/RteEditor/helpers.js +26 -23
- package/dist/components/RteEditor/helpers.js.map +1 -1
- package/dist/components/RteEditor/hooks/components/Flyout.js +6 -16
- package/dist/components/RteEditor/hooks/components/Flyout.js.map +1 -1
- package/dist/components/RteEditor/hooks/useTranslation.d.ts +39 -1
- package/dist/components/RteEditor/hooks/useTranslation.js +6 -6
- package/dist/components/RteEditor/hooks/useTranslation.js.map +1 -1
- package/dist/components/RteEditor/mockCatalogueSearchData.d.ts +18 -0
- package/dist/components/RteEditor/mockCatalogueSearchData.js +485 -0
- package/dist/components/RteEditor/mockCatalogueSearchData.js.map +1 -0
- package/dist/components/RteEditor/mockRteContent.d.ts +1 -1
- package/dist/components/RteEditor/mockRteContent.js +8 -6
- package/dist/components/RteEditor/mockRteContent.js.map +1 -1
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.d.ts +29 -0
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +126 -0
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js.map +1 -0
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.d.ts +1 -0
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.js +11 -0
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.js.map +1 -0
- package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +58 -52
- package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js.map +1 -1
- package/dist/components/RteEditor/nodes/index.d.ts +1 -0
- package/dist/components/RteEditor/nodes/index.js +14 -6
- package/dist/components/RteEditor/nodes/index.js.map +1 -1
- package/dist/components/RteEditor/translations.d.ts +41 -3
- package/dist/components/RteEditor/translations.js +44 -6
- package/dist/components/RteEditor/translations.js.map +1 -1
- package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
- package/dist/components/Sortable/Sortable.stories.js +1 -1
- package/dist/components/StatusBadge/StatusBadge.test.js +1 -1
- package/dist/components/TextArea/TextArea.stories.js +1 -1
- package/dist/components/TextArea/TextArea.test.js +2 -2
- package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +1 -1
- package/dist/components/VarIndicator/VarIndicator.stories.js +1 -1
- package/dist/components/VarIndicator/VarIndicator.test.js +2 -2
- package/dist/components/index.js +1 -1
- package/dist/{index-DRQMriwT.js → index-B4NxQN5d.js} +8668 -10004
- package/dist/index-B4NxQN5d.js.map +1 -0
- package/dist/{index-BKK3EWVW.js → index-ZQcmo1D_.js} +2 -2
- package/dist/{index-BKK3EWVW.js.map → index-ZQcmo1D_.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/react-18-BczhA0zC.js +41 -0
- package/dist/react-18-BczhA0zC.js.map +1 -0
- package/dist/{react.esm-BjO203QT.js → react.esm-BDo_tPxu.js} +2 -2
- package/dist/{react.esm-BjO203QT.js.map → react.esm-BDo_tPxu.js.map} +1 -1
- package/dist/storybook__react.d.js +4252 -4509
- package/dist/storybook__react.d.js.map +1 -1
- package/package.json +19 -19
- package/dist/RteEditor.module-CUi7Vqe8.js +0 -37
- package/dist/RteEditor.module-CUi7Vqe8.js.map +0 -1
- package/dist/chunk-HERDX7MO-DaYu-eWo.js +0 -11320
- package/dist/chunk-HERDX7MO-DaYu-eWo.js.map +0 -1
- package/dist/index-DRQMriwT.js.map +0 -1
- package/dist/react-18-C6foUf2n.js +0 -42
- package/dist/react-18-C6foUf2n.js.map +0 -1
|
@@ -18,7 +18,7 @@ import "../Input/Input.js";
|
|
|
18
18
|
import "../InputField/InputField.js";
|
|
19
19
|
import { Label as I } from "../Label/Label.js";
|
|
20
20
|
import "react-router";
|
|
21
|
-
import "../../TablePlugin-
|
|
21
|
+
import "../../TablePlugin-DmE96vN7.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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { f as t } from "../../index-
|
|
2
|
+
import { f as t } from "../../index-B4NxQN5d.js";
|
|
3
3
|
import { PeriodSelector as e } from "./PeriodSelector.js";
|
|
4
4
|
const i = "<PeriodSelector maxPeriods={} defaultValues={} label={} labelPosition={} required={} onChange={} />", m = {
|
|
5
5
|
title: "Organisms/PeriodSelector",
|
|
@@ -18,7 +18,7 @@ import "../GridRow/GridRow.js";
|
|
|
18
18
|
import "../IconButton/IconButton.js";
|
|
19
19
|
import "../Input/Input.js";
|
|
20
20
|
import "../InputField/InputField.js";
|
|
21
|
-
import "../../TablePlugin-
|
|
21
|
+
import "../../TablePlugin-DmE96vN7.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";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as n } from "react/jsx-runtime";
|
|
2
2
|
import "../../index-ApPj4mI1.js";
|
|
3
|
-
import { r as l, s as t, f as s } from "../../react.esm-
|
|
3
|
+
import { r as l, s as t, f as s } from "../../react.esm-BDo_tPxu.js";
|
|
4
4
|
import { RadioGroup as a } from "./RadioGroup.js";
|
|
5
5
|
const i = [
|
|
6
6
|
{ id: "1", titleLabel: "Option 1", value: "option1" },
|
|
@@ -18,7 +18,7 @@ import "../IconButton/IconButton.js";
|
|
|
18
18
|
import "../Input/Input.js";
|
|
19
19
|
import "../InputField/InputField.js";
|
|
20
20
|
import "react-router";
|
|
21
|
-
import "../../TablePlugin-
|
|
21
|
+
import "../../TablePlugin-DmE96vN7.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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import { f as t } from "../../index-
|
|
2
|
+
import { f as t } from "../../index-B4NxQN5d.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,7 +15,7 @@ import "../../IconButton/IconButton.js";
|
|
|
15
15
|
import "../../Input/Input.js";
|
|
16
16
|
import "../../InputField/InputField.js";
|
|
17
17
|
import "react-router";
|
|
18
|
-
import "../../../TablePlugin-
|
|
18
|
+
import "../../../TablePlugin-DmE96vN7.js";
|
|
19
19
|
import "../Providers/LanguageProvider.js";
|
|
20
20
|
import "../Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
|
|
21
21
|
import "../hooks/components/Flyout.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as s } from "react/jsx-runtime";
|
|
2
2
|
import { o as u } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
|
|
3
3
|
import { c as f } from "../../../../clsx-OuTLNxxd.js";
|
|
4
|
-
import { b as _, y as p, _ as h } from "../../../../Lexical.prod-
|
|
4
|
+
import { b as _, y as p, _ as h } from "../../../../Lexical.prod-DH2XfwvA.js";
|
|
5
5
|
import { useState as l, useEffect as k } from "react";
|
|
6
6
|
import { Icon as I } from "../../../Icon/Icon.js";
|
|
7
|
-
import { s as a } from "../../../../RteEditor.module-
|
|
7
|
+
import { s as a } from "../../../../RteEditor.module-DaBh86FK.js";
|
|
8
8
|
import { useTranslation as B } from "../../hooks/useTranslation.js";
|
|
9
9
|
const C = {
|
|
10
10
|
bold: "Bold",
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type SearchResult = {
|
|
2
|
+
code: string;
|
|
3
|
+
id: string;
|
|
4
|
+
name: {
|
|
5
|
+
EN: string;
|
|
6
|
+
NL: string;
|
|
7
|
+
};
|
|
8
|
+
programmeType: string;
|
|
9
|
+
};
|
|
10
|
+
export type SearchResponse = {
|
|
11
|
+
state: 'idle' | 'pending' | 'ready';
|
|
12
|
+
results: SearchResult[];
|
|
13
|
+
};
|
|
14
|
+
interface AddCatalogueLinkFormProps {
|
|
15
|
+
linkType: 'course' | 'programme';
|
|
16
|
+
onCloseHandler: () => void;
|
|
17
|
+
onSearchHandler: (query: string, type: 'course' | 'programme') => void;
|
|
18
|
+
searchResponse?: SearchResponse;
|
|
19
|
+
onSelect?: (code: string, label: string, type: 'course' | 'programme') => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const AddCatalogueLinkForm: ({ linkType, onCloseHandler, onSearchHandler, searchResponse, onSelect, }: AddCatalogueLinkFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useId as F, useRef as g, useEffect as L } from "react";
|
|
3
|
+
import { Button as v } from "../../../../Buttons/Button.js";
|
|
4
|
+
import "../../../../Buttons/LinkButton.js";
|
|
5
|
+
import "@react-aria/button";
|
|
6
|
+
import { FormField as C } from "../../../../FormField/FormField.js";
|
|
7
|
+
import { Label as E } from "../../../../Label/Label.js";
|
|
8
|
+
import { useTranslation as y } from "../../../hooks/useTranslation.js";
|
|
9
|
+
import { InputField as x } from "../../../../InputField/InputField.js";
|
|
10
|
+
import { useLanguage as P } from "../../../Providers/LanguageProvider.js";
|
|
11
|
+
import { Repeater as A } from "../../../../Repeater/Repeater.js";
|
|
12
|
+
import '../../../../../assets/AddCatalogueLinkForm.css';const I = "_courselinkform_16a4f_1", K = "_courselinkform__footer_16a4f_13", $ = "_courselinkform__results_16a4f_20", o = {
|
|
13
|
+
courselinkform: I,
|
|
14
|
+
"courselinkform__input-field": "_courselinkform__input-field_16a4f_7",
|
|
15
|
+
courselinkform__footer: K,
|
|
16
|
+
"courselinkform__results-wrapper": "_courselinkform__results-wrapper_16a4f_20",
|
|
17
|
+
"courselinkform__results-header": "_courselinkform__results-header_16a4f_24",
|
|
18
|
+
courselinkform__results: $,
|
|
19
|
+
"courselinkform__result-message": "_courselinkform__result-message_16a4f_41",
|
|
20
|
+
"courselinkform__result-item": "_courselinkform__result-item_16a4f_51"
|
|
21
|
+
}, W = ({
|
|
22
|
+
linkType: n,
|
|
23
|
+
onCloseHandler: h,
|
|
24
|
+
onSearchHandler: f,
|
|
25
|
+
searchResponse: t,
|
|
26
|
+
onSelect: u
|
|
27
|
+
}) => {
|
|
28
|
+
const s = y(), p = `search_${F()}`, c = g(null), k = g(null), { currentLanguage: m } = P(), b = (r) => {
|
|
29
|
+
const l = r.target.value;
|
|
30
|
+
f && f(l, n);
|
|
31
|
+
}, _ = () => {
|
|
32
|
+
h();
|
|
33
|
+
}, w = (r) => {
|
|
34
|
+
r.key === "ArrowDown" && (r.preventDefault(), k.current?.querySelector("button")?.focus());
|
|
35
|
+
}, D = (r, l, a, d) => {
|
|
36
|
+
switch (r.key) {
|
|
37
|
+
case "Escape":
|
|
38
|
+
r.preventDefault(), r.stopPropagation(), _();
|
|
39
|
+
break;
|
|
40
|
+
case "Enter":
|
|
41
|
+
r.preventDefault(), u && u(l, a, d);
|
|
42
|
+
break;
|
|
43
|
+
case "ArrowDown": {
|
|
44
|
+
r.preventDefault(), r.stopPropagation(), r.currentTarget.nextElementSibling?.focus();
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case "ArrowUp": {
|
|
48
|
+
r.preventDefault(), r.stopPropagation(), r.currentTarget.previousElementSibling?.focus();
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case "Tab":
|
|
52
|
+
r.preventDefault(), _();
|
|
53
|
+
break;
|
|
54
|
+
default:
|
|
55
|
+
r.preventDefault();
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
return L(() => {
|
|
60
|
+
c.current && (f("", n), c.current.value = "", c.current.focus());
|
|
61
|
+
}, []), /* @__PURE__ */ i("div", { className: o.courselinkform, children: [
|
|
62
|
+
/* @__PURE__ */ i(A, { gap: "050", children: [
|
|
63
|
+
/* @__PURE__ */ i(C, { className: o["courselinkform__input-field"], children: [
|
|
64
|
+
/* @__PURE__ */ e(E, { htmlFor: p, children: s.cataloguelinks[n === "course" ? "searchCourseFieldLabel" : "searchProgrammeFieldLabel"] }),
|
|
65
|
+
/* @__PURE__ */ e("div", { className: o["linkform__input-url-wrapper"], children: /* @__PURE__ */ e(
|
|
66
|
+
x,
|
|
67
|
+
{
|
|
68
|
+
id: p,
|
|
69
|
+
placeholder: s.cataloguelinks.searchFieldPlaceholder,
|
|
70
|
+
onChange: b,
|
|
71
|
+
onKeyDown: w,
|
|
72
|
+
ref: c,
|
|
73
|
+
"aria-label": s.aria.labels.searchField
|
|
74
|
+
}
|
|
75
|
+
) })
|
|
76
|
+
] }),
|
|
77
|
+
t && t.state === "pending" && /* @__PURE__ */ e("div", { className: o["courselinkform__result-message"], children: s.cataloguelinks.loading }),
|
|
78
|
+
t && t.results.length === 0 && t.state === "ready" && /* @__PURE__ */ e("div", { className: o["courselinkform__result-message"], children: s.cataloguelinks.noResults }),
|
|
79
|
+
t && t.results.length > 0 && /* @__PURE__ */ i("div", { className: o["courselinkform__results-wrapper"], children: [
|
|
80
|
+
/* @__PURE__ */ i("div", { className: o["courselinkform__results-header"], children: [
|
|
81
|
+
/* @__PURE__ */ e("span", { children: s.cataloguelinks[n === "course" ? "resultCourseListCatalogNumber" : "resultProgrammeListCatalogNumber"] }),
|
|
82
|
+
/* @__PURE__ */ e("span", { children: s.cataloguelinks.resultListName })
|
|
83
|
+
] }),
|
|
84
|
+
/* @__PURE__ */ e("div", { className: o.courselinkform__results, ref: k, children: t.results.map(({ id: r, code: l, name: a }) => /* @__PURE__ */ i(
|
|
85
|
+
"button",
|
|
86
|
+
{
|
|
87
|
+
type: "button",
|
|
88
|
+
className: o["courselinkform__result-item"],
|
|
89
|
+
onClick: () => u && u(l, a[m], n),
|
|
90
|
+
onKeyDown: (d) => D(d, l, a[m], n),
|
|
91
|
+
tabIndex: 0,
|
|
92
|
+
"aria-label": `${l} ${a[m]}`,
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ e("span", { children: l }),
|
|
95
|
+
/* @__PURE__ */ e("span", { children: a[m] })
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
r
|
|
99
|
+
)) })
|
|
100
|
+
] })
|
|
101
|
+
] }),
|
|
102
|
+
/* @__PURE__ */ e("div", { className: o.courselinkform__footer, children: /* @__PURE__ */ e(v, { variant: "secondary", onClick: _, "aria-label": s.common.cancel, type: "button", children: s.common.cancel }) })
|
|
103
|
+
] });
|
|
104
|
+
};
|
|
105
|
+
export {
|
|
106
|
+
W as AddCatalogueLinkForm
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=AddCatalogueLinkForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddCatalogueLinkForm.js","sources":["../../../../../../src/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.tsx"],"sourcesContent":["import { useEffect, useId, useRef } from 'react';\r\n\r\nimport type { KeyboardEvent } from 'react';\r\n\r\nimport styles from './AddCatalogueLinkForm.module.css';\r\n\r\nimport { Button } from 'components/Buttons';\r\nimport { FormField } from 'components/FormField';\r\nimport { Label } from 'components/Label';\r\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\r\nimport { InputField } from 'components/InputField';\r\nimport { useLanguage } from 'components/RteEditor/Providers/LanguageProvider';\r\nimport { Repeater } from 'components/Repeater';\r\n\r\ntype SearchResult = {\r\n code: string;\r\n id: string;\r\n name: {\r\n EN: string;\r\n NL: string;\r\n };\r\n programmeType: string;\r\n};\r\n\r\nexport type SearchResponse = {\r\n state: 'idle' | 'pending' | 'ready';\r\n results: SearchResult[];\r\n};\r\n\r\ninterface AddCatalogueLinkFormProps {\r\n linkType: 'course' | 'programme';\r\n onCloseHandler: () => void;\r\n onSearchHandler: (query: string, type: 'course' | 'programme') => void;\r\n searchResponse?: SearchResponse;\r\n onSelect?: (code: string, label: string, type: 'course' | 'programme') => void;\r\n}\r\n\r\nexport const AddCatalogueLinkForm = ({\r\n linkType,\r\n onCloseHandler,\r\n onSearchHandler,\r\n searchResponse,\r\n onSelect,\r\n}: AddCatalogueLinkFormProps) => {\r\n const t = useTranslation();\r\n const searchId = `search_${useId()}`;\r\n const searchFieldRef = useRef<HTMLInputElement>(null);\r\n const resultListRef = useRef<HTMLDivElement>(null);\r\n const { currentLanguage } = useLanguage();\r\n\r\n const handleSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const query = event.target.value;\r\n if (onSearchHandler) {\r\n onSearchHandler(query, linkType);\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n onCloseHandler();\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n const container = resultListRef.current;\r\n const firstFocusable = container?.querySelector<HTMLElement>('button');\r\n firstFocusable?.focus();\r\n }\r\n };\r\n\r\n const onResultKeyDown = (\r\n event: KeyboardEvent<HTMLButtonElement>,\r\n code: string,\r\n name: string,\r\n linkType: 'course' | 'programme'\r\n ) => {\r\n switch (event.key) {\r\n case 'Escape':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleClose();\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n onSelect && onSelect(code, name, linkType);\r\n break;\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const nextElement = event.currentTarget.nextElementSibling;\r\n (nextElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const previousElement = event.currentTarget.previousElementSibling;\r\n (previousElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'Tab':\r\n event.preventDefault();\r\n handleClose();\r\n break;\r\n default:\r\n event.preventDefault();\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (searchFieldRef.current) {\r\n onSearchHandler('', linkType);\r\n searchFieldRef.current.value = '';\r\n searchFieldRef.current.focus();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <div className={styles['courselinkform']}>\r\n <Repeater gap=\"050\">\r\n <FormField className={styles['courselinkform__input-field']}>\r\n <Label htmlFor={searchId}>\r\n {t.cataloguelinks[linkType === 'course' ? 'searchCourseFieldLabel' : 'searchProgrammeFieldLabel']}\r\n </Label>\r\n <div className={styles['linkform__input-url-wrapper']}>\r\n <InputField\r\n id={searchId}\r\n placeholder={t.cataloguelinks.searchFieldPlaceholder}\r\n onChange={handleSearch}\r\n onKeyDown={handleKeyDown}\r\n ref={searchFieldRef}\r\n aria-label={t.aria.labels.searchField}\r\n />\r\n </div>\r\n </FormField>\r\n {searchResponse && searchResponse.state === 'pending' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.loading}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length === 0 && searchResponse.state === 'ready' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.noResults}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length > 0 && (\r\n <div className={styles['courselinkform__results-wrapper']}>\r\n <div className={styles['courselinkform__results-header']}>\r\n <span>\r\n {\r\n t.cataloguelinks[\r\n linkType === 'course' ? 'resultCourseListCatalogNumber' : 'resultProgrammeListCatalogNumber'\r\n ]\r\n }\r\n </span>\r\n <span>{t.cataloguelinks.resultListName}</span>\r\n </div>\r\n <div className={styles['courselinkform__results']} ref={resultListRef}>\r\n {searchResponse.results.map(({ id, code, name }) => (\r\n <button\r\n key={id}\r\n type=\"button\"\r\n className={styles['courselinkform__result-item']}\r\n onClick={() => onSelect && onSelect(code, name[currentLanguage], linkType)}\r\n onKeyDown={(event) => onResultKeyDown(event, code, name[currentLanguage], linkType)}\r\n tabIndex={0}\r\n aria-label={`${code} ${name[currentLanguage]}`}\r\n >\r\n <span>{code}</span>\r\n <span>{name[currentLanguage]}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </Repeater>\r\n <div className={styles['courselinkform__footer']}>\r\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\r\n {t.common.cancel}\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["AddCatalogueLinkForm","linkType","onCloseHandler","onSearchHandler","searchResponse","onSelect","t","useTranslation","searchId","useId","searchFieldRef","useRef","resultListRef","currentLanguage","useLanguage","handleSearch","event","query","handleClose","handleKeyDown","onResultKeyDown","code","name","useEffect","jsxs","styles","Repeater","FormField","jsx","Label","InputField","id","Button"],"mappings":";;;;;;;;;;;;;;;;;;;;GAqCaA,IAAuB,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AACF,MAAiC;AAC/B,QAAMC,IAAIC,EAAA,GACJC,IAAW,UAAUC,EAAA,CAAO,IAC5BC,IAAiBC,EAAyB,IAAI,GAC9CC,IAAgBD,EAAuB,IAAI,GAC3C,EAAE,iBAAAE,EAAA,IAAoBC,EAAA,GAEtBC,IAAe,CAACC,MAA+C;AACnE,UAAMC,IAAQD,EAAM,OAAO;AAC3B,IAAIb,KACFA,EAAgBc,GAAOhB,CAAQ;AAAA,EAEnC,GAEMiB,IAAc,MAAM;AACxB,IAAAhB,EAAA;AAAA,EACF,GAEMiB,IAAgB,CAACH,MAA2C;AAChE,IAAIA,EAAM,QAAQ,gBAChBA,EAAM,eAAA,GACYJ,EAAc,SACE,cAA2B,QAAQ,GACrD,MAAA;AAAA,EAEpB,GAEMQ,IAAkB,CACtBJ,GACAK,GACAC,GACArB,MACG;AACH,YAAQe,EAAM,KAAA;AAAA,MACZ,KAAK;AACH,QAAAA,EAAM,eAAA,GACNA,EAAM,gBAAA,GACNE,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAAF,EAAM,eAAA,GACNX,KAAYA,EAASgB,GAAMC,GAAMrB,CAAQ;AACzC;AAAA,MACF,KAAK,aAAa;AAChB,QAAAe,EAAM,eAAA,GACNA,EAAM,gBAAA,GACcA,EAAM,cAAc,oBACJ,MAAA;AACpC;AAAA,MACF;AAAA,MACA,KAAK,WAAW;AACd,QAAAA,EAAM,eAAA,GACNA,EAAM,gBAAA,GACkBA,EAAM,cAAc,wBACJ,MAAA;AACxC;AAAA,MACF;AAAA,MACA,KAAK;AACH,QAAAA,EAAM,eAAA,GACNE,EAAA;AACA;AAAA,MACF;AACE,QAAAF,EAAM,eAAA;AACN;AAAA,IAAA;AAAA,EAEN;AAEA,SAAAO,EAAU,MAAM;AACd,IAAIb,EAAe,YACjBP,EAAgB,IAAIF,CAAQ,GAC5BS,EAAe,QAAQ,QAAQ,IAC/BA,EAAe,QAAQ,MAAA;AAAA,EAG3B,GAAG,CAAA,CAAE,GAGH,gBAAAc,EAAC,OAAA,EAAI,WAAWC,EAAO,gBACrB,UAAA;AAAA,IAAA,gBAAAD,EAACE,GAAA,EAAS,KAAI,OACZ,UAAA;AAAA,MAAA,gBAAAF,EAACG,GAAA,EAAU,WAAWF,EAAO,6BAA6B,GACxD,UAAA;AAAA,QAAA,gBAAAG,EAACC,GAAA,EAAM,SAASrB,GACb,UAAAF,EAAE,eAAeL,MAAa,WAAW,2BAA2B,2BAA2B,EAAA,CAClG;AAAA,QACA,gBAAA2B,EAAC,OAAA,EAAI,WAAWH,EAAO,6BAA6B,GAClD,UAAA,gBAAAG;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,IAAItB;AAAA,YACJ,aAAaF,EAAE,eAAe;AAAA,YAC9B,UAAUS;AAAA,YACV,WAAWI;AAAA,YACX,KAAKT;AAAA,YACL,cAAYJ,EAAE,KAAK,OAAO;AAAA,UAAA;AAAA,QAAA,EAC5B,CACF;AAAA,MAAA,GACF;AAAA,MACCF,KAAkBA,EAAe,UAAU,aAC1C,gBAAAwB,EAAC,OAAA,EAAI,WAAWH,EAAO,gCAAgC,GAAI,UAAAnB,EAAE,eAAe,QAAA,CAAQ;AAAA,MAErFF,KAAkBA,EAAe,QAAQ,WAAW,KAAKA,EAAe,UAAU,WACjF,gBAAAwB,EAAC,OAAA,EAAI,WAAWH,EAAO,gCAAgC,GAAI,UAAAnB,EAAE,eAAe,WAAU;AAAA,MAEvFF,KAAkBA,EAAe,QAAQ,SAAS,uBAChD,OAAA,EAAI,WAAWqB,EAAO,iCAAiC,GACtD,UAAA;AAAA,QAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAO,gCAAgC,GACrD,UAAA;AAAA,UAAA,gBAAAG,EAAC,UAEG,UAAAtB,EAAE,eACAL,MAAa,WAAW,kCAAkC,kCAC5D,GAEJ;AAAA,UACA,gBAAA2B,EAAC,QAAA,EAAM,UAAAtB,EAAE,eAAe,eAAA,CAAe;AAAA,QAAA,GACzC;AAAA,0BACC,OAAA,EAAI,WAAWmB,EAAO,yBAA4B,KAAKb,GACrD,UAAAR,EAAe,QAAQ,IAAI,CAAC,EAAE,IAAA2B,GAAI,MAAAV,GAAM,MAAAC,QACvC,gBAAAE;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,MAAK;AAAA,YACL,WAAWC,EAAO,6BAA6B;AAAA,YAC/C,SAAS,MAAMpB,KAAYA,EAASgB,GAAMC,EAAKT,CAAe,GAAGZ,CAAQ;AAAA,YACzE,WAAW,CAACe,MAAUI,EAAgBJ,GAAOK,GAAMC,EAAKT,CAAe,GAAGZ,CAAQ;AAAA,YAClF,UAAU;AAAA,YACV,cAAY,GAAGoB,CAAI,IAAIC,EAAKT,CAAe,CAAC;AAAA,YAE5C,UAAA;AAAA,cAAA,gBAAAe,EAAC,UAAM,UAAAP,EAAA,CAAK;AAAA,cACZ,gBAAAO,EAAC,QAAA,EAAM,UAAAN,EAAKT,CAAe,EAAA,CAAE;AAAA,YAAA;AAAA,UAAA;AAAA,UATxBkB;AAAA,QAAA,CAWR,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAAH,EAAC,SAAI,WAAWH,EAAO,wBACrB,UAAA,gBAAAG,EAACI,KAAO,SAAS,aAAa,SAASd,GAAa,cAAYZ,EAAE,OAAO,QAAQ,MAAK,UACnF,UAAAA,EAAE,OAAO,OAAA,CACZ,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './AddCatalogueLinkForm';
|
package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SearchResponse } from './AddCatalogueLinkForm';
|
|
2
|
+
interface CourseCataloguePluginProps {
|
|
3
|
+
onSearch: (query: string, linkType: 'course' | 'programme') => void;
|
|
4
|
+
searchResponse: SearchResponse;
|
|
5
|
+
parentScrollPosition: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const CourseCataloguePlugin: ({ onSearch, searchResponse, parentScrollPosition, }: CourseCataloguePluginProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { jsx as p, jsxs as O } from "react/jsx-runtime";
|
|
2
|
+
import { useState as C, useRef as T, useEffect as z } from "react";
|
|
3
|
+
import { c as I } from "../../../../clsx-OuTLNxxd.js";
|
|
4
|
+
import { o as Y } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
|
|
5
|
+
import { at as U, K as F, b as x, y as A, l as P, s as w, au as $, z as q, a3 as J, a0 as Q } from "../../../../Lexical.prod-DH2XfwvA.js";
|
|
6
|
+
import { w as K } from "../../../../LexicalUtils.prod-DU4QwthB.js";
|
|
7
|
+
import { AddCatalogueLinkForm as Z } from "./AddCatalogueLinkForm/AddCatalogueLinkForm.js";
|
|
8
|
+
import { s as i } from "../../../../RteEditor.module-DaBh86FK.js";
|
|
9
|
+
import { useTranslation as tt } from "../../hooks/useTranslation.js";
|
|
10
|
+
import { CourseCatalogueNode as g, $getLinkTypeFromNode as v, REMOVE_COURSE_CATALOGUE_LINK as et, INSERT_COURSE_CATALOGUE_LINK as ot } from "../../nodes/CourseCatalogueNode/CourseCatalogueNode.js";
|
|
11
|
+
import { useOnClickOutside as rt } from "../../../hooks/useOnClickOutside.js";
|
|
12
|
+
const gt = ({
|
|
13
|
+
onSearch: S,
|
|
14
|
+
searchResponse: H,
|
|
15
|
+
parentScrollPosition: j
|
|
16
|
+
}) => {
|
|
17
|
+
const [s] = Y(), c = tt(), [G, k] = C(!1), [M, _] = C(!1), E = T(null), D = T(null), R = T(null), [b, h] = C(null), [B, V] = C("course"), y = (f) => {
|
|
18
|
+
V(f);
|
|
19
|
+
const u = f === "course" ? E.current?.getBoundingClientRect() : D.current?.getBoundingClientRect();
|
|
20
|
+
u && h({ top: u.bottom + window.scrollY, left: u.left + window.scrollX });
|
|
21
|
+
}, L = () => {
|
|
22
|
+
S("", B), h(null);
|
|
23
|
+
};
|
|
24
|
+
return z(() => {
|
|
25
|
+
b && L();
|
|
26
|
+
}, [j]), z(() => {
|
|
27
|
+
const f = s.registerCommand(
|
|
28
|
+
U,
|
|
29
|
+
(t) => t.ctrlKey && t.shiftKey && t.altKey && t.key === "C" ? (t.preventDefault(), y("course"), !0) : t.ctrlKey && t.shiftKey && t.altKey && t.key === "P" ? (t.preventDefault(), y("programme"), !0) : !1,
|
|
30
|
+
F
|
|
31
|
+
), u = s.registerUpdateListener(({ editorState: t }) => {
|
|
32
|
+
t.read(() => {
|
|
33
|
+
const r = x();
|
|
34
|
+
if (A(r)) {
|
|
35
|
+
const e = r.anchor.getNode(), n = r.anchor.offset;
|
|
36
|
+
if (P(e) && n === e.getTextContentSize() && e.getNextSibling() instanceof g) {
|
|
37
|
+
const o = e.getNextSibling();
|
|
38
|
+
if (o) {
|
|
39
|
+
const d = v(o);
|
|
40
|
+
k(d === "course"), _(d === "programme");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const a = K(e, g);
|
|
45
|
+
if (a) {
|
|
46
|
+
const o = v(a);
|
|
47
|
+
k(o === "course"), _(o === "programme");
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
k(!1), _(!1);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}), m = (t) => {
|
|
54
|
+
const r = J(), e = t.getTextContentSize();
|
|
55
|
+
r.setTextNodeRange(t, e, t, e), Q(r);
|
|
56
|
+
}, N = (t, r) => P(t) && r === t.getTextContentSize() && t.getNextSibling() instanceof g, W = s.registerCommand(
|
|
57
|
+
U,
|
|
58
|
+
(t) => {
|
|
59
|
+
const r = x();
|
|
60
|
+
if (A(r)) {
|
|
61
|
+
const e = t.key, n = r.anchor.getNode(), a = r.anchor.offset;
|
|
62
|
+
let o = K(n, g);
|
|
63
|
+
if (N(n, a) && (o = n.getNextSibling()), !o)
|
|
64
|
+
return !1;
|
|
65
|
+
const d = o?.getTextContentSize();
|
|
66
|
+
if (o && t.key === "Enter")
|
|
67
|
+
return t.preventDefault(), s.update(() => {
|
|
68
|
+
if (N(n, a)) {
|
|
69
|
+
const l = w(`
|
|
70
|
+
`);
|
|
71
|
+
o.insertBefore(l);
|
|
72
|
+
}
|
|
73
|
+
if (a === d) {
|
|
74
|
+
const l = w(`
|
|
75
|
+
`);
|
|
76
|
+
o.insertAfter(l), m(l);
|
|
77
|
+
}
|
|
78
|
+
}), !0;
|
|
79
|
+
if (o && (e === " " || t.code === "Space"))
|
|
80
|
+
return t.preventDefault(), s.update(() => {
|
|
81
|
+
const l = w(" ");
|
|
82
|
+
N(n, a) && (o.insertBefore(l), m(l)), a === d && (o.insertAfter(l), m(l));
|
|
83
|
+
}), !0;
|
|
84
|
+
if (o && (e === "Backspace" || e === "Delete"))
|
|
85
|
+
return t.preventDefault(), s.update(
|
|
86
|
+
() => {
|
|
87
|
+
s.dispatchCommand(et, void 0);
|
|
88
|
+
},
|
|
89
|
+
{ discrete: !0 }
|
|
90
|
+
), !0;
|
|
91
|
+
if (o && e !== "ArrowLeft" && e !== "ArrowRight" && e !== "ArrowUp" && e !== "ArrowDown" && e !== "Home" && e !== "End" && !(t.ctrlKey && (e.toLowerCase() === "z" || e.toLowerCase() === "y")) && !(t.ctrlKey && e.toLowerCase() === "c"))
|
|
92
|
+
return t.preventDefault(), !0;
|
|
93
|
+
}
|
|
94
|
+
return !1;
|
|
95
|
+
},
|
|
96
|
+
F
|
|
97
|
+
), X = s.registerCommand(
|
|
98
|
+
$,
|
|
99
|
+
(t) => {
|
|
100
|
+
const r = x();
|
|
101
|
+
if (A(r)) {
|
|
102
|
+
const e = r.anchor.getNode(), n = K(e, g);
|
|
103
|
+
if (n) {
|
|
104
|
+
t.preventDefault();
|
|
105
|
+
const a = s.getElementByKey(n.getKey());
|
|
106
|
+
return a && (t.clipboardData?.setData("text/html", a.outerHTML), t.clipboardData?.setData("text/plain", n.getTextContent())), !0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return !1;
|
|
110
|
+
},
|
|
111
|
+
q
|
|
112
|
+
);
|
|
113
|
+
return () => {
|
|
114
|
+
f(), u(), W(), X();
|
|
115
|
+
};
|
|
116
|
+
}, [s]), rt(R, () => h(null)), /* @__PURE__ */ p("div", { className: i["editor__toolbar-button-group"], children: /* @__PURE__ */ O("div", { className: i["editor__toolbar-button-flyoutwrapper"], children: [
|
|
117
|
+
/* @__PURE__ */ O("div", { className: i["editor__toolbar-button-group--text"], children: [
|
|
118
|
+
/* @__PURE__ */ p(
|
|
119
|
+
"button",
|
|
120
|
+
{
|
|
121
|
+
onClick: () => y("course"),
|
|
122
|
+
title: c.cataloguelinks.courseTooltip,
|
|
123
|
+
className: I(
|
|
124
|
+
i["editor__toolbar-button"],
|
|
125
|
+
i["editor__toolbar-button--text"],
|
|
126
|
+
G && i["editor__toolbar-button--active"]
|
|
127
|
+
),
|
|
128
|
+
"aria-label": c.aria.labels.courselink,
|
|
129
|
+
"aria-keyshortcuts": c.aria.keyshortcuts.courselink,
|
|
130
|
+
type: "button",
|
|
131
|
+
ref: E,
|
|
132
|
+
children: c.cataloguelinks.courseButtonLabel
|
|
133
|
+
}
|
|
134
|
+
),
|
|
135
|
+
/* @__PURE__ */ p(
|
|
136
|
+
"button",
|
|
137
|
+
{
|
|
138
|
+
onClick: () => y("programme"),
|
|
139
|
+
title: c.cataloguelinks.programmeTooltip,
|
|
140
|
+
className: I(
|
|
141
|
+
i["editor__toolbar-button"],
|
|
142
|
+
i["editor__toolbar-button--text"],
|
|
143
|
+
M && i["editor__toolbar-button--active"]
|
|
144
|
+
),
|
|
145
|
+
"aria-label": c.aria.labels.programmelink,
|
|
146
|
+
"aria-keyshortcuts": c.aria.keyshortcuts.programmelink,
|
|
147
|
+
type: "button",
|
|
148
|
+
ref: D,
|
|
149
|
+
children: c.cataloguelinks.programmeButtonLabel
|
|
150
|
+
}
|
|
151
|
+
)
|
|
152
|
+
] }),
|
|
153
|
+
b && /* @__PURE__ */ p(
|
|
154
|
+
"div",
|
|
155
|
+
{
|
|
156
|
+
className: i["editor__toolbar-flyout-wrapper"],
|
|
157
|
+
style: { top: b.top, left: b.left },
|
|
158
|
+
ref: R,
|
|
159
|
+
children: /* @__PURE__ */ p(
|
|
160
|
+
Z,
|
|
161
|
+
{
|
|
162
|
+
linkType: B,
|
|
163
|
+
onCloseHandler: L,
|
|
164
|
+
onSearchHandler: S,
|
|
165
|
+
searchResponse: H,
|
|
166
|
+
onSelect: (f, u, m) => {
|
|
167
|
+
s.dispatchCommand(ot, {
|
|
168
|
+
linkType: m,
|
|
169
|
+
code: f,
|
|
170
|
+
label: u
|
|
171
|
+
}), L();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
] }) });
|
|
178
|
+
};
|
|
179
|
+
export {
|
|
180
|
+
gt as CourseCataloguePlugin
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=CourseCataloguePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CourseCataloguePlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\r\nimport { clsx } from 'clsx';\r\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\r\nimport {\r\n $createRangeSelection,\r\n $createTextNode,\r\n $getSelection,\r\n $isRangeSelection,\r\n $isTextNode,\r\n $setSelection,\r\n COMMAND_PRIORITY_EDITOR,\r\n COMMAND_PRIORITY_LOW,\r\n COPY_COMMAND,\r\n KEY_DOWN_COMMAND,\r\n} from 'lexical';\r\nimport { $getNearestNodeOfType } from '@lexical/utils';\r\n\r\nimport type { RefObject } from 'react';\r\nimport type { LexicalNode, TextNode } from 'lexical';\r\nimport type { SearchResponse } from './AddCatalogueLinkForm';\r\n\r\nimport { AddCatalogueLinkForm } from './AddCatalogueLinkForm';\r\n\r\nimport styles from 'components/RteEditor/RteEditor.module.css';\r\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\r\nimport {\r\n $getLinkTypeFromNode,\r\n CourseCatalogueNode,\r\n INSERT_COURSE_CATALOGUE_LINK,\r\n REMOVE_COURSE_CATALOGUE_LINK,\r\n} from 'components/RteEditor/nodes/CourseCatalogueNode';\r\nimport { useOnClickOutside } from 'components/hooks/useOnClickOutside';\r\n\r\ninterface CourseCataloguePluginProps {\r\n onSearch: (query: string, linkType: 'course' | 'programme') => void;\r\n searchResponse: SearchResponse;\r\n parentScrollPosition: number;\r\n}\r\n\r\nexport const CourseCataloguePlugin = ({\r\n onSearch,\r\n searchResponse,\r\n parentScrollPosition,\r\n}: CourseCataloguePluginProps) => {\r\n const [editor] = useLexicalComposerContext();\r\n const t = useTranslation();\r\n const [courseIsActive, setCourseIsActive] = useState(false);\r\n const [programmeIsActive, setProgrammeIsActive] = useState(false);\r\n const courseButtonRef = useRef<HTMLButtonElement>(null);\r\n const programmeButtonRef = useRef<HTMLButtonElement>(null);\r\n const flyoutRef = useRef<HTMLDivElement>(null);\r\n const [flyoutPosition, setFlyoutPosition] = useState<{ top: number; left: number } | null>(null);\r\n const [type, setType] = useState<'course' | 'programme'>('course');\r\n\r\n const openFlyout = (type: 'course' | 'programme') => {\r\n setType(type);\r\n const rect =\r\n type === 'course'\r\n ? courseButtonRef.current?.getBoundingClientRect()\r\n : programmeButtonRef.current?.getBoundingClientRect();\r\n if (rect) {\r\n setFlyoutPosition({ top: rect.bottom + window.scrollY, left: rect.left + window.scrollX });\r\n }\r\n };\r\n\r\n const closeFlyout = () => {\r\n onSearch('', type);\r\n setFlyoutPosition(null);\r\n };\r\n\r\n useEffect(() => {\r\n if (flyoutPosition) {\r\n closeFlyout();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [parentScrollPosition]);\r\n\r\n useEffect(() => {\r\n const removeKeyboardShortcut = editor.registerCommand(\r\n KEY_DOWN_COMMAND,\r\n (event: KeyboardEvent) => {\r\n if (event.ctrlKey && event.shiftKey && event.altKey && event.key === 'C') {\r\n event.preventDefault();\r\n openFlyout('course');\r\n return true;\r\n }\r\n if (event.ctrlKey && event.shiftKey && event.altKey && event.key === 'P') {\r\n event.preventDefault();\r\n openFlyout('programme');\r\n return true;\r\n }\r\n return false;\r\n },\r\n COMMAND_PRIORITY_EDITOR\r\n );\r\n\r\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => {\r\n const selection = $getSelection();\r\n if ($isRangeSelection(selection)) {\r\n const anchorNode = selection.anchor.getNode();\r\n const offset = selection.anchor.offset;\r\n\r\n if (\r\n $isTextNode(anchorNode) &&\r\n offset === anchorNode.getTextContentSize() &&\r\n anchorNode.getNextSibling() instanceof CourseCatalogueNode\r\n ) {\r\n // Cursor staat aan het begin van de link!\r\n const courseCatalogueLink = anchorNode.getNextSibling();\r\n if (courseCatalogueLink) {\r\n const linkType = $getLinkTypeFromNode(courseCatalogueLink);\r\n setCourseIsActive(linkType === 'course');\r\n setProgrammeIsActive(linkType === 'programme');\r\n return;\r\n }\r\n }\r\n\r\n const courseCatalogueLink = $getNearestNodeOfType(anchorNode, CourseCatalogueNode);\r\n if (courseCatalogueLink) {\r\n const linkType = $getLinkTypeFromNode(courseCatalogueLink);\r\n setCourseIsActive(linkType === 'course');\r\n setProgrammeIsActive(linkType === 'programme');\r\n return;\r\n }\r\n setCourseIsActive(false);\r\n setProgrammeIsActive(false);\r\n }\r\n });\r\n });\r\n\r\n const moveToEndOfWhiteSpace = (whiteSpace: TextNode) => {\r\n const selection = $createRangeSelection();\r\n const endOffset = whiteSpace.getTextContentSize();\r\n selection.setTextNodeRange(whiteSpace, endOffset, whiteSpace, endOffset);\r\n $setSelection(selection);\r\n };\r\n\r\n const isCursorBeforeLink = (anchorNode: LexicalNode, offset: number) =>\r\n $isTextNode(anchorNode) &&\r\n offset === anchorNode.getTextContentSize() &&\r\n anchorNode.getNextSibling() instanceof CourseCatalogueNode;\r\n\r\n const removeUnEditable = editor.registerCommand(\r\n KEY_DOWN_COMMAND,\r\n (event: KeyboardEvent) => {\r\n const selection = $getSelection();\r\n if ($isRangeSelection(selection)) {\r\n const key = event.key;\r\n const anchorNode = selection.anchor.getNode();\r\n const offset = selection.anchor.offset;\r\n let courseCatalogueLink = $getNearestNodeOfType(anchorNode, CourseCatalogueNode);\r\n\r\n // Detect if cursor is right before the link\r\n if (isCursorBeforeLink(anchorNode, offset)) {\r\n courseCatalogueLink = anchorNode.getNextSibling();\r\n }\r\n\r\n if (!courseCatalogueLink) {\r\n return false;\r\n }\r\n\r\n const nodeLength = courseCatalogueLink?.getTextContentSize();\r\n\r\n // Prevent Enter if in the middle of the link, allow only at start or end\r\n if (courseCatalogueLink && event.key === 'Enter') {\r\n event.preventDefault();\r\n editor.update(() => {\r\n if (isCursorBeforeLink(anchorNode, offset)) {\r\n const brNode = $createTextNode('\\n');\r\n courseCatalogueLink.insertBefore(brNode);\r\n }\r\n if (offset === nodeLength) {\r\n const brNode = $createTextNode('\\n');\r\n courseCatalogueLink.insertAfter(brNode);\r\n moveToEndOfWhiteSpace(brNode);\r\n }\r\n });\r\n return true;\r\n }\r\n\r\n // Allow add space before or after the link\r\n if (courseCatalogueLink && (key === ' ' || event.code === 'Space')) {\r\n event.preventDefault();\r\n editor.update(() => {\r\n const spaceToAdd = $createTextNode(' ');\r\n if (isCursorBeforeLink(anchorNode, offset)) {\r\n courseCatalogueLink.insertBefore(spaceToAdd);\r\n moveToEndOfWhiteSpace(spaceToAdd);\r\n }\r\n if (offset === nodeLength) {\r\n courseCatalogueLink.insertAfter(spaceToAdd);\r\n moveToEndOfWhiteSpace(spaceToAdd);\r\n }\r\n });\r\n return true;\r\n }\r\n\r\n // Delete link if selected and Backspace or Del is pressed\r\n if (courseCatalogueLink && (key === 'Backspace' || key === 'Delete')) {\r\n event.preventDefault();\r\n editor.update(\r\n () => {\r\n editor.dispatchCommand(REMOVE_COURSE_CATALOGUE_LINK, undefined);\r\n },\r\n { discrete: true }\r\n );\r\n return true;\r\n }\r\n\r\n // Allow Home, End and Arrow navigation\r\n if (\r\n courseCatalogueLink &&\r\n key !== 'ArrowLeft' &&\r\n key !== 'ArrowRight' &&\r\n key !== 'ArrowUp' &&\r\n key !== 'ArrowDown' &&\r\n key !== 'Home' &&\r\n key !== 'End' &&\r\n !(event.ctrlKey && (key.toLowerCase() === 'z' || key.toLowerCase() === 'y')) &&\r\n !(event.ctrlKey && key.toLowerCase() === 'c')\r\n ) {\r\n event.preventDefault();\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n COMMAND_PRIORITY_EDITOR\r\n );\r\n\r\n const removeCopy = editor.registerCommand(\r\n COPY_COMMAND,\r\n (event: ClipboardEvent) => {\r\n const selection = $getSelection();\r\n if ($isRangeSelection(selection)) {\r\n const anchorNode = selection.anchor.getNode();\r\n const courseCatalogueLink = $getNearestNodeOfType(anchorNode, CourseCatalogueNode);\r\n if (courseCatalogueLink) {\r\n event.preventDefault();\r\n const domElement = editor.getElementByKey(courseCatalogueLink.getKey());\r\n if (domElement) {\r\n event.clipboardData?.setData('text/html', domElement.outerHTML);\r\n event.clipboardData?.setData('text/plain', courseCatalogueLink.getTextContent());\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW\r\n );\r\n return () => {\r\n removeKeyboardShortcut();\r\n removeStatusListener();\r\n removeUnEditable();\r\n removeCopy();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [editor]);\r\n\r\n useOnClickOutside(flyoutRef as RefObject<HTMLElement>, () => setFlyoutPosition(null));\r\n\r\n return (\r\n <div className={styles['editor__toolbar-button-group']}>\r\n <div className={styles['editor__toolbar-button-flyoutwrapper']}>\r\n <div className={styles['editor__toolbar-button-group--text']}>\r\n <button\r\n onClick={() => openFlyout('course')}\r\n title={t.cataloguelinks.courseTooltip}\r\n className={clsx(\r\n styles['editor__toolbar-button'],\r\n styles['editor__toolbar-button--text'],\r\n courseIsActive && styles[`editor__toolbar-button--active`]\r\n )}\r\n aria-label={t.aria.labels.courselink}\r\n aria-keyshortcuts={t.aria.keyshortcuts.courselink}\r\n type=\"button\"\r\n ref={courseButtonRef}\r\n >\r\n {t.cataloguelinks.courseButtonLabel}\r\n </button>\r\n <button\r\n onClick={() => openFlyout('programme')}\r\n title={t.cataloguelinks.programmeTooltip}\r\n className={clsx(\r\n styles['editor__toolbar-button'],\r\n styles['editor__toolbar-button--text'],\r\n programmeIsActive && styles[`editor__toolbar-button--active`]\r\n )}\r\n aria-label={t.aria.labels.programmelink}\r\n aria-keyshortcuts={t.aria.keyshortcuts.programmelink}\r\n type=\"button\"\r\n ref={programmeButtonRef}\r\n >\r\n {t.cataloguelinks.programmeButtonLabel}\r\n </button>\r\n </div>\r\n {flyoutPosition && (\r\n <div\r\n className={styles['editor__toolbar-flyout-wrapper']}\r\n style={{ top: flyoutPosition.top, left: flyoutPosition.left }}\r\n ref={flyoutRef}\r\n >\r\n <AddCatalogueLinkForm\r\n linkType={type}\r\n onCloseHandler={closeFlyout}\r\n onSearchHandler={onSearch}\r\n searchResponse={searchResponse}\r\n onSelect={(code, label, linkType) => {\r\n editor.dispatchCommand(INSERT_COURSE_CATALOGUE_LINK, {\r\n linkType,\r\n code,\r\n label,\r\n });\r\n closeFlyout();\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["CourseCataloguePlugin","onSearch","searchResponse","parentScrollPosition","editor","useLexicalComposerContext","t","useTranslation","courseIsActive","setCourseIsActive","useState","programmeIsActive","setProgrammeIsActive","courseButtonRef","useRef","programmeButtonRef","flyoutRef","flyoutPosition","setFlyoutPosition","type","setType","openFlyout","rect","closeFlyout","useEffect","removeKeyboardShortcut","KEY_DOWN_COMMAND","event","COMMAND_PRIORITY_EDITOR","removeStatusListener","editorState","selection","$getSelection","$isRangeSelection","anchorNode","offset","$isTextNode","CourseCatalogueNode","courseCatalogueLink","linkType","$getLinkTypeFromNode","$getNearestNodeOfType","moveToEndOfWhiteSpace","whiteSpace","$createRangeSelection","endOffset","$setSelection","isCursorBeforeLink","removeUnEditable","key","nodeLength","brNode","$createTextNode","spaceToAdd","REMOVE_COURSE_CATALOGUE_LINK","removeCopy","COPY_COMMAND","domElement","COMMAND_PRIORITY_LOW","useOnClickOutside","jsx","styles","jsxs","clsx","AddCatalogueLinkForm","code","label","INSERT_COURSE_CATALOGUE_LINK"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './CourseCataloguePlugin';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -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
3
|
import { o as h } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
|
|
4
|
-
import {
|
|
4
|
+
import { av as y, aw as _, ax as C, ay as k } from "../../../../Lexical.prod-DH2XfwvA.js";
|
|
5
5
|
import { useState as m, useEffect as s } from "react";
|
|
6
6
|
import "../../../Accordion/Accordion.js";
|
|
7
7
|
import { Icon as n } from "../../../Icon/Icon.js";
|
|
@@ -18,14 +18,14 @@ import "../../../IconButton/IconButton.js";
|
|
|
18
18
|
import "../../../Input/Input.js";
|
|
19
19
|
import "../../../InputField/InputField.js";
|
|
20
20
|
import "react-router";
|
|
21
|
-
import "../../../../TablePlugin-
|
|
22
|
-
import { s as r } from "../../../../RteEditor.module-
|
|
23
|
-
import { useTranslation as
|
|
21
|
+
import "../../../../TablePlugin-DmE96vN7.js";
|
|
22
|
+
import { s as r } from "../../../../RteEditor.module-DaBh86FK.js";
|
|
23
|
+
import { useTranslation as x } from "../../hooks/useTranslation.js";
|
|
24
|
+
import "../../Providers/LanguageProvider.js";
|
|
24
25
|
import "../LinkPlugin/LinkContextMenu/LinkContextMenu.js";
|
|
25
26
|
import "../../hooks/components/Flyout.js";
|
|
26
27
|
import "react-dom";
|
|
27
28
|
import "../../../../index-yEhaxKq-.js";
|
|
28
|
-
import "../../Providers/LanguageProvider.js";
|
|
29
29
|
import "../../../SearchField/SearchField.js";
|
|
30
30
|
import "../../../SelectListbox/SelectListbox.js";
|
|
31
31
|
import "../../../SelectListbox/SelectProvider.js";
|
|
@@ -33,17 +33,17 @@ import "../../../Sortable/components/SortableItem.js";
|
|
|
33
33
|
import "../../../../SortableProvider-BbwlEPIr.js";
|
|
34
34
|
import "../../../WeekSelector/components/WeekSelectorOptionContainer.js";
|
|
35
35
|
const ro = () => {
|
|
36
|
-
const o =
|
|
36
|
+
const o = x(), [t] = h(), [p, d] = m(!1), [l, c] = m(!1), u = () => {
|
|
37
37
|
t.dispatchCommand(C, void 0);
|
|
38
38
|
}, b = () => {
|
|
39
39
|
t.dispatchCommand(k, void 0);
|
|
40
40
|
};
|
|
41
41
|
return s(() => t.registerCommand(
|
|
42
|
-
|
|
42
|
+
y,
|
|
43
43
|
(a) => (d(a), !1),
|
|
44
44
|
1
|
|
45
45
|
), [t]), s(() => t.registerCommand(
|
|
46
|
-
|
|
46
|
+
_,
|
|
47
47
|
(a) => (c(a), !1),
|
|
48
48
|
1
|
|
49
49
|
), [t]), /* @__PURE__ */ f("div", { className: r["editor__toolbar-button-group"], children: [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import { A as I } from "../../../../../TablePlugin-
|
|
3
|
+
import { A as I } from "../../../../../TablePlugin-DmE96vN7.js";
|
|
4
4
|
import "../helpers.js";
|
|
5
5
|
import "../../../../Accordion/Accordion.js";
|
|
6
6
|
import "../../../../Icon/Icon.js";
|
|
@@ -21,11 +21,11 @@ import "../../../../Input/Input.js";
|
|
|
21
21
|
import "../../../../InputField/InputField.js";
|
|
22
22
|
import "react-router";
|
|
23
23
|
import "../../../hooks/useTranslation.js";
|
|
24
|
+
import "../../../Providers/LanguageProvider.js";
|
|
24
25
|
import "../LinkContextMenu/LinkContextMenu.js";
|
|
25
26
|
import "../../../hooks/components/Flyout.js";
|
|
26
27
|
import "react-dom";
|
|
27
28
|
import "../../../../../index-yEhaxKq-.js";
|
|
28
|
-
import "../../../Providers/LanguageProvider.js";
|
|
29
29
|
import "../../../../SearchField/SearchField.js";
|
|
30
30
|
import "../../../../SelectListbox/SelectListbox.js";
|
|
31
31
|
import "../../../../SelectListbox/SelectProvider.js";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ElementNode, TextNode } from 'lexical';
|
|
2
1
|
export interface LinkType {
|
|
3
2
|
active: boolean;
|
|
4
3
|
url: string;
|
|
@@ -7,6 +6,5 @@ export interface LinkType {
|
|
|
7
6
|
interface LinkPluginProps {
|
|
8
7
|
parentScrollPosition: number;
|
|
9
8
|
}
|
|
10
|
-
export declare const getLinkNodeTag: (anchorNode: ElementNode | TextNode) => boolean | LinkType;
|
|
11
9
|
export declare const LinkPlugin: ({ parentScrollPosition }: LinkPluginProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
10
|
export {};
|