@frontify/guideline-blocks-settings 0.28.2 → 0.28.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.
- package/CHANGELOG.md +17 -0
- package/dist/components/Attachments/AttachmentItem.es.js +67 -67
- package/dist/components/Attachments/AttachmentItem.es.js.map +1 -1
- package/dist/components/Attachments/Attachments.es.js +80 -80
- package/dist/components/Attachments/Attachments.es.js.map +1 -1
- package/dist/components/BlockInjectButton/BlockInjectButton.es.js +67 -67
- package/dist/components/BlockInjectButton/BlockInjectButton.es.js.map +1 -1
- package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js +28 -28
- package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js.map +1 -1
- package/dist/components/BlockItemWrapper/Toolbar.es.js +33 -33
- package/dist/components/BlockItemWrapper/Toolbar.es.js.map +1 -1
- package/dist/components/DownloadButton/DownloadButton.es.js +12 -12
- package/dist/components/DownloadButton/DownloadButton.es.js.map +1 -1
- package/dist/components/RichTextEditor/RichTextEditor.es.js +12 -12
- package/dist/components/RichTextEditor/RichTextEditor.es.js.map +1 -1
- package/dist/components/RichTextEditor/SerializedText.es.js +4 -4
- package/dist/components/RichTextEditor/SerializedText.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.es.js +9 -9
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.es.js +8 -8
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonToolbarButton.es.js +6 -6
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonToolbarButton.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/CustomFloatingButton.es.js +10 -10
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/CustomFloatingButton.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/EditButtonModal/EditModal.es.js +13 -13
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/EditButtonModal/EditModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/InsertButtonModal.es.js +18 -18
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/InsertButtonModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.es.js +11 -11
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.es.js +15 -15
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.es.js +3 -3
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js +40 -40
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkButton.es.js +10 -10
- package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkButton.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js +4 -4
- package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.es.js +14 -14
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.es.js +14 -14
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.es.js +14 -14
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.es.js +20 -20
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.es.js +17 -17
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.es.js +17 -17
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.es.js +17 -17
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.es.js +18 -18
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.es.js +16 -16
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.es.js +19 -19
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.es.js +15 -15
- package/dist/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLink.es.js +32 -32
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLink.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLinks.es.js +15 -15
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/DocumentLinks.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/LinkSelector.es.js +30 -30
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/LinkSelector.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLink.es.js +27 -27
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLink.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLinks.es.js +12 -12
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/PageLinks.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/SectionLink.es.js +14 -14
- package/dist/components/RichTextEditor/plugins/shared/LinkSelector/SectionLink.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/styles.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/nodes/button.es.js +3 -2
- package/dist/components/RichTextEditor/serializer/nodes/button.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/nodes/checkItemNode.es.js +7 -7
- package/dist/components/RichTextEditor/serializer/nodes/checkItemNode.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/nodes/default.es.js +27 -12
- package/dist/components/RichTextEditor/serializer/nodes/default.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/nodes/link.es.js +7 -7
- package/dist/components/RichTextEditor/serializer/nodes/link.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/serializeNodesToHtmlRecursive.es.js +33 -33
- package/dist/components/RichTextEditor/serializer/serializeNodesToHtmlRecursive.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/utlis/reactCssPropsToCss.es.js.map +1 -1
- package/dist/index.cjs.js +12 -37
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.umd.js +12 -37
- package/dist/index.umd.js.map +1 -1
- package/dist/utilities/react/getBackgroundColorStyles.es.js.map +1 -1
- package/dist/utilities/react/getBorderStyles.es.js.map +1 -1
- package/dist/utilities/react/getRadiusStyles.es.js.map +1 -1
- package/package.json +12 -11
- package/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts +1 -1
- package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx +2 -2
- package/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx +1 -1
- package/src/components/RichTextEditor/plugins/LinkPlugin/index.ts +2 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.tsx +1 -1
- package/src/components/RichTextEditor/plugins/styles.ts +1 -1
- package/src/components/RichTextEditor/serializer/nodes/button.ts +3 -1
- package/src/components/RichTextEditor/serializer/nodes/checkItemNode.ts +5 -4
- package/src/components/RichTextEditor/serializer/nodes/default.ts +30 -14
- package/src/components/RichTextEditor/serializer/nodes/link.ts +5 -4
- package/src/components/RichTextEditor/serializer/serializeNodesToHtmlRecursive.ts +5 -5
- package/src/components/RichTextEditor/serializer/utlis/reactCssPropsToCss.ts +1 -1
- package/src/utilities/react/getBackgroundColorStyles.ts +2 -3
- package/src/utilities/react/getBorderStyles.ts +2 -3
- package/src/utilities/react/getRadiusStyles.ts +1 -1
- package/vite.config.ts +4 -2
- package/dist/_virtual/jsx-runtime.es.js +0 -5
- package/dist/_virtual/jsx-runtime.es.js.map +0 -1
- package/dist/_virtual/react-jsx-runtime.development.es.js +0 -5
- package/dist/_virtual/react-jsx-runtime.development.es.js.map +0 -1
- package/dist/_virtual/react-jsx-runtime.production.min.es.js +0 -5
- package/dist/_virtual/react-jsx-runtime.production.min.es.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditModal.es.js","sources":["../../../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/EditButtonModal/EditModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconPen16, IconTrashBin16 } from '@frontify/fondue';\nimport { FloatingButton, useFloatingButtonUrlInput } from '..';\nimport { BlockStyles } from '../../../..';\n\nexport const EditModal = () => {\n const urlHtmlProps = useFloatingButtonUrlInput({});\n\n return (\n <div data-test-id=\"floating-button-edit\" className=\"tw-bg-white tw-rounded tw-shadow tw-p-4 tw-min-w-[400px]\">\n <span data-test-id=\"preview-button-flyout\" className=\"tw-flex tw-justify-between\">\n <span className=\"tw-pointer-events-none\" style={BlockStyles.p}>\n {urlHtmlProps.defaultValue}\n </span>\n <span className=\"tw-flex tw-gap-2\">\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id=\"edit-button-button\"\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingButton.EditButton>\n <IconPen16 />\n </FloatingButton.EditButton>\n </span>\n\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id=\"remove-button-button\"\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingButton.UnlinkButton>\n <IconTrashBin16 />\n </FloatingButton.UnlinkButton>\n </span>\n </span>\n </span>\n </div>\n );\n};\n"],"names":["EditModal","urlHtmlProps","useFloatingButtonUrlInput","jsx","jsxs","BlockStyles","FloatingButton","IconPen16","IconTrashBin16"],"mappings":";;;;;AAMO,MAAMA,IAAY,MAAM;AACrB,QAAAC,IAAeC,EAA0B,CAAA,CAAE;AAG7C,
|
|
1
|
+
{"version":3,"file":"EditModal.es.js","sources":["../../../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/EditButtonModal/EditModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconPen16, IconTrashBin16 } from '@frontify/fondue';\nimport { FloatingButton, useFloatingButtonUrlInput } from '..';\nimport { BlockStyles } from '../../../..';\n\nexport const EditModal = () => {\n const urlHtmlProps = useFloatingButtonUrlInput({});\n\n return (\n <div data-test-id=\"floating-button-edit\" className=\"tw-bg-white tw-rounded tw-shadow tw-p-4 tw-min-w-[400px]\">\n <span data-test-id=\"preview-button-flyout\" className=\"tw-flex tw-justify-between\">\n <span className=\"tw-pointer-events-none\" style={BlockStyles.p}>\n {urlHtmlProps.defaultValue}\n </span>\n <span className=\"tw-flex tw-gap-2\">\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id=\"edit-button-button\"\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingButton.EditButton>\n <IconPen16 />\n </FloatingButton.EditButton>\n </span>\n\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id=\"remove-button-button\"\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingButton.UnlinkButton>\n <IconTrashBin16 />\n </FloatingButton.UnlinkButton>\n </span>\n </span>\n </span>\n </div>\n );\n};\n"],"names":["EditModal","urlHtmlProps","useFloatingButtonUrlInput","jsx","jsxs","BlockStyles","FloatingButton","IconPen16","IconTrashBin16"],"mappings":";;;;;AAMO,MAAMA,IAAY,MAAM;AACrB,QAAAC,IAAeC,EAA0B,CAAA,CAAE;AAG7C,SAAA,gBAAAC,EAAC,OAAI,EAAA,gBAAa,wBAAuB,WAAU,4DAC/C,UAAA,gBAAAC,EAAC,QAAK,EAAA,gBAAa,yBAAwB,WAAU,8BACjD,UAAA;AAAA,IAAA,gBAAAD,EAAC,UAAK,WAAU,0BAAyB,OAAOE,EAAY,GACvD,YAAa,aAClB,CAAA;AAAA,IACA,gBAAAD,EAAC,QAAK,EAAA,WAAU,oBACZ,UAAA;AAAA,MAAA,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,UAAU;AAAA,UACV,gBAAa;AAAA,UACb,WAAU;AAAA,UAEV,4BAACG,EAAe,YAAf,EACG,UAAA,gBAAAH,EAACI,IAAU,CAAA,GACf;AAAA,QAAA;AAAA,MACJ;AAAA,MAEA,gBAAAJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,UAAU;AAAA,UACV,gBAAa;AAAA,UACb,WAAU;AAAA,UAEV,4BAACG,EAAe,cAAf,EACG,UAAA,gBAAAH,EAACK,IAAe,CAAA,GACpB;AAAA,QAAA;AAAA,MACJ;AAAA,IAAA,GACJ;AAAA,EAAA,EACJ,CAAA,EACJ,CAAA;AAER;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FormControl as
|
|
1
|
+
import { jsx as e, jsxs as d } from "react/jsx-runtime";
|
|
2
|
+
import { FormControl as y } from "@frontify/fondue";
|
|
3
3
|
import { useState as m } from "react";
|
|
4
|
-
import { InsertModal as
|
|
5
|
-
import { useInsertModal as
|
|
4
|
+
import { InsertModal as f } from "../../../../LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js";
|
|
5
|
+
import { useInsertModal as b } from "./useInsertModal.es.js";
|
|
6
6
|
import { BlockStyles as n } from "../../../../styles.es.js";
|
|
7
|
-
const
|
|
8
|
-
const r =
|
|
9
|
-
return /* @__PURE__ */ e
|
|
10
|
-
|
|
7
|
+
const x = () => {
|
|
8
|
+
const r = b(), { state: t, onButtonStyleChange: o } = r;
|
|
9
|
+
return /* @__PURE__ */ e(f, { ...r, testId: "floating-button-insert", children: /* @__PURE__ */ e("div", { className: "tw-pt-5", children: /* @__PURE__ */ d(
|
|
10
|
+
y,
|
|
11
11
|
{
|
|
12
12
|
label: {
|
|
13
13
|
children: "Button Style",
|
|
@@ -15,7 +15,7 @@ const j = () => {
|
|
|
15
15
|
required: !0
|
|
16
16
|
},
|
|
17
17
|
children: [
|
|
18
|
-
/* @__PURE__ */ e
|
|
18
|
+
/* @__PURE__ */ e(
|
|
19
19
|
i,
|
|
20
20
|
{
|
|
21
21
|
id: "primary",
|
|
@@ -25,7 +25,7 @@ const j = () => {
|
|
|
25
25
|
children: t.text || "Primary Button"
|
|
26
26
|
}
|
|
27
27
|
),
|
|
28
|
-
/* @__PURE__ */ e
|
|
28
|
+
/* @__PURE__ */ e(
|
|
29
29
|
i,
|
|
30
30
|
{
|
|
31
31
|
id: "secondary",
|
|
@@ -35,7 +35,7 @@ const j = () => {
|
|
|
35
35
|
children: t.text || "Secondary Button"
|
|
36
36
|
}
|
|
37
37
|
),
|
|
38
|
-
/* @__PURE__ */ e
|
|
38
|
+
/* @__PURE__ */ e(
|
|
39
39
|
i,
|
|
40
40
|
{
|
|
41
41
|
id: "tertiary",
|
|
@@ -48,15 +48,15 @@ const j = () => {
|
|
|
48
48
|
]
|
|
49
49
|
}
|
|
50
50
|
) }) });
|
|
51
|
-
}, i = ({ id: r, styles: t, isActive: o, onClick:
|
|
52
|
-
const [u,
|
|
53
|
-
return /* @__PURE__ */ e
|
|
51
|
+
}, i = ({ id: r, styles: t, isActive: o, onClick: s, children: a }) => {
|
|
52
|
+
const [u, l] = m(!1), c = () => t && t.hover && u ? { ...t, ...t.hover } : t;
|
|
53
|
+
return /* @__PURE__ */ e(
|
|
54
54
|
"button",
|
|
55
55
|
{
|
|
56
56
|
"data-test-id": `floating-button-insert-${r}`,
|
|
57
|
-
onMouseEnter: () =>
|
|
58
|
-
onMouseLeave: () =>
|
|
59
|
-
onClick:
|
|
57
|
+
onMouseEnter: () => l(!0),
|
|
58
|
+
onMouseLeave: () => l(!1),
|
|
59
|
+
onClick: s,
|
|
60
60
|
style: c(),
|
|
61
61
|
className: o ? "tw-outline tw-outline-1 tw-outline-violet-60 tw-outline-offset-2 tw-w-fit" : "tw-w-fit",
|
|
62
62
|
children: a
|
|
@@ -64,6 +64,6 @@ const j = () => {
|
|
|
64
64
|
);
|
|
65
65
|
};
|
|
66
66
|
export {
|
|
67
|
-
|
|
67
|
+
x as InsertButtonModal
|
|
68
68
|
};
|
|
69
69
|
//# sourceMappingURL=InsertButtonModal.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsertButtonModal.es.js","sources":["../../../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/InsertButtonModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { FormControl } from '@frontify/fondue';\nimport { CSSProperties, ReactElement, ReactNode, useState } from 'react';\nimport { InsertModal } from '../../../../LinkPlugin/FloatingLink/InsertLinkModal/InsertModal';\nimport { useInsertModal } from './useInsertModal';\nimport { BlockStyles } from '../../../../styles';\n\nexport const InsertButtonModal = () => {\n const modalProps = useInsertModal();\n const { state, onButtonStyleChange } = modalProps;\n\n return (\n <InsertModal {...modalProps} testId=\"floating-button-insert\">\n <div className=\"tw-pt-5\">\n <FormControl\n label={{\n children: 'Button Style',\n htmlFor: 'buttonStyle',\n required: true,\n }}\n >\n <HoverableButton\n id=\"primary\"\n styles={BlockStyles.buttonPrimary}\n isActive={state.buttonStyle === 'primary'}\n onClick={() => onButtonStyleChange('primary')}\n >\n {state.text || 'Primary Button'}\n </HoverableButton>\n\n <HoverableButton\n id=\"secondary\"\n styles={BlockStyles.buttonSecondary}\n isActive={state.buttonStyle === 'secondary'}\n onClick={() => onButtonStyleChange('secondary')}\n >\n {state.text || 'Secondary Button'}\n </HoverableButton>\n\n <HoverableButton\n id=\"tertiary\"\n styles={BlockStyles.buttonTertiary}\n isActive={state.buttonStyle === 'tertiary'}\n onClick={() => onButtonStyleChange('tertiary')}\n >\n {state.text || 'Tertiary Button'}\n </HoverableButton>\n </FormControl>\n </div>\n </InsertModal>\n );\n};\n\ntype Props = {\n id: string;\n styles?: CSSProperties & { hover?: CSSProperties };\n isActive: boolean;\n onClick: () => void;\n children: ReactNode;\n};\n\nconst HoverableButton = ({ id, styles, isActive, onClick, children }: Props): ReactElement => {\n const [hovered, setHovered] = useState(false);\n const getStyles = () => (styles && styles.hover && hovered ? { ...styles, ...styles.hover } : styles);\n\n return (\n <button\n data-test-id={`floating-button-insert-${id}`}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onClick={onClick}\n style={getStyles()}\n className={\n isActive ? 'tw-outline tw-outline-1 tw-outline-violet-60 tw-outline-offset-2 tw-w-fit' : 'tw-w-fit'\n }\n >\n {children}\n </button>\n );\n};\n"],"names":["InsertButtonModal","modalProps","useInsertModal","state","onButtonStyleChange","jsx","InsertModal","jsxs","FormControl","HoverableButton","BlockStyles","id","styles","isActive","onClick","children","hovered","setHovered","useState","getStyles"],"mappings":";;;;;;AAQO,MAAMA,IAAoB,MAAM;AACnC,QAAMC,IAAaC,KACb,EAAE,OAAAC,GAAO,qBAAAC,EAAwB,IAAAH;AAGnC,
|
|
1
|
+
{"version":3,"file":"InsertButtonModal.es.js","sources":["../../../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/InsertButtonModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { FormControl } from '@frontify/fondue';\nimport { CSSProperties, ReactElement, ReactNode, useState } from 'react';\nimport { InsertModal } from '../../../../LinkPlugin/FloatingLink/InsertLinkModal/InsertModal';\nimport { useInsertModal } from './useInsertModal';\nimport { BlockStyles } from '../../../../styles';\n\nexport const InsertButtonModal = () => {\n const modalProps = useInsertModal();\n const { state, onButtonStyleChange } = modalProps;\n\n return (\n <InsertModal {...modalProps} testId=\"floating-button-insert\">\n <div className=\"tw-pt-5\">\n <FormControl\n label={{\n children: 'Button Style',\n htmlFor: 'buttonStyle',\n required: true,\n }}\n >\n <HoverableButton\n id=\"primary\"\n styles={BlockStyles.buttonPrimary}\n isActive={state.buttonStyle === 'primary'}\n onClick={() => onButtonStyleChange('primary')}\n >\n {state.text || 'Primary Button'}\n </HoverableButton>\n\n <HoverableButton\n id=\"secondary\"\n styles={BlockStyles.buttonSecondary}\n isActive={state.buttonStyle === 'secondary'}\n onClick={() => onButtonStyleChange('secondary')}\n >\n {state.text || 'Secondary Button'}\n </HoverableButton>\n\n <HoverableButton\n id=\"tertiary\"\n styles={BlockStyles.buttonTertiary}\n isActive={state.buttonStyle === 'tertiary'}\n onClick={() => onButtonStyleChange('tertiary')}\n >\n {state.text || 'Tertiary Button'}\n </HoverableButton>\n </FormControl>\n </div>\n </InsertModal>\n );\n};\n\ntype Props = {\n id: string;\n styles?: CSSProperties & { hover?: CSSProperties };\n isActive: boolean;\n onClick: () => void;\n children: ReactNode;\n};\n\nconst HoverableButton = ({ id, styles, isActive, onClick, children }: Props): ReactElement => {\n const [hovered, setHovered] = useState(false);\n const getStyles = () => (styles && styles.hover && hovered ? { ...styles, ...styles.hover } : styles);\n\n return (\n <button\n data-test-id={`floating-button-insert-${id}`}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onClick={onClick}\n style={getStyles()}\n className={\n isActive ? 'tw-outline tw-outline-1 tw-outline-violet-60 tw-outline-offset-2 tw-w-fit' : 'tw-w-fit'\n }\n >\n {children}\n </button>\n );\n};\n"],"names":["InsertButtonModal","modalProps","useInsertModal","state","onButtonStyleChange","jsx","InsertModal","jsxs","FormControl","HoverableButton","BlockStyles","id","styles","isActive","onClick","children","hovered","setHovered","useState","getStyles"],"mappings":";;;;;;AAQO,MAAMA,IAAoB,MAAM;AACnC,QAAMC,IAAaC,KACb,EAAE,OAAAC,GAAO,qBAAAC,EAAwB,IAAAH;AAGnC,SAAA,gBAAAI,EAACC,KAAa,GAAGL,GAAY,QAAO,0BAChC,UAAA,gBAAAI,EAAC,OAAI,EAAA,WAAU,WACX,UAAA,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,OAAO;AAAA,QACH,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,MACd;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YACG,IAAG;AAAA,YACH,QAAQC,EAAY;AAAA,YACpB,UAAUP,EAAM,gBAAgB;AAAA,YAChC,SAAS,MAAMC,EAAoB,SAAS;AAAA,YAE3C,YAAM,QAAQ;AAAA,UAAA;AAAA,QACnB;AAAA,QAEA,gBAAAC;AAAA,UAACI;AAAA,UAAA;AAAA,YACG,IAAG;AAAA,YACH,QAAQC,EAAY;AAAA,YACpB,UAAUP,EAAM,gBAAgB;AAAA,YAChC,SAAS,MAAMC,EAAoB,WAAW;AAAA,YAE7C,YAAM,QAAQ;AAAA,UAAA;AAAA,QACnB;AAAA,QAEA,gBAAAC;AAAA,UAACI;AAAA,UAAA;AAAA,YACG,IAAG;AAAA,YACH,QAAQC,EAAY;AAAA,YACpB,UAAUP,EAAM,gBAAgB;AAAA,YAChC,SAAS,MAAMC,EAAoB,UAAU;AAAA,YAE5C,YAAM,QAAQ;AAAA,UAAA;AAAA,QACnB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,EAER,CAAA,EACJ,CAAA;AAER,GAUMK,IAAkB,CAAC,EAAE,IAAAE,GAAI,QAAAC,GAAQ,UAAAC,GAAU,SAAAC,GAAS,UAAAC,QAAoC;AAC1F,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtCC,IAAY,MAAOP,KAAUA,EAAO,SAASI,IAAU,EAAE,GAAGJ,GAAQ,GAAGA,EAAO,MAAA,IAAUA;AAG1F,SAAA,gBAAAP;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,gBAAc,0BAA0BM,CAAE;AAAA,MAC1C,cAAc,MAAMM,EAAW,EAAI;AAAA,MACnC,cAAc,MAAMA,EAAW,EAAK;AAAA,MACpC,SAAAH;AAAA,MACA,OAAOK,EAAU;AAAA,MACjB,WACIN,IAAW,8EAA8E;AAAA,MAG5F,UAAAE;AAAA,IAAA;AAAA,EAAA;AAGb;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createButtonPlugin.es.js","sources":["../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport { Plugin, PluginProps } from '@frontify/fondue';\nimport { RangeBeforeOptions, createPluginFactory } from '@udecode/plate';\nimport { CSSProperties } from 'react';\nimport { isValidUrl } from '../LinkPlugin/utils/url';\nimport { ButtonMarkupElement } from './ButtonMarkupElement';\nimport { ButtonButton } from './components/ButtonButton';\nimport { CustomFloatingButton } from './components/FloatingButton/CustomFloatingButton';\nimport { BlockButtonStyles } from './utils';\nimport { withButton } from './withButton';\n\nexport const ELEMENT_BUTTON = 'button';\nexport const BUTTON_PLUGIN = 'button-plugin';\n\n// eslint-disable-next-line\nexport interface ButtonPlugin {\n forceSubmit?: boolean;\n\n /**\n * Allow custom config for rangeBeforeOptions.\n * @example default\n * {\n * matchString: ' ',\n * skipInvalid: true,\n * afterMatch: true,\n * }\n */\n rangeBeforeOptions?: RangeBeforeOptions;\n\n /**\n * Hotkeys to trigger floating button.\n * @default 'command+k, ctrl+k'\n */\n triggerFloatingButtonHotkeys: string;\n\n /**\n * Callback to validate an url.\n * @default isUrl\n */\n isUrl: (text: string) => boolean;\n\n /**\n * Callback to optionally get the href for a url\n * @returns href: an optional link to be used that is different from the text content (example https://google.com for google.com)\n */\n getUrlHref?: (url: string) => string | undefined;\n\n /**\n * On keyboard shortcut or toolbar mousedown, get the link url by calling this promise. The\n * default behavior is to use the browser's native `prompt`.\n */\n getLinkUrl?: (prevUrl: string | null) => Promise<string | null>;\n}\n\n/**\n * Enables support for hyperlinks.\n */\nexport const createButtonPlugin = (appBridge: AppBridgeBlock) =>\n createPluginFactory({\n key: ELEMENT_BUTTON,\n isElement: true,\n isInline: true,\n props: ({ element }) => ({\n nodeProps: { href: element?.url, target: element?.target },\n }),\n withOverrides: withButton,\n renderAfterEditable: CustomFloatingButton,\n options: {\n isUrl: isValidUrl,\n rangeBeforeOptions: {\n matchString: ' ',\n skipInvalid: true,\n afterMatch: true,\n },\n triggerFloatingButtonHotkeys: 'command+shift+k, ctrl+shift+k',\n appBridge,\n },\n then: (editor, { type }) => ({\n deserializeHtml: {\n rules: [\n {\n validNodeName: 'A',\n validClassName: 'btn',\n },\n ],\n getNode: (el) => ({\n type,\n url: el.getAttribute('href'),\n target: el.getAttribute('target') || '_blank',\n }),\n },\n }),\n })();\n\nexport type ButtonPluginProps = Omit<PluginProps, 'styles'> & {\n styles?: Record<string, CSSProperties & { hover?: CSSProperties }>;\n} & { appBridge: AppBridgeBlock };\n\n// eslint-disable-next-line\nexport class ButtonPlugin extends Plugin {\n public styles: CSSProperties = {};\n private appBridge: AppBridgeBlock;\n constructor({ styles = BlockButtonStyles, ...props }: ButtonPluginProps) {\n super(BUTTON_PLUGIN, {\n button: ButtonButton,\n markupElement: new ButtonMarkupElement(),\n ...props,\n });\n this.styles = styles;\n this.appBridge = props?.appBridge as AppBridgeBlock;\n }\n\n plugins() {\n return [createButtonPlugin(this.appBridge)];\n }\n}\n"],"names":["ELEMENT_BUTTON","BUTTON_PLUGIN","createButtonPlugin","appBridge","createPluginFactory","element","withButton","CustomFloatingButton","isValidUrl","editor","type","el","ButtonPlugin","Plugin","styles","BlockButtonStyles","props","ButtonButton","ButtonMarkupElement"],"mappings":";;;;;;;;AAaO,MAAMA,IAAiB,UACjBC,IAAgB,iBA6ChBC,IAAqB,CAACC,MAC/BC,EAAoB;AAAA,EAChB,KAAKJ;AAAA,EACL,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO,CAAC,EAAE,SAAAK,SAAe;AAAA,IACrB,WAAW,EAAE,MAAMA,KAAA,gBAAAA,EAAS,KAAK,QAAQA,KAAA,gBAAAA,EAAS,OAAO;AAAA,EAAA;AAAA,EAE7D,eAAeC;AAAA,EACf,qBAAqBC;AAAA,EACrB,SAAS;AAAA,IACL,OAAOC;AAAA,IACP,oBAAoB;AAAA,MAChB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IAChB;AAAA,IACA,8BAA8B;AAAA,IAC9B,WAAAL;AAAA,EACJ;AAAA,EACA,MAAM,CAACM,GAAQ,EAAE,MAAAC,SAAY;AAAA,IACzB,iBAAiB;AAAA,MACb,OAAO;AAAA,QACH;AAAA,UACI,eAAe;AAAA,UACf,gBAAgB;AAAA,QACpB;AAAA,MACJ;AAAA,MACA,SAAS,CAACC,OAAQ;AAAA,QACd,MAAAD;AAAA,QACA,KAAKC,EAAG,aAAa,MAAM;AAAA,QAC3B,QAAQA,EAAG,aAAa,QAAQ,KAAK;AAAA,MAAA;AAAA,IAE7C;AAAA,EAAA;AAER,CAAC,EAAE;AAOA,MAAMC,UAAqBC,EAAO;AAAA,EAGrC,YAAY,EAAE,QAAAC,IAASC,GAAmB,GAAGC,KAA4B;AACrE,UAAMf,GAAe;AAAA,MACjB,QAAQgB;AAAA,MACR,eAAe,IAAIC,EAAoB;AAAA,MACvC,GAAGF;AAAA,IAAA,CACN,GAPL,KAAO,SAAwB,IAQ3B,KAAK,SAASF,GACd,KAAK,YAAYE,KAAA,gBAAAA,EAAO;AAAA,EAC5B;AAAA,EAEA,UAAU;AACN,WAAO,CAACd,EAAmB,KAAK,SAAS,CAAC;AAAA,EAC9C;AACJ;"}
|
|
1
|
+
{"version":3,"file":"createButtonPlugin.es.js","sources":["../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport { Plugin, PluginProps } from '@frontify/fondue';\nimport { RangeBeforeOptions, createPluginFactory } from '@udecode/plate';\nimport type { CSSProperties } from 'react';\nimport { isValidUrl } from '../LinkPlugin/utils/url';\nimport { ButtonMarkupElement } from './ButtonMarkupElement';\nimport { ButtonButton } from './components/ButtonButton';\nimport { CustomFloatingButton } from './components/FloatingButton/CustomFloatingButton';\nimport { BlockButtonStyles } from './utils';\nimport { withButton } from './withButton';\n\nexport const ELEMENT_BUTTON = 'button';\nexport const BUTTON_PLUGIN = 'button-plugin';\n\n// eslint-disable-next-line\nexport interface ButtonPlugin {\n forceSubmit?: boolean;\n\n /**\n * Allow custom config for rangeBeforeOptions.\n * @example default\n * {\n * matchString: ' ',\n * skipInvalid: true,\n * afterMatch: true,\n * }\n */\n rangeBeforeOptions?: RangeBeforeOptions;\n\n /**\n * Hotkeys to trigger floating button.\n * @default 'command+k, ctrl+k'\n */\n triggerFloatingButtonHotkeys: string;\n\n /**\n * Callback to validate an url.\n * @default isUrl\n */\n isUrl: (text: string) => boolean;\n\n /**\n * Callback to optionally get the href for a url\n * @returns href: an optional link to be used that is different from the text content (example https://google.com for google.com)\n */\n getUrlHref?: (url: string) => string | undefined;\n\n /**\n * On keyboard shortcut or toolbar mousedown, get the link url by calling this promise. The\n * default behavior is to use the browser's native `prompt`.\n */\n getLinkUrl?: (prevUrl: string | null) => Promise<string | null>;\n}\n\n/**\n * Enables support for hyperlinks.\n */\nexport const createButtonPlugin = (appBridge: AppBridgeBlock) =>\n createPluginFactory({\n key: ELEMENT_BUTTON,\n isElement: true,\n isInline: true,\n props: ({ element }) => ({\n nodeProps: { href: element?.url, target: element?.target },\n }),\n withOverrides: withButton,\n renderAfterEditable: CustomFloatingButton,\n options: {\n isUrl: isValidUrl,\n rangeBeforeOptions: {\n matchString: ' ',\n skipInvalid: true,\n afterMatch: true,\n },\n triggerFloatingButtonHotkeys: 'command+shift+k, ctrl+shift+k',\n appBridge,\n },\n then: (editor, { type }) => ({\n deserializeHtml: {\n rules: [\n {\n validNodeName: 'A',\n validClassName: 'btn',\n },\n ],\n getNode: (el) => ({\n type,\n url: el.getAttribute('href'),\n target: el.getAttribute('target') || '_blank',\n }),\n },\n }),\n })();\n\nexport type ButtonPluginProps = Omit<PluginProps, 'styles'> & {\n styles?: Record<string, CSSProperties & { hover?: CSSProperties }>;\n} & { appBridge: AppBridgeBlock };\n\n// eslint-disable-next-line\nexport class ButtonPlugin extends Plugin {\n public styles: CSSProperties = {};\n private appBridge: AppBridgeBlock;\n constructor({ styles = BlockButtonStyles, ...props }: ButtonPluginProps) {\n super(BUTTON_PLUGIN, {\n button: ButtonButton,\n markupElement: new ButtonMarkupElement(),\n ...props,\n });\n this.styles = styles;\n this.appBridge = props?.appBridge as AppBridgeBlock;\n }\n\n plugins() {\n return [createButtonPlugin(this.appBridge)];\n }\n}\n"],"names":["ELEMENT_BUTTON","BUTTON_PLUGIN","createButtonPlugin","appBridge","createPluginFactory","element","withButton","CustomFloatingButton","isValidUrl","editor","type","el","ButtonPlugin","Plugin","styles","BlockButtonStyles","props","ButtonButton","ButtonMarkupElement"],"mappings":";;;;;;;;AAaO,MAAMA,IAAiB,UACjBC,IAAgB,iBA6ChBC,IAAqB,CAACC,MAC/BC,EAAoB;AAAA,EAChB,KAAKJ;AAAA,EACL,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO,CAAC,EAAE,SAAAK,SAAe;AAAA,IACrB,WAAW,EAAE,MAAMA,KAAA,gBAAAA,EAAS,KAAK,QAAQA,KAAA,gBAAAA,EAAS,OAAO;AAAA,EAAA;AAAA,EAE7D,eAAeC;AAAA,EACf,qBAAqBC;AAAA,EACrB,SAAS;AAAA,IACL,OAAOC;AAAA,IACP,oBAAoB;AAAA,MAChB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IAChB;AAAA,IACA,8BAA8B;AAAA,IAC9B,WAAAL;AAAA,EACJ;AAAA,EACA,MAAM,CAACM,GAAQ,EAAE,MAAAC,SAAY;AAAA,IACzB,iBAAiB;AAAA,MACb,OAAO;AAAA,QACH;AAAA,UACI,eAAe;AAAA,UACf,gBAAgB;AAAA,QACpB;AAAA,MACJ;AAAA,MACA,SAAS,CAACC,OAAQ;AAAA,QACd,MAAAD;AAAA,QACA,KAAKC,EAAG,aAAa,MAAM;AAAA,QAC3B,QAAQA,EAAG,aAAa,QAAQ,KAAK;AAAA,MAAA;AAAA,IAE7C;AAAA,EAAA;AAER,CAAC,EAAE;AAOA,MAAMC,UAAqBC,EAAO;AAAA,EAGrC,YAAY,EAAE,QAAAC,IAASC,GAAmB,GAAGC,KAA4B;AACrE,UAAMf,GAAe;AAAA,MACjB,QAAQgB;AAAA,MACR,eAAe,IAAIC,EAAoB;AAAA,MACvC,GAAGF;AAAA,IAAA,CACN,GAPL,KAAO,SAAwB,IAQ3B,KAAK,SAASF,GACd,KAAK,YAAYE,KAAA,gBAAAA,EAAO;AAAA,EAC5B;AAAA,EAEA,UAAU;AACN,WAAO,CAACd,EAAmB,KAAK,SAAS,CAAC;AAAA,EAC9C;AACJ;"}
|
package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.es.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useFloatingLinkSelectors as
|
|
1
|
+
import { jsxs as s, Fragment as m, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useFloatingLinkSelectors as l } from "@udecode/plate";
|
|
3
3
|
import { FloatingLink as i } from "./FloatingLink.es.js";
|
|
4
|
-
import { InsertLinkModal as
|
|
5
|
-
import { EditModal as
|
|
6
|
-
const
|
|
7
|
-
const r =
|
|
4
|
+
import { InsertLinkModal as d } from "./InsertLinkModal/InsertLinkModal.es.js";
|
|
5
|
+
import { EditModal as c } from "./EditLinkModal/EditModal.es.js";
|
|
6
|
+
const k = ({ readOnly: n }) => {
|
|
7
|
+
const r = l().isEditing();
|
|
8
8
|
if (n)
|
|
9
9
|
return null;
|
|
10
|
-
const o = /* @__PURE__ */ t
|
|
11
|
-
return /* @__PURE__ */
|
|
12
|
-
/* @__PURE__ */ t
|
|
13
|
-
/* @__PURE__ */ t
|
|
10
|
+
const o = /* @__PURE__ */ t(d, {}), e = r ? o : /* @__PURE__ */ t(c, {});
|
|
11
|
+
return /* @__PURE__ */ s(m, { children: [
|
|
12
|
+
/* @__PURE__ */ t(i.InsertRoot, { children: o }),
|
|
13
|
+
/* @__PURE__ */ t(i.EditRoot, { children: e })
|
|
14
14
|
] });
|
|
15
15
|
};
|
|
16
16
|
export {
|
|
17
|
-
|
|
17
|
+
k as CustomFloatingLink
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=CustomFloatingLink.es.js.map
|
package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomFloatingLink.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { TEditableProps, useFloatingLinkSelectors } from '@udecode/plate';\n\nimport { EditModal } from './EditLinkModal';\nimport { FloatingLink } from './FloatingLink';\nimport { InsertLinkModal } from './InsertLinkModal/InsertLinkModal';\n\nexport const CustomFloatingLink = ({ readOnly }: TEditableProps) => {\n const isEditing = useFloatingLinkSelectors().isEditing();\n\n if (readOnly) {\n return null;\n }\n\n const input = <InsertLinkModal />;\n const editContent = isEditing ? input : <EditModal />;\n\n return (\n <>\n <FloatingLink.InsertRoot>{input}</FloatingLink.InsertRoot>\n\n <FloatingLink.EditRoot>{editContent}</FloatingLink.EditRoot>\n </>\n );\n};\n"],"names":["CustomFloatingLink","readOnly","isEditing","useFloatingLinkSelectors","input","InsertLinkModal","editContent","jsx","EditModal","jsxs","Fragment","FloatingLink"],"mappings":";;;;;AAQO,MAAMA,IAAqB,CAAC,EAAE,UAAAC,QAA+B;AAC1D,QAAAC,IAAYC,IAA2B;AAE7C,MAAIF;AACO,WAAA;AAGL,QAAAG,
|
|
1
|
+
{"version":3,"file":"CustomFloatingLink.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { TEditableProps, useFloatingLinkSelectors } from '@udecode/plate';\n\nimport { EditModal } from './EditLinkModal';\nimport { FloatingLink } from './FloatingLink';\nimport { InsertLinkModal } from './InsertLinkModal/InsertLinkModal';\n\nexport const CustomFloatingLink = ({ readOnly }: TEditableProps) => {\n const isEditing = useFloatingLinkSelectors().isEditing();\n\n if (readOnly) {\n return null;\n }\n\n const input = <InsertLinkModal />;\n const editContent = isEditing ? input : <EditModal />;\n\n return (\n <>\n <FloatingLink.InsertRoot>{input}</FloatingLink.InsertRoot>\n\n <FloatingLink.EditRoot>{editContent}</FloatingLink.EditRoot>\n </>\n );\n};\n"],"names":["CustomFloatingLink","readOnly","isEditing","useFloatingLinkSelectors","input","InsertLinkModal","editContent","jsx","EditModal","jsxs","Fragment","FloatingLink"],"mappings":";;;;;AAQO,MAAMA,IAAqB,CAAC,EAAE,UAAAC,QAA+B;AAC1D,QAAAC,IAAYC,IAA2B;AAE7C,MAAIF;AACO,WAAA;AAGL,QAAAG,sBAASC,GAAgB,CAAA,CAAA,GACzBC,IAAcJ,IAAYE,IAAQ,gBAAAG,EAACC,GAAU,CAAA,CAAA;AAEnD,SAEQ,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAH,EAAAI,EAAa,YAAb,EAAyB,UAAMP,EAAA,CAAA;AAAA,IAE/B,gBAAAG,EAAAI,EAAa,UAAb,EAAuB,UAAYL,EAAA,CAAA;AAAA,EACxC,EAAA,CAAA;AAER;"}
|
package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.es.js
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IconPen16 as
|
|
3
|
-
import { useFloatingLinkUrlInput as
|
|
4
|
-
import { FloatingLink as
|
|
5
|
-
import { BlockStyles as
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
return /* @__PURE__ */ t
|
|
9
|
-
/* @__PURE__ */ t
|
|
10
|
-
/* @__PURE__ */
|
|
11
|
-
/* @__PURE__ */ t
|
|
1
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
import { IconPen16 as i, IconTrashBin16 as r } from "@frontify/fondue";
|
|
3
|
+
import { useFloatingLinkUrlInput as a } from "@udecode/plate";
|
|
4
|
+
import { FloatingLink as e } from "../FloatingLink.es.js";
|
|
5
|
+
import { BlockStyles as l } from "../../../styles.es.js";
|
|
6
|
+
const m = () => {
|
|
7
|
+
const o = a({});
|
|
8
|
+
return /* @__PURE__ */ t("div", { "data-test-id": "floating-link-edit", className: "tw-bg-white tw-rounded tw-shadow tw-p-4 tw-min-w-[400px]", children: /* @__PURE__ */ n("span", { "data-test-id": "preview-link-flyout", className: "tw-flex tw-justify-between", children: [
|
|
9
|
+
/* @__PURE__ */ t("span", { className: "tw-pointer-events-none", style: l.p, children: o.defaultValue }),
|
|
10
|
+
/* @__PURE__ */ n("span", { className: "tw-flex tw-gap-2", children: [
|
|
11
|
+
/* @__PURE__ */ t(
|
|
12
12
|
"span",
|
|
13
13
|
{
|
|
14
14
|
role: "button",
|
|
15
15
|
tabIndex: 0,
|
|
16
16
|
"data-test-id": "edit-link-button",
|
|
17
17
|
className: "tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1",
|
|
18
|
-
children: /* @__PURE__ */ t
|
|
18
|
+
children: /* @__PURE__ */ t(e.EditButton, { children: /* @__PURE__ */ t(i, {}) })
|
|
19
19
|
}
|
|
20
20
|
),
|
|
21
|
-
/* @__PURE__ */ t
|
|
21
|
+
/* @__PURE__ */ t(
|
|
22
22
|
"span",
|
|
23
23
|
{
|
|
24
24
|
role: "button",
|
|
25
25
|
tabIndex: 0,
|
|
26
26
|
"data-test-id": "remove-link-button",
|
|
27
27
|
className: "tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1",
|
|
28
|
-
children: /* @__PURE__ */ t
|
|
28
|
+
children: /* @__PURE__ */ t(e.UnlinkButton, { children: /* @__PURE__ */ t(r, {}) })
|
|
29
29
|
}
|
|
30
30
|
)
|
|
31
31
|
] })
|
|
32
32
|
] }) });
|
|
33
33
|
};
|
|
34
34
|
export {
|
|
35
|
-
|
|
35
|
+
m as EditModal
|
|
36
36
|
};
|
|
37
37
|
//# sourceMappingURL=EditModal.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditModal.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconPen16, IconTrashBin16 } from '@frontify/fondue';\nimport { useFloatingLinkUrlInput } from '@udecode/plate';\nimport { FloatingLink } from '../FloatingLink';\nimport { BlockStyles } from '../../../styles';\n\nexport const EditModal = () => {\n const urlHtmlProps = useFloatingLinkUrlInput({});\n\n return (\n <div data-test-id=\"floating-link-edit\" className=\"tw-bg-white tw-rounded tw-shadow tw-p-4 tw-min-w-[400px]\">\n <span data-test-id={'preview-link-flyout'} className=\"tw-flex tw-justify-between\">\n <span className=\"tw-pointer-events-none\" style={BlockStyles.p}>\n {urlHtmlProps.defaultValue}\n </span>\n <span className=\"tw-flex tw-gap-2\">\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id={'edit-link-button'}\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingLink.EditButton>\n <IconPen16 />\n </FloatingLink.EditButton>\n </span>\n\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id={'remove-link-button'}\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingLink.UnlinkButton>\n <IconTrashBin16 />\n </FloatingLink.UnlinkButton>\n </span>\n </span>\n </span>\n </div>\n );\n};\n"],"names":["EditModal","urlHtmlProps","useFloatingLinkUrlInput","jsx","jsxs","BlockStyles","FloatingLink","IconPen16","IconTrashBin16"],"mappings":";;;;;AAOO,MAAMA,IAAY,MAAM;AACrB,QAAAC,IAAeC,EAAwB,CAAA,CAAE;AAG3C,
|
|
1
|
+
{"version":3,"file":"EditModal.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconPen16, IconTrashBin16 } from '@frontify/fondue';\nimport { useFloatingLinkUrlInput } from '@udecode/plate';\nimport { FloatingLink } from '../FloatingLink';\nimport { BlockStyles } from '../../../styles';\n\nexport const EditModal = () => {\n const urlHtmlProps = useFloatingLinkUrlInput({});\n\n return (\n <div data-test-id=\"floating-link-edit\" className=\"tw-bg-white tw-rounded tw-shadow tw-p-4 tw-min-w-[400px]\">\n <span data-test-id={'preview-link-flyout'} className=\"tw-flex tw-justify-between\">\n <span className=\"tw-pointer-events-none\" style={BlockStyles.p}>\n {urlHtmlProps.defaultValue}\n </span>\n <span className=\"tw-flex tw-gap-2\">\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id={'edit-link-button'}\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingLink.EditButton>\n <IconPen16 />\n </FloatingLink.EditButton>\n </span>\n\n <span\n role=\"button\"\n tabIndex={0}\n data-test-id={'remove-link-button'}\n className=\"tw-transition tw-cursor-pointer tw-rounded hover:tw-bg-black-10 tw-p-1\"\n >\n <FloatingLink.UnlinkButton>\n <IconTrashBin16 />\n </FloatingLink.UnlinkButton>\n </span>\n </span>\n </span>\n </div>\n );\n};\n"],"names":["EditModal","urlHtmlProps","useFloatingLinkUrlInput","jsx","jsxs","BlockStyles","FloatingLink","IconPen16","IconTrashBin16"],"mappings":";;;;;AAOO,MAAMA,IAAY,MAAM;AACrB,QAAAC,IAAeC,EAAwB,CAAA,CAAE;AAG3C,SAAA,gBAAAC,EAAC,OAAI,EAAA,gBAAa,sBAAqB,WAAU,4DAC7C,UAAA,gBAAAC,EAAC,QAAK,EAAA,gBAAc,uBAAuB,WAAU,8BACjD,UAAA;AAAA,IAAA,gBAAAD,EAAC,UAAK,WAAU,0BAAyB,OAAOE,EAAY,GACvD,YAAa,aAClB,CAAA;AAAA,IACA,gBAAAD,EAAC,QAAK,EAAA,WAAU,oBACZ,UAAA;AAAA,MAAA,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,UAAU;AAAA,UACV,gBAAc;AAAA,UACd,WAAU;AAAA,UAEV,4BAACG,EAAa,YAAb,EACG,UAAA,gBAAAH,EAACI,IAAU,CAAA,GACf;AAAA,QAAA;AAAA,MACJ;AAAA,MAEA,gBAAAJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,UAAU;AAAA,UACV,gBAAc;AAAA,UACd,WAAU;AAAA,UAEV,4BAACG,EAAa,cAAb,EACG,UAAA,gBAAAH,EAACK,IAAe,CAAA,GACpB;AAAA,QAAA;AAAA,MACJ;AAAA,IAAA,GACJ;AAAA,EAAA,EACJ,CAAA,EACJ,CAAA;AAER;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { InsertModal as
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { InsertModal as t } from "./InsertModal.es.js";
|
|
3
3
|
import { useInsertModal as r } from "./useInsertModal.es.js";
|
|
4
|
-
const i = () => /* @__PURE__ */ t
|
|
4
|
+
const i = () => /* @__PURE__ */ o(t, { ...r(), testId: "floating-link-insert" });
|
|
5
5
|
export {
|
|
6
6
|
i as InsertLinkModal
|
|
7
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsertLinkModal.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { InsertModal, useInsertModal } from '.';\n\nexport const InsertLinkModal = () => <InsertModal {...useInsertModal()} testId=\"floating-link-insert\" />;\n"],"names":["InsertLinkModal","jsx","InsertModal","useInsertModal"],"mappings":";;;AAIa,MAAAA,IAAkB,
|
|
1
|
+
{"version":3,"file":"InsertLinkModal.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { InsertModal, useInsertModal } from '.';\n\nexport const InsertLinkModal = () => <InsertModal {...useInsertModal()} testId=\"floating-link-insert\" />;\n"],"names":["InsertLinkModal","jsx","InsertModal","useInsertModal"],"mappings":";;;AAIa,MAAAA,IAAkB,MAAO,gBAAAC,EAAAC,GAAA,EAAa,GAAGC,EAAe,GAAG,QAAO,uBAAuB,CAAA;"}
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FormControl as
|
|
3
|
-
import { LinkSelector as
|
|
4
|
-
const
|
|
1
|
+
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { FormControl as n, TextInput as d, Checkbox as v, Button as o, ButtonSize as c, ButtonStyle as b, ButtonEmphasis as k, IconCheckMark20 as f } from "@frontify/fondue";
|
|
3
|
+
import { LinkSelector as C } from "../../../shared/LinkSelector/LinkSelector.es.js";
|
|
4
|
+
const g = ({
|
|
5
5
|
state: l,
|
|
6
|
-
onTextChange:
|
|
6
|
+
onTextChange: a,
|
|
7
7
|
onUrlChange: t,
|
|
8
|
-
onToggleTab:
|
|
9
|
-
onCancel:
|
|
10
|
-
onSave:
|
|
11
|
-
isValidUrlOrEmpty:
|
|
12
|
-
hasValues:
|
|
13
|
-
testId:
|
|
14
|
-
appBridge:
|
|
15
|
-
children:
|
|
16
|
-
}) => /* @__PURE__ */
|
|
17
|
-
/* @__PURE__ */ e
|
|
18
|
-
|
|
8
|
+
onToggleTab: u,
|
|
9
|
+
onCancel: h,
|
|
10
|
+
onSave: m,
|
|
11
|
+
isValidUrlOrEmpty: i,
|
|
12
|
+
hasValues: w,
|
|
13
|
+
testId: s,
|
|
14
|
+
appBridge: p,
|
|
15
|
+
children: x
|
|
16
|
+
}) => /* @__PURE__ */ r("div", { "data-test-id": s, className: "tw-bg-white tw-rounded tw-shadow tw-p-7 tw-min-w-[400px] tw-overflow-y-auto", children: [
|
|
17
|
+
/* @__PURE__ */ e(
|
|
18
|
+
n,
|
|
19
19
|
{
|
|
20
20
|
label: {
|
|
21
21
|
children: "Text",
|
|
22
22
|
htmlFor: "linkText",
|
|
23
23
|
required: !0
|
|
24
24
|
},
|
|
25
|
-
children: /* @__PURE__ */ e
|
|
25
|
+
children: /* @__PURE__ */ e(d, { id: "linkText", value: l.text, placeholder: "Link Text", onChange: a })
|
|
26
26
|
}
|
|
27
27
|
),
|
|
28
|
-
|
|
29
|
-
/* @__PURE__ */
|
|
30
|
-
/* @__PURE__ */ e
|
|
31
|
-
|
|
28
|
+
x,
|
|
29
|
+
/* @__PURE__ */ r("div", { className: "tw-pt-5", children: [
|
|
30
|
+
/* @__PURE__ */ e(
|
|
31
|
+
n,
|
|
32
32
|
{
|
|
33
33
|
label: {
|
|
34
34
|
children: "URL",
|
|
35
35
|
htmlFor: "url",
|
|
36
36
|
required: !0
|
|
37
37
|
},
|
|
38
|
-
children: /* @__PURE__ */ e
|
|
39
|
-
|
|
38
|
+
children: /* @__PURE__ */ e(
|
|
39
|
+
d,
|
|
40
40
|
{
|
|
41
41
|
id: "url",
|
|
42
42
|
value: l.url,
|
|
@@ -47,34 +47,34 @@ const T = ({
|
|
|
47
47
|
)
|
|
48
48
|
}
|
|
49
49
|
),
|
|
50
|
-
!
|
|
50
|
+
!i(l == null ? void 0 : l.url) && /* @__PURE__ */ e("div", { className: "tw-text-red-65 tw-mt-3", children: "Please enter a valid URL." })
|
|
51
51
|
] }),
|
|
52
|
-
/* @__PURE__ */ e
|
|
53
|
-
/* @__PURE__ */ e
|
|
54
|
-
/* @__PURE__ */ e
|
|
55
|
-
/* @__PURE__ */ e
|
|
56
|
-
|
|
52
|
+
/* @__PURE__ */ e("div", { className: "tw-mt-3", children: /* @__PURE__ */ e(C, { url: l.url, appBridge: p, onUrlChange: t }) }),
|
|
53
|
+
/* @__PURE__ */ e("div", { className: "tw-mt-3", children: /* @__PURE__ */ e(v, { value: "new-tab", label: "Open in new tab", state: l.newTab, onChange: u }) }),
|
|
54
|
+
/* @__PURE__ */ e("div", { className: "tw-mt-3", children: /* @__PURE__ */ r("div", { className: "tw-pt-5 tw-flex tw-gap-x-3 tw-justify-end tw-border-t tw-border-t-black-10", children: [
|
|
55
|
+
/* @__PURE__ */ e(
|
|
56
|
+
o,
|
|
57
57
|
{
|
|
58
|
-
onClick:
|
|
59
|
-
size:
|
|
60
|
-
style:
|
|
61
|
-
emphasis:
|
|
58
|
+
onClick: h,
|
|
59
|
+
size: c.Medium,
|
|
60
|
+
style: b.Default,
|
|
61
|
+
emphasis: k.Default,
|
|
62
62
|
children: "Cancel"
|
|
63
63
|
}
|
|
64
64
|
),
|
|
65
|
-
/* @__PURE__ */ e
|
|
66
|
-
|
|
65
|
+
/* @__PURE__ */ e(
|
|
66
|
+
o,
|
|
67
67
|
{
|
|
68
|
-
onClick:
|
|
69
|
-
size:
|
|
70
|
-
icon: /* @__PURE__ */ e
|
|
71
|
-
disabled: !
|
|
68
|
+
onClick: m,
|
|
69
|
+
size: c.Medium,
|
|
70
|
+
icon: /* @__PURE__ */ e(f, {}),
|
|
71
|
+
disabled: !w || !i(l == null ? void 0 : l.url),
|
|
72
72
|
children: "Save"
|
|
73
73
|
}
|
|
74
74
|
)
|
|
75
75
|
] }) })
|
|
76
76
|
] });
|
|
77
77
|
export {
|
|
78
|
-
|
|
78
|
+
g as InsertModal
|
|
79
79
|
};
|
|
80
80
|
//# sourceMappingURL=InsertModal.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsertModal.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport {\n Button,\n ButtonEmphasis,\n ButtonSize,\n ButtonStyle,\n Checkbox,\n FormControl,\n IconCheckMark20,\n TextInput,\n} from '@frontify/fondue';\nimport { FC, ReactNode } from 'react';\nimport { LinkSelector } from '../../../shared/LinkSelector';\nimport { InsertModalStateProps } from './types';\n\ntype
|
|
1
|
+
{"version":3,"file":"InsertModal.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport {\n Button,\n ButtonEmphasis,\n ButtonSize,\n ButtonStyle,\n Checkbox,\n FormControl,\n IconCheckMark20,\n TextInput,\n} from '@frontify/fondue';\nimport { FC, ReactNode } from 'react';\nimport { LinkSelector } from '../../../shared/LinkSelector';\nimport { InsertModalStateProps } from './types';\n\ntype InsertModalProps = {\n state: InsertModalStateProps;\n onTextChange: (value: string) => void;\n onUrlChange: (value: string) => void;\n onToggleTab: (checked: boolean) => void;\n onCancel: () => void;\n onSave: (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | KeyboardEvent | undefined) => void;\n hasValues: boolean;\n isValidUrlOrEmpty: (url: string) => boolean | undefined;\n testId?: string;\n children?: ReactNode;\n appBridge: AppBridgeBlock;\n};\n\nexport const InsertModal: FC<InsertModalProps> = ({\n state,\n onTextChange,\n onUrlChange,\n onToggleTab,\n onCancel,\n onSave,\n isValidUrlOrEmpty,\n hasValues,\n testId,\n appBridge,\n children,\n}) => (\n <div data-test-id={testId} className=\"tw-bg-white tw-rounded tw-shadow tw-p-7 tw-min-w-[400px] tw-overflow-y-auto\">\n <FormControl\n label={{\n children: 'Text',\n htmlFor: 'linkText',\n required: true,\n }}\n >\n <TextInput id=\"linkText\" value={state.text} placeholder=\"Link Text\" onChange={onTextChange} />\n </FormControl>\n\n {children}\n\n <div className=\"tw-pt-5\">\n <FormControl\n label={{\n children: 'URL',\n htmlFor: 'url',\n required: true,\n }}\n >\n <TextInput\n id=\"url\"\n value={state.url}\n placeholder=\"https://example.com\"\n focusOnMount\n onChange={onUrlChange}\n />\n </FormControl>\n {!isValidUrlOrEmpty(state?.url) && <div className=\"tw-text-red-65 tw-mt-3\">Please enter a valid URL.</div>}\n </div>\n\n <div className=\"tw-mt-3\">\n <LinkSelector url={state.url} appBridge={appBridge} onUrlChange={onUrlChange} />\n </div>\n\n <div className=\"tw-mt-3\">\n <Checkbox value=\"new-tab\" label=\"Open in new tab\" state={state.newTab} onChange={onToggleTab} />\n </div>\n <div className=\"tw-mt-3\">\n <div className={'tw-pt-5 tw-flex tw-gap-x-3 tw-justify-end tw-border-t tw-border-t-black-10'}>\n <Button\n onClick={onCancel}\n size={ButtonSize.Medium}\n style={ButtonStyle.Default}\n emphasis={ButtonEmphasis.Default}\n >\n Cancel\n </Button>\n <Button\n onClick={onSave}\n size={ButtonSize.Medium}\n icon={<IconCheckMark20 />}\n disabled={!hasValues || !isValidUrlOrEmpty(state?.url)}\n >\n Save\n </Button>\n </div>\n </div>\n </div>\n);\n"],"names":["InsertModal","state","onTextChange","onUrlChange","onToggleTab","onCancel","onSave","isValidUrlOrEmpty","hasValues","testId","appBridge","children","jsxs","jsx","FormControl","TextInput","LinkSelector","Checkbox","Button","ButtonSize","ButtonStyle","ButtonEmphasis","IconCheckMark20"],"mappings":";;;AA+BO,MAAMA,IAAoC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACJ,MACK,gBAAAC,EAAA,OAAA,EAAI,gBAAcH,GAAQ,WAAU,+EACjC,UAAA;AAAA,EAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,OAAO;AAAA,QACH,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,MACd;AAAA,MAEA,UAAA,gBAAAD,EAACE,GAAU,EAAA,IAAG,YAAW,OAAOd,EAAM,MAAM,aAAY,aAAY,UAAUC,EAAc,CAAA;AAAA,IAAA;AAAA,EAChG;AAAA,EAECS;AAAA,EAED,gBAAAC,EAAC,OAAI,EAAA,WAAU,WACX,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,OAAO;AAAA,UACH,UAAU;AAAA,UACV,SAAS;AAAA,UACT,UAAU;AAAA,QACd;AAAA,QAEA,UAAA,gBAAAD;AAAA,UAACE;AAAA,UAAA;AAAA,YACG,IAAG;AAAA,YACH,OAAOd,EAAM;AAAA,YACb,aAAY;AAAA,YACZ,cAAY;AAAA,YACZ,UAAUE;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,IACJ;AAAA,IACC,CAACI,EAAkBN,KAAA,gBAAAA,EAAO,GAAG,KAAM,gBAAAY,EAAA,OAAA,EAAI,WAAU,0BAAyB,UAAyB,4BAAA,CAAA;AAAA,EAAA,GACxG;AAAA,EAEA,gBAAAA,EAAC,OAAI,EAAA,WAAU,WACX,UAAA,gBAAAA,EAACG,GAAa,EAAA,KAAKf,EAAM,KAAK,WAAAS,GAAsB,aAAAP,EAAA,CAA0B,EAClF,CAAA;AAAA,EAEC,gBAAAU,EAAA,OAAA,EAAI,WAAU,WACX,4BAACI,GAAS,EAAA,OAAM,WAAU,OAAM,mBAAkB,OAAOhB,EAAM,QAAQ,UAAUG,EAAa,CAAA,GAClG;AAAA,oBACC,OAAI,EAAA,WAAU,WACX,UAAC,gBAAAQ,EAAA,OAAA,EAAI,WAAW,8EACZ,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACK;AAAA,MAAA;AAAA,QACG,SAASb;AAAA,QACT,MAAMc,EAAW;AAAA,QACjB,OAAOC,EAAY;AAAA,QACnB,UAAUC,EAAe;AAAA,QAC5B,UAAA;AAAA,MAAA;AAAA,IAED;AAAA,IACA,gBAAAR;AAAA,MAACK;AAAA,MAAA;AAAA,QACG,SAASZ;AAAA,QACT,MAAMa,EAAW;AAAA,QACjB,wBAAOG,GAAgB,EAAA;AAAA,QACvB,UAAU,CAACd,KAAa,CAACD,EAAkBN,KAAA,gBAAAA,EAAO,GAAG;AAAA,QACxD,UAAA;AAAA,MAAA;AAAA,IAED;AAAA,EAAA,EAAA,CACJ,EACJ,CAAA;AAAA,EACJ,CAAA;"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getTooltip as
|
|
3
|
-
import { usePlateEditorState as m, useEventPlateId as
|
|
4
|
-
const
|
|
5
|
-
const e = m(
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { getTooltip as s, getHotkeyByPlatform as a, IconLink as l, IconSize as r, getButtonClassNames as c } from "@frontify/fondue";
|
|
3
|
+
import { usePlateEditorState as m, useEventPlateId as d, isRangeInSameBlock as p, LinkToolbarButton as u } from "@udecode/plate";
|
|
4
|
+
const w = ({ id: n, editorId: i }) => {
|
|
5
|
+
const e = m(d(i)), o = !!p(e, {
|
|
6
6
|
at: e.selection
|
|
7
7
|
});
|
|
8
|
-
return /* @__PURE__ */ t
|
|
9
|
-
|
|
8
|
+
return /* @__PURE__ */ t("div", { "data-plugin-id": n, children: /* @__PURE__ */ t(
|
|
9
|
+
u,
|
|
10
10
|
{
|
|
11
|
-
tooltip:
|
|
11
|
+
tooltip: s(
|
|
12
12
|
o ? `Link
|
|
13
13
|
${a("Ctrl+K")}` : "Links can only be set for a single text block."
|
|
14
14
|
),
|
|
15
|
-
icon: /* @__PURE__ */ t
|
|
15
|
+
icon: /* @__PURE__ */ t("span", { className: "tw-p-2 tw-h-8 tw-justify-center tw-items-center tw-flex", children: /* @__PURE__ */ t(l, { size: r.Size16 }) }),
|
|
16
16
|
classNames: c(o),
|
|
17
17
|
styles: { root: { width: "24px", height: "24px" } },
|
|
18
18
|
actionHandler: "onMouseDown"
|
|
@@ -20,6 +20,6 @@ ${a("Ctrl+K")}` : "Links can only be set for a single text block."
|
|
|
20
20
|
) });
|
|
21
21
|
};
|
|
22
22
|
export {
|
|
23
|
-
|
|
23
|
+
w as LinkButton
|
|
24
24
|
};
|
|
25
25
|
//# sourceMappingURL=LinkButton.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkButton.es.js","sources":["../../../../../src/components/RichTextEditor/plugins/LinkPlugin/LinkButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n IconLink,\n IconSize,\n PluginButtonProps,\n getButtonClassNames,\n getHotkeyByPlatform,\n getTooltip,\n} from '@frontify/fondue';\nimport { LinkToolbarButton, isRangeInSameBlock, useEventPlateId, usePlateEditorState } from '@udecode/plate';\n\nexport const LinkButton = ({ id, editorId }: PluginButtonProps) => {\n const editor = usePlateEditorState(useEventPlateId(editorId));\n const isEnabled = !!isRangeInSameBlock(editor, {\n at: editor.selection,\n });\n\n return (\n <div data-plugin-id={id}>\n <LinkToolbarButton\n tooltip={getTooltip(\n isEnabled\n ? `Link\\n${getHotkeyByPlatform('Ctrl+K')}`\n : 'Links can only be set for a single text block.',\n )}\n icon={\n <span className=\"tw-p-2 tw-h-8 tw-justify-center tw-items-center tw-flex\">\n <IconLink size={IconSize.Size16} />\n </span>\n }\n classNames={getButtonClassNames(isEnabled)}\n styles={{ root: { width: '24px', height: '24px' } }}\n actionHandler=\"onMouseDown\"\n />\n </div>\n );\n};\n"],"names":["LinkButton","id","editorId","editor","usePlateEditorState","useEventPlateId","isEnabled","isRangeInSameBlock","jsx","LinkToolbarButton","getTooltip","getHotkeyByPlatform","IconLink","IconSize","getButtonClassNames"],"mappings":";;;AAYO,MAAMA,IAAa,CAAC,EAAE,IAAAC,GAAI,UAAAC,QAAkC;AAC/D,QAAMC,IAASC,EAAoBC,EAAgBH,CAAQ,CAAC,GACtDI,IAAY,CAAC,CAACC,EAAmBJ,GAAQ;AAAA,IAC3C,IAAIA,EAAO;AAAA,EAAA,CACd;AAGG,
|
|
1
|
+
{"version":3,"file":"LinkButton.es.js","sources":["../../../../../src/components/RichTextEditor/plugins/LinkPlugin/LinkButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n IconLink,\n IconSize,\n PluginButtonProps,\n getButtonClassNames,\n getHotkeyByPlatform,\n getTooltip,\n} from '@frontify/fondue';\nimport { LinkToolbarButton, isRangeInSameBlock, useEventPlateId, usePlateEditorState } from '@udecode/plate';\n\nexport const LinkButton = ({ id, editorId }: PluginButtonProps) => {\n const editor = usePlateEditorState(useEventPlateId(editorId));\n const isEnabled = !!isRangeInSameBlock(editor, {\n at: editor.selection,\n });\n\n return (\n <div data-plugin-id={id}>\n <LinkToolbarButton\n tooltip={getTooltip(\n isEnabled\n ? `Link\\n${getHotkeyByPlatform('Ctrl+K')}`\n : 'Links can only be set for a single text block.',\n )}\n icon={\n <span className=\"tw-p-2 tw-h-8 tw-justify-center tw-items-center tw-flex\">\n <IconLink size={IconSize.Size16} />\n </span>\n }\n classNames={getButtonClassNames(isEnabled)}\n styles={{ root: { width: '24px', height: '24px' } }}\n actionHandler=\"onMouseDown\"\n />\n </div>\n );\n};\n"],"names":["LinkButton","id","editorId","editor","usePlateEditorState","useEventPlateId","isEnabled","isRangeInSameBlock","jsx","LinkToolbarButton","getTooltip","getHotkeyByPlatform","IconLink","IconSize","getButtonClassNames"],"mappings":";;;AAYO,MAAMA,IAAa,CAAC,EAAE,IAAAC,GAAI,UAAAC,QAAkC;AAC/D,QAAMC,IAASC,EAAoBC,EAAgBH,CAAQ,CAAC,GACtDI,IAAY,CAAC,CAACC,EAAmBJ,GAAQ;AAAA,IAC3C,IAAIA,EAAO;AAAA,EAAA,CACd;AAGG,SAAA,gBAAAK,EAAC,OAAI,EAAA,kBAAgBP,GACjB,UAAA,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,SAASC;AAAA,QACLJ,IACM;AAAA,EAASK,EAAoB,QAAQ,CAAC,KACtC;AAAA,MACV;AAAA,MACA,MACK,gBAAAH,EAAA,QAAA,EAAK,WAAU,2DACZ,4BAACI,GAAS,EAAA,MAAMC,EAAS,OAAA,CAAQ,EACrC,CAAA;AAAA,MAEJ,YAAYC,EAAoBR,CAAS;AAAA,MACzC,QAAQ,EAAE,MAAM,EAAE,OAAO,QAAQ,QAAQ,SAAS;AAAA,MAClD,eAAc;AAAA,IAAA;AAAA,EAEtB,EAAA,CAAA;AAER;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
2
|
import { useElementProps as i } from "@udecode/plate";
|
|
3
3
|
import { BlockStyles as p } from "../../styles.es.js";
|
|
4
4
|
import { LINK_PLUGIN as a } from "../id.es.js";
|
|
5
|
-
const
|
|
5
|
+
const l = (r) => ({
|
|
6
6
|
...i({
|
|
7
7
|
...r,
|
|
8
8
|
elementToAttributes: (t) => {
|
|
@@ -18,8 +18,8 @@ const m = (r) => ({
|
|
|
18
18
|
t.stopPropagation();
|
|
19
19
|
}
|
|
20
20
|
}), h = (r) => {
|
|
21
|
-
const e =
|
|
22
|
-
return /* @__PURE__ */ n
|
|
21
|
+
const e = l(r), { attributes: t, children: o } = r;
|
|
22
|
+
return /* @__PURE__ */ n("a", { ...t, href: e.href, target: e.target, style: p[a], children: o });
|
|
23
23
|
};
|
|
24
24
|
export {
|
|
25
25
|
h as LinkMarkupElementNode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkMarkupElementNode.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { HTMLPropsAs, LinkRootProps, useElementProps } from '@udecode/plate';\nimport { MouseEvent } from 'react';\nimport { TLinkElement } from '../types';\nimport { BlockStyles } from '../../styles';\nimport { LINK_PLUGIN } from '../id';\n\nconst useLink = (props: LinkRootProps): HTMLPropsAs<'a'> => {\n const _props = useElementProps<TLinkElement, 'a'>({\n ...props,\n elementToAttributes: (element) => ({\n href: element.url || element.chosenLink?.searchResult?.link || '',\n target: element.target || '_blank',\n }),\n });\n\n return {\n ..._props,\n // quick fix: hovering <a> with href loses the editor focus\n onMouseOver: (event: MouseEvent) => {\n event.stopPropagation();\n },\n };\n};\n\nexport const LinkMarkupElementNode = (props: LinkRootProps) => {\n const htmlProps = useLink(props);\n const { attributes, children } = props;\n\n return (\n <a {...attributes} href={htmlProps.href} target={htmlProps.target} style={BlockStyles[LINK_PLUGIN]}>\n {children}\n </a>\n );\n};\n"],"names":["useLink","props","useElementProps","element","_b","_a","event","LinkMarkupElementNode","htmlProps","attributes","children","jsx","BlockStyles","LINK_PLUGIN"],"mappings":";;;;AAQA,MAAMA,IAAU,CAACC,OASN;AAAA,EACH,GATWC,EAAmC;AAAA,IAC9C,GAAGD;AAAA,IACH,qBAAqB,CAACE,MAAa;;AAAA;AAAA,QAC/B,MAAMA,EAAQ,SAAOC,KAAAC,IAAAF,EAAQ,eAAR,gBAAAE,EAAoB,iBAApB,gBAAAD,EAAkC,SAAQ;AAAA,QAC/D,QAAQD,EAAQ,UAAU;AAAA,MAAA;AAAA;AAAA,EAC9B,CACH;AAAA;AAAA,EAKG,aAAa,CAACG,MAAsB;AAChC,IAAAA,EAAM,gBAAgB;AAAA,EAC1B;AAAA,IAIKC,IAAwB,CAACN,MAAyB;AACrD,QAAAO,IAAYR,EAAQC,CAAK,GACzB,EAAE,YAAAQ,GAAY,UAAAC,EAAa,IAAAT;AAEjC,
|
|
1
|
+
{"version":3,"file":"LinkMarkupElementNode.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { HTMLPropsAs, LinkRootProps, useElementProps } from '@udecode/plate';\nimport type { MouseEvent } from 'react';\nimport { TLinkElement } from '../types';\nimport { BlockStyles } from '../../styles';\nimport { LINK_PLUGIN } from '../id';\n\nconst useLink = (props: LinkRootProps): HTMLPropsAs<'a'> => {\n const _props = useElementProps<TLinkElement, 'a'>({\n ...props,\n elementToAttributes: (element) => ({\n href: element.url || element.chosenLink?.searchResult?.link || '',\n target: element.target || '_blank',\n }),\n });\n\n return {\n ..._props,\n // quick fix: hovering <a> with href loses the editor focus\n onMouseOver: (event: MouseEvent) => {\n event.stopPropagation();\n },\n };\n};\n\nexport const LinkMarkupElementNode = (props: LinkRootProps) => {\n const htmlProps = useLink(props);\n const { attributes, children } = props;\n\n return (\n <a {...attributes} href={htmlProps.href} target={htmlProps.target} style={BlockStyles[LINK_PLUGIN]}>\n {children}\n </a>\n );\n};\n"],"names":["useLink","props","useElementProps","element","_b","_a","event","LinkMarkupElementNode","htmlProps","attributes","children","jsx","BlockStyles","LINK_PLUGIN"],"mappings":";;;;AAQA,MAAMA,IAAU,CAACC,OASN;AAAA,EACH,GATWC,EAAmC;AAAA,IAC9C,GAAGD;AAAA,IACH,qBAAqB,CAACE,MAAa;;AAAA;AAAA,QAC/B,MAAMA,EAAQ,SAAOC,KAAAC,IAAAF,EAAQ,eAAR,gBAAAE,EAAoB,iBAApB,gBAAAD,EAAkC,SAAQ;AAAA,QAC/D,QAAQD,EAAQ,UAAU;AAAA,MAAA;AAAA;AAAA,EAC9B,CACH;AAAA;AAAA,EAKG,aAAa,CAACG,MAAsB;AAChC,IAAAA,EAAM,gBAAgB;AAAA,EAC1B;AAAA,IAIKC,IAAwB,CAACN,MAAyB;AACrD,QAAAO,IAAYR,EAAQC,CAAK,GACzB,EAAE,YAAAQ,GAAY,UAAAC,EAAa,IAAAT;AAEjC,SACK,gBAAAU,EAAA,KAAA,EAAG,GAAGF,GAAY,MAAMD,EAAU,MAAM,QAAQA,EAAU,QAAQ,OAAOI,EAAYC,CAAW,GAC5F,UAAAH,EACL,CAAA;AAER;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../../../src/components/RichTextEditor/plugins/LinkPlugin/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport { Plugin, PluginProps } from '@frontify/fondue';\nimport { createLinkPlugin as createPlateLinkPlugin, createPluginFactory } from '@udecode/plate';\nimport { CustomFloatingLink } from './FloatingLink/CustomFloatingLink';\nimport { LINK_PLUGIN } from './id';\nimport { LinkButton } from './LinkButton';\nimport { LinkMarkupElement } from './LinkMarkupElement';\nimport { isValidUrl } from './utils/url';\nimport {
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../src/components/RichTextEditor/plugins/LinkPlugin/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport type { CSSProperties } from 'react';\nimport { AppBridgeBlock } from '@frontify/app-bridge';\nimport { Plugin, PluginProps } from '@frontify/fondue';\nimport { createLinkPlugin as createPlateLinkPlugin, createPluginFactory } from '@udecode/plate';\n\nimport { CustomFloatingLink } from './FloatingLink/CustomFloatingLink';\nimport { LINK_PLUGIN } from './id';\nimport { LinkButton } from './LinkButton';\nimport { LinkMarkupElement } from './LinkMarkupElement';\nimport { isValidUrl } from './utils/url';\nimport { BlockStyles } from '../styles';\n\nexport const createLinkPlugin = (appBridge: AppBridgeBlock) =>\n createPluginFactory({\n ...createPlateLinkPlugin(),\n renderAfterEditable: CustomFloatingLink,\n options: {\n isUrl: isValidUrl,\n rangeBeforeOptions: {\n matchString: ' ',\n skipInvalid: true,\n afterMatch: true,\n },\n triggerFloatingLinkHotkeys: 'command+k, ctrl+k',\n appBridge,\n },\n })();\n\nexport type LinkPluginProps = PluginProps & { appBridge: AppBridgeBlock };\n\nexport class LinkPlugin extends Plugin {\n private appBridge: AppBridgeBlock;\n public styles: CSSProperties = {};\n constructor(props?: LinkPluginProps, styles = BlockStyles[LINK_PLUGIN]) {\n super(LINK_PLUGIN, {\n button: LinkButton,\n markupElement: new LinkMarkupElement(),\n ...props,\n });\n this.styles = styles;\n this.appBridge = props?.appBridge as AppBridgeBlock;\n }\n\n plugins() {\n return [createLinkPlugin(this.appBridge)];\n }\n}\n"],"names":["createLinkPlugin","appBridge","createPluginFactory","createPlateLinkPlugin","CustomFloatingLink","isValidUrl","LinkPlugin","Plugin","props","styles","BlockStyles","LINK_PLUGIN","LinkButton","LinkMarkupElement"],"mappings":";;;;;;;;AAca,MAAAA,IAAmB,CAACC,MAC7BC,EAAoB;AAAA,EAChB,GAAGC,EAAsB;AAAA,EACzB,qBAAqBC;AAAA,EACrB,SAAS;AAAA,IACL,OAAOC;AAAA,IACP,oBAAoB;AAAA,MAChB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,IAChB;AAAA,IACA,4BAA4B;AAAA,IAC5B,WAAAJ;AAAA,EACJ;AACJ,CAAC,EAAE;AAIA,MAAMK,UAAmBC,EAAO;AAAA,EAGnC,YAAYC,GAAyBC,IAASC,EAAYC,CAAW,GAAG;AACpE,UAAMA,GAAa;AAAA,MACf,QAAQC;AAAA,MACR,eAAe,IAAIC,EAAkB;AAAA,MACrC,GAAGL;AAAA,IAAA,CACN,GANL,KAAO,SAAwB,IAO3B,KAAK,SAASC,GACd,KAAK,YAAYD,KAAA,gBAAAA,EAAO;AAAA,EAC5B;AAAA,EAEA,UAAU;AACN,WAAO,CAACR,EAAiB,KAAK,SAAS,CAAC;AAAA,EAC5C;AACJ;"}
|