@payloadcms/richtext-slate 3.0.0-beta.5 → 3.0.0-beta.50
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/README.md +1 -1
- package/dist/cell/index.d.ts +1 -1
- package/dist/cell/index.d.ts.map +1 -1
- package/dist/cell/index.js +7 -2
- package/dist/cell/index.js.map +1 -1
- package/dist/data/populate.d.ts +4 -4
- package/dist/data/populate.d.ts.map +1 -1
- package/dist/data/populate.js +13 -11
- package/dist/data/populate.js.map +1 -1
- package/dist/data/recurseNestedFields.d.ts +5 -4
- package/dist/data/recurseNestedFields.d.ts.map +1 -1
- package/dist/data/recurseNestedFields.js +22 -12
- package/dist/data/recurseNestedFields.js.map +1 -1
- package/dist/data/richTextRelationshipPromise.d.ts +7 -6
- package/dist/data/richTextRelationshipPromise.d.ts.map +1 -1
- package/dist/data/richTextRelationshipPromise.js +14 -10
- package/dist/data/richTextRelationshipPromise.js.map +1 -1
- package/dist/data/validation.d.ts +1 -1
- package/dist/data/validation.d.ts.map +1 -1
- package/dist/data/validation.js +3 -3
- package/dist/data/validation.js.map +1 -1
- package/dist/field/RichText.d.ts +0 -2
- package/dist/field/RichText.d.ts.map +1 -1
- package/dist/field/RichText.js +180 -149
- package/dist/field/RichText.js.map +1 -1
- package/dist/field/elements/Button.d.ts.map +1 -1
- package/dist/field/elements/Button.js +18 -8
- package/dist/field/elements/Button.js.map +1 -1
- package/dist/field/elements/EnabledRelationshipsCondition.d.ts.map +1 -1
- package/dist/field/elements/EnabledRelationshipsCondition.js +1 -3
- package/dist/field/elements/EnabledRelationshipsCondition.js.map +1 -1
- package/dist/field/elements/ListButton.js +5 -3
- package/dist/field/elements/ListButton.js.map +1 -1
- package/dist/field/elements/blockquote/Blockquote.d.ts +1 -2
- package/dist/field/elements/blockquote/Blockquote.d.ts.map +1 -1
- package/dist/field/elements/blockquote/Blockquote.js +5 -3
- package/dist/field/elements/blockquote/Blockquote.js.map +1 -1
- package/dist/field/elements/blockquote/index.js +5 -3
- package/dist/field/elements/blockquote/index.js.map +1 -1
- package/dist/field/elements/h1/Heading1.d.ts +1 -2
- package/dist/field/elements/h1/Heading1.d.ts.map +1 -1
- package/dist/field/elements/h1/Heading1.js +5 -1
- package/dist/field/elements/h1/Heading1.js.map +1 -1
- package/dist/field/elements/h1/index.js +5 -3
- package/dist/field/elements/h1/index.js.map +1 -1
- package/dist/field/elements/h2/Heading2.d.ts +1 -2
- package/dist/field/elements/h2/Heading2.d.ts.map +1 -1
- package/dist/field/elements/h2/Heading2.js +5 -1
- package/dist/field/elements/h2/Heading2.js.map +1 -1
- package/dist/field/elements/h2/index.js +5 -3
- package/dist/field/elements/h2/index.js.map +1 -1
- package/dist/field/elements/h3/Heading3.d.ts +1 -2
- package/dist/field/elements/h3/Heading3.d.ts.map +1 -1
- package/dist/field/elements/h3/Heading3.js +5 -1
- package/dist/field/elements/h3/Heading3.js.map +1 -1
- package/dist/field/elements/h3/index.js +5 -3
- package/dist/field/elements/h3/index.js.map +1 -1
- package/dist/field/elements/h4/Heading4.d.ts +1 -2
- package/dist/field/elements/h4/Heading4.d.ts.map +1 -1
- package/dist/field/elements/h4/Heading4.js +5 -1
- package/dist/field/elements/h4/Heading4.js.map +1 -1
- package/dist/field/elements/h4/index.js +5 -3
- package/dist/field/elements/h4/index.js.map +1 -1
- package/dist/field/elements/h5/Heading5.d.ts +1 -2
- package/dist/field/elements/h5/Heading5.d.ts.map +1 -1
- package/dist/field/elements/h5/Heading5.js +5 -1
- package/dist/field/elements/h5/Heading5.js.map +1 -1
- package/dist/field/elements/h5/index.js +5 -3
- package/dist/field/elements/h5/index.js.map +1 -1
- package/dist/field/elements/h6/Heading6.d.ts +1 -2
- package/dist/field/elements/h6/Heading6.d.ts.map +1 -1
- package/dist/field/elements/h6/Heading6.js +5 -1
- package/dist/field/elements/h6/Heading6.js.map +1 -1
- package/dist/field/elements/h6/index.js +5 -3
- package/dist/field/elements/h6/index.js.map +1 -1
- package/dist/field/elements/indent/Button.d.ts.map +1 -1
- package/dist/field/elements/indent/Button.js +21 -14
- package/dist/field/elements/indent/Button.js.map +1 -1
- package/dist/field/elements/indent/Element.js +5 -3
- package/dist/field/elements/indent/Element.js.map +1 -1
- package/dist/field/elements/li/ListItem.d.ts.map +1 -1
- package/dist/field/elements/li/ListItem.js +6 -7
- package/dist/field/elements/li/ListItem.js.map +1 -1
- package/dist/field/elements/link/Button/index.d.ts.map +1 -1
- package/dist/field/elements/link/Button/index.js +48 -47
- package/dist/field/elements/link/Button/index.js.map +1 -1
- package/dist/field/elements/link/Element/index.d.ts +1 -2
- package/dist/field/elements/link/Element/index.d.ts.map +1 -1
- package/dist/field/elements/link/Element/index.js +104 -97
- package/dist/field/elements/link/Element/index.js.map +1 -1
- package/dist/field/elements/link/LinkDrawer/baseFields.d.ts +2 -3
- package/dist/field/elements/link/LinkDrawer/baseFields.d.ts.map +1 -1
- package/dist/field/elements/link/LinkDrawer/baseFields.js.map +1 -1
- package/dist/field/elements/link/LinkDrawer/index.d.ts.map +1 -1
- package/dist/field/elements/link/LinkDrawer/index.js +31 -33
- package/dist/field/elements/link/LinkDrawer/index.js.map +1 -1
- package/dist/field/elements/link/LinkDrawer/types.d.ts +1 -1
- package/dist/field/elements/link/LinkDrawer/types.d.ts.map +1 -1
- package/dist/field/elements/link/LinkDrawer/types.js.map +1 -1
- package/dist/field/elements/link/utilities.d.ts +2 -5
- package/dist/field/elements/link/utilities.d.ts.map +1 -1
- package/dist/field/elements/link/utilities.js +3 -4
- package/dist/field/elements/link/utilities.js.map +1 -1
- package/dist/field/elements/ol/OrderedList.js +5 -3
- package/dist/field/elements/ol/OrderedList.js.map +1 -1
- package/dist/field/elements/ol/index.js +5 -3
- package/dist/field/elements/ol/index.js.map +1 -1
- package/dist/field/elements/relationship/Button/index.d.ts.map +1 -1
- package/dist/field/elements/relationship/Button/index.js +27 -14
- package/dist/field/elements/relationship/Button/index.js.map +1 -1
- package/dist/field/elements/relationship/Element/index.d.ts.map +1 -1
- package/dist/field/elements/relationship/Element/index.js +70 -50
- package/dist/field/elements/relationship/Element/index.js.map +1 -1
- package/dist/field/elements/textAlign/index.js +20 -10
- package/dist/field/elements/textAlign/index.js.map +1 -1
- package/dist/field/elements/types.d.ts +1 -0
- package/dist/field/elements/types.d.ts.map +1 -1
- package/dist/field/elements/types.js.map +1 -1
- package/dist/field/elements/ul/UnorderedList.js +5 -3
- package/dist/field/elements/ul/UnorderedList.js.map +1 -1
- package/dist/field/elements/ul/index.js +5 -3
- package/dist/field/elements/ul/index.js.map +1 -1
- package/dist/field/elements/upload/Button/index.d.ts.map +1 -1
- package/dist/field/elements/upload/Button/index.js +27 -16
- package/dist/field/elements/upload/Button/index.js.map +1 -1
- package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts +1 -1
- package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts.map +1 -1
- package/dist/field/elements/upload/Element/UploadDrawer/index.js +28 -29
- package/dist/field/elements/upload/Element/UploadDrawer/index.js.map +1 -1
- package/dist/field/elements/upload/Element/index.d.ts.map +1 -1
- package/dist/field/elements/upload/Element/index.js +109 -79
- package/dist/field/elements/upload/Element/index.js.map +1 -1
- package/dist/field/icons/AlignCenter/index.js +7 -5
- package/dist/field/icons/AlignCenter/index.js.map +1 -1
- package/dist/field/icons/AlignLeft/index.js +7 -5
- package/dist/field/icons/AlignLeft/index.js.map +1 -1
- package/dist/field/icons/AlignRight/index.js +7 -5
- package/dist/field/icons/AlignRight/index.js.map +1 -1
- package/dist/field/icons/Blockquote/index.js +14 -9
- package/dist/field/icons/Blockquote/index.js.map +1 -1
- package/dist/field/icons/Bold/index.js +14 -9
- package/dist/field/icons/Bold/index.js.map +1 -1
- package/dist/field/icons/Code/index.js +8 -6
- package/dist/field/icons/Code/index.js.map +1 -1
- package/dist/field/icons/IndentLeft/index.js +31 -24
- package/dist/field/icons/IndentLeft/index.js.map +1 -1
- package/dist/field/icons/IndentRight/index.js +31 -24
- package/dist/field/icons/IndentRight/index.js.map +1 -1
- package/dist/field/icons/Italic/index.js +14 -9
- package/dist/field/icons/Italic/index.js.map +1 -1
- package/dist/field/icons/Link/index.js +14 -9
- package/dist/field/icons/Link/index.js.map +1 -1
- package/dist/field/icons/OrderedList/index.js +14 -9
- package/dist/field/icons/OrderedList/index.js.map +1 -1
- package/dist/field/icons/Relationship/index.js +24 -18
- package/dist/field/icons/Relationship/index.js.map +1 -1
- package/dist/field/icons/Strikethrough/index.js +14 -9
- package/dist/field/icons/Strikethrough/index.js.map +1 -1
- package/dist/field/icons/Underline/index.js +14 -9
- package/dist/field/icons/Underline/index.js.map +1 -1
- package/dist/field/icons/UnorderedList/index.js +14 -9
- package/dist/field/icons/UnorderedList/index.js.map +1 -1
- package/dist/field/icons/Upload/index.js +16 -11
- package/dist/field/icons/Upload/index.js.map +1 -1
- package/dist/field/icons/headings/H1/index.js +14 -9
- package/dist/field/icons/headings/H1/index.js.map +1 -1
- package/dist/field/icons/headings/H2/index.js +14 -9
- package/dist/field/icons/headings/H2/index.js.map +1 -1
- package/dist/field/icons/headings/H3/index.js +14 -9
- package/dist/field/icons/headings/H3/index.js.map +1 -1
- package/dist/field/icons/headings/H4/index.js +14 -9
- package/dist/field/icons/headings/H4/index.js.map +1 -1
- package/dist/field/icons/headings/H5/index.js +14 -9
- package/dist/field/icons/headings/H5/index.js.map +1 -1
- package/dist/field/icons/headings/H6/index.js +14 -9
- package/dist/field/icons/headings/H6/index.js.map +1 -1
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +18 -16
- package/dist/field/index.js.map +1 -1
- package/dist/field/index.scss +1 -0
- package/dist/field/leaves/Button.d.ts +1 -2
- package/dist/field/leaves/Button.d.ts.map +1 -1
- package/dist/field/leaves/Button.js +5 -3
- package/dist/field/leaves/Button.js.map +1 -1
- package/dist/field/leaves/bold/Bold/index.d.ts +1 -2
- package/dist/field/leaves/bold/Bold/index.d.ts.map +1 -1
- package/dist/field/leaves/bold/Bold/index.js +5 -1
- package/dist/field/leaves/bold/Bold/index.js.map +1 -1
- package/dist/field/leaves/bold/index.js +5 -3
- package/dist/field/leaves/bold/index.js.map +1 -1
- package/dist/field/leaves/code/Code/index.d.ts +1 -2
- package/dist/field/leaves/code/Code/index.d.ts.map +1 -1
- package/dist/field/leaves/code/Code/index.js +5 -1
- package/dist/field/leaves/code/Code/index.js.map +1 -1
- package/dist/field/leaves/code/index.js +5 -3
- package/dist/field/leaves/code/index.js.map +1 -1
- package/dist/field/leaves/italic/Italic/index.d.ts +1 -2
- package/dist/field/leaves/italic/Italic/index.d.ts.map +1 -1
- package/dist/field/leaves/italic/Italic/index.js +5 -1
- package/dist/field/leaves/italic/Italic/index.js.map +1 -1
- package/dist/field/leaves/italic/index.js +5 -3
- package/dist/field/leaves/italic/index.js.map +1 -1
- package/dist/field/leaves/strikethrough/Strikethrough/index.d.ts +1 -2
- package/dist/field/leaves/strikethrough/Strikethrough/index.d.ts.map +1 -1
- package/dist/field/leaves/strikethrough/Strikethrough/index.js +5 -1
- package/dist/field/leaves/strikethrough/Strikethrough/index.js.map +1 -1
- package/dist/field/leaves/strikethrough/index.js +5 -3
- package/dist/field/leaves/strikethrough/index.js.map +1 -1
- package/dist/field/leaves/underline/Underline/index.d.ts +1 -2
- package/dist/field/leaves/underline/Underline/index.d.ts.map +1 -1
- package/dist/field/leaves/underline/Underline/index.js +5 -1
- package/dist/field/leaves/underline/Underline/index.js.map +1 -1
- package/dist/field/leaves/underline/index.js +5 -3
- package/dist/field/leaves/underline/index.js.map +1 -1
- package/dist/field/providers/ElementButtonProvider.d.ts +1 -0
- package/dist/field/providers/ElementButtonProvider.d.ts.map +1 -1
- package/dist/field/providers/ElementButtonProvider.js +5 -3
- package/dist/field/providers/ElementButtonProvider.js.map +1 -1
- package/dist/field/providers/ElementProvider.js +5 -3
- package/dist/field/providers/ElementProvider.js.map +1 -1
- package/dist/field/providers/LeafButtonProvider.js +5 -3
- package/dist/field/providers/LeafButtonProvider.js.map +1 -1
- package/dist/field/providers/LeafProvider.js +5 -3
- package/dist/field/providers/LeafProvider.js.map +1 -1
- package/dist/generateComponentMap.d.ts +1 -1
- package/dist/generateComponentMap.d.ts.map +1 -1
- package/dist/generateComponentMap.js +9 -21
- package/dist/generateComponentMap.js.map +1 -1
- package/dist/generateSchemaMap.d.ts +1 -1
- package/dist/generateSchemaMap.d.ts.map +1 -1
- package/dist/generateSchemaMap.js +3 -16
- package/dist/generateSchemaMap.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +87 -31
- package/dist/index.js.map +1 -1
- package/dist/scss/app.scss +3 -4
- package/dist/scss/toasts.scss +111 -0
- package/dist/scss/vars.scss +0 -7
- package/dist/types.d.ts +1 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/useSlatePlugin.d.ts.map +1 -1
- package/dist/utilities/useSlatePlugin.js +1 -2
- package/dist/utilities/useSlatePlugin.js.map +1 -1
- package/package.json +32 -21
- package/dist/scss/fonts.scss +0 -75
- package/dist/scss/toastify.scss +0 -58
- package/src/index.tsx +0 -82
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
3
|
-
import { useCallback } from 'react';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React, { useCallback } from 'react';
|
|
4
4
|
import { Editor, Element, Text, Transforms } from 'slate';
|
|
5
5
|
import { ReactEditor, useSlate } from 'slate-react';
|
|
6
6
|
import { IndentLeft } from '../../icons/IndentLeft/index.js';
|
|
@@ -160,18 +160,25 @@ export const IndentButton = ()=>{
|
|
|
160
160
|
editor
|
|
161
161
|
]);
|
|
162
162
|
const canDeIndent = isElementActive(editor, 'li') || isElementActive(editor, indentType);
|
|
163
|
-
return /*#__PURE__*/
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
163
|
+
return /*#__PURE__*/ _jsxs(React.Fragment, {
|
|
164
|
+
children: [
|
|
165
|
+
/*#__PURE__*/ _jsx("button", {
|
|
166
|
+
className: [
|
|
167
|
+
baseClass,
|
|
168
|
+
!canDeIndent && `${baseClass}--disabled`
|
|
169
|
+
].filter(Boolean).join(' '),
|
|
170
|
+
onClick: canDeIndent ? (e)=>handleIndent(e, 'left') : undefined,
|
|
171
|
+
type: "button",
|
|
172
|
+
children: /*#__PURE__*/ _jsx(IndentLeft, {})
|
|
173
|
+
}),
|
|
174
|
+
/*#__PURE__*/ _jsx("button", {
|
|
175
|
+
className: baseClass,
|
|
176
|
+
onClick: (e)=>handleIndent(e, 'right'),
|
|
177
|
+
type: "button",
|
|
178
|
+
children: /*#__PURE__*/ _jsx(IndentRight, {})
|
|
179
|
+
})
|
|
180
|
+
]
|
|
181
|
+
});
|
|
175
182
|
};
|
|
176
183
|
|
|
177
184
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/field/elements/indent/Button.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\nimport { useCallback } from 'react'\nimport { Editor, Element, Text, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { ElementNode } from '../../../types.js'\n\nimport { IndentLeft } from '../../icons/IndentLeft/index.js'\nimport { IndentRight } from '../../icons/IndentRight/index.js'\nimport { baseClass } from '../Button.js'\nimport { getCommonBlock } from '../getCommonBlock.js'\nimport { isElementActive } from '../isActive.js'\nimport { isBlockElement } from '../isBlockElement.js'\nimport { listTypes } from '../listTypes.js'\nimport { unwrapList } from '../unwrapList.js'\nimport { indentType } from './shared.js'\n\nexport const IndentButton: React.FC = () => {\n const editor = useSlate()\n const handleIndent = useCallback(\n (e, dir) => {\n e.preventDefault()\n\n if (dir === 'left') {\n if (isElementActive(editor, 'li')) {\n const [, listPath] = getCommonBlock(\n editor,\n (n) => Element.isElement(n) && listTypes.includes(n.type),\n )\n\n const matchedParentList = Editor.above(editor, {\n at: listPath,\n match: (n: ElementNode) => !Editor.isEditor(n) && isBlockElement(editor, n),\n })\n\n if (matchedParentList) {\n const [parentListItem, parentListItemPath] = matchedParentList\n\n if (parentListItem.children.length > 1) {\n // Remove nested list\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n listTypes.includes(node.type) &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n })\n\n // Set li type on any children that don't have a type\n Transforms.setNodes(\n editor,\n { type: 'li' },\n {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type !== 'li' &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n },\n )\n\n // Parent list item path has changed at this point\n // so we need to re-fetch the parent node\n const [newParentNode] = Editor.node(editor, parentListItemPath)\n\n // If the parent node is an li,\n // lift all li nodes within\n if (Element.isElement(newParentNode) && newParentNode.type === 'li') {\n // Lift the nested lis\n Transforms.liftNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n path.length === parentListItemPath.length + 1 &&\n node.type === 'li'\n\n return matches\n },\n })\n }\n } else {\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n return (\n Element.isElement(node) &&\n node.type === 'li' &&\n path.length === parentListItemPath.length\n )\n },\n })\n\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && listTypes.includes(n.type),\n })\n }\n } else {\n unwrapList(editor, listPath)\n }\n } else {\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && n.type === indentType,\n mode: 'lowest',\n split: true,\n })\n }\n }\n\n if (dir === 'right') {\n const isCurrentlyOL = isElementActive(editor, 'ol')\n const isCurrentlyUL = isElementActive(editor, 'ul')\n\n if (isCurrentlyOL || isCurrentlyUL) {\n // Get the path of the first selected li -\n // Multiple lis could be selected\n // and the selection may start in the middle of the first li\n const [[, firstSelectedLIPath]] = Array.from(\n Editor.nodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n }),\n )\n\n // Is the first selected li the first in its list?\n const hasPrecedingLI = firstSelectedLIPath[firstSelectedLIPath.length - 1] > 0\n\n // If the first selected li is NOT the first in its list,\n // we need to inject it into the prior li\n if (hasPrecedingLI) {\n const [, precedingLIPath] = Editor.previous(editor, {\n at: firstSelectedLIPath,\n })\n\n const [precedingLIChildren] = Editor.node(editor, [...precedingLIPath, 0])\n const precedingLIChildrenIsText = Text.isText(precedingLIChildren)\n\n if (precedingLIChildrenIsText) {\n // Wrap the prior li text content so that it can be nested next to a list\n Transforms.wrapNodes(editor, { children: [] }, { at: [...precedingLIPath, 0] })\n }\n\n // Move the selected lis after the prior li contents\n Transforms.moveNodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n to: [...precedingLIPath, 1],\n })\n\n // Wrap the selected lis in a new list\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n } else {\n // Otherwise, just wrap the node in a list / li\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [{ type: 'li', children: [] }],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n }\n } else {\n Transforms.wrapNodes(editor, { type: indentType, children: [] })\n }\n }\n\n ReactEditor.focus(editor)\n },\n [editor],\n )\n\n const canDeIndent = isElementActive(editor, 'li') || isElementActive(editor, indentType)\n\n return (\n <React.Fragment>\n <button\n className={[baseClass, !canDeIndent && `${baseClass}--disabled`].filter(Boolean).join(' ')}\n onClick={canDeIndent ? (e) => handleIndent(e, 'left') : undefined}\n type=\"button\"\n >\n <IndentLeft />\n </button>\n <button className={baseClass} onClick={(e) => handleIndent(e, 'right')} type=\"button\">\n <IndentRight />\n </button>\n </React.Fragment>\n )\n}\n"],"names":["React","useCallback","Editor","Element","Text","Transforms","ReactEditor","useSlate","IndentLeft","IndentRight","baseClass","getCommonBlock","isElementActive","isBlockElement","listTypes","unwrapList","indentType","IndentButton","editor","handleIndent","e","dir","preventDefault","listPath","n","isElement","includes","type","matchedParentList","above","at","match","isEditor","parentListItem","parentListItemPath","children","length","unwrapNodes","node","path","matches","setNodes","newParentNode","liftNodes","mode","split","isCurrentlyOL","isCurrentlyUL","firstSelectedLIPath","Array","from","nodes","hasPrecedingLI","precedingLIPath","previous","precedingLIChildren","precedingLIChildrenIsText","isText","wrapNodes","moveNodes","to","focus","canDeIndent","Fragment","button","className","filter","Boolean","join","onClick","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/field/elements/indent/Button.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback } from 'react'\nimport { Editor, Element, Text, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { ElementNode } from '../../../types.js'\n\nimport { IndentLeft } from '../../icons/IndentLeft/index.js'\nimport { IndentRight } from '../../icons/IndentRight/index.js'\nimport { baseClass } from '../Button.js'\nimport { getCommonBlock } from '../getCommonBlock.js'\nimport { isElementActive } from '../isActive.js'\nimport { isBlockElement } from '../isBlockElement.js'\nimport { listTypes } from '../listTypes.js'\nimport { unwrapList } from '../unwrapList.js'\nimport { indentType } from './shared.js'\n\nexport const IndentButton: React.FC = () => {\n const editor = useSlate()\n const handleIndent = useCallback(\n (e, dir) => {\n e.preventDefault()\n\n if (dir === 'left') {\n if (isElementActive(editor, 'li')) {\n const [, listPath] = getCommonBlock(\n editor,\n (n) => Element.isElement(n) && listTypes.includes(n.type),\n )\n\n const matchedParentList = Editor.above(editor, {\n at: listPath,\n match: (n: ElementNode) => !Editor.isEditor(n) && isBlockElement(editor, n),\n })\n\n if (matchedParentList) {\n const [parentListItem, parentListItemPath] = matchedParentList\n\n if (parentListItem.children.length > 1) {\n // Remove nested list\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n listTypes.includes(node.type) &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n })\n\n // Set li type on any children that don't have a type\n Transforms.setNodes(\n editor,\n { type: 'li' },\n {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type !== 'li' &&\n path.length === parentListItemPath.length + 1\n\n return matches\n },\n },\n )\n\n // Parent list item path has changed at this point\n // so we need to re-fetch the parent node\n const [newParentNode] = Editor.node(editor, parentListItemPath)\n\n // If the parent node is an li,\n // lift all li nodes within\n if (Element.isElement(newParentNode) && newParentNode.type === 'li') {\n // Lift the nested lis\n Transforms.liftNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n const matches =\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n path.length === parentListItemPath.length + 1 &&\n node.type === 'li'\n\n return matches\n },\n })\n }\n } else {\n Transforms.unwrapNodes(editor, {\n at: parentListItemPath,\n match: (node, path) => {\n return (\n Element.isElement(node) &&\n node.type === 'li' &&\n path.length === parentListItemPath.length\n )\n },\n })\n\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && listTypes.includes(n.type),\n })\n }\n } else {\n unwrapList(editor, listPath)\n }\n } else {\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && n.type === indentType,\n mode: 'lowest',\n split: true,\n })\n }\n }\n\n if (dir === 'right') {\n const isCurrentlyOL = isElementActive(editor, 'ol')\n const isCurrentlyUL = isElementActive(editor, 'ul')\n\n if (isCurrentlyOL || isCurrentlyUL) {\n // Get the path of the first selected li -\n // Multiple lis could be selected\n // and the selection may start in the middle of the first li\n const [[, firstSelectedLIPath]] = Array.from(\n Editor.nodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n }),\n )\n\n // Is the first selected li the first in its list?\n const hasPrecedingLI = firstSelectedLIPath[firstSelectedLIPath.length - 1] > 0\n\n // If the first selected li is NOT the first in its list,\n // we need to inject it into the prior li\n if (hasPrecedingLI) {\n const [, precedingLIPath] = Editor.previous(editor, {\n at: firstSelectedLIPath,\n })\n\n const [precedingLIChildren] = Editor.node(editor, [...precedingLIPath, 0])\n const precedingLIChildrenIsText = Text.isText(precedingLIChildren)\n\n if (precedingLIChildrenIsText) {\n // Wrap the prior li text content so that it can be nested next to a list\n Transforms.wrapNodes(editor, { children: [] }, { at: [...precedingLIPath, 0] })\n }\n\n // Move the selected lis after the prior li contents\n Transforms.moveNodes(editor, {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n to: [...precedingLIPath, 1],\n })\n\n // Wrap the selected lis in a new list\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n } else {\n // Otherwise, just wrap the node in a list / li\n Transforms.wrapNodes(\n editor,\n {\n type: isCurrentlyOL ? 'ol' : 'ul',\n children: [{ type: 'li', children: [] }],\n },\n {\n match: (node) => Element.isElement(node) && node.type === 'li',\n mode: 'lowest',\n },\n )\n }\n } else {\n Transforms.wrapNodes(editor, { type: indentType, children: [] })\n }\n }\n\n ReactEditor.focus(editor)\n },\n [editor],\n )\n\n const canDeIndent = isElementActive(editor, 'li') || isElementActive(editor, indentType)\n\n return (\n <React.Fragment>\n <button\n className={[baseClass, !canDeIndent && `${baseClass}--disabled`].filter(Boolean).join(' ')}\n onClick={canDeIndent ? (e) => handleIndent(e, 'left') : undefined}\n type=\"button\"\n >\n <IndentLeft />\n </button>\n <button className={baseClass} onClick={(e) => handleIndent(e, 'right')} type=\"button\">\n <IndentRight />\n </button>\n </React.Fragment>\n )\n}\n"],"names":["React","useCallback","Editor","Element","Text","Transforms","ReactEditor","useSlate","IndentLeft","IndentRight","baseClass","getCommonBlock","isElementActive","isBlockElement","listTypes","unwrapList","indentType","IndentButton","editor","handleIndent","e","dir","preventDefault","listPath","n","isElement","includes","type","matchedParentList","above","at","match","isEditor","parentListItem","parentListItemPath","children","length","unwrapNodes","node","path","matches","setNodes","newParentNode","liftNodes","mode","split","isCurrentlyOL","isCurrentlyUL","firstSelectedLIPath","Array","from","nodes","hasPrecedingLI","precedingLIPath","previous","precedingLIChildren","precedingLIChildrenIsText","isText","wrapNodes","moveNodes","to","focus","canDeIndent","Fragment","button","className","filter","Boolean","join","onClick","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAEA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAC1C,SAASC,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAEC,UAAU,QAAQ,QAAO;AACzD,SAASC,WAAW,EAAEC,QAAQ,QAAQ,cAAa;AAInD,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,WAAW,QAAQ,mCAAkC;AAC9D,SAASC,SAAS,QAAQ,eAAc;AACxC,SAASC,cAAc,QAAQ,uBAAsB;AACrD,SAASC,eAAe,QAAQ,iBAAgB;AAChD,SAASC,cAAc,QAAQ,uBAAsB;AACrD,SAASC,SAAS,QAAQ,kBAAiB;AAC3C,SAASC,UAAU,QAAQ,mBAAkB;AAC7C,SAASC,UAAU,QAAQ,cAAa;AAExC,OAAO,MAAMC,eAAyB;IACpC,MAAMC,SAASX;IACf,MAAMY,eAAelB,YACnB,CAACmB,GAAGC;QACFD,EAAEE,cAAc;QAEhB,IAAID,QAAQ,QAAQ;YAClB,IAAIT,gBAAgBM,QAAQ,OAAO;gBACjC,MAAM,GAAGK,SAAS,GAAGZ,eACnBO,QACA,CAACM,IAAMrB,QAAQsB,SAAS,CAACD,MAAMV,UAAUY,QAAQ,CAACF,EAAEG,IAAI;gBAG1D,MAAMC,oBAAoB1B,OAAO2B,KAAK,CAACX,QAAQ;oBAC7CY,IAAIP;oBACJQ,OAAO,CAACP,IAAmB,CAACtB,OAAO8B,QAAQ,CAACR,MAAMX,eAAeK,QAAQM;gBAC3E;gBAEA,IAAII,mBAAmB;oBACrB,MAAM,CAACK,gBAAgBC,mBAAmB,GAAGN;oBAE7C,IAAIK,eAAeE,QAAQ,CAACC,MAAM,GAAG,GAAG;wBACtC,qBAAqB;wBACrB/B,WAAWgC,WAAW,CAACnB,QAAQ;4BAC7BY,IAAII;4BACJH,OAAO,CAACO,MAAMC;gCACZ,MAAMC,UACJ,CAACtC,OAAO8B,QAAQ,CAACM,SACjBnC,QAAQsB,SAAS,CAACa,SAClBxB,UAAUY,QAAQ,CAACY,KAAKX,IAAI,KAC5BY,KAAKH,MAAM,KAAKF,mBAAmBE,MAAM,GAAG;gCAE9C,OAAOI;4BACT;wBACF;wBAEA,qDAAqD;wBACrDnC,WAAWoC,QAAQ,CACjBvB,QACA;4BAAES,MAAM;wBAAK,GACb;4BACEG,IAAII;4BACJH,OAAO,CAACO,MAAMC;gCACZ,MAAMC,UACJ,CAACtC,OAAO8B,QAAQ,CAACM,SACjBnC,QAAQsB,SAAS,CAACa,SAClBA,KAAKX,IAAI,KAAK,QACdY,KAAKH,MAAM,KAAKF,mBAAmBE,MAAM,GAAG;gCAE9C,OAAOI;4BACT;wBACF;wBAGF,kDAAkD;wBAClD,yCAAyC;wBACzC,MAAM,CAACE,cAAc,GAAGxC,OAAOoC,IAAI,CAACpB,QAAQgB;wBAE5C,+BAA+B;wBAC/B,2BAA2B;wBAC3B,IAAI/B,QAAQsB,SAAS,CAACiB,kBAAkBA,cAAcf,IAAI,KAAK,MAAM;4BACnE,sBAAsB;4BACtBtB,WAAWsC,SAAS,CAACzB,QAAQ;gCAC3BY,IAAII;gCACJH,OAAO,CAACO,MAAMC;oCACZ,MAAMC,UACJ,CAACtC,OAAO8B,QAAQ,CAACM,SACjBnC,QAAQsB,SAAS,CAACa,SAClBC,KAAKH,MAAM,KAAKF,mBAAmBE,MAAM,GAAG,KAC5CE,KAAKX,IAAI,KAAK;oCAEhB,OAAOa;gCACT;4BACF;wBACF;oBACF,OAAO;wBACLnC,WAAWgC,WAAW,CAACnB,QAAQ;4BAC7BY,IAAII;4BACJH,OAAO,CAACO,MAAMC;gCACZ,OACEpC,QAAQsB,SAAS,CAACa,SAClBA,KAAKX,IAAI,KAAK,QACdY,KAAKH,MAAM,KAAKF,mBAAmBE,MAAM;4BAE7C;wBACF;wBAEA/B,WAAWgC,WAAW,CAACnB,QAAQ;4BAC7Ba,OAAO,CAACP,IAAMrB,QAAQsB,SAAS,CAACD,MAAMV,UAAUY,QAAQ,CAACF,EAAEG,IAAI;wBACjE;oBACF;gBACF,OAAO;oBACLZ,WAAWG,QAAQK;gBACrB;YACF,OAAO;gBACLlB,WAAWgC,WAAW,CAACnB,QAAQ;oBAC7Ba,OAAO,CAACP,IAAMrB,QAAQsB,SAAS,CAACD,MAAMA,EAAEG,IAAI,KAAKX;oBACjD4B,MAAM;oBACNC,OAAO;gBACT;YACF;QACF;QAEA,IAAIxB,QAAQ,SAAS;YACnB,MAAMyB,gBAAgBlC,gBAAgBM,QAAQ;YAC9C,MAAM6B,gBAAgBnC,gBAAgBM,QAAQ;YAE9C,IAAI4B,iBAAiBC,eAAe;gBAClC,0CAA0C;gBAC1C,iCAAiC;gBACjC,4DAA4D;gBAC5D,MAAM,CAAC,GAAGC,oBAAoB,CAAC,GAAGC,MAAMC,IAAI,CAC1ChD,OAAOiD,KAAK,CAACjC,QAAQ;oBACnBa,OAAO,CAACO,OAASnC,QAAQsB,SAAS,CAACa,SAASA,KAAKX,IAAI,KAAK;oBAC1DiB,MAAM;gBACR;gBAGF,kDAAkD;gBAClD,MAAMQ,iBAAiBJ,mBAAmB,CAACA,oBAAoBZ,MAAM,GAAG,EAAE,GAAG;gBAE7E,yDAAyD;gBACzD,yCAAyC;gBACzC,IAAIgB,gBAAgB;oBAClB,MAAM,GAAGC,gBAAgB,GAAGnD,OAAOoD,QAAQ,CAACpC,QAAQ;wBAClDY,IAAIkB;oBACN;oBAEA,MAAM,CAACO,oBAAoB,GAAGrD,OAAOoC,IAAI,CAACpB,QAAQ;2BAAImC;wBAAiB;qBAAE;oBACzE,MAAMG,4BAA4BpD,KAAKqD,MAAM,CAACF;oBAE9C,IAAIC,2BAA2B;wBAC7B,yEAAyE;wBACzEnD,WAAWqD,SAAS,CAACxC,QAAQ;4BAAEiB,UAAU,EAAE;wBAAC,GAAG;4BAAEL,IAAI;mCAAIuB;gCAAiB;6BAAE;wBAAC;oBAC/E;oBAEA,oDAAoD;oBACpDhD,WAAWsD,SAAS,CAACzC,QAAQ;wBAC3Ba,OAAO,CAACO,OAASnC,QAAQsB,SAAS,CAACa,SAASA,KAAKX,IAAI,KAAK;wBAC1DiB,MAAM;wBACNgB,IAAI;+BAAIP;4BAAiB;yBAAE;oBAC7B;oBAEA,sCAAsC;oBACtChD,WAAWqD,SAAS,CAClBxC,QACA;wBACES,MAAMmB,gBAAgB,OAAO;wBAC7BX,UAAU,EAAE;oBACd,GACA;wBACEJ,OAAO,CAACO,OAASnC,QAAQsB,SAAS,CAACa,SAASA,KAAKX,IAAI,KAAK;wBAC1DiB,MAAM;oBACR;gBAEJ,OAAO;oBACL,+CAA+C;oBAC/CvC,WAAWqD,SAAS,CAClBxC,QACA;wBACES,MAAMmB,gBAAgB,OAAO;wBAC7BX,UAAU;4BAAC;gCAAER,MAAM;gCAAMQ,UAAU,EAAE;4BAAC;yBAAE;oBAC1C,GACA;wBACEJ,OAAO,CAACO,OAASnC,QAAQsB,SAAS,CAACa,SAASA,KAAKX,IAAI,KAAK;wBAC1DiB,MAAM;oBACR;gBAEJ;YACF,OAAO;gBACLvC,WAAWqD,SAAS,CAACxC,QAAQ;oBAAES,MAAMX;oBAAYmB,UAAU,EAAE;gBAAC;YAChE;QACF;QAEA7B,YAAYuD,KAAK,CAAC3C;IACpB,GACA;QAACA;KAAO;IAGV,MAAM4C,cAAclD,gBAAgBM,QAAQ,SAASN,gBAAgBM,QAAQF;IAE7E,qBACE,MAAChB,MAAM+D,QAAQ;;0BACb,KAACC;gBACCC,WAAW;oBAACvD;oBAAW,CAACoD,eAAe,CAAC,EAAEpD,UAAU,UAAU,CAAC;iBAAC,CAACwD,MAAM,CAACC,SAASC,IAAI,CAAC;gBACtFC,SAASP,cAAc,CAAC1C,IAAMD,aAAaC,GAAG,UAAUkD;gBACxD3C,MAAK;0BAEL,cAAA,KAACnB;;0BAEH,KAACwD;gBAAOC,WAAWvD;gBAAW2D,SAAS,CAACjD,IAAMD,aAAaC,GAAG;gBAAUO,MAAK;0BAC3E,cAAA,KAAClB;;;;AAIT,EAAC"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { useElement } from '../../providers/ElementProvider.js';
|
|
4
5
|
export const IndentElement = ()=>{
|
|
5
6
|
const { attributes, children } = useElement();
|
|
6
|
-
return /*#__PURE__*/
|
|
7
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
7
8
|
style: {
|
|
8
9
|
paddingLeft: 25
|
|
9
10
|
},
|
|
10
|
-
...attributes
|
|
11
|
-
|
|
11
|
+
...attributes,
|
|
12
|
+
children: children
|
|
13
|
+
});
|
|
12
14
|
};
|
|
13
15
|
|
|
14
16
|
//# sourceMappingURL=Element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/field/elements/indent/Element.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\n\nexport const IndentElement: React.FC = () => {\n const { attributes, children } = useElement()\n\n return (\n <div style={{ paddingLeft: 25 }} {...attributes}>\n {children}\n </div>\n )\n}\n"],"names":["React","useElement","IndentElement","attributes","children","div","style","paddingLeft"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/field/elements/indent/Element.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\n\nexport const IndentElement: React.FC = () => {\n const { attributes, children } = useElement()\n\n return (\n <div style={{ paddingLeft: 25 }} {...attributes}>\n {children}\n </div>\n )\n}\n"],"names":["React","useElement","IndentElement","attributes","children","div","style","paddingLeft"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA;;AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAE/D,OAAO,MAAMC,gBAA0B;IACrC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAEjC,qBACE,KAACI;QAAIC,OAAO;YAAEC,aAAa;QAAG;QAAI,GAAGJ,UAAU;kBAC5CC;;AAGP,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/li/ListItem.tsx"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/li/ListItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAiBnC,CAAA"}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
3
4
|
import { useElement } from '../../providers/ElementProvider.js';
|
|
4
5
|
import { listTypes } from '../listTypes.js';
|
|
5
6
|
export const ListItemElement = ()=>{
|
|
6
7
|
const { attributes, children, element } = useElement();
|
|
7
|
-
if (!/*#__PURE__*/ isValidElement(element)) {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
8
|
const listType = typeof element.children?.[0]?.type === 'string' ? element.children[0].type : '';
|
|
11
9
|
const disableListStyle = element.children.length >= 1 && listTypes.includes(listType);
|
|
12
|
-
return /*#__PURE__*/
|
|
10
|
+
return /*#__PURE__*/ _jsx("li", {
|
|
13
11
|
style: {
|
|
14
12
|
listStyle: disableListStyle ? 'none' : undefined,
|
|
15
13
|
listStylePosition: disableListStyle ? 'outside' : undefined
|
|
16
14
|
},
|
|
17
|
-
...attributes
|
|
18
|
-
|
|
15
|
+
...attributes,
|
|
16
|
+
children: children
|
|
17
|
+
});
|
|
19
18
|
};
|
|
20
19
|
|
|
21
20
|
//# sourceMappingURL=ListItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/field/elements/li/ListItem.tsx"],"sourcesContent":["'use client'\n\nimport type { Element } from 'slate'\n\nimport React
|
|
1
|
+
{"version":3,"sources":["../../../../src/field/elements/li/ListItem.tsx"],"sourcesContent":["'use client'\n\nimport type { Element } from 'slate'\n\nimport React from 'react'\n\nimport { useElement } from '../../providers/ElementProvider.js'\nimport { listTypes } from '../listTypes.js'\n\nexport const ListItemElement: React.FC = () => {\n const { attributes, children, element } = useElement<Element>()\n\n const listType = typeof element.children?.[0]?.type === 'string' ? element.children[0].type : ''\n const disableListStyle = element.children.length >= 1 && listTypes.includes(listType)\n\n return (\n <li\n style={{\n listStyle: disableListStyle ? 'none' : undefined,\n listStylePosition: disableListStyle ? 'outside' : undefined,\n }}\n {...attributes}\n >\n {children}\n </li>\n )\n}\n"],"names":["React","useElement","listTypes","ListItemElement","attributes","children","element","listType","type","disableListStyle","length","includes","li","style","listStyle","undefined","listStylePosition"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAEzB,SAASC,UAAU,QAAQ,qCAAoC;AAC/D,SAASC,SAAS,QAAQ,kBAAiB;AAE3C,OAAO,MAAMC,kBAA4B;IACvC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,EAAE,GAAGL;IAE1C,MAAMM,WAAW,OAAOD,QAAQD,QAAQ,EAAE,CAAC,EAAE,EAAEG,SAAS,WAAWF,QAAQD,QAAQ,CAAC,EAAE,CAACG,IAAI,GAAG;IAC9F,MAAMC,mBAAmBH,QAAQD,QAAQ,CAACK,MAAM,IAAI,KAAKR,UAAUS,QAAQ,CAACJ;IAE5E,qBACE,KAACK;QACCC,OAAO;YACLC,WAAWL,mBAAmB,SAASM;YACvCC,mBAAmBP,mBAAmB,YAAYM;QACpD;QACC,GAAGX,UAAU;kBAEbC;;AAGP,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/Button/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAkDjD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/Button/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAkDjD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EA8D9B,CAAA"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
3
|
-
import { useDrawerSlug } from '@payloadcms/ui/
|
|
4
|
-
import {
|
|
5
|
-
import { useConfig } from '@payloadcms/ui/providers/Config';
|
|
6
|
-
import { useTranslation } from '@payloadcms/ui/providers/Translation';
|
|
7
|
-
import { getFormState } from '@payloadcms/ui/utilities/getFormState';
|
|
8
|
-
import { reduceFieldsToValues } from '@payloadcms/ui/utilities/reduceFieldsToValues';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useConfig, useDrawerSlug, useFieldProps, useModal, useTranslation } from '@payloadcms/ui/client';
|
|
4
|
+
import { getFormState, reduceFieldsToValues } from '@payloadcms/ui/shared';
|
|
9
5
|
import React, { Fragment, useState } from 'react';
|
|
10
6
|
import { Editor, Range, Transforms } from 'slate';
|
|
11
7
|
import { ReactEditor, useSlate } from 'slate-react';
|
|
@@ -64,7 +60,6 @@ import { unwrapLink } from '../utilities.js';
|
|
|
64
60
|
ReactEditor.focus(editor);
|
|
65
61
|
};
|
|
66
62
|
export const LinkButton = ()=>{
|
|
67
|
-
const { useModal } = facelessUIImport;
|
|
68
63
|
const { fieldProps } = useElementButton();
|
|
69
64
|
const [initialState, setInitialState] = useState({});
|
|
70
65
|
const { t } = useTranslation();
|
|
@@ -75,45 +70,51 @@ export const LinkButton = ()=>{
|
|
|
75
70
|
const { schemaPath } = useFieldProps();
|
|
76
71
|
const { richTextComponentMap } = fieldProps;
|
|
77
72
|
const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath);
|
|
78
|
-
return /*#__PURE__*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
73
|
+
return /*#__PURE__*/ _jsxs(Fragment, {
|
|
74
|
+
children: [
|
|
75
|
+
/*#__PURE__*/ _jsx(ElementButton, {
|
|
76
|
+
className: "link",
|
|
77
|
+
format: "link",
|
|
78
|
+
onClick: async ()=>{
|
|
79
|
+
if (isElementActive(editor, 'link')) {
|
|
80
|
+
unwrapLink(editor);
|
|
81
|
+
} else {
|
|
82
|
+
openModal(drawerSlug);
|
|
83
|
+
const isCollapsed = editor.selection && Range.isCollapsed(editor.selection);
|
|
84
|
+
if (!isCollapsed) {
|
|
85
|
+
const data = {
|
|
86
|
+
text: editor.selection ? Editor.string(editor, editor.selection) : ''
|
|
87
|
+
};
|
|
88
|
+
const state = await getFormState({
|
|
89
|
+
apiRoute: config.routes.api,
|
|
90
|
+
body: {
|
|
91
|
+
data,
|
|
92
|
+
operation: 'update',
|
|
93
|
+
schemaPath: `${schemaPath}.${linkFieldsSchemaPath}`
|
|
94
|
+
},
|
|
95
|
+
serverURL: config.serverURL
|
|
96
|
+
});
|
|
97
|
+
setInitialState(state);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
tooltip: t('fields:addLink'),
|
|
102
|
+
children: /*#__PURE__*/ _jsx(LinkIcon, {})
|
|
103
|
+
}),
|
|
104
|
+
/*#__PURE__*/ _jsx(LinkDrawer, {
|
|
105
|
+
drawerSlug: drawerSlug,
|
|
106
|
+
fieldMap: Array.isArray(fieldMap) ? fieldMap : [],
|
|
107
|
+
handleClose: ()=>{
|
|
108
|
+
closeModal(drawerSlug);
|
|
109
|
+
},
|
|
110
|
+
handleModalSubmit: (fields)=>{
|
|
111
|
+
insertLink(editor, fields);
|
|
112
|
+
closeModal(drawerSlug);
|
|
113
|
+
},
|
|
114
|
+
initialState: initialState
|
|
115
|
+
})
|
|
116
|
+
]
|
|
117
|
+
});
|
|
117
118
|
};
|
|
118
119
|
|
|
119
120
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/field/elements/link/Button/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState } from 'payload
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/elements/link/Button/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState } from 'payload'\n\nimport {\n useConfig,\n useDrawerSlug,\n useFieldProps,\n useModal,\n useTranslation,\n} from '@payloadcms/ui/client'\nimport { getFormState, reduceFieldsToValues } from '@payloadcms/ui/shared'\nimport React, { Fragment, useState } from 'react'\nimport { Editor, Range, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport { LinkIcon } from '../../../icons/Link/index.js'\nimport { useElementButton } from '../../../providers/ElementButtonProvider.js'\nimport { ElementButton } from '../../Button.js'\nimport { isElementActive } from '../../isActive.js'\nimport { LinkDrawer } from '../LinkDrawer/index.js'\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport { unwrapLink } from '../utilities.js'\n\n/**\n * This function is called when a new link is created - not when an existing link is edited.\n */\nconst insertLink = (editor, fields) => {\n const isCollapsed = editor.selection && Range.isCollapsed(editor.selection)\n const data = reduceFieldsToValues(fields, true)\n\n const newLink = {\n type: 'link',\n children: [],\n doc: data.doc,\n fields: data.fields, // Any custom user-added fields are part of data.fields\n linkType: data.linkType,\n newTab: data.newTab,\n url: data.url,\n }\n\n if (isCollapsed || !editor.selection) {\n // If selection anchor and focus are the same,\n // Just inject a new node with children already set\n Transforms.insertNodes(editor, {\n ...newLink,\n children: [{ text: String(data.text) }],\n })\n } else if (editor.selection) {\n // Otherwise we need to wrap the selected node in a link,\n // Delete its old text,\n // Move the selection one position forward into the link,\n // And insert the text back into the new link\n Transforms.wrapNodes(editor, newLink, { split: true })\n Transforms.delete(editor, { at: editor.selection.focus.path, unit: 'word' })\n Transforms.move(editor, { distance: 1, unit: 'offset' })\n Transforms.insertText(editor, String(data.text), { at: editor.selection.focus.path })\n }\n\n ReactEditor.focus(editor)\n}\n\nexport const LinkButton: React.FC = () => {\n const { fieldProps } = useElementButton()\n const [initialState, setInitialState] = useState<FormState>({})\n\n const { t } = useTranslation()\n const editor = useSlate()\n const config = useConfig()\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('rich-text-link')\n const { schemaPath } = useFieldProps()\n\n const { richTextComponentMap } = fieldProps\n\n const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath)\n\n return (\n <Fragment>\n <ElementButton\n className=\"link\"\n format=\"link\"\n onClick={async () => {\n if (isElementActive(editor, 'link')) {\n unwrapLink(editor)\n } else {\n openModal(drawerSlug)\n const isCollapsed = editor.selection && Range.isCollapsed(editor.selection)\n if (!isCollapsed) {\n const data = {\n text: editor.selection ? Editor.string(editor, editor.selection) : '',\n }\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n data,\n operation: 'update',\n schemaPath: `${schemaPath}.${linkFieldsSchemaPath}`,\n },\n serverURL: config.serverURL,\n })\n setInitialState(state)\n }\n }\n }}\n tooltip={t('fields:addLink')}\n >\n <LinkIcon />\n </ElementButton>\n <LinkDrawer\n drawerSlug={drawerSlug}\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n handleClose={() => {\n closeModal(drawerSlug)\n }}\n handleModalSubmit={(fields) => {\n insertLink(editor, fields)\n closeModal(drawerSlug)\n }}\n initialState={initialState}\n />\n </Fragment>\n )\n}\n"],"names":["useConfig","useDrawerSlug","useFieldProps","useModal","useTranslation","getFormState","reduceFieldsToValues","React","Fragment","useState","Editor","Range","Transforms","ReactEditor","useSlate","LinkIcon","useElementButton","ElementButton","isElementActive","LinkDrawer","linkFieldsSchemaPath","unwrapLink","insertLink","editor","fields","isCollapsed","selection","data","newLink","type","children","doc","linkType","newTab","url","insertNodes","text","String","wrapNodes","split","delete","at","focus","path","unit","move","distance","insertText","LinkButton","fieldProps","initialState","setInitialState","t","config","closeModal","openModal","drawerSlug","schemaPath","richTextComponentMap","fieldMap","get","className","format","onClick","string","state","apiRoute","routes","api","body","operation","serverURL","tooltip","Array","isArray","handleClose","handleModalSubmit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAIA,SACEA,SAAS,EACTC,aAAa,EACbC,aAAa,EACbC,QAAQ,EACRC,cAAc,QACT,wBAAuB;AAC9B,SAASC,YAAY,EAAEC,oBAAoB,QAAQ,wBAAuB;AAC1E,OAAOC,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,QAAO;AACjD,SAASC,MAAM,EAAEC,KAAK,EAAEC,UAAU,QAAQ,QAAO;AACjD,SAASC,WAAW,EAAEC,QAAQ,QAAQ,cAAa;AAEnD,SAASC,QAAQ,QAAQ,+BAA8B;AACvD,SAASC,gBAAgB,QAAQ,8CAA6C;AAC9E,SAASC,aAAa,QAAQ,kBAAiB;AAC/C,SAASC,eAAe,QAAQ,oBAAmB;AACnD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,oBAAoB,QAAQ,eAAc;AACnD,SAASC,UAAU,QAAQ,kBAAiB;AAE5C;;CAEC,GACD,MAAMC,aAAa,CAACC,QAAQC;IAC1B,MAAMC,cAAcF,OAAOG,SAAS,IAAIf,MAAMc,WAAW,CAACF,OAAOG,SAAS;IAC1E,MAAMC,OAAOrB,qBAAqBkB,QAAQ;IAE1C,MAAMI,UAAU;QACdC,MAAM;QACNC,UAAU,EAAE;QACZC,KAAKJ,KAAKI,GAAG;QACbP,QAAQG,KAAKH,MAAM;QACnBQ,UAAUL,KAAKK,QAAQ;QACvBC,QAAQN,KAAKM,MAAM;QACnBC,KAAKP,KAAKO,GAAG;IACf;IAEA,IAAIT,eAAe,CAACF,OAAOG,SAAS,EAAE;QACpC,8CAA8C;QAC9C,mDAAmD;QACnDd,WAAWuB,WAAW,CAACZ,QAAQ;YAC7B,GAAGK,OAAO;YACVE,UAAU;gBAAC;oBAAEM,MAAMC,OAAOV,KAAKS,IAAI;gBAAE;aAAE;QACzC;IACF,OAAO,IAAIb,OAAOG,SAAS,EAAE;QAC3B,yDAAyD;QACzD,uBAAuB;QACvB,yDAAyD;QACzD,6CAA6C;QAC7Cd,WAAW0B,SAAS,CAACf,QAAQK,SAAS;YAAEW,OAAO;QAAK;QACpD3B,WAAW4B,MAAM,CAACjB,QAAQ;YAAEkB,IAAIlB,OAAOG,SAAS,CAACgB,KAAK,CAACC,IAAI;YAAEC,MAAM;QAAO;QAC1EhC,WAAWiC,IAAI,CAACtB,QAAQ;YAAEuB,UAAU;YAAGF,MAAM;QAAS;QACtDhC,WAAWmC,UAAU,CAACxB,QAAQc,OAAOV,KAAKS,IAAI,GAAG;YAAEK,IAAIlB,OAAOG,SAAS,CAACgB,KAAK,CAACC,IAAI;QAAC;IACrF;IAEA9B,YAAY6B,KAAK,CAACnB;AACpB;AAEA,OAAO,MAAMyB,aAAuB;IAClC,MAAM,EAAEC,UAAU,EAAE,GAAGjC;IACvB,MAAM,CAACkC,cAAcC,gBAAgB,GAAG1C,SAAoB,CAAC;IAE7D,MAAM,EAAE2C,CAAC,EAAE,GAAGhD;IACd,MAAMmB,SAAST;IACf,MAAMuC,SAASrD;IAEf,MAAM,EAAEsD,UAAU,EAAEC,SAAS,EAAE,GAAGpD;IAClC,MAAMqD,aAAavD,cAAc;IACjC,MAAM,EAAEwD,UAAU,EAAE,GAAGvD;IAEvB,MAAM,EAAEwD,oBAAoB,EAAE,GAAGT;IAEjC,MAAMU,WAAWD,qBAAqBE,GAAG,CAACxC;IAE1C,qBACE,MAACZ;;0BACC,KAACS;gBACC4C,WAAU;gBACVC,QAAO;gBACPC,SAAS;oBACP,IAAI7C,gBAAgBK,QAAQ,SAAS;wBACnCF,WAAWE;oBACb,OAAO;wBACLgC,UAAUC;wBACV,MAAM/B,cAAcF,OAAOG,SAAS,IAAIf,MAAMc,WAAW,CAACF,OAAOG,SAAS;wBAC1E,IAAI,CAACD,aAAa;4BAChB,MAAME,OAAO;gCACXS,MAAMb,OAAOG,SAAS,GAAGhB,OAAOsD,MAAM,CAACzC,QAAQA,OAAOG,SAAS,IAAI;4BACrE;4BACA,MAAMuC,QAAQ,MAAM5D,aAAa;gCAC/B6D,UAAUb,OAAOc,MAAM,CAACC,GAAG;gCAC3BC,MAAM;oCACJ1C;oCACA2C,WAAW;oCACXb,YAAY,CAAC,EAAEA,WAAW,CAAC,EAAErC,qBAAqB,CAAC;gCACrD;gCACAmD,WAAWlB,OAAOkB,SAAS;4BAC7B;4BACApB,gBAAgBc;wBAClB;oBACF;gBACF;gBACAO,SAASpB,EAAE;0BAEX,cAAA,KAACrC;;0BAEH,KAACI;gBACCqC,YAAYA;gBACZG,UAAUc,MAAMC,OAAO,CAACf,YAAYA,WAAW,EAAE;gBACjDgB,aAAa;oBACXrB,WAAWE;gBACb;gBACAoB,mBAAmB,CAACpD;oBAClBF,WAAWC,QAAQC;oBACnB8B,WAAWE;gBACb;gBACAN,cAAcA;;;;AAItB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/Element/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/Element/index.tsx"],"names":[],"mappings":"AA4BA,OAAO,cAAc,CAAA;AA+BrB,eAAO,MAAM,WAAW,+CAoKvB,CAAA"}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { getTranslation } from '@payloadcms/translations';
|
|
4
|
-
import { Button } from '@payloadcms/ui/
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { Translation } from '@payloadcms/ui/elements/Translation';
|
|
8
|
-
import { useAuth } from '@payloadcms/ui/providers/Auth';
|
|
9
|
-
import { useConfig } from '@payloadcms/ui/providers/Config';
|
|
10
|
-
import { useDocumentInfo } from '@payloadcms/ui/providers/DocumentInfo';
|
|
11
|
-
import { useLocale } from '@payloadcms/ui/providers/Locale';
|
|
12
|
-
import { useTranslation } from '@payloadcms/ui/providers/Translation';
|
|
13
|
-
import { getFormState } from '@payloadcms/ui/utilities/getFormState';
|
|
14
|
-
import { reduceFieldsToValues } from '@payloadcms/ui/utilities/reduceFieldsToValues';
|
|
15
|
-
import { deepCopyObject } from 'payload/utilities';
|
|
4
|
+
import { Button, Popup, Translation, useAuth, useConfig, useDocumentInfo, useDrawerSlug, useLocale, useModal, useTranslation } from '@payloadcms/ui/client';
|
|
5
|
+
import { getFormState, reduceFieldsToValues } from '@payloadcms/ui/shared';
|
|
6
|
+
import { deepCopyObject } from 'payload/shared';
|
|
16
7
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
17
8
|
import { Editor, Node, Transforms } from 'slate';
|
|
18
9
|
import { ReactEditor, useSlate } from 'slate-react';
|
|
@@ -53,7 +44,6 @@ const baseClass = 'rich-text-link';
|
|
|
53
44
|
};
|
|
54
45
|
export const LinkElement = ()=>{
|
|
55
46
|
const { attributes, children, editorRef, element, fieldProps, schemaPath } = useElement();
|
|
56
|
-
const { useModal } = facelessUIImport;
|
|
57
47
|
const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`;
|
|
58
48
|
const { richTextComponentMap } = fieldProps;
|
|
59
49
|
const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath);
|
|
@@ -108,92 +98,109 @@ export const LinkElement = ()=>{
|
|
|
108
98
|
id,
|
|
109
99
|
fieldMapPath
|
|
110
100
|
]);
|
|
111
|
-
return /*#__PURE__*/
|
|
101
|
+
return /*#__PURE__*/ _jsxs("span", {
|
|
112
102
|
className: baseClass,
|
|
113
|
-
...attributes
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}, renderModal && /*#__PURE__*/ React.createElement(LinkDrawer, {
|
|
120
|
-
drawerSlug: drawerSlug,
|
|
121
|
-
fieldMap: Array.isArray(fieldMap) ? fieldMap : [],
|
|
122
|
-
handleClose: ()=>{
|
|
123
|
-
toggleModal(drawerSlug);
|
|
124
|
-
setRenderModal(false);
|
|
125
|
-
},
|
|
126
|
-
handleModalSubmit: (fields)=>{
|
|
127
|
-
insertChange(editor, fields);
|
|
128
|
-
closeModal(drawerSlug);
|
|
129
|
-
setRenderModal(false);
|
|
130
|
-
},
|
|
131
|
-
initialState: initialState
|
|
132
|
-
}), /*#__PURE__*/ React.createElement(Popup, {
|
|
133
|
-
boundingRef: editorRef,
|
|
134
|
-
buttonType: "none",
|
|
135
|
-
forceOpen: renderPopup,
|
|
136
|
-
horizontalAlign: "left",
|
|
137
|
-
onToggleOpen: handleTogglePopup,
|
|
138
|
-
render: ()=>/*#__PURE__*/ React.createElement("div", {
|
|
139
|
-
className: `${baseClass}__popup`
|
|
140
|
-
}, element.linkType === 'internal' && element.doc?.relationTo && element.doc?.value && /*#__PURE__*/ React.createElement(Translation, {
|
|
141
|
-
elements: {
|
|
142
|
-
'0': ({ children })=>/*#__PURE__*/ React.createElement("a", {
|
|
143
|
-
className: `${baseClass}__link-label`,
|
|
144
|
-
href: `${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`,
|
|
145
|
-
rel: "noreferrer",
|
|
146
|
-
target: "_blank",
|
|
147
|
-
title: `${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`
|
|
148
|
-
}, children)
|
|
149
|
-
},
|
|
150
|
-
i18nKey: "fields:linkedTo",
|
|
151
|
-
t: t,
|
|
152
|
-
variables: {
|
|
153
|
-
label: getTranslation(config.collections.find(({ slug })=>slug === element.doc.relationTo)?.labels?.singular, i18n)
|
|
154
|
-
}
|
|
155
|
-
}), (element.linkType === 'custom' || !element.linkType) && /*#__PURE__*/ React.createElement("a", {
|
|
156
|
-
className: `${baseClass}__link-label`,
|
|
157
|
-
href: element.url,
|
|
158
|
-
rel: "noreferrer",
|
|
159
|
-
target: "_blank",
|
|
160
|
-
title: element.url
|
|
161
|
-
}, element.url), /*#__PURE__*/ React.createElement(Button, {
|
|
162
|
-
buttonStyle: "icon-label",
|
|
163
|
-
className: `${baseClass}__link-edit`,
|
|
164
|
-
icon: "edit",
|
|
165
|
-
onClick: (e)=>{
|
|
166
|
-
e.preventDefault();
|
|
167
|
-
setRenderPopup(false);
|
|
168
|
-
openModal(drawerSlug);
|
|
169
|
-
setRenderModal(true);
|
|
103
|
+
...attributes,
|
|
104
|
+
children: [
|
|
105
|
+
/*#__PURE__*/ _jsxs("span", {
|
|
106
|
+
contentEditable: false,
|
|
107
|
+
style: {
|
|
108
|
+
userSelect: 'none'
|
|
170
109
|
},
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
110
|
+
children: [
|
|
111
|
+
renderModal && /*#__PURE__*/ _jsx(LinkDrawer, {
|
|
112
|
+
drawerSlug: drawerSlug,
|
|
113
|
+
fieldMap: Array.isArray(fieldMap) ? fieldMap : [],
|
|
114
|
+
handleClose: ()=>{
|
|
115
|
+
toggleModal(drawerSlug);
|
|
116
|
+
setRenderModal(false);
|
|
117
|
+
},
|
|
118
|
+
handleModalSubmit: (fields)=>{
|
|
119
|
+
insertChange(editor, fields);
|
|
120
|
+
closeModal(drawerSlug);
|
|
121
|
+
setRenderModal(false);
|
|
122
|
+
},
|
|
123
|
+
initialState: initialState
|
|
124
|
+
}),
|
|
125
|
+
/*#__PURE__*/ _jsx(Popup, {
|
|
126
|
+
boundingRef: editorRef,
|
|
127
|
+
buttonType: "none",
|
|
128
|
+
forceOpen: renderPopup,
|
|
129
|
+
horizontalAlign: "left",
|
|
130
|
+
onToggleOpen: handleTogglePopup,
|
|
131
|
+
render: ()=>/*#__PURE__*/ _jsxs("div", {
|
|
132
|
+
className: `${baseClass}__popup`,
|
|
133
|
+
children: [
|
|
134
|
+
element.linkType === 'internal' && element.doc?.relationTo && element.doc?.value && /*#__PURE__*/ _jsx(Translation, {
|
|
135
|
+
elements: {
|
|
136
|
+
'0': ({ children })=>/*#__PURE__*/ _jsx("a", {
|
|
137
|
+
className: `${baseClass}__link-label`,
|
|
138
|
+
href: `${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`,
|
|
139
|
+
rel: "noreferrer",
|
|
140
|
+
target: "_blank",
|
|
141
|
+
title: `${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`,
|
|
142
|
+
children: children
|
|
143
|
+
})
|
|
144
|
+
},
|
|
145
|
+
i18nKey: "fields:linkedTo",
|
|
146
|
+
t: t,
|
|
147
|
+
variables: {
|
|
148
|
+
label: getTranslation(config.collections.find(({ slug })=>slug === element.doc.relationTo)?.labels?.singular, i18n)
|
|
149
|
+
}
|
|
150
|
+
}),
|
|
151
|
+
(element.linkType === 'custom' || !element.linkType) && /*#__PURE__*/ _jsx("a", {
|
|
152
|
+
className: `${baseClass}__link-label`,
|
|
153
|
+
href: element.url,
|
|
154
|
+
rel: "noreferrer",
|
|
155
|
+
target: "_blank",
|
|
156
|
+
title: element.url,
|
|
157
|
+
children: element.url
|
|
158
|
+
}),
|
|
159
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
160
|
+
buttonStyle: "icon-label",
|
|
161
|
+
className: `${baseClass}__link-edit`,
|
|
162
|
+
icon: "edit",
|
|
163
|
+
onClick: (e)=>{
|
|
164
|
+
e.preventDefault();
|
|
165
|
+
setRenderPopup(false);
|
|
166
|
+
openModal(drawerSlug);
|
|
167
|
+
setRenderModal(true);
|
|
168
|
+
},
|
|
169
|
+
round: true,
|
|
170
|
+
tooltip: t('general:edit')
|
|
171
|
+
}),
|
|
172
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
173
|
+
buttonStyle: "icon-label",
|
|
174
|
+
className: `${baseClass}__link-close`,
|
|
175
|
+
icon: "x",
|
|
176
|
+
onClick: (e)=>{
|
|
177
|
+
e.preventDefault();
|
|
178
|
+
unwrapLink(editor);
|
|
179
|
+
},
|
|
180
|
+
round: true,
|
|
181
|
+
tooltip: t('general:remove')
|
|
182
|
+
})
|
|
183
|
+
]
|
|
184
|
+
}),
|
|
185
|
+
size: "fit-content",
|
|
186
|
+
verticalAlign: "bottom"
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
}),
|
|
190
|
+
/*#__PURE__*/ _jsx("span", {
|
|
191
|
+
className: [
|
|
192
|
+
`${baseClass}__popup-toggler`
|
|
193
|
+
].filter(Boolean).join(' '),
|
|
194
|
+
onClick: ()=>setRenderPopup(true),
|
|
195
|
+
onKeyDown: (e)=>{
|
|
196
|
+
if (e.key === 'Enter') setRenderPopup(true);
|
|
180
197
|
},
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
})
|
|
187
|
-
className: [
|
|
188
|
-
`${baseClass}__popup-toggler`
|
|
189
|
-
].filter(Boolean).join(' '),
|
|
190
|
-
onClick: ()=>setRenderPopup(true),
|
|
191
|
-
onKeyDown: (e)=>{
|
|
192
|
-
if (e.key === 'Enter') setRenderPopup(true);
|
|
193
|
-
},
|
|
194
|
-
role: "button",
|
|
195
|
-
tabIndex: 0
|
|
196
|
-
}, children));
|
|
198
|
+
role: "button",
|
|
199
|
+
tabIndex: 0,
|
|
200
|
+
children: children
|
|
201
|
+
})
|
|
202
|
+
]
|
|
203
|
+
});
|
|
197
204
|
};
|
|
198
205
|
|
|
199
206
|
//# sourceMappingURL=index.js.map
|