@payloadcms/richtext-slate 3.0.0-beta.95 → 3.0.0-beta.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data/validation.d.ts.map +1 -1
- package/dist/data/validation.js +3 -1
- package/dist/data/validation.js.map +1 -1
- package/dist/exports/client/index.d.ts +2 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +2 -2
- package/dist/exports/client/index.js.map +1 -1
- package/dist/field/RichText.d.ts.map +1 -1
- package/dist/field/RichText.js +7 -3
- package/dist/field/RichText.js.map +1 -1
- package/dist/field/createFeatureMap.d.ts.map +1 -1
- package/dist/field/createFeatureMap.js +12 -4
- package/dist/field/createFeatureMap.js.map +1 -1
- package/dist/field/elements/isActive.d.ts.map +1 -1
- package/dist/field/elements/isActive.js +3 -1
- package/dist/field/elements/isActive.js.map +1 -1
- package/dist/field/elements/isLastSelectedElementEmpty.d.ts.map +1 -1
- package/dist/field/elements/isLastSelectedElementEmpty.js +3 -1
- package/dist/field/elements/isLastSelectedElementEmpty.js.map +1 -1
- package/dist/field/elements/isListActive.d.ts.map +1 -1
- package/dist/field/elements/isListActive.js +6 -2
- package/dist/field/elements/isListActive.js.map +1 -1
- package/dist/field/elements/link/Element/index.d.ts.map +1 -1
- package/dist/field/elements/link/Element/index.js +6 -2
- package/dist/field/elements/link/Element/index.js.map +1 -1
- package/dist/field/elements/toggleList.d.ts.map +1 -1
- package/dist/field/elements/toggleList.js +6 -2
- package/dist/field/elements/toggleList.js.map +1 -1
- package/dist/field/elements/upload/Element/index.d.ts.map +1 -1
- package/dist/field/elements/upload/Element/index.js +1 -1
- package/dist/field/elements/upload/Element/index.js.map +1 -1
- package/dist/field/index.js +1 -1
- package/dist/field/index.js.map +1 -1
- package/dist/generateComponentMap.d.ts.map +1 -1
- package/dist/generateComponentMap.js +3 -1
- package/dist/generateComponentMap.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/data/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CACrC,OAAO,EAAE,EACT,OAAO,EACP,aAAa,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,EACtC,aAAa,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/data/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CACrC,OAAO,EAAE,EACT,OAAO,EACP,aAAa,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,EACtC,aAAa,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAYvC,CAAA"}
|
package/dist/data/validation.js
CHANGED
|
@@ -3,7 +3,9 @@ export const richTextValidate = (value, { req, required })=>{
|
|
|
3
3
|
const { t } = req;
|
|
4
4
|
if (required) {
|
|
5
5
|
const stringifiedDefaultValue = JSON.stringify(defaultRichTextValue);
|
|
6
|
-
if (value && JSON.stringify(value) !== stringifiedDefaultValue)
|
|
6
|
+
if (value && JSON.stringify(value) !== stringifiedDefaultValue) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
7
9
|
return t('validation:required');
|
|
8
10
|
}
|
|
9
11
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/data/validation.ts"],"sourcesContent":["import type { RichTextField, Validate } from 'payload'\n\nimport type { AdapterArguments } from '../types.js'\n\nimport { defaultRichTextValue } from './defaultValue.js'\n\nexport const richTextValidate: Validate<\n unknown[],\n unknown,\n RichTextField<any[], AdapterArguments>,\n RichTextField<any[], AdapterArguments>\n> = (value, { req, required }) => {\n const { t } = req\n if (required) {\n const stringifiedDefaultValue = JSON.stringify(defaultRichTextValue)\n if (value && JSON.stringify(value) !== stringifiedDefaultValue) return true\n return t('validation:required')\n }\n\n return true\n}\n"],"names":["defaultRichTextValue","richTextValidate","value","req","required","t","stringifiedDefaultValue","JSON","stringify"],"mappings":"AAIA,SAASA,oBAAoB,QAAQ,oBAAmB;AAExD,OAAO,MAAMC,mBAKT,CAACC,OAAO,EAAEC,GAAG,EAAEC,QAAQ,EAAE;IAC3B,MAAM,EAAEC,CAAC,EAAE,GAAGF;IACd,IAAIC,UAAU;QACZ,MAAME,0BAA0BC,KAAKC,SAAS,CAACR;QAC/C,IAAIE,SAASK,KAAKC,SAAS,CAACN,WAAWI,yBAAyB,OAAO;
|
|
1
|
+
{"version":3,"sources":["../../src/data/validation.ts"],"sourcesContent":["import type { RichTextField, Validate } from 'payload'\n\nimport type { AdapterArguments } from '../types.js'\n\nimport { defaultRichTextValue } from './defaultValue.js'\n\nexport const richTextValidate: Validate<\n unknown[],\n unknown,\n RichTextField<any[], AdapterArguments>,\n RichTextField<any[], AdapterArguments>\n> = (value, { req, required }) => {\n const { t } = req\n if (required) {\n const stringifiedDefaultValue = JSON.stringify(defaultRichTextValue)\n if (value && JSON.stringify(value) !== stringifiedDefaultValue) {\n return true\n }\n return t('validation:required')\n }\n\n return true\n}\n"],"names":["defaultRichTextValue","richTextValidate","value","req","required","t","stringifiedDefaultValue","JSON","stringify"],"mappings":"AAIA,SAASA,oBAAoB,QAAQ,oBAAmB;AAExD,OAAO,MAAMC,mBAKT,CAACC,OAAO,EAAEC,GAAG,EAAEC,QAAQ,EAAE;IAC3B,MAAM,EAAEC,CAAC,EAAE,GAAGF;IACd,IAAIC,UAAU;QACZ,MAAME,0BAA0BC,KAAKC,SAAS,CAACR;QAC/C,IAAIE,SAASK,KAAKC,SAAS,CAACN,WAAWI,yBAAyB;YAC9D,OAAO;QACT;QACA,OAAOD,EAAE;IACX;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { RichTextCell } from '../../cell/index.js';
|
|
2
|
-
export { ElementButton } from '../../field/elements/Button.js';
|
|
3
2
|
export { BlockquoteElementButton } from '../../field/elements/blockquote/Button.js';
|
|
4
3
|
export { BlockquoteElement } from '../../field/elements/blockquote/Element.js';
|
|
4
|
+
export { ElementButton } from '../../field/elements/Button.js';
|
|
5
5
|
export { H1ElementButton } from '../../field/elements/h1/Button.js';
|
|
6
6
|
export { Heading1Element } from '../../field/elements/h1/Heading1.js';
|
|
7
7
|
export { H2ElementButton } from '../../field/elements/h2/Button.js';
|
|
@@ -33,9 +33,9 @@ export { UploadElementButton } from '../../field/elements/upload/Button/index.js
|
|
|
33
33
|
export { UploadElement } from '../../field/elements/upload/Element/index.js';
|
|
34
34
|
export { WithUpload } from '../../field/elements/upload/plugin.js';
|
|
35
35
|
export { RichTextField } from '../../field/index.js';
|
|
36
|
-
export { LeafButton } from '../../field/leaves/Button.js';
|
|
37
36
|
export { BoldLeaf } from '../../field/leaves/bold/Bold/index.js';
|
|
38
37
|
export { BoldLeafButton } from '../../field/leaves/bold/LeafButton.js';
|
|
38
|
+
export { LeafButton } from '../../field/leaves/Button.js';
|
|
39
39
|
export { CodeLeaf } from '../../field/leaves/code/Code/index.js';
|
|
40
40
|
export { CodeLeafButton } from '../../field/leaves/code/LeafButton.js';
|
|
41
41
|
export { ItalicLeaf } from '../../field/leaves/italic/Italic/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
export { RichTextCell } from '../../cell/index.js';
|
|
3
|
-
export { ElementButton } from '../../field/elements/Button.js';
|
|
4
3
|
export { BlockquoteElementButton } from '../../field/elements/blockquote/Button.js';
|
|
5
4
|
export { BlockquoteElement } from '../../field/elements/blockquote/Element.js';
|
|
5
|
+
export { ElementButton } from '../../field/elements/Button.js';
|
|
6
6
|
export { H1ElementButton } from '../../field/elements/h1/Button.js';
|
|
7
7
|
export { Heading1Element } from '../../field/elements/h1/Heading1.js';
|
|
8
8
|
export { H2ElementButton } from '../../field/elements/h2/Button.js';
|
|
@@ -34,9 +34,9 @@ export { UploadElementButton } from '../../field/elements/upload/Button/index.js
|
|
|
34
34
|
export { UploadElement } from '../../field/elements/upload/Element/index.js';
|
|
35
35
|
export { WithUpload } from '../../field/elements/upload/plugin.js';
|
|
36
36
|
export { RichTextField } from '../../field/index.js';
|
|
37
|
-
export { LeafButton } from '../../field/leaves/Button.js';
|
|
38
37
|
export { BoldLeaf } from '../../field/leaves/bold/Bold/index.js';
|
|
39
38
|
export { BoldLeafButton } from '../../field/leaves/bold/LeafButton.js';
|
|
39
|
+
export { LeafButton } from '../../field/leaves/Button.js';
|
|
40
40
|
export { CodeLeaf } from '../../field/leaves/code/Code/index.js';
|
|
41
41
|
export { CodeLeafButton } from '../../field/leaves/code/LeafButton.js';
|
|
42
42
|
export { ItalicLeaf } from '../../field/leaves/italic/Italic/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/exports/client/index.ts"],"sourcesContent":["'use client'\n\nexport { RichTextCell } from '../../cell/index.js'\nexport {
|
|
1
|
+
{"version":3,"sources":["../../../src/exports/client/index.ts"],"sourcesContent":["'use client'\n\nexport { RichTextCell } from '../../cell/index.js'\nexport { BlockquoteElementButton } from '../../field/elements/blockquote/Button.js'\nexport { BlockquoteElement } from '../../field/elements/blockquote/Element.js'\nexport { ElementButton } from '../../field/elements/Button.js'\nexport { H1ElementButton } from '../../field/elements/h1/Button.js'\nexport { Heading1Element } from '../../field/elements/h1/Heading1.js'\nexport { H2ElementButton } from '../../field/elements/h2/Button.js'\nexport { Heading2Element } from '../../field/elements/h2/Heading2.js'\nexport { H3ElementButton } from '../../field/elements/h3/Button.js'\nexport { Heading3Element } from '../../field/elements/h3/Heading3.js'\nexport { H4ElementButton } from '../../field/elements/h4/Button.js'\nexport { Heading4Element } from '../../field/elements/h4/Heading4.js'\nexport { H5ElementButton } from '../../field/elements/h5/Button.js'\n\nexport { Heading5Element } from '../../field/elements/h5/Heading5.js'\nexport { H6ElementButton } from '../../field/elements/h6/Button.js'\n\nexport { Heading6Element } from '../../field/elements/h6/Heading6.js'\n\nexport { IndentButton } from '../../field/elements/indent/Button.js'\nexport { IndentElement } from '../../field/elements/indent/Element.js'\nexport { ListItemElement } from '../../field/elements/li/ListItem.js'\n\nexport { LinkButton } from '../../field/elements/link/Button/index.js'\n\nexport { LinkElement } from '../../field/elements/link/Element/index.js'\n\nexport { WithLinks } from '../../field/elements/link/WithLinks.js'\nexport { OLElementButton } from '../../field/elements/ol/Button.js'\nexport { OrderedListElement } from '../../field/elements/ol/OrderedList.js'\n\nexport { RelationshipButton } from '../../field/elements/relationship/Button/index.js'\n\nexport { RelationshipElement } from '../../field/elements/relationship/Element/index.js'\nexport { WithRelationship } from '../../field/elements/relationship/plugin.js'\n\nexport { TextAlignElementButton } from '../../field/elements/textAlign/Button.js'\nexport { toggleElement } from '../../field/elements/toggle.js'\nexport { ULElementButton } from '../../field/elements/ul/Button.js'\nexport { UnorderedListElement } from '../../field/elements/ul/UnorderedList.js'\nexport { UploadElementButton } from '../../field/elements/upload/Button/index.js'\nexport { UploadElement } from '../../field/elements/upload/Element/index.js'\nexport { WithUpload } from '../../field/elements/upload/plugin.js'\nexport { RichTextField } from '../../field/index.js'\nexport { BoldLeaf } from '../../field/leaves/bold/Bold/index.js'\nexport { BoldLeafButton } from '../../field/leaves/bold/LeafButton.js'\n\nexport { LeafButton } from '../../field/leaves/Button.js'\n\nexport { CodeLeaf } from '../../field/leaves/code/Code/index.js'\n\nexport { CodeLeafButton } from '../../field/leaves/code/LeafButton.js'\n\nexport { ItalicLeaf } from '../../field/leaves/italic/Italic/index.js'\nexport { ItalicLeafButton } from '../../field/leaves/italic/LeafButton.js'\nexport { StrikethroughLeafButton } from '../../field/leaves/strikethrough/LeafButton.js'\n\nexport { StrikethroughLeaf } from '../../field/leaves/strikethrough/Strikethrough/index.js'\nexport { UnderlineLeafButton } from '../../field/leaves/underline/LeafButton.js'\n\nexport { UnderlineLeaf } from '../../field/leaves/underline/Underline/index.js'\n\nexport { useLeaf } from '../../field/providers/LeafProvider.js'\nexport { useSlatePlugin } from '../../utilities/useSlatePlugin.js'\n"],"names":["RichTextCell","BlockquoteElementButton","BlockquoteElement","ElementButton","H1ElementButton","Heading1Element","H2ElementButton","Heading2Element","H3ElementButton","Heading3Element","H4ElementButton","Heading4Element","H5ElementButton","Heading5Element","H6ElementButton","Heading6Element","IndentButton","IndentElement","ListItemElement","LinkButton","LinkElement","WithLinks","OLElementButton","OrderedListElement","RelationshipButton","RelationshipElement","WithRelationship","TextAlignElementButton","toggleElement","ULElementButton","UnorderedListElement","UploadElementButton","UploadElement","WithUpload","RichTextField","BoldLeaf","BoldLeafButton","LeafButton","CodeLeaf","CodeLeafButton","ItalicLeaf","ItalicLeafButton","StrikethroughLeafButton","StrikethroughLeaf","UnderlineLeafButton","UnderlineLeaf","useLeaf","useSlatePlugin"],"mappings":"AAAA;AAEA,SAASA,YAAY,QAAQ,sBAAqB;AAClD,SAASC,uBAAuB,QAAQ,4CAA2C;AACnF,SAASC,iBAAiB,QAAQ,6CAA4C;AAC9E,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,eAAe,QAAQ,sCAAqC;AACrE,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,eAAe,QAAQ,sCAAqC;AACrE,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,eAAe,QAAQ,sCAAqC;AACrE,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,eAAe,QAAQ,sCAAqC;AACrE,SAASC,eAAe,QAAQ,oCAAmC;AAEnE,SAASC,eAAe,QAAQ,sCAAqC;AACrE,SAASC,eAAe,QAAQ,oCAAmC;AAEnE,SAASC,eAAe,QAAQ,sCAAqC;AAErE,SAASC,YAAY,QAAQ,wCAAuC;AACpE,SAASC,aAAa,QAAQ,yCAAwC;AACtE,SAASC,eAAe,QAAQ,sCAAqC;AAErE,SAASC,UAAU,QAAQ,4CAA2C;AAEtE,SAASC,WAAW,QAAQ,6CAA4C;AAExE,SAASC,SAAS,QAAQ,yCAAwC;AAClE,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,kBAAkB,QAAQ,yCAAwC;AAE3E,SAASC,kBAAkB,QAAQ,oDAAmD;AAEtF,SAASC,mBAAmB,QAAQ,qDAAoD;AACxF,SAASC,gBAAgB,QAAQ,8CAA6C;AAE9E,SAASC,sBAAsB,QAAQ,2CAA0C;AACjF,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,eAAe,QAAQ,oCAAmC;AACnE,SAASC,oBAAoB,QAAQ,2CAA0C;AAC/E,SAASC,mBAAmB,QAAQ,8CAA6C;AACjF,SAASC,aAAa,QAAQ,+CAA8C;AAC5E,SAASC,UAAU,QAAQ,wCAAuC;AAClE,SAASC,aAAa,QAAQ,uBAAsB;AACpD,SAASC,QAAQ,QAAQ,wCAAuC;AAChE,SAASC,cAAc,QAAQ,wCAAuC;AAEtE,SAASC,UAAU,QAAQ,+BAA8B;AAEzD,SAASC,QAAQ,QAAQ,wCAAuC;AAEhE,SAASC,cAAc,QAAQ,wCAAuC;AAEtE,SAASC,UAAU,QAAQ,4CAA2C;AACtE,SAASC,gBAAgB,QAAQ,0CAAyC;AAC1E,SAASC,uBAAuB,QAAQ,iDAAgD;AAExF,SAASC,iBAAiB,QAAQ,0DAAyD;AAC3F,SAASC,mBAAmB,QAAQ,6CAA4C;AAEhF,SAASC,aAAa,QAAQ,kDAAiD;AAE/E,SAASC,OAAO,QAAQ,wCAAuC;AAC/D,SAASC,cAAc,QAAQ,oCAAmC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../src/field/RichText.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAe9C,OAAO,KAAkD,MAAM,OAAO,CAAA;AAKtE,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAMvD,OAAO,cAAc,CAAA;AAWrB,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,WAAW;QACnB,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAA;QAChD,OAAO,EAAE,WAAW,CAAA;QACpB,IAAI,EAAE,QAAQ,CAAA;KACf;CACF;
|
|
1
|
+
{"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../src/field/RichText.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAe9C,OAAO,KAAkD,MAAM,OAAO,CAAA;AAKtE,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAMvD,OAAO,cAAc,CAAA;AAWrB,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,WAAW;QACnB,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAA;QAChD,OAAO,EAAE,WAAW,CAAA;QACpB,IAAI,EAAE,QAAQ,CAAA;KACf;CACF;AAmaD,eAAO,MAAM,QAAQ,iCAA+B,CAAA"}
|
package/dist/field/RichText.js
CHANGED
|
@@ -4,7 +4,7 @@ import { getTranslation } from '@payloadcms/translations';
|
|
|
4
4
|
import { FieldDescription, FieldError, FieldLabel, RenderComponent, useEditDepth, useField, useFieldProps, useTranslation, withCondition } from '@payloadcms/ui';
|
|
5
5
|
import { isHotkey } from 'is-hotkey';
|
|
6
6
|
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
7
|
-
import { Node, Element as SlateElement, Text, Transforms
|
|
7
|
+
import { createEditor, Node, Element as SlateElement, Text, Transforms } from 'slate';
|
|
8
8
|
import { withHistory } from 'slate-history';
|
|
9
9
|
import { Editable, Slate, withReact } from 'slate-react';
|
|
10
10
|
import { defaultRichTextValue } from '../data/defaultValue.js';
|
|
@@ -236,7 +236,9 @@ const RichTextField = (props)=>{
|
|
|
236
236
|
const isButton = child.tagName === 'BUTTON';
|
|
237
237
|
const isDisabling = clickState === 'disabled';
|
|
238
238
|
child.setAttribute('tabIndex', isDisabling ? '-1' : '0');
|
|
239
|
-
if (isButton)
|
|
239
|
+
if (isButton) {
|
|
240
|
+
child.setAttribute('disabled', isDisabling ? 'disabled' : null);
|
|
241
|
+
}
|
|
240
242
|
});
|
|
241
243
|
}
|
|
242
244
|
if (disabled) {
|
|
@@ -275,7 +277,9 @@ const RichTextField = (props)=>{
|
|
|
275
277
|
valueToRender = null;
|
|
276
278
|
}
|
|
277
279
|
}
|
|
278
|
-
if (!valueToRender)
|
|
280
|
+
if (!valueToRender) {
|
|
281
|
+
valueToRender = defaultRichTextValue;
|
|
282
|
+
}
|
|
279
283
|
return /*#__PURE__*/ _jsxs("div", {
|
|
280
284
|
className: classes,
|
|
281
285
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/field/RichText.tsx"],"sourcesContent":["'use client'\n\nimport type { PayloadRequest } from 'payload'\nimport type { BaseEditor, BaseOperation } from 'slate'\nimport type { HistoryEditor } from 'slate-history'\nimport type { ReactEditor } from 'slate-react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n FieldDescription,\n FieldError,\n FieldLabel,\n RenderComponent,\n useEditDepth,\n useField,\n useFieldProps,\n useTranslation,\n withCondition,\n} from '@payloadcms/ui'\nimport { isHotkey } from 'is-hotkey'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { Node, Element as SlateElement, Text, Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\n\nimport type { ElementNode, TextNode } from '../types.js'\nimport type { LoadedSlateFieldProps } from './types.js'\n\nimport { defaultRichTextValue } from '../data/defaultValue.js'\nimport { richTextValidate } from '../data/validation.js'\nimport { listTypes } from './elements/listTypes.js'\nimport { hotkeys } from './hotkeys.js'\nimport './index.scss'\nimport { toggleLeaf } from './leaves/toggle.js'\nimport { withEnterBreakOut } from './plugins/withEnterBreakOut.js'\nimport { withHTML } from './plugins/withHTML.js'\nimport { ElementButtonProvider } from './providers/ElementButtonProvider.js'\nimport { ElementProvider } from './providers/ElementProvider.js'\nimport { LeafButtonProvider } from './providers/LeafButtonProvider.js'\nimport { LeafProvider } from './providers/LeafProvider.js'\n\nconst baseClass = 'rich-text'\n\ndeclare module 'slate' {\n interface CustomTypes {\n Editor: BaseEditor & HistoryEditor & ReactEditor\n Element: ElementNode\n Text: TextNode\n }\n}\n\nconst RichTextField: React.FC<LoadedSlateFieldProps> = (props) => {\n const {\n descriptionProps,\n elements,\n errorProps,\n field,\n field: {\n name,\n _path: pathFromProps,\n admin: {\n className,\n components: { Description, Error, Label },\n placeholder,\n readOnly: readOnlyFromAdmin,\n style,\n width,\n } = {},\n label,\n required,\n },\n labelProps,\n leaves,\n plugins,\n readOnly: readOnlyFromTopLevelProps,\n validate = richTextValidate,\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const { i18n } = useTranslation()\n const editorRef = useRef(null)\n const toolbarRef = useRef(null)\n\n const drawerDepth = useEditDepth()\n const drawerIsOpen = drawerDepth > 1\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, {\n ...validationOptions,\n req: {\n t: i18n.t,\n } as PayloadRequest,\n required,\n })\n }\n },\n [validate, required, i18n],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const { formInitializing, initialValue, path, schemaPath, setValue, showError, value } = useField(\n {\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n },\n )\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formInitializing\n\n const editor = useMemo(() => {\n let CreatedEditor = withEnterBreakOut(withHistory(withReact(createEditor())))\n\n CreatedEditor = withHTML(CreatedEditor)\n\n if (plugins.length) {\n CreatedEditor = plugins.reduce((editorWithPlugins, plugin) => {\n return plugin(editorWithPlugins)\n }, CreatedEditor)\n }\n\n return CreatedEditor\n }, [plugins])\n\n const renderElement = useCallback(\n ({ attributes, children, element }) => {\n // return <div {...attributes}>{children}</div>\n\n const matchedElement = elements[element.type]\n const Element = matchedElement?.Element\n\n let attr = { ...attributes }\n\n // this converts text alignment to margin when dealing with void elements\n if (element.textAlign) {\n if (element.type === 'relationship' || element.type === 'upload') {\n switch (element.textAlign) {\n case 'left':\n attr = { ...attr, style: { marginRight: 'auto' } }\n break\n case 'right':\n attr = { ...attr, style: { marginLeft: 'auto' } }\n break\n case 'center':\n attr = { ...attr, style: { marginLeft: 'auto', marginRight: 'auto' } }\n break\n default:\n attr = { ...attr, style: { textAlign: element.textAlign } }\n break\n }\n } else if (element.type === 'li') {\n switch (element.textAlign) {\n case 'right':\n attr = { ...attr, style: { listStylePosition: 'inside', textAlign: 'right' } }\n break\n case 'center':\n attr = { ...attr, style: { listStylePosition: 'inside', textAlign: 'center' } }\n break\n case 'left':\n default:\n attr = { ...attr, style: { listStylePosition: 'outside', textAlign: 'left' } }\n break\n }\n } else {\n attr = { ...attr, style: { textAlign: element.textAlign } }\n }\n }\n\n if (Element) {\n const el = (\n <ElementProvider\n attributes={attr}\n childNodes={children}\n editorRef={editorRef}\n element={element}\n fieldProps={props}\n path={path}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Element} />\n </ElementProvider>\n )\n\n return el\n }\n\n return <div {...attr}>{children}</div>\n },\n [elements, path, props, schemaPath],\n )\n\n const renderLeaf = useCallback(\n ({ attributes, children, leaf }) => {\n const matchedLeaves = Object.entries(leaves).filter(([leafName]) => leaf[leafName])\n\n if (matchedLeaves.length > 0) {\n return matchedLeaves.reduce(\n (result, [, leafConfig], i) => {\n if (leafConfig?.Leaf) {\n const Leaf = leafConfig.Leaf\n\n return (\n <LeafProvider\n attributes={attributes}\n editorRef={editorRef}\n fieldProps={props}\n key={i}\n leaf={leaf}\n path={path}\n result={result}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Leaf} />\n </LeafProvider>\n )\n }\n\n return result\n },\n <span {...attributes}>{children}</span>,\n )\n }\n\n return <span {...attributes}>{children}</span>\n },\n [path, props, schemaPath, leaves],\n )\n\n // All slate changes fire the onChange event\n // including selection changes\n // so we will filter the set_selection operations out\n // and only fire setValue when onChange is because of value\n const handleChange = useCallback(\n (val: unknown) => {\n const ops = editor?.operations.filter((o: BaseOperation) => {\n if (o) {\n return o.type !== 'set_selection'\n }\n return false\n })\n\n if (ops && Array.isArray(ops) && ops.length > 0) {\n if (!disabled && val !== defaultRichTextValue && val !== value) {\n setValue(val)\n }\n }\n },\n [editor?.operations, disabled, setValue, value],\n )\n\n useEffect(() => {\n function setClickableState(clickState: 'disabled' | 'enabled') {\n const selectors = 'button, a, [role=\"button\"]'\n const toolbarButtons: (HTMLAnchorElement | HTMLButtonElement)[] =\n toolbarRef.current?.querySelectorAll(selectors)\n\n ;(toolbarButtons || []).forEach((child) => {\n const isButton = child.tagName === 'BUTTON'\n const isDisabling = clickState === 'disabled'\n child.setAttribute('tabIndex', isDisabling ? '-1' : '0')\n if (isButton) child.setAttribute('disabled', isDisabling ? 'disabled' : null)\n })\n }\n\n if (disabled) {\n setClickableState('disabled')\n }\n\n return () => {\n if (disabled) {\n setClickableState('enabled')\n }\n }\n }, [disabled])\n\n // useEffect(() => {\n // // If there is a change to the initial value, we need to reset Slate history\n // // and clear selection because the old selection may no longer be valid\n // // as returned JSON may be modified in hooks and have a different shape\n // if (editor.selection) {\n // console.log('deselecting');\n // ReactEditor.deselect(editor);\n // }\n // }, [path, editor]);\n\n const classes = [\n baseClass,\n 'field-type',\n className,\n showError && 'error',\n disabled && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let valueToRender = value\n\n if (typeof valueToRender === 'string') {\n try {\n const parsedJSON = JSON.parse(valueToRender)\n valueToRender = parsedJSON\n } catch (err) {\n valueToRender = null\n }\n }\n\n if (!valueToRender) valueToRender = defaultRichTextValue\n\n return (\n <div\n className={classes}\n style={{\n ...style,\n width,\n }}\n >\n <FieldLabel\n Label={Label}\n label={label}\n required={required}\n {...(labelProps || {})}\n field={field}\n />\n <div className={`${baseClass}__wrap`}>\n <FieldError CustomError={Error} field={field} path={path} {...(errorProps || {})} />\n <Slate\n editor={editor}\n key={JSON.stringify({ initialValue, path })} // makes sure slate is completely re-rendered when initialValue changes, bypassing the slate-internal value memoization. That way, external changes to the form will update the editor\n onChange={handleChange}\n value={valueToRender as any[]}\n >\n <div className={`${baseClass}__wrapper`}>\n {Object.keys(elements)?.length + Object.keys(leaves)?.length > 0 && (\n <div\n className={[`${baseClass}__toolbar`, drawerIsOpen && `${baseClass}__drawerIsOpen`]\n .filter(Boolean)\n .join(' ')}\n ref={toolbarRef}\n >\n <div className={`${baseClass}__toolbar-wrap`}>\n {Object.values(elements).map((element) => {\n const Button = element?.Button\n\n if (Button) {\n return (\n <ElementButtonProvider\n disabled={disabled}\n fieldProps={props}\n key={element.name}\n path={path}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Button} />\n </ElementButtonProvider>\n )\n }\n\n return null\n })}\n {Object.values(leaves).map((leaf) => {\n const Button = leaf?.Button\n\n if (Button) {\n return (\n <LeafButtonProvider\n fieldProps={props}\n key={leaf.name}\n path={path}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Button} />\n </LeafButtonProvider>\n )\n }\n\n return null\n })}\n </div>\n </div>\n )}\n <div className={`${baseClass}__editor`} ref={editorRef}>\n <Editable\n className={`${baseClass}__input`}\n id={`field-${path.replace(/\\./g, '__')}`}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n if (event.shiftKey) {\n event.preventDefault()\n editor.insertText('\\n')\n } else {\n const selectedElement = Node.descendant(\n editor,\n editor.selection.anchor.path.slice(0, -1),\n )\n\n if (SlateElement.isElement(selectedElement)) {\n // Allow hard enter to \"break out\" of certain elements\n if (editor.shouldBreakOutOnEnter(selectedElement)) {\n event.preventDefault()\n const selectedLeaf = Node.descendant(editor, editor.selection.anchor.path)\n\n if (\n Text.isText(selectedLeaf) &&\n String(selectedLeaf.text).length === editor.selection.anchor.offset\n ) {\n Transforms.insertNodes(editor, { children: [{ text: '' }] })\n } else {\n Transforms.splitNodes(editor)\n Transforms.setNodes(editor, {})\n }\n }\n }\n }\n }\n\n if (event.key === 'Backspace') {\n const selectedElement = Node.descendant(\n editor,\n editor.selection.anchor.path.slice(0, -1),\n )\n\n if (SlateElement.isElement(selectedElement) && selectedElement.type === 'li') {\n const selectedLeaf = Node.descendant(editor, editor.selection.anchor.path)\n if (Text.isText(selectedLeaf) && String(selectedLeaf.text).length === 0) {\n event.preventDefault()\n Transforms.unwrapNodes(editor, {\n match: (n) => SlateElement.isElement(n) && listTypes.includes(n.type),\n mode: 'lowest',\n split: true,\n })\n\n Transforms.setNodes(editor, { type: undefined })\n }\n } else if (editor.isVoid(selectedElement)) {\n Transforms.removeNodes(editor)\n }\n }\n\n Object.keys(hotkeys).forEach((hotkey) => {\n if (isHotkey(hotkey, event as any)) {\n event.preventDefault()\n const mark = hotkeys[hotkey]\n toggleLeaf(editor, mark)\n }\n })\n }}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={disabled}\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n spellCheck\n />\n </div>\n </div>\n </Slate>\n <FieldDescription Description={Description} field={field} {...(descriptionProps || {})} />\n </div>\n </div>\n )\n}\n\nexport const RichText = withCondition(RichTextField)\n"],"names":["getTranslation","FieldDescription","FieldError","FieldLabel","RenderComponent","useEditDepth","useField","useFieldProps","useTranslation","withCondition","isHotkey","React","useCallback","useEffect","useMemo","useRef","Node","Element","SlateElement","Text","Transforms","createEditor","withHistory","Editable","Slate","withReact","defaultRichTextValue","richTextValidate","listTypes","hotkeys","toggleLeaf","withEnterBreakOut","withHTML","ElementButtonProvider","ElementProvider","LeafButtonProvider","LeafProvider","baseClass","RichTextField","props","descriptionProps","elements","errorProps","field","name","_path","pathFromProps","admin","className","components","Description","Error","Label","placeholder","readOnly","readOnlyFromAdmin","style","width","label","required","labelProps","leaves","plugins","readOnlyFromTopLevelProps","validate","readOnlyFromProps","i18n","editorRef","toolbarRef","drawerDepth","drawerIsOpen","memoizedValidate","value","validationOptions","req","t","path","pathFromContext","readOnlyFromContext","formInitializing","initialValue","schemaPath","setValue","showError","disabled","editor","CreatedEditor","length","reduce","editorWithPlugins","plugin","renderElement","attributes","children","element","matchedElement","type","attr","textAlign","marginRight","marginLeft","listStylePosition","el","childNodes","fieldProps","mappedComponent","div","renderLeaf","leaf","matchedLeaves","Object","entries","filter","leafName","result","leafConfig","i","Leaf","span","handleChange","val","ops","operations","o","Array","isArray","setClickableState","clickState","selectors","toolbarButtons","current","querySelectorAll","forEach","child","isButton","tagName","isDisabling","setAttribute","classes","Boolean","join","valueToRender","parsedJSON","JSON","parse","err","CustomError","onChange","keys","ref","values","map","Button","id","replace","onKeyDown","event","key","shiftKey","preventDefault","insertText","selectedElement","descendant","selection","anchor","slice","isElement","shouldBreakOutOnEnter","selectedLeaf","isText","String","text","offset","insertNodes","splitNodes","setNodes","unwrapNodes","match","n","includes","mode","split","undefined","isVoid","removeNodes","hotkey","mark","spellCheck","stringify","RichText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/field/RichText.tsx"],"sourcesContent":["'use client'\n\nimport type { PayloadRequest } from 'payload'\nimport type { BaseEditor, BaseOperation } from 'slate'\nimport type { HistoryEditor } from 'slate-history'\nimport type { ReactEditor } from 'slate-react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n FieldDescription,\n FieldError,\n FieldLabel,\n RenderComponent,\n useEditDepth,\n useField,\n useFieldProps,\n useTranslation,\n withCondition,\n} from '@payloadcms/ui'\nimport { isHotkey } from 'is-hotkey'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { createEditor, Node, Element as SlateElement, Text, Transforms } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\n\nimport type { ElementNode, TextNode } from '../types.js'\nimport type { LoadedSlateFieldProps } from './types.js'\n\nimport { defaultRichTextValue } from '../data/defaultValue.js'\nimport { richTextValidate } from '../data/validation.js'\nimport { listTypes } from './elements/listTypes.js'\nimport { hotkeys } from './hotkeys.js'\nimport './index.scss'\nimport { toggleLeaf } from './leaves/toggle.js'\nimport { withEnterBreakOut } from './plugins/withEnterBreakOut.js'\nimport { withHTML } from './plugins/withHTML.js'\nimport { ElementButtonProvider } from './providers/ElementButtonProvider.js'\nimport { ElementProvider } from './providers/ElementProvider.js'\nimport { LeafButtonProvider } from './providers/LeafButtonProvider.js'\nimport { LeafProvider } from './providers/LeafProvider.js'\n\nconst baseClass = 'rich-text'\n\ndeclare module 'slate' {\n interface CustomTypes {\n Editor: BaseEditor & HistoryEditor & ReactEditor\n Element: ElementNode\n Text: TextNode\n }\n}\n\nconst RichTextField: React.FC<LoadedSlateFieldProps> = (props) => {\n const {\n descriptionProps,\n elements,\n errorProps,\n field,\n field: {\n name,\n _path: pathFromProps,\n admin: {\n className,\n components: { Description, Error, Label },\n placeholder,\n readOnly: readOnlyFromAdmin,\n style,\n width,\n } = {},\n label,\n required,\n },\n labelProps,\n leaves,\n plugins,\n readOnly: readOnlyFromTopLevelProps,\n validate = richTextValidate,\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const { i18n } = useTranslation()\n const editorRef = useRef(null)\n const toolbarRef = useRef(null)\n\n const drawerDepth = useEditDepth()\n const drawerIsOpen = drawerDepth > 1\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, {\n ...validationOptions,\n req: {\n t: i18n.t,\n } as PayloadRequest,\n required,\n })\n }\n },\n [validate, required, i18n],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const { formInitializing, initialValue, path, schemaPath, setValue, showError, value } = useField(\n {\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n },\n )\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formInitializing\n\n const editor = useMemo(() => {\n let CreatedEditor = withEnterBreakOut(withHistory(withReact(createEditor())))\n\n CreatedEditor = withHTML(CreatedEditor)\n\n if (plugins.length) {\n CreatedEditor = plugins.reduce((editorWithPlugins, plugin) => {\n return plugin(editorWithPlugins)\n }, CreatedEditor)\n }\n\n return CreatedEditor\n }, [plugins])\n\n const renderElement = useCallback(\n ({ attributes, children, element }) => {\n // return <div {...attributes}>{children}</div>\n\n const matchedElement = elements[element.type]\n const Element = matchedElement?.Element\n\n let attr = { ...attributes }\n\n // this converts text alignment to margin when dealing with void elements\n if (element.textAlign) {\n if (element.type === 'relationship' || element.type === 'upload') {\n switch (element.textAlign) {\n case 'left':\n attr = { ...attr, style: { marginRight: 'auto' } }\n break\n case 'right':\n attr = { ...attr, style: { marginLeft: 'auto' } }\n break\n case 'center':\n attr = { ...attr, style: { marginLeft: 'auto', marginRight: 'auto' } }\n break\n default:\n attr = { ...attr, style: { textAlign: element.textAlign } }\n break\n }\n } else if (element.type === 'li') {\n switch (element.textAlign) {\n case 'right':\n attr = { ...attr, style: { listStylePosition: 'inside', textAlign: 'right' } }\n break\n case 'center':\n attr = { ...attr, style: { listStylePosition: 'inside', textAlign: 'center' } }\n break\n case 'left':\n default:\n attr = { ...attr, style: { listStylePosition: 'outside', textAlign: 'left' } }\n break\n }\n } else {\n attr = { ...attr, style: { textAlign: element.textAlign } }\n }\n }\n\n if (Element) {\n const el = (\n <ElementProvider\n attributes={attr}\n childNodes={children}\n editorRef={editorRef}\n element={element}\n fieldProps={props}\n path={path}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Element} />\n </ElementProvider>\n )\n\n return el\n }\n\n return <div {...attr}>{children}</div>\n },\n [elements, path, props, schemaPath],\n )\n\n const renderLeaf = useCallback(\n ({ attributes, children, leaf }) => {\n const matchedLeaves = Object.entries(leaves).filter(([leafName]) => leaf[leafName])\n\n if (matchedLeaves.length > 0) {\n return matchedLeaves.reduce(\n (result, [, leafConfig], i) => {\n if (leafConfig?.Leaf) {\n const Leaf = leafConfig.Leaf\n\n return (\n <LeafProvider\n attributes={attributes}\n editorRef={editorRef}\n fieldProps={props}\n key={i}\n leaf={leaf}\n path={path}\n result={result}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Leaf} />\n </LeafProvider>\n )\n }\n\n return result\n },\n <span {...attributes}>{children}</span>,\n )\n }\n\n return <span {...attributes}>{children}</span>\n },\n [path, props, schemaPath, leaves],\n )\n\n // All slate changes fire the onChange event\n // including selection changes\n // so we will filter the set_selection operations out\n // and only fire setValue when onChange is because of value\n const handleChange = useCallback(\n (val: unknown) => {\n const ops = editor?.operations.filter((o: BaseOperation) => {\n if (o) {\n return o.type !== 'set_selection'\n }\n return false\n })\n\n if (ops && Array.isArray(ops) && ops.length > 0) {\n if (!disabled && val !== defaultRichTextValue && val !== value) {\n setValue(val)\n }\n }\n },\n [editor?.operations, disabled, setValue, value],\n )\n\n useEffect(() => {\n function setClickableState(clickState: 'disabled' | 'enabled') {\n const selectors = 'button, a, [role=\"button\"]'\n const toolbarButtons: (HTMLAnchorElement | HTMLButtonElement)[] =\n toolbarRef.current?.querySelectorAll(selectors)\n\n ;(toolbarButtons || []).forEach((child) => {\n const isButton = child.tagName === 'BUTTON'\n const isDisabling = clickState === 'disabled'\n child.setAttribute('tabIndex', isDisabling ? '-1' : '0')\n if (isButton) {\n child.setAttribute('disabled', isDisabling ? 'disabled' : null)\n }\n })\n }\n\n if (disabled) {\n setClickableState('disabled')\n }\n\n return () => {\n if (disabled) {\n setClickableState('enabled')\n }\n }\n }, [disabled])\n\n // useEffect(() => {\n // // If there is a change to the initial value, we need to reset Slate history\n // // and clear selection because the old selection may no longer be valid\n // // as returned JSON may be modified in hooks and have a different shape\n // if (editor.selection) {\n // console.log('deselecting');\n // ReactEditor.deselect(editor);\n // }\n // }, [path, editor]);\n\n const classes = [\n baseClass,\n 'field-type',\n className,\n showError && 'error',\n disabled && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let valueToRender = value\n\n if (typeof valueToRender === 'string') {\n try {\n const parsedJSON = JSON.parse(valueToRender)\n valueToRender = parsedJSON\n } catch (err) {\n valueToRender = null\n }\n }\n\n if (!valueToRender) {\n valueToRender = defaultRichTextValue\n }\n\n return (\n <div\n className={classes}\n style={{\n ...style,\n width,\n }}\n >\n <FieldLabel\n Label={Label}\n label={label}\n required={required}\n {...(labelProps || {})}\n field={field}\n />\n <div className={`${baseClass}__wrap`}>\n <FieldError CustomError={Error} field={field} path={path} {...(errorProps || {})} />\n <Slate\n editor={editor}\n key={JSON.stringify({ initialValue, path })} // makes sure slate is completely re-rendered when initialValue changes, bypassing the slate-internal value memoization. That way, external changes to the form will update the editor\n onChange={handleChange}\n value={valueToRender as any[]}\n >\n <div className={`${baseClass}__wrapper`}>\n {Object.keys(elements)?.length + Object.keys(leaves)?.length > 0 && (\n <div\n className={[`${baseClass}__toolbar`, drawerIsOpen && `${baseClass}__drawerIsOpen`]\n .filter(Boolean)\n .join(' ')}\n ref={toolbarRef}\n >\n <div className={`${baseClass}__toolbar-wrap`}>\n {Object.values(elements).map((element) => {\n const Button = element?.Button\n\n if (Button) {\n return (\n <ElementButtonProvider\n disabled={disabled}\n fieldProps={props}\n key={element.name}\n path={path}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Button} />\n </ElementButtonProvider>\n )\n }\n\n return null\n })}\n {Object.values(leaves).map((leaf) => {\n const Button = leaf?.Button\n\n if (Button) {\n return (\n <LeafButtonProvider\n fieldProps={props}\n key={leaf.name}\n path={path}\n schemaPath={schemaPath}\n >\n <RenderComponent mappedComponent={Button} />\n </LeafButtonProvider>\n )\n }\n\n return null\n })}\n </div>\n </div>\n )}\n <div className={`${baseClass}__editor`} ref={editorRef}>\n <Editable\n className={`${baseClass}__input`}\n id={`field-${path.replace(/\\./g, '__')}`}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n if (event.shiftKey) {\n event.preventDefault()\n editor.insertText('\\n')\n } else {\n const selectedElement = Node.descendant(\n editor,\n editor.selection.anchor.path.slice(0, -1),\n )\n\n if (SlateElement.isElement(selectedElement)) {\n // Allow hard enter to \"break out\" of certain elements\n if (editor.shouldBreakOutOnEnter(selectedElement)) {\n event.preventDefault()\n const selectedLeaf = Node.descendant(editor, editor.selection.anchor.path)\n\n if (\n Text.isText(selectedLeaf) &&\n String(selectedLeaf.text).length === editor.selection.anchor.offset\n ) {\n Transforms.insertNodes(editor, { children: [{ text: '' }] })\n } else {\n Transforms.splitNodes(editor)\n Transforms.setNodes(editor, {})\n }\n }\n }\n }\n }\n\n if (event.key === 'Backspace') {\n const selectedElement = Node.descendant(\n editor,\n editor.selection.anchor.path.slice(0, -1),\n )\n\n if (SlateElement.isElement(selectedElement) && selectedElement.type === 'li') {\n const selectedLeaf = Node.descendant(editor, editor.selection.anchor.path)\n if (Text.isText(selectedLeaf) && String(selectedLeaf.text).length === 0) {\n event.preventDefault()\n Transforms.unwrapNodes(editor, {\n match: (n) => SlateElement.isElement(n) && listTypes.includes(n.type),\n mode: 'lowest',\n split: true,\n })\n\n Transforms.setNodes(editor, { type: undefined })\n }\n } else if (editor.isVoid(selectedElement)) {\n Transforms.removeNodes(editor)\n }\n }\n\n Object.keys(hotkeys).forEach((hotkey) => {\n if (isHotkey(hotkey, event as any)) {\n event.preventDefault()\n const mark = hotkeys[hotkey]\n toggleLeaf(editor, mark)\n }\n })\n }}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={disabled}\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n spellCheck\n />\n </div>\n </div>\n </Slate>\n <FieldDescription Description={Description} field={field} {...(descriptionProps || {})} />\n </div>\n </div>\n )\n}\n\nexport const RichText = withCondition(RichTextField)\n"],"names":["getTranslation","FieldDescription","FieldError","FieldLabel","RenderComponent","useEditDepth","useField","useFieldProps","useTranslation","withCondition","isHotkey","React","useCallback","useEffect","useMemo","useRef","createEditor","Node","Element","SlateElement","Text","Transforms","withHistory","Editable","Slate","withReact","defaultRichTextValue","richTextValidate","listTypes","hotkeys","toggleLeaf","withEnterBreakOut","withHTML","ElementButtonProvider","ElementProvider","LeafButtonProvider","LeafProvider","baseClass","RichTextField","props","descriptionProps","elements","errorProps","field","name","_path","pathFromProps","admin","className","components","Description","Error","Label","placeholder","readOnly","readOnlyFromAdmin","style","width","label","required","labelProps","leaves","plugins","readOnlyFromTopLevelProps","validate","readOnlyFromProps","i18n","editorRef","toolbarRef","drawerDepth","drawerIsOpen","memoizedValidate","value","validationOptions","req","t","path","pathFromContext","readOnlyFromContext","formInitializing","initialValue","schemaPath","setValue","showError","disabled","editor","CreatedEditor","length","reduce","editorWithPlugins","plugin","renderElement","attributes","children","element","matchedElement","type","attr","textAlign","marginRight","marginLeft","listStylePosition","el","childNodes","fieldProps","mappedComponent","div","renderLeaf","leaf","matchedLeaves","Object","entries","filter","leafName","result","leafConfig","i","Leaf","span","handleChange","val","ops","operations","o","Array","isArray","setClickableState","clickState","selectors","toolbarButtons","current","querySelectorAll","forEach","child","isButton","tagName","isDisabling","setAttribute","classes","Boolean","join","valueToRender","parsedJSON","JSON","parse","err","CustomError","onChange","keys","ref","values","map","Button","id","replace","onKeyDown","event","key","shiftKey","preventDefault","insertText","selectedElement","descendant","selection","anchor","slice","isElement","shouldBreakOutOnEnter","selectedLeaf","isText","String","text","offset","insertNodes","splitNodes","setNodes","unwrapNodes","match","n","includes","mode","split","undefined","isVoid","removeNodes","hotkey","mark","spellCheck","stringify","RichText"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFeatureMap.d.ts","sourceRoot":"","sources":["../../src/field/createFeatureMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,gBAAgB,yBACL,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,KACjD,
|
|
1
|
+
{"version":3,"file":"createFeatureMap.d.ts","sourceRoot":"","sources":["../../src/field/createFeatureMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,gBAAgB,yBACL,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,KACjD,eAoDF,CAAA"}
|
|
@@ -14,8 +14,12 @@ export const createFeatureMap = (richTextComponentMap)=>{
|
|
|
14
14
|
Leaf: null
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
if (key.startsWith('leaf.button.'))
|
|
18
|
-
|
|
17
|
+
if (key.startsWith('leaf.button.')) {
|
|
18
|
+
features.leaves[leafName].Button = value;
|
|
19
|
+
}
|
|
20
|
+
if (key.startsWith('leaf.component.')) {
|
|
21
|
+
features.leaves[leafName].Leaf = value;
|
|
22
|
+
}
|
|
19
23
|
}
|
|
20
24
|
if (key.startsWith('element.button.') || key.startsWith('element.component.')) {
|
|
21
25
|
const elementName = key.replace('element.button.', '').replace('element.component.', '');
|
|
@@ -26,8 +30,12 @@ export const createFeatureMap = (richTextComponentMap)=>{
|
|
|
26
30
|
Element: null
|
|
27
31
|
};
|
|
28
32
|
}
|
|
29
|
-
if (key.startsWith('element.button.'))
|
|
30
|
-
|
|
33
|
+
if (key.startsWith('element.button.')) {
|
|
34
|
+
features.elements[elementName].Button = value;
|
|
35
|
+
}
|
|
36
|
+
if (key.startsWith('element.component.')) {
|
|
37
|
+
features.elements[elementName].Element = value;
|
|
38
|
+
}
|
|
31
39
|
}
|
|
32
40
|
if (key.startsWith('leaf.plugin.') || key.startsWith('element.plugin.')) {
|
|
33
41
|
features.plugins.push(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/field/createFeatureMap.ts"],"sourcesContent":["import type { MappedComponent } from 'payload'\n\nimport type { EnabledFeatures } from './types.js'\n\nexport const createFeatureMap = (\n richTextComponentMap: Map<string, MappedComponent>,\n): EnabledFeatures => {\n const features: EnabledFeatures = {\n elements: {},\n leaves: {},\n plugins: [],\n }\n\n for (const [key, value] of richTextComponentMap) {\n if (key.startsWith('leaf.button') || key.startsWith('leaf.component.')) {\n const leafName = key.replace('leaf.button.', '').replace('leaf.component.', '')\n\n if (!features.leaves[leafName]) {\n features.leaves[leafName] = {\n name: leafName,\n Button: null,\n Leaf: null,\n }\n }\n\n if (key.startsWith('leaf.button.')) features.leaves[leafName].Button = value\n if (key.startsWith('leaf.component.')) features.leaves[leafName].Leaf = value\n }\n\n if (key.startsWith('element.button.') || key.startsWith('element.component.')) {\n const elementName = key.replace('element.button.', '').replace('element.component.', '')\n\n if (!features.elements[elementName]) {\n features.elements[elementName] = {\n name: elementName,\n Button: null,\n Element: null,\n }\n }\n\n if (key.startsWith('element.button.')) features.elements[elementName].Button = value\n if (key.startsWith('element.component.')) features.elements[elementName].Element = value\n }\n\n if (key.startsWith('leaf.plugin.') || key.startsWith('element.plugin.')) {\n features.plugins.push(value)\n }\n }\n\n return features\n}\n"],"names":["createFeatureMap","richTextComponentMap","features","elements","leaves","plugins","key","value","startsWith","leafName","replace","name","Button","Leaf","elementName","Element","push"],"mappings":"AAIA,OAAO,MAAMA,mBAAmB,CAC9BC;IAEA,MAAMC,WAA4B;QAChCC,UAAU,CAAC;QACXC,QAAQ,CAAC;QACTC,SAAS,EAAE;IACb;IAEA,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIN,qBAAsB;QAC/C,IAAIK,IAAIE,UAAU,CAAC,kBAAkBF,IAAIE,UAAU,CAAC,oBAAoB;YACtE,MAAMC,WAAWH,IAAII,OAAO,CAAC,gBAAgB,IAAIA,OAAO,CAAC,mBAAmB;YAE5E,IAAI,CAACR,SAASE,MAAM,CAACK,SAAS,EAAE;gBAC9BP,SAASE,MAAM,CAACK,SAAS,GAAG;oBAC1BE,MAAMF;oBACNG,QAAQ;oBACRC,MAAM;gBACR;YACF;YAEA,IAAIP,IAAIE,UAAU,CAAC,
|
|
1
|
+
{"version":3,"sources":["../../src/field/createFeatureMap.ts"],"sourcesContent":["import type { MappedComponent } from 'payload'\n\nimport type { EnabledFeatures } from './types.js'\n\nexport const createFeatureMap = (\n richTextComponentMap: Map<string, MappedComponent>,\n): EnabledFeatures => {\n const features: EnabledFeatures = {\n elements: {},\n leaves: {},\n plugins: [],\n }\n\n for (const [key, value] of richTextComponentMap) {\n if (key.startsWith('leaf.button') || key.startsWith('leaf.component.')) {\n const leafName = key.replace('leaf.button.', '').replace('leaf.component.', '')\n\n if (!features.leaves[leafName]) {\n features.leaves[leafName] = {\n name: leafName,\n Button: null,\n Leaf: null,\n }\n }\n\n if (key.startsWith('leaf.button.')) {\n features.leaves[leafName].Button = value\n }\n if (key.startsWith('leaf.component.')) {\n features.leaves[leafName].Leaf = value\n }\n }\n\n if (key.startsWith('element.button.') || key.startsWith('element.component.')) {\n const elementName = key.replace('element.button.', '').replace('element.component.', '')\n\n if (!features.elements[elementName]) {\n features.elements[elementName] = {\n name: elementName,\n Button: null,\n Element: null,\n }\n }\n\n if (key.startsWith('element.button.')) {\n features.elements[elementName].Button = value\n }\n if (key.startsWith('element.component.')) {\n features.elements[elementName].Element = value\n }\n }\n\n if (key.startsWith('leaf.plugin.') || key.startsWith('element.plugin.')) {\n features.plugins.push(value)\n }\n }\n\n return features\n}\n"],"names":["createFeatureMap","richTextComponentMap","features","elements","leaves","plugins","key","value","startsWith","leafName","replace","name","Button","Leaf","elementName","Element","push"],"mappings":"AAIA,OAAO,MAAMA,mBAAmB,CAC9BC;IAEA,MAAMC,WAA4B;QAChCC,UAAU,CAAC;QACXC,QAAQ,CAAC;QACTC,SAAS,EAAE;IACb;IAEA,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIN,qBAAsB;QAC/C,IAAIK,IAAIE,UAAU,CAAC,kBAAkBF,IAAIE,UAAU,CAAC,oBAAoB;YACtE,MAAMC,WAAWH,IAAII,OAAO,CAAC,gBAAgB,IAAIA,OAAO,CAAC,mBAAmB;YAE5E,IAAI,CAACR,SAASE,MAAM,CAACK,SAAS,EAAE;gBAC9BP,SAASE,MAAM,CAACK,SAAS,GAAG;oBAC1BE,MAAMF;oBACNG,QAAQ;oBACRC,MAAM;gBACR;YACF;YAEA,IAAIP,IAAIE,UAAU,CAAC,iBAAiB;gBAClCN,SAASE,MAAM,CAACK,SAAS,CAACG,MAAM,GAAGL;YACrC;YACA,IAAID,IAAIE,UAAU,CAAC,oBAAoB;gBACrCN,SAASE,MAAM,CAACK,SAAS,CAACI,IAAI,GAAGN;YACnC;QACF;QAEA,IAAID,IAAIE,UAAU,CAAC,sBAAsBF,IAAIE,UAAU,CAAC,uBAAuB;YAC7E,MAAMM,cAAcR,IAAII,OAAO,CAAC,mBAAmB,IAAIA,OAAO,CAAC,sBAAsB;YAErF,IAAI,CAACR,SAASC,QAAQ,CAACW,YAAY,EAAE;gBACnCZ,SAASC,QAAQ,CAACW,YAAY,GAAG;oBAC/BH,MAAMG;oBACNF,QAAQ;oBACRG,SAAS;gBACX;YACF;YAEA,IAAIT,IAAIE,UAAU,CAAC,oBAAoB;gBACrCN,SAASC,QAAQ,CAACW,YAAY,CAACF,MAAM,GAAGL;YAC1C;YACA,IAAID,IAAIE,UAAU,CAAC,uBAAuB;gBACxCN,SAASC,QAAQ,CAACW,YAAY,CAACC,OAAO,GAAGR;YAC3C;QACF;QAEA,IAAID,IAAIE,UAAU,CAAC,mBAAmBF,IAAIE,UAAU,CAAC,oBAAoB;YACvEN,SAASG,OAAO,CAACW,IAAI,CAACT;QACxB;IACF;IAEA,OAAOL;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isActive.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isActive.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAEvC,eAAO,MAAM,eAAe,WAAY,MAAM,UAAU,MAAM,yBAAuB,
|
|
1
|
+
{"version":3,"file":"isActive.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isActive.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAEvC,eAAO,MAAM,eAAe,WAAY,MAAM,UAAU,MAAM,yBAAuB,OAapF,CAAA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Editor, Element } from 'slate';
|
|
2
2
|
export const isElementActive = (editor, format, blockType = 'type')=>{
|
|
3
|
-
if (!editor.selection)
|
|
3
|
+
if (!editor.selection) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
4
6
|
const [match] = Array.from(Editor.nodes(editor, {
|
|
5
7
|
at: Editor.unhangRange(editor, editor.selection),
|
|
6
8
|
match: (n)=>!Editor.isEditor(n) && Element.isElement(n) && n[blockType] === format
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/field/elements/isActive.tsx"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nexport const isElementActive = (editor: Editor, format: string, blockType = 'type'): boolean => {\n if (!editor.selection) return false\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && n[blockType] === format,\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","isElementActive","editor","format","blockType","selection","match","Array","from","nodes","at","unhangRange","n","isEditor","isElement"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,OAAO,MAAMC,kBAAkB,CAACC,QAAgBC,QAAgBC,YAAY,MAAM;IAChF,IAAI,CAACF,OAAOG,SAAS,EAAE,OAAO;
|
|
1
|
+
{"version":3,"sources":["../../../src/field/elements/isActive.tsx"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nexport const isElementActive = (editor: Editor, format: string, blockType = 'type'): boolean => {\n if (!editor.selection) {\n return false\n }\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && n[blockType] === format,\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","isElementActive","editor","format","blockType","selection","match","Array","from","nodes","at","unhangRange","n","isEditor","isElement"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,OAAO,MAAMC,kBAAkB,CAACC,QAAgBC,QAAgBC,YAAY,MAAM;IAChF,IAAI,CAACF,OAAOG,SAAS,EAAE;QACrB,OAAO;IACT;IAEA,MAAM,CAACC,MAAM,GAAGC,MAAMC,IAAI,CACxBT,OAAOU,KAAK,CAACP,QAAQ;QACnBQ,IAAIX,OAAOY,WAAW,CAACT,QAAQA,OAAOG,SAAS;QAC/CC,OAAO,CAACM,IAAM,CAACb,OAAOc,QAAQ,CAACD,MAAMZ,QAAQc,SAAS,CAACF,MAAMA,CAAC,CAACR,UAAU,KAAKD;IAChF;IAGF,OAAO,CAAC,CAACG;AACX,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isLastSelectedElementEmpty.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isLastSelectedElementEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAIvC,eAAO,MAAM,0BAA0B,WAAY,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"isLastSelectedElementEmpty.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isLastSelectedElementEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAIvC,eAAO,MAAM,0BAA0B,WAAY,MAAM,KAAG,OAqB3D,CAAA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Editor, Element } from 'slate';
|
|
2
2
|
import { nodeIsTextNode } from '../../types.js';
|
|
3
3
|
export const isLastSelectedElementEmpty = (editor)=>{
|
|
4
|
-
if (!editor.selection)
|
|
4
|
+
if (!editor.selection) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
5
7
|
const currentlySelectedNodes = Array.from(Editor.nodes(editor, {
|
|
6
8
|
at: Editor.unhangRange(editor, editor.selection),
|
|
7
9
|
match: (n)=>!Editor.isEditor(n) && Element.isElement(n) && (!n.type || n.type === 'p')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/field/elements/isLastSelectedElementEmpty.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { nodeIsTextNode } from '../../types.js'\n\nexport const isLastSelectedElementEmpty = (editor: Editor): boolean => {\n if (!editor.selection) return false\n\n const currentlySelectedNodes = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && (!n.type || n.type === 'p'),\n }),\n )\n\n const lastSelectedNode = currentlySelectedNodes?.[currentlySelectedNodes?.length - 1]\n\n return (\n lastSelectedNode &&\n Element.isElement(lastSelectedNode[0]) &&\n (!lastSelectedNode[0].type || lastSelectedNode[0].type === 'p') &&\n nodeIsTextNode(lastSelectedNode[0].children?.[0]) &&\n lastSelectedNode[0].children?.[0].text === ''\n )\n}\n"],"names":["Editor","Element","nodeIsTextNode","isLastSelectedElementEmpty","editor","selection","currentlySelectedNodes","Array","from","nodes","at","unhangRange","match","n","isEditor","isElement","type","lastSelectedNode","length","children","text"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,iBAAgB;AAE/C,OAAO,MAAMC,6BAA6B,CAACC;IACzC,IAAI,CAACA,OAAOC,SAAS,EAAE,OAAO;
|
|
1
|
+
{"version":3,"sources":["../../../src/field/elements/isLastSelectedElementEmpty.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { nodeIsTextNode } from '../../types.js'\n\nexport const isLastSelectedElementEmpty = (editor: Editor): boolean => {\n if (!editor.selection) {\n return false\n }\n\n const currentlySelectedNodes = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, editor.selection),\n match: (n) => !Editor.isEditor(n) && Element.isElement(n) && (!n.type || n.type === 'p'),\n }),\n )\n\n const lastSelectedNode = currentlySelectedNodes?.[currentlySelectedNodes?.length - 1]\n\n return (\n lastSelectedNode &&\n Element.isElement(lastSelectedNode[0]) &&\n (!lastSelectedNode[0].type || lastSelectedNode[0].type === 'p') &&\n nodeIsTextNode(lastSelectedNode[0].children?.[0]) &&\n lastSelectedNode[0].children?.[0].text === ''\n )\n}\n"],"names":["Editor","Element","nodeIsTextNode","isLastSelectedElementEmpty","editor","selection","currentlySelectedNodes","Array","from","nodes","at","unhangRange","match","n","isEditor","isElement","type","lastSelectedNode","length","children","text"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,iBAAgB;AAE/C,OAAO,MAAMC,6BAA6B,CAACC;IACzC,IAAI,CAACA,OAAOC,SAAS,EAAE;QACrB,OAAO;IACT;IAEA,MAAMC,yBAAyBC,MAAMC,IAAI,CACvCR,OAAOS,KAAK,CAACL,QAAQ;QACnBM,IAAIV,OAAOW,WAAW,CAACP,QAAQA,OAAOC,SAAS;QAC/CO,OAAO,CAACC,IAAM,CAACb,OAAOc,QAAQ,CAACD,MAAMZ,QAAQc,SAAS,CAACF,MAAO,CAAA,CAACA,EAAEG,IAAI,IAAIH,EAAEG,IAAI,KAAK,GAAE;IACxF;IAGF,MAAMC,mBAAmBX,wBAAwB,CAACA,wBAAwBY,SAAS,EAAE;IAErF,OACED,oBACAhB,QAAQc,SAAS,CAACE,gBAAgB,CAAC,EAAE,KACpC,CAAA,CAACA,gBAAgB,CAAC,EAAE,CAACD,IAAI,IAAIC,gBAAgB,CAAC,EAAE,CAACD,IAAI,KAAK,GAAE,KAC7Dd,eAAee,gBAAgB,CAAC,EAAE,CAACE,QAAQ,EAAE,CAAC,EAAE,KAChDF,gBAAgB,CAAC,EAAE,CAACE,QAAQ,EAAE,CAAC,EAAE,CAACC,SAAS;AAE/C,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isListActive.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isListActive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAIvC,eAAO,MAAM,YAAY,WAAY,MAAM,UAAU,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"isListActive.d.ts","sourceRoot":"","sources":["../../../src/field/elements/isListActive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAIvC,eAAO,MAAM,YAAY,WAAY,MAAM,UAAU,MAAM,KAAG,OA0B7D,CAAA"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { Editor, Element } from 'slate';
|
|
2
2
|
import { getCommonBlock } from './getCommonBlock.js';
|
|
3
3
|
export const isListActive = (editor, format)=>{
|
|
4
|
-
if (!editor.selection)
|
|
4
|
+
if (!editor.selection) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
5
7
|
const [topmostSelectedNode, topmostSelectedNodePath] = getCommonBlock(editor);
|
|
6
|
-
if (Editor.isEditor(topmostSelectedNode))
|
|
8
|
+
if (Editor.isEditor(topmostSelectedNode)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
7
11
|
const [match] = Array.from(Editor.nodes(editor, {
|
|
8
12
|
at: topmostSelectedNodePath,
|
|
9
13
|
match: (node, path)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/field/elements/isListActive.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { getCommonBlock } from './getCommonBlock.js'\n\nexport const isListActive = (editor: Editor, format: string): boolean => {\n if (!editor.selection) return false\n const [topmostSelectedNode, topmostSelectedNodePath] = getCommonBlock(editor)\n\n if (Editor.isEditor(topmostSelectedNode)) return false\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: topmostSelectedNodePath,\n match: (node, path) => {\n return (\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type === format &&\n path.length >= topmostSelectedNodePath.length - 2\n )\n },\n mode: 'lowest',\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","getCommonBlock","isListActive","editor","format","selection","topmostSelectedNode","topmostSelectedNodePath","isEditor","match","Array","from","nodes","at","node","path","isElement","type","length","mode"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,MAAMC,eAAe,CAACC,QAAgBC;IAC3C,IAAI,CAACD,OAAOE,SAAS,EAAE,OAAO;
|
|
1
|
+
{"version":3,"sources":["../../../src/field/elements/isListActive.ts"],"sourcesContent":["import { Editor, Element } from 'slate'\n\nimport { getCommonBlock } from './getCommonBlock.js'\n\nexport const isListActive = (editor: Editor, format: string): boolean => {\n if (!editor.selection) {\n return false\n }\n const [topmostSelectedNode, topmostSelectedNodePath] = getCommonBlock(editor)\n\n if (Editor.isEditor(topmostSelectedNode)) {\n return false\n }\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: topmostSelectedNodePath,\n match: (node, path) => {\n return (\n !Editor.isEditor(node) &&\n Element.isElement(node) &&\n node.type === format &&\n path.length >= topmostSelectedNodePath.length - 2\n )\n },\n mode: 'lowest',\n }),\n )\n\n return !!match\n}\n"],"names":["Editor","Element","getCommonBlock","isListActive","editor","format","selection","topmostSelectedNode","topmostSelectedNodePath","isEditor","match","Array","from","nodes","at","node","path","isElement","type","length","mode"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,QAAQ,QAAO;AAEvC,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,MAAMC,eAAe,CAACC,QAAgBC;IAC3C,IAAI,CAACD,OAAOE,SAAS,EAAE;QACrB,OAAO;IACT;IACA,MAAM,CAACC,qBAAqBC,wBAAwB,GAAGN,eAAeE;IAEtE,IAAIJ,OAAOS,QAAQ,CAACF,sBAAsB;QACxC,OAAO;IACT;IAEA,MAAM,CAACG,MAAM,GAAGC,MAAMC,IAAI,CACxBZ,OAAOa,KAAK,CAACT,QAAQ;QACnBU,IAAIN;QACJE,OAAO,CAACK,MAAMC;YACZ,OACE,CAAChB,OAAOS,QAAQ,CAACM,SACjBd,QAAQgB,SAAS,CAACF,SAClBA,KAAKG,IAAI,KAAKb,UACdW,KAAKG,MAAM,IAAIX,wBAAwBW,MAAM,GAAG;QAEpD;QACAC,MAAM;IACR;IAGF,OAAO,CAAC,CAACV;AACX,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/Element/index.tsx"],"names":[],"mappings":"AA4BA,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/Element/index.tsx"],"names":[],"mappings":"AA4BA,OAAO,cAAc,CAAA;AAiCrB,eAAO,MAAM,WAAW,+CAwKvB,CAAA"}
|
|
@@ -25,7 +25,9 @@ const baseClass = 'rich-text-link';
|
|
|
25
25
|
newTab: data.newTab,
|
|
26
26
|
url: data.url
|
|
27
27
|
};
|
|
28
|
-
if (data.fields)
|
|
28
|
+
if (data.fields) {
|
|
29
|
+
newNode.fields = data.fields;
|
|
30
|
+
}
|
|
29
31
|
Transforms.setNodes(editor, newNode, {
|
|
30
32
|
at: parentPath
|
|
31
33
|
});
|
|
@@ -193,7 +195,9 @@ export const LinkElement = ()=>{
|
|
|
193
195
|
].filter(Boolean).join(' '),
|
|
194
196
|
onClick: ()=>setRenderPopup(true),
|
|
195
197
|
onKeyDown: (e)=>{
|
|
196
|
-
if (e.key === 'Enter')
|
|
198
|
+
if (e.key === 'Enter') {
|
|
199
|
+
setRenderPopup(true);
|
|
200
|
+
}
|
|
197
201
|
},
|
|
198
202
|
role: "button",
|
|
199
203
|
tabIndex: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/field/elements/link/Element/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Popup,\n Translation,\n useAuth,\n useConfig,\n useDocumentInfo,\n useDrawerSlug,\n useLocale,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport { deepCopyObject, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Editor, Node, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { LinkElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { LinkDrawer } from '../LinkDrawer/index.js'\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport { unwrapLink } from '../utilities.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-link'\n\n/**\n * This function is called when an existing link is edited.\n * When a link is first created, another function is called: {@link ../Button/index.tsx#insertLink}\n */\nconst insertChange = (editor, fields) => {\n const data = reduceFieldsToValues(fields, true)\n\n const [, parentPath] = Editor.above(editor)\n\n const newNode: Record<string, unknown> = {\n doc: data.doc,\n linkType: data.linkType,\n newTab: data.newTab,\n url: data.url,\n }\n\n if (data.fields) newNode.fields = data.fields\n\n Transforms.setNodes(editor, newNode, { at: parentPath })\n\n Transforms.delete(editor, { at: editor.selection.focus.path, unit: 'block' })\n Transforms.move(editor, { distance: 1, unit: 'offset' })\n Transforms.insertText(editor, String(data.text), { at: editor.selection.focus.path })\n\n ReactEditor.focus(editor)\n}\n\nexport const LinkElement = () => {\n const { attributes, children, editorRef, element, fieldProps, schemaPath } =\n useElement<LinkElementType>()\n\n const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`\n\n const {\n field: { richTextComponentMap },\n } = fieldProps\n const fields = richTextComponentMap.get(linkFieldsSchemaPath)\n\n const editor = useSlate()\n const { config } = useConfig()\n const { user } = useAuth()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal, toggleModal } = useModal()\n const [renderModal, setRenderModal] = useState(false)\n const [renderPopup, setRenderPopup] = useState(false)\n const [initialState, setInitialState] = useState<FormState>({})\n const { id, collectionSlug } = useDocumentInfo()\n\n const drawerSlug = useDrawerSlug('rich-text-link')\n\n const handleTogglePopup = useCallback((render) => {\n if (!render) {\n setRenderPopup(render)\n }\n }, [])\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const data = {\n doc: element.doc,\n fields: deepCopyObject(element.fields),\n linkType: element.linkType,\n newTab: element.newTab,\n text: Node.string(element),\n url: element.url,\n }\n\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n data,\n operation: 'update',\n schemaPath: fieldMapPath,\n },\n serverURL: config.serverURL,\n })\n\n setInitialState(state)\n }\n\n if (renderModal) {\n void awaitInitialState()\n }\n }, [renderModal, element, user, locale, t, collectionSlug, config, id, fieldMapPath])\n\n return (\n <span className={baseClass} {...attributes}>\n <span contentEditable={false} style={{ userSelect: 'none' }}>\n {renderModal && (\n <LinkDrawer\n drawerSlug={drawerSlug}\n fields={Array.isArray(fields) ? fields : []}\n handleClose={() => {\n toggleModal(drawerSlug)\n setRenderModal(false)\n }}\n handleModalSubmit={(fields) => {\n insertChange(editor, fields)\n closeModal(drawerSlug)\n setRenderModal(false)\n }}\n initialState={initialState}\n />\n )}\n <Popup\n boundingRef={editorRef}\n buttonType=\"none\"\n forceOpen={renderPopup}\n horizontalAlign=\"left\"\n onToggleOpen={handleTogglePopup}\n render={() => (\n <div className={`${baseClass}__popup`}>\n {element.linkType === 'internal' && element.doc?.relationTo && element.doc?.value && (\n <Translation\n elements={{\n '0': ({ children }) => (\n <a\n className={`${baseClass}__link-label`}\n href={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n >\n {children}\n </a>\n ),\n }}\n i18nKey=\"fields:linkedTo\"\n t={t}\n variables={{\n label: getTranslation(\n config.collections.find(({ slug }) => slug === element.doc.relationTo)?.labels\n ?.singular,\n i18n,\n ),\n }}\n />\n )}\n {(element.linkType === 'custom' || !element.linkType) && (\n <a\n className={`${baseClass}__link-label`}\n href={element.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={element.url}\n >\n {element.url}\n </a>\n )}\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-edit`}\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n setRenderPopup(false)\n openModal(drawerSlug)\n setRenderModal(true)\n }}\n round\n tooltip={t('general:edit')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-close`}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n unwrapLink(editor)\n }}\n round\n tooltip={t('general:remove')}\n />\n </div>\n )}\n size=\"fit-content\"\n verticalAlign=\"bottom\"\n />\n </span>\n <span\n className={[`${baseClass}__popup-toggler`].filter(Boolean).join(' ')}\n onClick={() => setRenderPopup(true)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') setRenderPopup(true)\n }}\n role=\"button\"\n tabIndex={0}\n >\n {children}\n </span>\n </span>\n )\n}\n"],"names":["getTranslation","Button","Popup","Translation","useAuth","useConfig","useDocumentInfo","useDrawerSlug","useLocale","useModal","useTranslation","getFormState","deepCopyObject","reduceFieldsToValues","React","useCallback","useEffect","useState","Editor","Node","Transforms","ReactEditor","useSlate","useElement","LinkDrawer","linkFieldsSchemaPath","unwrapLink","baseClass","insertChange","editor","fields","data","parentPath","above","newNode","doc","linkType","newTab","url","setNodes","at","delete","selection","focus","path","unit","move","distance","insertText","String","text","LinkElement","attributes","children","editorRef","element","fieldProps","schemaPath","fieldMapPath","field","richTextComponentMap","get","config","user","code","locale","i18n","t","closeModal","openModal","toggleModal","renderModal","setRenderModal","renderPopup","setRenderPopup","initialState","setInitialState","id","collectionSlug","drawerSlug","handleTogglePopup","render","awaitInitialState","string","state","apiRoute","routes","api","body","operation","serverURL","span","className","contentEditable","style","userSelect","Array","isArray","handleClose","handleModalSubmit","boundingRef","buttonType","forceOpen","horizontalAlign","onToggleOpen","div","relationTo","value","elements","a","href","admin","rel","target","title","i18nKey","variables","label","collections","find","slug","labels","singular","buttonStyle","icon","onClick","e","preventDefault","round","tooltip","size","verticalAlign","filter","Boolean","join","onKeyDown","key","role","tabIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/elements/link/Element/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Popup,\n Translation,\n useAuth,\n useConfig,\n useDocumentInfo,\n useDrawerSlug,\n useLocale,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport { deepCopyObject, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Editor, Node, Transforms } from 'slate'\nimport { ReactEditor, useSlate } from 'slate-react'\n\nimport type { LinkElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { LinkDrawer } from '../LinkDrawer/index.js'\nimport { linkFieldsSchemaPath } from '../shared.js'\nimport { unwrapLink } from '../utilities.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-link'\n\n/**\n * This function is called when an existing link is edited.\n * When a link is first created, another function is called: {@link ../Button/index.tsx#insertLink}\n */\nconst insertChange = (editor, fields) => {\n const data = reduceFieldsToValues(fields, true)\n\n const [, parentPath] = Editor.above(editor)\n\n const newNode: Record<string, unknown> = {\n doc: data.doc,\n linkType: data.linkType,\n newTab: data.newTab,\n url: data.url,\n }\n\n if (data.fields) {\n newNode.fields = data.fields\n }\n\n Transforms.setNodes(editor, newNode, { at: parentPath })\n\n Transforms.delete(editor, { at: editor.selection.focus.path, unit: 'block' })\n Transforms.move(editor, { distance: 1, unit: 'offset' })\n Transforms.insertText(editor, String(data.text), { at: editor.selection.focus.path })\n\n ReactEditor.focus(editor)\n}\n\nexport const LinkElement = () => {\n const { attributes, children, editorRef, element, fieldProps, schemaPath } =\n useElement<LinkElementType>()\n\n const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`\n\n const {\n field: { richTextComponentMap },\n } = fieldProps\n const fields = richTextComponentMap.get(linkFieldsSchemaPath)\n\n const editor = useSlate()\n const { config } = useConfig()\n const { user } = useAuth()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal, toggleModal } = useModal()\n const [renderModal, setRenderModal] = useState(false)\n const [renderPopup, setRenderPopup] = useState(false)\n const [initialState, setInitialState] = useState<FormState>({})\n const { id, collectionSlug } = useDocumentInfo()\n\n const drawerSlug = useDrawerSlug('rich-text-link')\n\n const handleTogglePopup = useCallback((render) => {\n if (!render) {\n setRenderPopup(render)\n }\n }, [])\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const data = {\n doc: element.doc,\n fields: deepCopyObject(element.fields),\n linkType: element.linkType,\n newTab: element.newTab,\n text: Node.string(element),\n url: element.url,\n }\n\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n data,\n operation: 'update',\n schemaPath: fieldMapPath,\n },\n serverURL: config.serverURL,\n })\n\n setInitialState(state)\n }\n\n if (renderModal) {\n void awaitInitialState()\n }\n }, [renderModal, element, user, locale, t, collectionSlug, config, id, fieldMapPath])\n\n return (\n <span className={baseClass} {...attributes}>\n <span contentEditable={false} style={{ userSelect: 'none' }}>\n {renderModal && (\n <LinkDrawer\n drawerSlug={drawerSlug}\n fields={Array.isArray(fields) ? fields : []}\n handleClose={() => {\n toggleModal(drawerSlug)\n setRenderModal(false)\n }}\n handleModalSubmit={(fields) => {\n insertChange(editor, fields)\n closeModal(drawerSlug)\n setRenderModal(false)\n }}\n initialState={initialState}\n />\n )}\n <Popup\n boundingRef={editorRef}\n buttonType=\"none\"\n forceOpen={renderPopup}\n horizontalAlign=\"left\"\n onToggleOpen={handleTogglePopup}\n render={() => (\n <div className={`${baseClass}__popup`}>\n {element.linkType === 'internal' && element.doc?.relationTo && element.doc?.value && (\n <Translation\n elements={{\n '0': ({ children }) => (\n <a\n className={`${baseClass}__link-label`}\n href={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={`${config.routes.admin}/collections/${element.doc.relationTo}/${element.doc.value}`}\n >\n {children}\n </a>\n ),\n }}\n i18nKey=\"fields:linkedTo\"\n t={t}\n variables={{\n label: getTranslation(\n config.collections.find(({ slug }) => slug === element.doc.relationTo)?.labels\n ?.singular,\n i18n,\n ),\n }}\n />\n )}\n {(element.linkType === 'custom' || !element.linkType) && (\n <a\n className={`${baseClass}__link-label`}\n href={element.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n title={element.url}\n >\n {element.url}\n </a>\n )}\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-edit`}\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n setRenderPopup(false)\n openModal(drawerSlug)\n setRenderModal(true)\n }}\n round\n tooltip={t('general:edit')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__link-close`}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n unwrapLink(editor)\n }}\n round\n tooltip={t('general:remove')}\n />\n </div>\n )}\n size=\"fit-content\"\n verticalAlign=\"bottom\"\n />\n </span>\n <span\n className={[`${baseClass}__popup-toggler`].filter(Boolean).join(' ')}\n onClick={() => setRenderPopup(true)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n setRenderPopup(true)\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n {children}\n </span>\n </span>\n )\n}\n"],"names":["getTranslation","Button","Popup","Translation","useAuth","useConfig","useDocumentInfo","useDrawerSlug","useLocale","useModal","useTranslation","getFormState","deepCopyObject","reduceFieldsToValues","React","useCallback","useEffect","useState","Editor","Node","Transforms","ReactEditor","useSlate","useElement","LinkDrawer","linkFieldsSchemaPath","unwrapLink","baseClass","insertChange","editor","fields","data","parentPath","above","newNode","doc","linkType","newTab","url","setNodes","at","delete","selection","focus","path","unit","move","distance","insertText","String","text","LinkElement","attributes","children","editorRef","element","fieldProps","schemaPath","fieldMapPath","field","richTextComponentMap","get","config","user","code","locale","i18n","t","closeModal","openModal","toggleModal","renderModal","setRenderModal","renderPopup","setRenderPopup","initialState","setInitialState","id","collectionSlug","drawerSlug","handleTogglePopup","render","awaitInitialState","string","state","apiRoute","routes","api","body","operation","serverURL","span","className","contentEditable","style","userSelect","Array","isArray","handleClose","handleModalSubmit","boundingRef","buttonType","forceOpen","horizontalAlign","onToggleOpen","div","relationTo","value","elements","a","href","admin","rel","target","title","i18nKey","variables","label","collections","find","slug","labels","singular","buttonStyle","icon","onClick","e","preventDefault","round","tooltip","size","verticalAlign","filter","Boolean","join","onKeyDown","key","role","tabIndex"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggleList.d.ts","sourceRoot":"","sources":["../../../src/field/elements/toggleList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmC,MAAM,OAAO,CAAA;AAQ/D,eAAO,MAAM,UAAU,WAAY,MAAM,UAAU,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"toggleList.d.ts","sourceRoot":"","sources":["../../../src/field/elements/toggleList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmC,MAAM,OAAO,CAAA;AAQ/D,eAAO,MAAM,UAAU,WAAY,MAAM,UAAU,MAAM,KAAG,IA6F3D,CAAA"}
|
|
@@ -6,8 +6,12 @@ import { listTypes } from './listTypes.js';
|
|
|
6
6
|
import { unwrapList } from './unwrapList.js';
|
|
7
7
|
export const toggleList = (editor, format)=>{
|
|
8
8
|
let currentListFormat;
|
|
9
|
-
if (isListActive(editor, 'ol'))
|
|
10
|
-
|
|
9
|
+
if (isListActive(editor, 'ol')) {
|
|
10
|
+
currentListFormat = 'ol';
|
|
11
|
+
}
|
|
12
|
+
if (isListActive(editor, 'ul')) {
|
|
13
|
+
currentListFormat = 'ul';
|
|
14
|
+
}
|
|
11
15
|
// If the format is currently active,
|
|
12
16
|
// remove the list
|
|
13
17
|
if (currentListFormat === format) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/field/elements/toggleList.tsx"],"sourcesContent":["import { Editor, Element, Node, Text, Transforms } from 'slate'\nimport { ReactEditor } from 'slate-react'\n\nimport { getCommonBlock } from './getCommonBlock.js'\nimport { isListActive } from './isListActive.js'\nimport { listTypes } from './listTypes.js'\nimport { unwrapList } from './unwrapList.js'\n\nexport const toggleList = (editor: Editor, format: string): void => {\n let currentListFormat: string\n\n if (isListActive(editor, 'ol')) currentListFormat = 'ol'\n if (isListActive(editor, 'ul')) currentListFormat = 'ul'\n\n // If the format is currently active,\n // remove the list\n if (currentListFormat === format) {\n const selectedLeaf = Node.descendant(editor, editor.selection.anchor.path)\n\n // If on an empty bullet, leave the above list alone\n // and unwrap only the active bullet\n if (Text.isText(selectedLeaf) && String(selectedLeaf.text).length === 0) {\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && listTypes.includes(n.type),\n mode: 'lowest',\n split: true,\n })\n\n Transforms.setNodes(editor, { type: undefined })\n } else {\n // Otherwise, we need to unset li on all lis in the parent list\n // and unwrap the parent list itself\n const [, listPath] = getCommonBlock(editor, (n) => Element.isElement(n) && n.type === format)\n unwrapList(editor, listPath)\n }\n\n // Otherwise, if a list is active and we are changing it,\n // change it\n } else if (currentListFormat && currentListFormat !== format) {\n Transforms.setNodes(\n editor,\n {\n type: format,\n },\n {\n match: (node) => Element.isElement(node) && listTypes.includes(node.type),\n mode: 'lowest',\n },\n )\n // Otherwise we can assume that we should just activate the list\n } else {\n Transforms.wrapNodes(editor, { type: format, children: [] })\n\n const [, parentNodePath] = getCommonBlock(\n editor,\n (node) => Element.isElement(node) && node.type === format,\n )\n\n // Only set li on nodes that don't have type\n Transforms.setNodes(\n editor,\n { type: 'li' },\n {\n match: (node, path) => {\n const match =\n Element.isElement(node) &&\n typeof node.type === 'undefined' &&\n path.length === parentNodePath.length + 1\n\n return match\n },\n voids: true,\n },\n )\n\n // Wrap nodes that do have a type with an li\n // so as to not lose their existing formatting\n const nodesToWrap = Array.from(\n Editor.nodes(editor, {\n match: (node, path) => {\n const match =\n Element.isElement(node) &&\n typeof node.type !== 'undefined' &&\n node.type !== 'li' &&\n path.length === parentNodePath.length + 1\n\n return match\n },\n }),\n )\n\n nodesToWrap.forEach(([, path]) => {\n Transforms.wrapNodes(editor, { type: 'li', children: [] }, { at: path })\n })\n }\n\n ReactEditor.focus(editor)\n}\n"],"names":["Editor","Element","Node","Text","Transforms","ReactEditor","getCommonBlock","isListActive","listTypes","unwrapList","toggleList","editor","format","currentListFormat","selectedLeaf","descendant","selection","anchor","path","isText","String","text","length","unwrapNodes","match","n","isElement","includes","type","mode","split","setNodes","undefined","listPath","node","wrapNodes","children","parentNodePath","voids","nodesToWrap","Array","from","nodes","forEach","at","focus"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,QAAO;AAC/D,SAASC,WAAW,QAAQ,cAAa;AAEzC,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,OAAO,MAAMC,aAAa,CAACC,QAAgBC;IACzC,IAAIC;IAEJ,IAAIN,aAAaI,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../src/field/elements/toggleList.tsx"],"sourcesContent":["import { Editor, Element, Node, Text, Transforms } from 'slate'\nimport { ReactEditor } from 'slate-react'\n\nimport { getCommonBlock } from './getCommonBlock.js'\nimport { isListActive } from './isListActive.js'\nimport { listTypes } from './listTypes.js'\nimport { unwrapList } from './unwrapList.js'\n\nexport const toggleList = (editor: Editor, format: string): void => {\n let currentListFormat: string\n\n if (isListActive(editor, 'ol')) {\n currentListFormat = 'ol'\n }\n if (isListActive(editor, 'ul')) {\n currentListFormat = 'ul'\n }\n\n // If the format is currently active,\n // remove the list\n if (currentListFormat === format) {\n const selectedLeaf = Node.descendant(editor, editor.selection.anchor.path)\n\n // If on an empty bullet, leave the above list alone\n // and unwrap only the active bullet\n if (Text.isText(selectedLeaf) && String(selectedLeaf.text).length === 0) {\n Transforms.unwrapNodes(editor, {\n match: (n) => Element.isElement(n) && listTypes.includes(n.type),\n mode: 'lowest',\n split: true,\n })\n\n Transforms.setNodes(editor, { type: undefined })\n } else {\n // Otherwise, we need to unset li on all lis in the parent list\n // and unwrap the parent list itself\n const [, listPath] = getCommonBlock(editor, (n) => Element.isElement(n) && n.type === format)\n unwrapList(editor, listPath)\n }\n\n // Otherwise, if a list is active and we are changing it,\n // change it\n } else if (currentListFormat && currentListFormat !== format) {\n Transforms.setNodes(\n editor,\n {\n type: format,\n },\n {\n match: (node) => Element.isElement(node) && listTypes.includes(node.type),\n mode: 'lowest',\n },\n )\n // Otherwise we can assume that we should just activate the list\n } else {\n Transforms.wrapNodes(editor, { type: format, children: [] })\n\n const [, parentNodePath] = getCommonBlock(\n editor,\n (node) => Element.isElement(node) && node.type === format,\n )\n\n // Only set li on nodes that don't have type\n Transforms.setNodes(\n editor,\n { type: 'li' },\n {\n match: (node, path) => {\n const match =\n Element.isElement(node) &&\n typeof node.type === 'undefined' &&\n path.length === parentNodePath.length + 1\n\n return match\n },\n voids: true,\n },\n )\n\n // Wrap nodes that do have a type with an li\n // so as to not lose their existing formatting\n const nodesToWrap = Array.from(\n Editor.nodes(editor, {\n match: (node, path) => {\n const match =\n Element.isElement(node) &&\n typeof node.type !== 'undefined' &&\n node.type !== 'li' &&\n path.length === parentNodePath.length + 1\n\n return match\n },\n }),\n )\n\n nodesToWrap.forEach(([, path]) => {\n Transforms.wrapNodes(editor, { type: 'li', children: [] }, { at: path })\n })\n }\n\n ReactEditor.focus(editor)\n}\n"],"names":["Editor","Element","Node","Text","Transforms","ReactEditor","getCommonBlock","isListActive","listTypes","unwrapList","toggleList","editor","format","currentListFormat","selectedLeaf","descendant","selection","anchor","path","isText","String","text","length","unwrapNodes","match","n","isElement","includes","type","mode","split","setNodes","undefined","listPath","node","wrapNodes","children","parentNodePath","voids","nodesToWrap","Array","from","nodes","forEach","at","focus"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,QAAO;AAC/D,SAASC,WAAW,QAAQ,cAAa;AAEzC,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,OAAO,MAAMC,aAAa,CAACC,QAAgBC;IACzC,IAAIC;IAEJ,IAAIN,aAAaI,QAAQ,OAAO;QAC9BE,oBAAoB;IACtB;IACA,IAAIN,aAAaI,QAAQ,OAAO;QAC9BE,oBAAoB;IACtB;IAEA,qCAAqC;IACrC,kBAAkB;IAClB,IAAIA,sBAAsBD,QAAQ;QAChC,MAAME,eAAeZ,KAAKa,UAAU,CAACJ,QAAQA,OAAOK,SAAS,CAACC,MAAM,CAACC,IAAI;QAEzE,oDAAoD;QACpD,oCAAoC;QACpC,IAAIf,KAAKgB,MAAM,CAACL,iBAAiBM,OAAON,aAAaO,IAAI,EAAEC,MAAM,KAAK,GAAG;YACvElB,WAAWmB,WAAW,CAACZ,QAAQ;gBAC7Ba,OAAO,CAACC,IAAMxB,QAAQyB,SAAS,CAACD,MAAMjB,UAAUmB,QAAQ,CAACF,EAAEG,IAAI;gBAC/DC,MAAM;gBACNC,OAAO;YACT;YAEA1B,WAAW2B,QAAQ,CAACpB,QAAQ;gBAAEiB,MAAMI;YAAU;QAChD,OAAO;YACL,+DAA+D;YAC/D,oCAAoC;YACpC,MAAM,GAAGC,SAAS,GAAG3B,eAAeK,QAAQ,CAACc,IAAMxB,QAAQyB,SAAS,CAACD,MAAMA,EAAEG,IAAI,KAAKhB;YACtFH,WAAWE,QAAQsB;QACrB;IAEA,yDAAyD;IACzD,YAAY;IACd,OAAO,IAAIpB,qBAAqBA,sBAAsBD,QAAQ;QAC5DR,WAAW2B,QAAQ,CACjBpB,QACA;YACEiB,MAAMhB;QACR,GACA;YACEY,OAAO,CAACU,OAASjC,QAAQyB,SAAS,CAACQ,SAAS1B,UAAUmB,QAAQ,CAACO,KAAKN,IAAI;YACxEC,MAAM;QACR;IAEF,gEAAgE;IAClE,OAAO;QACLzB,WAAW+B,SAAS,CAACxB,QAAQ;YAAEiB,MAAMhB;YAAQwB,UAAU,EAAE;QAAC;QAE1D,MAAM,GAAGC,eAAe,GAAG/B,eACzBK,QACA,CAACuB,OAASjC,QAAQyB,SAAS,CAACQ,SAASA,KAAKN,IAAI,KAAKhB;QAGrD,4CAA4C;QAC5CR,WAAW2B,QAAQ,CACjBpB,QACA;YAAEiB,MAAM;QAAK,GACb;YACEJ,OAAO,CAACU,MAAMhB;gBACZ,MAAMM,QACJvB,QAAQyB,SAAS,CAACQ,SAClB,OAAOA,KAAKN,IAAI,KAAK,eACrBV,KAAKI,MAAM,KAAKe,eAAef,MAAM,GAAG;gBAE1C,OAAOE;YACT;YACAc,OAAO;QACT;QAGF,4CAA4C;QAC5C,8CAA8C;QAC9C,MAAMC,cAAcC,MAAMC,IAAI,CAC5BzC,OAAO0C,KAAK,CAAC/B,QAAQ;YACnBa,OAAO,CAACU,MAAMhB;gBACZ,MAAMM,QACJvB,QAAQyB,SAAS,CAACQ,SAClB,OAAOA,KAAKN,IAAI,KAAK,eACrBM,KAAKN,IAAI,KAAK,QACdV,KAAKI,MAAM,KAAKe,eAAef,MAAM,GAAG;gBAE1C,OAAOE;YACT;QACF;QAGFe,YAAYI,OAAO,CAAC,CAAC,GAAGzB,KAAK;YAC3Bd,WAAW+B,SAAS,CAACxB,QAAQ;gBAAEiB,MAAM;gBAAMQ,UAAU,EAAE;YAAC,GAAG;gBAAEQ,IAAI1B;YAAK;QACxE;IACF;IAEAb,YAAYwC,KAAK,CAAClC;AACpB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA0B,aAAa,EAAE,MAAM,SAAS,CAAA;AAcpE,OAAO,KAA4C,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA0B,aAAa,EAAE,MAAM,SAAS,CAAA;AAcpE,OAAO,KAA4C,MAAM,OAAO,CAAA;AAShE,OAAO,cAAc,CAAA;AASrB,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,GAAG,aAAa,CAAA;AA0LjB,eAAO,MAAM,aAAa,UAAW,KAAK,KAAG,KAAK,CAAC,SAMlD,CAAA"}
|
|
@@ -8,8 +8,8 @@ import { ReactEditor, useFocused, useSelected, useSlateStatic } from 'slate-reac
|
|
|
8
8
|
import { useElement } from '../../../providers/ElementProvider.js';
|
|
9
9
|
import { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition.js';
|
|
10
10
|
import { uploadFieldsSchemaPath, uploadName } from '../shared.js';
|
|
11
|
-
import { UploadDrawer } from './UploadDrawer/index.js';
|
|
12
11
|
import './index.scss';
|
|
12
|
+
import { UploadDrawer } from './UploadDrawer/index.js';
|
|
13
13
|
const baseClass = 'rich-text-upload';
|
|
14
14
|
const initialParams = {
|
|
15
15
|
depth: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, FormFieldBase } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n DrawerToggler,\n File,\n useConfig,\n useDocumentDrawer,\n useDrawerSlug,\n useListDrawer,\n usePayloadAPI,\n useTranslation,\n} from '@payloadcms/ui'\nimport React, { useCallback, useReducer, useState } from 'react'\nimport { Transforms } from 'slate'\nimport { ReactEditor, useFocused, useSelected, useSlateStatic } from 'slate-react'\n\nimport type { UploadElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition.js'\nimport { uploadFieldsSchemaPath, uploadName } from '../shared.js'\nimport { UploadDrawer } from './UploadDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\ntype Props = {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n} & FormFieldBase\n\nconst UploadElementComponent: React.FC<{ enabledCollectionSlugs?: string[] } & Props> = ({\n enabledCollectionSlugs,\n}) => {\n const {\n attributes,\n children,\n element: { relationTo, value },\n element,\n fieldProps,\n schemaPath,\n } = useElement<UploadElementType>()\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection, setRelatedCollection] = useState<ClientCollectionConfig>(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const drawerSlug = useDrawerSlug('upload-drawer')\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer: closeListDrawer }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n selectedCollection: relatedCollection.slug,\n })\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value?.id,\n collectionSlug: relatedCollection.slug,\n })\n\n const editor = useSlateStatic()\n const selected = useSelected()\n const focused = useFocused()\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value?.id}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.removeNodes(editor, { at: elementPath })\n }, [editor, element])\n\n const updateUpload = useCallback(\n (json) => {\n const { doc } = json\n\n const newNode = {\n fields: doc,\n }\n\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(editor, newNode, { at: elementPath })\n\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDrawer()\n },\n [editor, element, setParams, cacheBust, closeDrawer],\n )\n\n const swapUpload = React.useCallback(\n ({ collectionSlug, docID }) => {\n const newNode = {\n type: uploadName,\n children: [{ text: ' ' }],\n relationTo: collectionSlug,\n value: { id: docID },\n }\n\n const elementPath = ReactEditor.findPath(editor, element)\n\n setRelatedCollection(collections.find((coll) => coll.slug === collectionSlug))\n\n Transforms.setNodes(editor, newNode, { at: elementPath })\n\n dispatchCacheBust()\n closeListDrawer()\n },\n [closeListDrawer, editor, element, collections],\n )\n\n const relatedFieldSchemaPath = `${uploadFieldsSchemaPath}.${relatedCollection.slug}`\n const customFieldsMap = fieldProps.field.richTextComponentMap.get(relatedFieldSchemaPath)\n\n return (\n <div\n className={[baseClass, selected && focused && `${baseClass}--selected`]\n .filter(Boolean)\n .join(' ')}\n contentEditable={false}\n {...attributes}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__topRow`}>\n {/* TODO: migrate to use Thumbnail component */}\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC ? <img alt={data?.filename} src={thumbnailSRC} /> : <File />}\n </div>\n <div className={`${baseClass}__topRowRightPanel`}>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n <div className={`${baseClass}__actions`}>\n {Boolean(customFieldsMap) && (\n <DrawerToggler\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={fieldProps?.field?.admin?.readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n el=\"div\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n }}\n round\n tooltip={t('fields:editRelationship')}\n />\n </DrawerToggler>\n )}\n <ListDrawerToggler\n className={`${baseClass}__list-drawer-toggler`}\n disabled={fieldProps?.field?.admin?.readOnly}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={fieldProps?.field?.admin?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n // do nothing\n }}\n round\n tooltip={t('fields:swapUpload')}\n />\n </ListDrawerToggler>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={fieldProps?.field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n tooltip={t('fields:removeUpload')}\n />\n </div>\n </div>\n </div>\n <div className={`${baseClass}__bottomRow`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong>{data?.filename}</strong>\n </DocumentDrawerToggler>\n </div>\n </div>\n {children}\n {value?.id && <DocumentDrawer onSave={updateUpload} />}\n <ListDrawer onSelect={swapUpload} />\n <UploadDrawer {...{ drawerSlug, element, fieldProps, relatedCollection, schemaPath }} />\n </div>\n )\n}\n\nexport const UploadElement = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <UploadElementComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["getTranslation","Button","DrawerToggler","File","useConfig","useDocumentDrawer","useDrawerSlug","useListDrawer","usePayloadAPI","useTranslation","React","useCallback","useReducer","useState","Transforms","ReactEditor","useFocused","useSelected","useSlateStatic","useElement","EnabledRelationshipsCondition","uploadFieldsSchemaPath","uploadName","UploadDrawer","baseClass","initialParams","depth","UploadElementComponent","enabledCollectionSlugs","attributes","children","element","relationTo","value","fieldProps","schemaPath","config","collections","routes","api","serverURL","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","setRelatedCollection","find","coll","slug","drawerSlug","ListDrawer","ListDrawerToggler","closeDrawer","closeListDrawer","collectionSlugs","selectedCollection","DocumentDrawer","DocumentDrawerToggler","id","collectionSlug","editor","selected","focused","data","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","elementPath","findPath","removeNodes","at","updateUpload","json","doc","newNode","fields","setNodes","swapUpload","docID","type","text","relatedFieldSchemaPath","customFieldsMap","field","richTextComponentMap","get","div","className","filter","Boolean","join","contentEditable","img","alt","filename","src","labels","singular","disabled","admin","readOnly","buttonStyle","el","icon","onClick","e","preventDefault","round","tooltip","strong","onSave","onSelect","UploadElement","props","uploads"],"mappings":"AAAA;;AAIA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SACEC,MAAM,EACNC,aAAa,EACbC,IAAI,EACJC,SAAS,EACTC,iBAAiB,EACjBC,aAAa,EACbC,aAAa,EACbC,aAAa,EACbC,cAAc,QACT,iBAAgB;AACvB,OAAOC,SAASC,WAAW,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,QAAO;AAChE,SAASC,UAAU,QAAQ,QAAO;AAClC,SAASC,WAAW,EAAEC,UAAU,EAAEC,WAAW,EAAEC,cAAc,QAAQ,cAAa;AAIlF,SAASC,UAAU,QAAQ,wCAAuC;AAClE,SAASC,6BAA6B,QAAQ,yCAAwC;AACtF,SAASC,sBAAsB,EAAEC,UAAU,QAAQ,eAAc;AACjE,SAASC,YAAY,QAAQ,0BAAyB;AACtD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,MAAMC,gBAAgB;IACpBC,OAAO;AACT;AAOA,MAAMC,yBAAkF,CAAC,EACvFC,sBAAsB,EACvB;IACC,MAAM,EACJC,UAAU,EACVC,QAAQ,EACRC,SAAS,EAAEC,UAAU,EAAEC,KAAK,EAAE,EAC9BF,OAAO,EACPG,UAAU,EACVC,UAAU,EACX,GAAGhB;IAEJ,MAAM,EACJiB,QAAQ,EACNC,WAAW,EACXC,QAAQ,EAAEC,GAAG,EAAE,EACfC,SAAS,EACV,EACF,GAAGpC;IACJ,MAAM,EAAEqC,IAAI,EAAEC,CAAC,EAAE,GAAGjC;IACpB,MAAM,CAACkC,WAAWC,kBAAkB,GAAGhC,WAAW,CAACiC,QAAUA,QAAQ,GAAG;IACxE,MAAM,CAACC,mBAAmBC,qBAAqB,GAAGlC,SAAiC,IACjFwB,YAAYW,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAKlB;IAG3C,MAAMmB,aAAa7C,cAAc;IAEjC,MAAM,CAAC8C,YAAYC,mBAAmB,EAAEC,aAAaC,eAAe,EAAE,CAAC,GAAGhD,cAAc;QACtFiD,iBAAiB5B;QACjB6B,oBAAoBX,kBAAkBI,IAAI;IAC5C;IAEA,MAAM,CAACQ,gBAAgBC,uBAAuB,EAAEL,WAAW,EAAE,CAAC,GAAGjD,kBAAkB;QACjFuD,IAAI3B,OAAO2B;QACXC,gBAAgBf,kBAAkBI,IAAI;IACxC;IAEA,MAAMY,SAAS5C;IACf,MAAM6C,WAAW9C;IACjB,MAAM+C,UAAUhD;IAEhB,8BAA8B;IAC9B,MAAM,CAAC,EAAEiD,IAAI,EAAE,EAAE,EAAEC,SAAS,EAAE,CAAC,GAAG1D,cAChC,CAAC,EAAEgC,UAAU,EAAED,IAAI,CAAC,EAAEO,kBAAkBI,IAAI,CAAC,CAAC,EAAEjB,OAAO2B,GAAG,CAAC,EAC3D;QAAEnC;IAAc;IAGlB,MAAM0C,eAAeF,MAAMG,gBAAgBH,MAAMI;IAEjD,MAAMC,eAAe3D,YAAY;QAC/B,MAAM4D,cAAcxD,YAAYyD,QAAQ,CAACV,QAAQ/B;QAEjDjB,WAAW2D,WAAW,CAACX,QAAQ;YAAEY,IAAIH;QAAY;IACnD,GAAG;QAACT;QAAQ/B;KAAQ;IAEpB,MAAM4C,eAAehE,YACnB,CAACiE;QACC,MAAM,EAAEC,GAAG,EAAE,GAAGD;QAEhB,MAAME,UAAU;YACdC,QAAQF;QACV;QAEA,MAAMN,cAAcxD,YAAYyD,QAAQ,CAACV,QAAQ/B;QAEjDjB,WAAWkE,QAAQ,CAAClB,QAAQgB,SAAS;YAAEJ,IAAIH;QAAY;QAEvDL,UAAU;YACR,GAAGzC,aAAa;YAChBkB;QACF;QAEAC;QACAU;IACF,GACA;QAACQ;QAAQ/B;QAASmC;QAAWvB;QAAWW;KAAY;IAGtD,MAAM2B,aAAavE,MAAMC,WAAW,CAClC,CAAC,EAAEkD,cAAc,EAAEqB,KAAK,EAAE;QACxB,MAAMJ,UAAU;YACdK,MAAM7D;YACNQ,UAAU;gBAAC;oBAAEsD,MAAM;gBAAI;aAAE;YACzBpD,YAAY6B;YACZ5B,OAAO;gBAAE2B,IAAIsB;YAAM;QACrB;QAEA,MAAMX,cAAcxD,YAAYyD,QAAQ,CAACV,QAAQ/B;QAEjDgB,qBAAqBV,YAAYW,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAKW;QAE9D/C,WAAWkE,QAAQ,CAAClB,QAAQgB,SAAS;YAAEJ,IAAIH;QAAY;QAEvD3B;QACAW;IACF,GACA;QAACA;QAAiBO;QAAQ/B;QAASM;KAAY;IAGjD,MAAMgD,yBAAyB,CAAC,EAAEhE,uBAAuB,CAAC,EAAEyB,kBAAkBI,IAAI,CAAC,CAAC;IACpF,MAAMoC,kBAAkBpD,WAAWqD,KAAK,CAACC,oBAAoB,CAACC,GAAG,CAACJ;IAElE,qBACE,MAACK;QACCC,WAAW;YAACnE;YAAWuC,YAAYC,WAAW,CAAC,EAAExC,UAAU,UAAU,CAAC;SAAC,CACpEoE,MAAM,CAACC,SACPC,IAAI,CAAC;QACRC,iBAAiB;QAChB,GAAGlE,UAAU;;0BAEd,MAAC6D;gBAAIC,WAAW,CAAC,EAAEnE,UAAU,MAAM,CAAC;;kCAClC,MAACkE;wBAAIC,WAAW,CAAC,EAAEnE,UAAU,QAAQ,CAAC;;0CAEpC,KAACkE;gCAAIC,WAAW,CAAC,EAAEnE,UAAU,WAAW,CAAC;0CACtC2C,6BAAe,KAAC6B;oCAAIC,KAAKhC,MAAMiC;oCAAUC,KAAKhC;mDAAmB,KAAChE;;0CAErE,MAACuF;gCAAIC,WAAW,CAAC,EAAEnE,UAAU,kBAAkB,CAAC;;kDAC9C,KAACkE;wCAAIC,WAAW,CAAC,EAAEnE,UAAU,iBAAiB,CAAC;kDAC5CxB,eAAe8C,kBAAkBsD,MAAM,CAACC,QAAQ,EAAE5D;;kDAErD,MAACiD;wCAAIC,WAAW,CAAC,EAAEnE,UAAU,SAAS,CAAC;;4CACpCqE,QAAQP,kCACP,KAACpF;gDACCyF,WAAW,CAAC,EAAEnE,UAAU,uBAAuB,CAAC;gDAChD8E,UAAUpE,YAAYqD,OAAOgB,OAAOC;gDACpCtD,MAAMC;0DAEN,cAAA,KAAClD;oDACCwG,aAAY;oDACZC,IAAG;oDACHC,MAAK;oDACLC,SAAS,CAACC;wDACRA,EAAEC,cAAc;oDAClB;oDACAC,KAAK;oDACLC,SAAStE,EAAE;;;0DAIjB,KAACW;gDACCsC,WAAW,CAAC,EAAEnE,UAAU,qBAAqB,CAAC;gDAC9C8E,UAAUpE,YAAYqD,OAAOgB,OAAOC;0DAEpC,cAAA,KAACvG;oDACCwG,aAAY;oDACZH,UAAUpE,YAAYqD,OAAOgB,OAAOC;oDACpCE,IAAG;oDACHC,MAAK;oDACLC,SAAS;oDACP,aAAa;oDACf;oDACAG,KAAK;oDACLC,SAAStE,EAAE;;;0DAGf,KAACzC;gDACCwG,aAAY;gDACZd,WAAW,CAAC,EAAEnE,UAAU,cAAc,CAAC;gDACvC8E,UAAUpE,YAAYqD,OAAOgB,OAAOC;gDACpCG,MAAK;gDACLC,SAAS,CAACC;oDACRA,EAAEC,cAAc;oDAChBxC;gDACF;gDACAyC,KAAK;gDACLC,SAAStE,EAAE;;;;;;;;kCAKnB,KAACgD;wBAAIC,WAAW,CAAC,EAAEnE,UAAU,WAAW,CAAC;kCACvC,cAAA,KAACmC;4BAAsBgC,WAAW,CAAC,EAAEnE,UAAU,oBAAoB,CAAC;sCAClE,cAAA,KAACyF;0CAAQhD,MAAMiC;;;;;;YAIpBpE;YACAG,OAAO2B,oBAAM,KAACF;gBAAewD,QAAQvC;;0BACtC,KAACvB;gBAAW+D,UAAUlC;;0BACtB,KAAC1D;gBAAmB4B;gBAAYpB;gBAASG;gBAAYY;gBAAmBX;;;;AAG9E;AAEA,OAAO,MAAMiF,gBAAgB,CAACC;IAC5B,qBACE,KAACjG;QAA+B,GAAGiG,KAAK;QAAEC,OAAO;kBAC/C,cAAA,KAAC3F;YAAwB,GAAG0F,KAAK;;;AAGvC,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, FormFieldBase } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n DrawerToggler,\n File,\n useConfig,\n useDocumentDrawer,\n useDrawerSlug,\n useListDrawer,\n usePayloadAPI,\n useTranslation,\n} from '@payloadcms/ui'\nimport React, { useCallback, useReducer, useState } from 'react'\nimport { Transforms } from 'slate'\nimport { ReactEditor, useFocused, useSelected, useSlateStatic } from 'slate-react'\n\nimport type { UploadElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition.js'\nimport { uploadFieldsSchemaPath, uploadName } from '../shared.js'\nimport './index.scss'\nimport { UploadDrawer } from './UploadDrawer/index.js'\n\nconst baseClass = 'rich-text-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\ntype Props = {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n} & FormFieldBase\n\nconst UploadElementComponent: React.FC<{ enabledCollectionSlugs?: string[] } & Props> = ({\n enabledCollectionSlugs,\n}) => {\n const {\n attributes,\n children,\n element: { relationTo, value },\n element,\n fieldProps,\n schemaPath,\n } = useElement<UploadElementType>()\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection, setRelatedCollection] = useState<ClientCollectionConfig>(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const drawerSlug = useDrawerSlug('upload-drawer')\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer: closeListDrawer }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n selectedCollection: relatedCollection.slug,\n })\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value?.id,\n collectionSlug: relatedCollection.slug,\n })\n\n const editor = useSlateStatic()\n const selected = useSelected()\n const focused = useFocused()\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value?.id}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.removeNodes(editor, { at: elementPath })\n }, [editor, element])\n\n const updateUpload = useCallback(\n (json) => {\n const { doc } = json\n\n const newNode = {\n fields: doc,\n }\n\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(editor, newNode, { at: elementPath })\n\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDrawer()\n },\n [editor, element, setParams, cacheBust, closeDrawer],\n )\n\n const swapUpload = React.useCallback(\n ({ collectionSlug, docID }) => {\n const newNode = {\n type: uploadName,\n children: [{ text: ' ' }],\n relationTo: collectionSlug,\n value: { id: docID },\n }\n\n const elementPath = ReactEditor.findPath(editor, element)\n\n setRelatedCollection(collections.find((coll) => coll.slug === collectionSlug))\n\n Transforms.setNodes(editor, newNode, { at: elementPath })\n\n dispatchCacheBust()\n closeListDrawer()\n },\n [closeListDrawer, editor, element, collections],\n )\n\n const relatedFieldSchemaPath = `${uploadFieldsSchemaPath}.${relatedCollection.slug}`\n const customFieldsMap = fieldProps.field.richTextComponentMap.get(relatedFieldSchemaPath)\n\n return (\n <div\n className={[baseClass, selected && focused && `${baseClass}--selected`]\n .filter(Boolean)\n .join(' ')}\n contentEditable={false}\n {...attributes}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__topRow`}>\n {/* TODO: migrate to use Thumbnail component */}\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC ? <img alt={data?.filename} src={thumbnailSRC} /> : <File />}\n </div>\n <div className={`${baseClass}__topRowRightPanel`}>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n <div className={`${baseClass}__actions`}>\n {Boolean(customFieldsMap) && (\n <DrawerToggler\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={fieldProps?.field?.admin?.readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n el=\"div\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n }}\n round\n tooltip={t('fields:editRelationship')}\n />\n </DrawerToggler>\n )}\n <ListDrawerToggler\n className={`${baseClass}__list-drawer-toggler`}\n disabled={fieldProps?.field?.admin?.readOnly}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={fieldProps?.field?.admin?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n // do nothing\n }}\n round\n tooltip={t('fields:swapUpload')}\n />\n </ListDrawerToggler>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={fieldProps?.field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n tooltip={t('fields:removeUpload')}\n />\n </div>\n </div>\n </div>\n <div className={`${baseClass}__bottomRow`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong>{data?.filename}</strong>\n </DocumentDrawerToggler>\n </div>\n </div>\n {children}\n {value?.id && <DocumentDrawer onSave={updateUpload} />}\n <ListDrawer onSelect={swapUpload} />\n <UploadDrawer {...{ drawerSlug, element, fieldProps, relatedCollection, schemaPath }} />\n </div>\n )\n}\n\nexport const UploadElement = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <UploadElementComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["getTranslation","Button","DrawerToggler","File","useConfig","useDocumentDrawer","useDrawerSlug","useListDrawer","usePayloadAPI","useTranslation","React","useCallback","useReducer","useState","Transforms","ReactEditor","useFocused","useSelected","useSlateStatic","useElement","EnabledRelationshipsCondition","uploadFieldsSchemaPath","uploadName","UploadDrawer","baseClass","initialParams","depth","UploadElementComponent","enabledCollectionSlugs","attributes","children","element","relationTo","value","fieldProps","schemaPath","config","collections","routes","api","serverURL","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","setRelatedCollection","find","coll","slug","drawerSlug","ListDrawer","ListDrawerToggler","closeDrawer","closeListDrawer","collectionSlugs","selectedCollection","DocumentDrawer","DocumentDrawerToggler","id","collectionSlug","editor","selected","focused","data","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","elementPath","findPath","removeNodes","at","updateUpload","json","doc","newNode","fields","setNodes","swapUpload","docID","type","text","relatedFieldSchemaPath","customFieldsMap","field","richTextComponentMap","get","div","className","filter","Boolean","join","contentEditable","img","alt","filename","src","labels","singular","disabled","admin","readOnly","buttonStyle","el","icon","onClick","e","preventDefault","round","tooltip","strong","onSave","onSelect","UploadElement","props","uploads"],"mappings":"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"}
|
package/dist/field/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { RenderComponent, ShimmerEffect, useClientFunctions, useFieldProps } from '@payloadcms/ui';
|
|
4
|
-
import React, {
|
|
4
|
+
import React, { lazy, Suspense, useEffect, useState } from 'react';
|
|
5
5
|
import { createFeatureMap } from './createFeatureMap.js';
|
|
6
6
|
const RichTextEditor = /*#__PURE__*/ lazy(()=>import('./RichText.js').then((module)=>({
|
|
7
7
|
default: module.RichText
|
package/dist/field/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport { RenderComponent, ShimmerEffect, useClientFunctions, useFieldProps } from '@payloadcms/ui'\nimport React, {
|
|
1
|
+
{"version":3,"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport { RenderComponent, ShimmerEffect, useClientFunctions, useFieldProps } from '@payloadcms/ui'\nimport React, { lazy, Suspense, useEffect, useState } from 'react'\n\nimport type { RichTextPlugin, SlateFieldProps } from '../types.js'\nimport type { EnabledFeatures } from './types.js'\n\nimport { createFeatureMap } from './createFeatureMap.js'\n\nconst RichTextEditor = lazy(() =>\n import('./RichText.js').then((module) => ({\n default: module.RichText,\n })),\n)\n\nexport const RichTextField: React.FC<SlateFieldProps> = (props) => {\n const {\n field: { richTextComponentMap },\n } = props\n\n const { schemaPath } = useFieldProps()\n const clientFunctions = useClientFunctions()\n const [hasLoadedPlugins, setHasLoadedPlugins] = useState(false)\n\n const [features] = useState<EnabledFeatures>(() => {\n return createFeatureMap(richTextComponentMap as any)\n })\n\n const [plugins, setPlugins] = useState<RichTextPlugin[]>([])\n\n useEffect(() => {\n if (!hasLoadedPlugins) {\n const plugins: RichTextPlugin[] = []\n\n Object.entries(clientFunctions).forEach(([key, plugin]) => {\n if (key.startsWith(`slatePlugin.${schemaPath}.`)) {\n plugins.push(plugin)\n }\n })\n\n if (plugins.length === features.plugins.length) {\n setPlugins(plugins)\n setHasLoadedPlugins(true)\n }\n }\n }, [hasLoadedPlugins, clientFunctions, schemaPath, features.plugins.length])\n\n if (!hasLoadedPlugins) {\n return (\n <React.Fragment>\n {Array.isArray(features.plugins) &&\n features.plugins.map((Plugin, i) => {\n return (\n <React.Fragment key={i}>\n <RenderComponent mappedComponent={Plugin} />\n </React.Fragment>\n )\n })}\n </React.Fragment>\n )\n }\n\n return (\n <Suspense fallback={<ShimmerEffect height=\"35vh\" />}>\n <RichTextEditor\n {...props}\n elements={features.elements}\n leaves={features.leaves}\n plugins={plugins}\n />\n </Suspense>\n )\n}\n"],"names":["RenderComponent","ShimmerEffect","useClientFunctions","useFieldProps","React","lazy","Suspense","useEffect","useState","createFeatureMap","RichTextEditor","then","module","default","RichText","RichTextField","props","field","richTextComponentMap","schemaPath","clientFunctions","hasLoadedPlugins","setHasLoadedPlugins","features","plugins","setPlugins","Object","entries","forEach","key","plugin","startsWith","push","length","Fragment","Array","isArray","map","Plugin","i","mappedComponent","fallback","height","elements","leaves"],"mappings":"AAAA;;AAEA,SAASA,eAAe,EAAEC,aAAa,EAAEC,kBAAkB,EAAEC,aAAa,QAAQ,iBAAgB;AAClG,OAAOC,SAASC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAKlE,SAASC,gBAAgB,QAAQ,wBAAuB;AAExD,MAAMC,+BAAiBL,KAAK,IAC1B,MAAM,CAAC,iBAAiBM,IAAI,CAAC,CAACC,SAAY,CAAA;YACxCC,SAASD,OAAOE,QAAQ;QAC1B,CAAA;AAGF,OAAO,MAAMC,gBAA2C,CAACC;IACvD,MAAM,EACJC,OAAO,EAAEC,oBAAoB,EAAE,EAChC,GAAGF;IAEJ,MAAM,EAAEG,UAAU,EAAE,GAAGhB;IACvB,MAAMiB,kBAAkBlB;IACxB,MAAM,CAACmB,kBAAkBC,oBAAoB,GAAGd,SAAS;IAEzD,MAAM,CAACe,SAAS,GAAGf,SAA0B;QAC3C,OAAOC,iBAAiBS;IAC1B;IAEA,MAAM,CAACM,SAASC,WAAW,GAAGjB,SAA2B,EAAE;IAE3DD,UAAU;QACR,IAAI,CAACc,kBAAkB;YACrB,MAAMG,UAA4B,EAAE;YAEpCE,OAAOC,OAAO,CAACP,iBAAiBQ,OAAO,CAAC,CAAC,CAACC,KAAKC,OAAO;gBACpD,IAAID,IAAIE,UAAU,CAAC,CAAC,YAAY,EAAEZ,WAAW,CAAC,CAAC,GAAG;oBAChDK,QAAQQ,IAAI,CAACF;gBACf;YACF;YAEA,IAAIN,QAAQS,MAAM,KAAKV,SAASC,OAAO,CAACS,MAAM,EAAE;gBAC9CR,WAAWD;gBACXF,oBAAoB;YACtB;QACF;IACF,GAAG;QAACD;QAAkBD;QAAiBD;QAAYI,SAASC,OAAO,CAACS,MAAM;KAAC;IAE3E,IAAI,CAACZ,kBAAkB;QACrB,qBACE,KAACjB,MAAM8B,QAAQ;sBACZC,MAAMC,OAAO,CAACb,SAASC,OAAO,KAC7BD,SAASC,OAAO,CAACa,GAAG,CAAC,CAACC,QAAQC;gBAC5B,qBACE,KAACnC,MAAM8B,QAAQ;8BACb,cAAA,KAAClC;wBAAgBwC,iBAAiBF;;mBADfC;YAIzB;;IAGR;IAEA,qBACE,KAACjC;QAASmC,wBAAU,KAACxC;YAAcyC,QAAO;;kBACxC,cAAA,KAAChC;YACE,GAAGM,KAAK;YACT2B,UAAUpB,SAASoB,QAAQ;YAC3BC,QAAQrB,SAASqB,MAAM;YACvBpB,SAASA;;;AAIjB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateComponentMap.d.ts","sourceRoot":"","sources":["../src/generateComponentMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuC,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAKhG,OAAO,KAAK,EAAE,gBAAgB,EAA6C,MAAM,YAAY,CAAA;AAO7F,eAAO,MAAM,uBAAuB,SAC3B,gBAAgB,KAAG,
|
|
1
|
+
{"version":3,"file":"generateComponentMap.d.ts","sourceRoot":"","sources":["../src/generateComponentMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuC,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAKhG,OAAO,KAAK,EAAE,gBAAgB,EAA6C,MAAM,YAAY,CAAA;AAO7F,eAAO,MAAM,uBAAuB,SAC3B,gBAAgB,KAAG,4BAgIzB,CAAA"}
|
|
@@ -35,7 +35,9 @@ export const getGenerateComponentMap = (args)=>({ createMappedComponent, i18n, i
|
|
|
35
35
|
if (element) {
|
|
36
36
|
const ElementButton = element.Button;
|
|
37
37
|
const ElementComponent = element.Element;
|
|
38
|
-
if (ElementButton)
|
|
38
|
+
if (ElementButton) {
|
|
39
|
+
componentMap.set(`element.button.${element.name}`, createMappedComponent(ElementButton, undefined, undefined, 'slate-ElementButton'));
|
|
40
|
+
}
|
|
39
41
|
componentMap.set(`element.component.${element.name}`, createMappedComponent(ElementComponent, undefined, undefined, 'slate-ElementComponent'));
|
|
40
42
|
if (Array.isArray(element.plugins)) {
|
|
41
43
|
element.plugins.forEach((Plugin, i)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generateComponentMap.tsx"],"sourcesContent":["import type { ClientField, Field, MappedComponent, RichTextGenerateComponentMap } from 'payload'\n\nimport { createClientFields } from '@payloadcms/ui/utilities/createClientConfig'\nimport { deepCopyObjectSimple } from 'payload'\n\nimport type { AdapterArguments, RichTextCustomElement, RichTextCustomLeaf } from './types.js'\n\nimport { elements as elementTypes } from './field/elements/index.js'\nimport { linkFieldsSchemaPath } from './field/elements/link/shared.js'\nimport { uploadFieldsSchemaPath } from './field/elements/upload/shared.js'\nimport { defaultLeaves as leafTypes } from './field/leaves/index.js'\n\nexport const getGenerateComponentMap =\n (args: AdapterArguments): RichTextGenerateComponentMap =>\n ({ createMappedComponent, i18n, importMap, payload }) => {\n const componentMap: Map<string, ClientField[] | MappedComponent> = new Map()\n\n ;(args?.admin?.leaves || Object.values(leafTypes)).forEach((leaf) => {\n let leafObject: RichTextCustomLeaf\n\n if (typeof leaf === 'object' && leaf !== null) {\n leafObject = leaf\n } else if (typeof leaf === 'string' && leafTypes[leaf]) {\n leafObject = leafTypes[leaf]\n }\n\n if (leafObject) {\n const LeafButton = leafObject.Button\n const LeafComponent = leafObject.Leaf\n\n componentMap.set(\n `leaf.button.${leafObject.name}`,\n createMappedComponent(LeafButton, undefined, undefined, 'slate-LeafButton'),\n )\n\n componentMap.set(\n `leaf.component.${leafObject.name}`,\n createMappedComponent(LeafComponent, undefined, undefined, 'slate-LeafComponent'),\n )\n\n if (Array.isArray(leafObject.plugins)) {\n leafObject.plugins.forEach((Plugin, i) => {\n componentMap.set(\n `leaf.plugin.${leafObject.name}.${i}`,\n createMappedComponent(Plugin, undefined, undefined, 'slate-LeafPlugin'),\n )\n })\n }\n }\n })\n ;(args?.admin?.elements || Object.values(elementTypes)).forEach((el) => {\n let element: RichTextCustomElement\n\n if (typeof el === 'object' && el !== null) {\n element = el\n } else if (typeof el === 'string' && elementTypes[el]) {\n element = elementTypes[el]\n }\n\n if (element) {\n const ElementButton = element.Button\n const ElementComponent = element.Element\n\n if (ElementButton)\n componentMap.set(\n `element.button.${element.name}`,\n createMappedComponent(ElementButton, undefined, undefined, 'slate-ElementButton'),\n )\n componentMap.set(\n `element.component.${element.name}`,\n createMappedComponent(ElementComponent, undefined, undefined, 'slate-ElementComponent'),\n )\n\n if (Array.isArray(element.plugins)) {\n element.plugins.forEach((Plugin, i) => {\n componentMap.set(\n `element.plugin.${element.name}.${i}`,\n createMappedComponent(Plugin, undefined, undefined, 'slate-ElementPlugin'),\n )\n })\n }\n\n switch (element.name) {\n case 'link': {\n let clientFields = deepCopyObjectSimple(\n args.admin?.link?.fields,\n ) as unknown as ClientField[]\n clientFields = createClientFields({\n clientFields,\n createMappedComponent,\n fields: args.admin?.link?.fields as Field[],\n i18n,\n importMap,\n payload,\n })\n\n componentMap.set(linkFieldsSchemaPath, clientFields)\n\n break\n }\n\n case 'upload': {\n const uploadEnabledCollections = payload.config.collections.filter(\n ({ admin: { enableRichTextRelationship, hidden }, upload }) => {\n if (hidden === true) {\n return false\n }\n\n return enableRichTextRelationship && Boolean(upload) === true\n },\n )\n\n uploadEnabledCollections.forEach((collection) => {\n if (args?.admin?.upload?.collections[collection.slug]?.fields) {\n let clientFields = deepCopyObjectSimple(\n args?.admin?.upload?.collections[collection.slug]?.fields,\n ) as unknown as ClientField[]\n clientFields = createClientFields({\n clientFields,\n createMappedComponent,\n fields: args?.admin?.upload?.collections[collection.slug]?.fields,\n i18n,\n importMap,\n payload,\n })\n\n componentMap.set(`${uploadFieldsSchemaPath}.${collection.slug}`, clientFields)\n }\n })\n\n break\n }\n\n case 'relationship':\n break\n }\n }\n })\n\n return componentMap\n }\n"],"names":["createClientFields","deepCopyObjectSimple","elements","elementTypes","linkFieldsSchemaPath","uploadFieldsSchemaPath","defaultLeaves","leafTypes","getGenerateComponentMap","args","createMappedComponent","i18n","importMap","payload","componentMap","Map","admin","leaves","Object","values","forEach","leaf","leafObject","LeafButton","Button","LeafComponent","Leaf","set","name","undefined","Array","isArray","plugins","Plugin","i","el","element","ElementButton","ElementComponent","Element","clientFields","link","fields","uploadEnabledCollections","config","collections","filter","enableRichTextRelationship","hidden","upload","Boolean","collection","slug"],"mappings":"AAEA,SAASA,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,oBAAoB,QAAQ,UAAS;AAI9C,SAASC,YAAYC,YAAY,QAAQ,4BAA2B;AACpE,SAASC,oBAAoB,QAAQ,kCAAiC;AACtE,SAASC,sBAAsB,QAAQ,oCAAmC;AAC1E,SAASC,iBAAiBC,SAAS,QAAQ,0BAAyB;AAEpE,OAAO,MAAMC,0BACX,CAACC,OACD,CAAC,EAAEC,qBAAqB,EAAEC,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAE;QAClD,MAAMC,eAA6D,IAAIC;QAErEN,CAAAA,MAAMO,OAAOC,UAAUC,OAAOC,MAAM,CAACZ,UAAS,EAAGa,OAAO,CAAC,CAACC;YAC1D,IAAIC;YAEJ,IAAI,OAAOD,SAAS,YAAYA,SAAS,MAAM;gBAC7CC,aAAaD;YACf,OAAO,IAAI,OAAOA,SAAS,YAAYd,SAAS,CAACc,KAAK,EAAE;gBACtDC,aAAaf,SAAS,CAACc,KAAK;YAC9B;YAEA,IAAIC,YAAY;gBACd,MAAMC,aAAaD,WAAWE,MAAM;gBACpC,MAAMC,gBAAgBH,WAAWI,IAAI;gBAErCZ,aAAaa,GAAG,CACd,CAAC,YAAY,EAAEL,WAAWM,IAAI,CAAC,CAAC,EAChClB,sBAAsBa,YAAYM,WAAWA,WAAW;gBAG1Df,aAAaa,GAAG,CACd,CAAC,eAAe,EAAEL,WAAWM,IAAI,CAAC,CAAC,EACnClB,sBAAsBe,eAAeI,WAAWA,WAAW;gBAG7D,IAAIC,MAAMC,OAAO,CAACT,WAAWU,OAAO,GAAG;oBACrCV,WAAWU,OAAO,CAACZ,OAAO,CAAC,CAACa,QAAQC;wBAClCpB,aAAaa,GAAG,CACd,CAAC,YAAY,EAAEL,WAAWM,IAAI,CAAC,CAAC,EAAEM,EAAE,CAAC,EACrCxB,sBAAsBuB,QAAQJ,WAAWA,WAAW;oBAExD;gBACF;YACF;QACF;QACEpB,CAAAA,MAAMO,OAAOd,YAAYgB,OAAOC,MAAM,CAAChB,aAAY,EAAGiB,OAAO,CAAC,CAACe;YAC/D,IAAIC;YAEJ,IAAI,OAAOD,OAAO,YAAYA,OAAO,MAAM;gBACzCC,UAAUD;YACZ,OAAO,IAAI,OAAOA,OAAO,YAAYhC,YAAY,CAACgC,GAAG,EAAE;gBACrDC,UAAUjC,YAAY,CAACgC,GAAG;YAC5B;YAEA,IAAIC,SAAS;gBACX,MAAMC,gBAAgBD,QAAQZ,MAAM;gBACpC,MAAMc,mBAAmBF,QAAQG,OAAO;gBAExC,IAAIF,
|
|
1
|
+
{"version":3,"sources":["../src/generateComponentMap.tsx"],"sourcesContent":["import type { ClientField, Field, MappedComponent, RichTextGenerateComponentMap } from 'payload'\n\nimport { createClientFields } from '@payloadcms/ui/utilities/createClientConfig'\nimport { deepCopyObjectSimple } from 'payload'\n\nimport type { AdapterArguments, RichTextCustomElement, RichTextCustomLeaf } from './types.js'\n\nimport { elements as elementTypes } from './field/elements/index.js'\nimport { linkFieldsSchemaPath } from './field/elements/link/shared.js'\nimport { uploadFieldsSchemaPath } from './field/elements/upload/shared.js'\nimport { defaultLeaves as leafTypes } from './field/leaves/index.js'\n\nexport const getGenerateComponentMap =\n (args: AdapterArguments): RichTextGenerateComponentMap =>\n ({ createMappedComponent, i18n, importMap, payload }) => {\n const componentMap: Map<string, ClientField[] | MappedComponent> = new Map()\n\n ;(args?.admin?.leaves || Object.values(leafTypes)).forEach((leaf) => {\n let leafObject: RichTextCustomLeaf\n\n if (typeof leaf === 'object' && leaf !== null) {\n leafObject = leaf\n } else if (typeof leaf === 'string' && leafTypes[leaf]) {\n leafObject = leafTypes[leaf]\n }\n\n if (leafObject) {\n const LeafButton = leafObject.Button\n const LeafComponent = leafObject.Leaf\n\n componentMap.set(\n `leaf.button.${leafObject.name}`,\n createMappedComponent(LeafButton, undefined, undefined, 'slate-LeafButton'),\n )\n\n componentMap.set(\n `leaf.component.${leafObject.name}`,\n createMappedComponent(LeafComponent, undefined, undefined, 'slate-LeafComponent'),\n )\n\n if (Array.isArray(leafObject.plugins)) {\n leafObject.plugins.forEach((Plugin, i) => {\n componentMap.set(\n `leaf.plugin.${leafObject.name}.${i}`,\n createMappedComponent(Plugin, undefined, undefined, 'slate-LeafPlugin'),\n )\n })\n }\n }\n })\n ;(args?.admin?.elements || Object.values(elementTypes)).forEach((el) => {\n let element: RichTextCustomElement\n\n if (typeof el === 'object' && el !== null) {\n element = el\n } else if (typeof el === 'string' && elementTypes[el]) {\n element = elementTypes[el]\n }\n\n if (element) {\n const ElementButton = element.Button\n const ElementComponent = element.Element\n\n if (ElementButton) {\n componentMap.set(\n `element.button.${element.name}`,\n createMappedComponent(ElementButton, undefined, undefined, 'slate-ElementButton'),\n )\n }\n componentMap.set(\n `element.component.${element.name}`,\n createMappedComponent(ElementComponent, undefined, undefined, 'slate-ElementComponent'),\n )\n\n if (Array.isArray(element.plugins)) {\n element.plugins.forEach((Plugin, i) => {\n componentMap.set(\n `element.plugin.${element.name}.${i}`,\n createMappedComponent(Plugin, undefined, undefined, 'slate-ElementPlugin'),\n )\n })\n }\n\n switch (element.name) {\n case 'link': {\n let clientFields = deepCopyObjectSimple(\n args.admin?.link?.fields,\n ) as unknown as ClientField[]\n clientFields = createClientFields({\n clientFields,\n createMappedComponent,\n fields: args.admin?.link?.fields as Field[],\n i18n,\n importMap,\n payload,\n })\n\n componentMap.set(linkFieldsSchemaPath, clientFields)\n\n break\n }\n\n case 'upload': {\n const uploadEnabledCollections = payload.config.collections.filter(\n ({ admin: { enableRichTextRelationship, hidden }, upload }) => {\n if (hidden === true) {\n return false\n }\n\n return enableRichTextRelationship && Boolean(upload) === true\n },\n )\n\n uploadEnabledCollections.forEach((collection) => {\n if (args?.admin?.upload?.collections[collection.slug]?.fields) {\n let clientFields = deepCopyObjectSimple(\n args?.admin?.upload?.collections[collection.slug]?.fields,\n ) as unknown as ClientField[]\n clientFields = createClientFields({\n clientFields,\n createMappedComponent,\n fields: args?.admin?.upload?.collections[collection.slug]?.fields,\n i18n,\n importMap,\n payload,\n })\n\n componentMap.set(`${uploadFieldsSchemaPath}.${collection.slug}`, clientFields)\n }\n })\n\n break\n }\n\n case 'relationship':\n break\n }\n }\n })\n\n return componentMap\n }\n"],"names":["createClientFields","deepCopyObjectSimple","elements","elementTypes","linkFieldsSchemaPath","uploadFieldsSchemaPath","defaultLeaves","leafTypes","getGenerateComponentMap","args","createMappedComponent","i18n","importMap","payload","componentMap","Map","admin","leaves","Object","values","forEach","leaf","leafObject","LeafButton","Button","LeafComponent","Leaf","set","name","undefined","Array","isArray","plugins","Plugin","i","el","element","ElementButton","ElementComponent","Element","clientFields","link","fields","uploadEnabledCollections","config","collections","filter","enableRichTextRelationship","hidden","upload","Boolean","collection","slug"],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAI9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AASlD,wBAAgB,WAAW,CACzB,IAAI,EAAE,gBAAgB,GACrB,uBAAuB,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAI9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AASlD,wBAAgB,WAAW,CACzB,IAAI,EAAE,gBAAgB,GACrB,uBAAuB,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,CA6LvD;AAED,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,QAAQ,GACT,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export function slateEditor(args) {
|
|
|
20
20
|
args.admin.link.fields = await sanitizeFields({
|
|
21
21
|
config: config,
|
|
22
22
|
fields: transformExtraFields(args.admin?.link?.fields, config),
|
|
23
|
+
parentIsLocalized: false,
|
|
23
24
|
validRelationships
|
|
24
25
|
});
|
|
25
26
|
if (args?.admin?.upload?.collections) {
|
|
@@ -28,6 +29,7 @@ export function slateEditor(args) {
|
|
|
28
29
|
args.admin.upload.collections[collection].fields = await sanitizeFields({
|
|
29
30
|
config: config,
|
|
30
31
|
fields: args.admin?.upload?.collections[collection]?.fields,
|
|
32
|
+
parentIsLocalized: false,
|
|
31
33
|
validRelationships
|
|
32
34
|
});
|
|
33
35
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import type { Config, RichTextAdapterProvider } from 'payload'\n\nimport { sanitizeFields, withNullableJSONSchemaType } from 'payload'\n\nimport type { AdapterArguments } from './types.js'\n\nimport { richTextRelationshipPromise } from './data/richTextRelationshipPromise.js'\nimport { richTextValidate } from './data/validation.js'\nimport { elements as elementTypes } from './field/elements/index.js'\nimport { transformExtraFields } from './field/elements/link/utilities.js'\nimport { defaultLeaves as leafTypes } from './field/leaves/index.js'\nimport { getGenerateSchemaMap } from './generateSchemaMap.js'\n\nexport function slateEditor(\n args: AdapterArguments,\n): RichTextAdapterProvider<any[], AdapterArguments, any> {\n return async ({ config }) => {\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n if (!args.admin) {\n args.admin = {}\n }\n if (!args.admin.link) {\n args.admin.link = {}\n }\n if (!args.admin.link.fields) {\n args.admin.link.fields = []\n }\n args.admin.link.fields = await sanitizeFields({\n config: config as unknown as Config,\n fields: transformExtraFields(args.admin?.link?.fields, config),\n validRelationships,\n })\n\n if (args?.admin?.upload?.collections) {\n for (const collection of Object.keys(args.admin.upload.collections)) {\n if (args?.admin?.upload?.collections[collection]?.fields) {\n args.admin.upload.collections[collection].fields = await sanitizeFields({\n config: config as unknown as Config,\n fields: args.admin?.upload?.collections[collection]?.fields,\n validRelationships,\n })\n }\n }\n }\n\n return {\n CellComponent: '@payloadcms/richtext-slate/client#RichTextCell',\n FieldComponent: '@payloadcms/richtext-slate/client#RichTextField',\n generateComponentMap: {\n path: '@payloadcms/richtext-slate/generateComponentMap#getGenerateComponentMap',\n serverProps: args,\n },\n generateImportMap: ({ addToImportMap }) => {\n addToImportMap('@payloadcms/richtext-slate/client#RichTextCell')\n addToImportMap('@payloadcms/richtext-slate/client#RichTextField')\n addToImportMap('@payloadcms/richtext-slate/generateComponentMap#getGenerateComponentMap')\n Object.values(leafTypes).forEach((leaf) => {\n if (leaf.Button) {\n addToImportMap(leaf.Button)\n }\n if (leaf.Leaf) {\n addToImportMap(leaf.Leaf)\n }\n if (Array.isArray(leaf.plugins) && leaf.plugins?.length) {\n addToImportMap(leaf.plugins)\n }\n })\n args?.admin?.leaves?.forEach((leaf) => {\n if (typeof leaf === 'object') {\n if (leaf.Button) {\n addToImportMap(leaf.Button)\n }\n if (leaf.Leaf) {\n addToImportMap(leaf.Leaf)\n }\n if (Array.isArray(leaf.plugins) && leaf.plugins?.length) {\n addToImportMap(leaf.plugins)\n }\n }\n })\n\n Object.values(elementTypes).forEach((element) => {\n if (element.Button) {\n addToImportMap(element.Button)\n }\n if (element.Element) {\n addToImportMap(element.Element)\n }\n if (Array.isArray(element.plugins) && element.plugins?.length) {\n addToImportMap(element.plugins)\n }\n })\n\n args?.admin?.elements?.forEach((element) => {\n if (typeof element === 'object') {\n if (element.Button) {\n addToImportMap(element.Button)\n }\n if (element.Element) {\n addToImportMap(element.Element)\n }\n if (Array.isArray(element.plugins) && element.plugins?.length) {\n addToImportMap(element.plugins)\n }\n }\n })\n },\n generateSchemaMap: getGenerateSchemaMap(args),\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n if (\n field.admin?.elements?.includes('relationship') ||\n field.admin?.elements?.includes('upload') ||\n field.admin?.elements?.includes('link') ||\n !field?.admin?.elements\n ) {\n richTextRelationshipPromise({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: {\n afterRead: [\n ({\n context: _context,\n currentDepth,\n depth,\n draft,\n field: _field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingData,\n }) => {\n const context: any = _context\n const field = _field as any\n if (\n field.admin?.elements?.includes('relationship') ||\n field.admin?.elements?.includes('upload') ||\n field.admin?.elements?.includes('link') ||\n !field?.admin?.elements\n ) {\n richTextRelationshipPromise({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: siblingData,\n })\n }\n },\n ],\n },\n outputSchema: ({ isRequired }) => {\n return {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n },\n }\n },\n validate: richTextValidate,\n }\n }\n}\n\nexport type {\n AdapterArguments,\n ElementNode,\n RichTextCustomElement,\n RichTextCustomLeaf,\n RichTextElement,\n RichTextLeaf,\n RichTextPlugin,\n RichTextPluginComponent,\n SlateFieldProps,\n TextNode,\n} from './types.js'\n\nexport { nodeIsTextNode } from './types.js'\n"],"names":["sanitizeFields","withNullableJSONSchemaType","richTextRelationshipPromise","richTextValidate","elements","elementTypes","transformExtraFields","defaultLeaves","leafTypes","getGenerateSchemaMap","slateEditor","args","config","validRelationships","collections","map","c","slug","admin","link","fields","upload","collection","Object","keys","CellComponent","FieldComponent","generateComponentMap","path","serverProps","generateImportMap","addToImportMap","values","forEach","leaf","Button","Leaf","Array","isArray","plugins","length","leaves","element","Element","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","includes","hooks","afterRead","_context","_field","siblingData","outputSchema","isRequired","type","items","validate","nodeIsTextNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import type { Config, RichTextAdapterProvider } from 'payload'\n\nimport { sanitizeFields, withNullableJSONSchemaType } from 'payload'\n\nimport type { AdapterArguments } from './types.js'\n\nimport { richTextRelationshipPromise } from './data/richTextRelationshipPromise.js'\nimport { richTextValidate } from './data/validation.js'\nimport { elements as elementTypes } from './field/elements/index.js'\nimport { transformExtraFields } from './field/elements/link/utilities.js'\nimport { defaultLeaves as leafTypes } from './field/leaves/index.js'\nimport { getGenerateSchemaMap } from './generateSchemaMap.js'\n\nexport function slateEditor(\n args: AdapterArguments,\n): RichTextAdapterProvider<any[], AdapterArguments, any> {\n return async ({ config }) => {\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n if (!args.admin) {\n args.admin = {}\n }\n if (!args.admin.link) {\n args.admin.link = {}\n }\n if (!args.admin.link.fields) {\n args.admin.link.fields = []\n }\n args.admin.link.fields = await sanitizeFields({\n config: config as unknown as Config,\n fields: transformExtraFields(args.admin?.link?.fields, config),\n parentIsLocalized: false,\n validRelationships,\n })\n\n if (args?.admin?.upload?.collections) {\n for (const collection of Object.keys(args.admin.upload.collections)) {\n if (args?.admin?.upload?.collections[collection]?.fields) {\n args.admin.upload.collections[collection].fields = await sanitizeFields({\n config: config as unknown as Config,\n fields: args.admin?.upload?.collections[collection]?.fields,\n parentIsLocalized: false,\n validRelationships,\n })\n }\n }\n }\n\n return {\n CellComponent: '@payloadcms/richtext-slate/client#RichTextCell',\n FieldComponent: '@payloadcms/richtext-slate/client#RichTextField',\n generateComponentMap: {\n path: '@payloadcms/richtext-slate/generateComponentMap#getGenerateComponentMap',\n serverProps: args,\n },\n generateImportMap: ({ addToImportMap }) => {\n addToImportMap('@payloadcms/richtext-slate/client#RichTextCell')\n addToImportMap('@payloadcms/richtext-slate/client#RichTextField')\n addToImportMap('@payloadcms/richtext-slate/generateComponentMap#getGenerateComponentMap')\n Object.values(leafTypes).forEach((leaf) => {\n if (leaf.Button) {\n addToImportMap(leaf.Button)\n }\n if (leaf.Leaf) {\n addToImportMap(leaf.Leaf)\n }\n if (Array.isArray(leaf.plugins) && leaf.plugins?.length) {\n addToImportMap(leaf.plugins)\n }\n })\n args?.admin?.leaves?.forEach((leaf) => {\n if (typeof leaf === 'object') {\n if (leaf.Button) {\n addToImportMap(leaf.Button)\n }\n if (leaf.Leaf) {\n addToImportMap(leaf.Leaf)\n }\n if (Array.isArray(leaf.plugins) && leaf.plugins?.length) {\n addToImportMap(leaf.plugins)\n }\n }\n })\n\n Object.values(elementTypes).forEach((element) => {\n if (element.Button) {\n addToImportMap(element.Button)\n }\n if (element.Element) {\n addToImportMap(element.Element)\n }\n if (Array.isArray(element.plugins) && element.plugins?.length) {\n addToImportMap(element.plugins)\n }\n })\n\n args?.admin?.elements?.forEach((element) => {\n if (typeof element === 'object') {\n if (element.Button) {\n addToImportMap(element.Button)\n }\n if (element.Element) {\n addToImportMap(element.Element)\n }\n if (Array.isArray(element.plugins) && element.plugins?.length) {\n addToImportMap(element.plugins)\n }\n }\n })\n },\n generateSchemaMap: getGenerateSchemaMap(args),\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n if (\n field.admin?.elements?.includes('relationship') ||\n field.admin?.elements?.includes('upload') ||\n field.admin?.elements?.includes('link') ||\n !field?.admin?.elements\n ) {\n richTextRelationshipPromise({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: {\n afterRead: [\n ({\n context: _context,\n currentDepth,\n depth,\n draft,\n field: _field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingData,\n }) => {\n const context: any = _context\n const field = _field as any\n if (\n field.admin?.elements?.includes('relationship') ||\n field.admin?.elements?.includes('upload') ||\n field.admin?.elements?.includes('link') ||\n !field?.admin?.elements\n ) {\n richTextRelationshipPromise({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: siblingData,\n })\n }\n },\n ],\n },\n outputSchema: ({ isRequired }) => {\n return {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n },\n }\n },\n validate: richTextValidate,\n }\n }\n}\n\nexport type {\n AdapterArguments,\n ElementNode,\n RichTextCustomElement,\n RichTextCustomLeaf,\n RichTextElement,\n RichTextLeaf,\n RichTextPlugin,\n RichTextPluginComponent,\n SlateFieldProps,\n TextNode,\n} from './types.js'\n\nexport { nodeIsTextNode } from './types.js'\n"],"names":["sanitizeFields","withNullableJSONSchemaType","richTextRelationshipPromise","richTextValidate","elements","elementTypes","transformExtraFields","defaultLeaves","leafTypes","getGenerateSchemaMap","slateEditor","args","config","validRelationships","collections","map","c","slug","admin","link","fields","parentIsLocalized","upload","collection","Object","keys","CellComponent","FieldComponent","generateComponentMap","path","serverProps","generateImportMap","addToImportMap","values","forEach","leaf","Button","Leaf","Array","isArray","plugins","length","leaves","element","Element","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","includes","hooks","afterRead","_context","_field","siblingData","outputSchema","isRequired","type","items","validate","nodeIsTextNode"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/richtext-slate",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.97",
|
|
4
4
|
"description": "The officially supported Slate richtext adapter for Payload",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"slate-history": "0.86.0",
|
|
40
40
|
"slate-hyperscript": "0.81.3",
|
|
41
41
|
"slate-react": "0.92.0",
|
|
42
|
-
"@payloadcms/translations": "3.0.0-beta.
|
|
43
|
-
"@payloadcms/ui": "3.0.0-beta.
|
|
42
|
+
"@payloadcms/translations": "3.0.0-beta.97",
|
|
43
|
+
"@payloadcms/ui": "3.0.0-beta.97"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/is-hotkey": "^0.1.10",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"@types/react": "npm:types-react@19.0.0-rc.0",
|
|
49
49
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
|
|
50
50
|
"@payloadcms/eslint-config": "3.0.0-beta.59",
|
|
51
|
-
"payload": "3.0.0-beta.
|
|
51
|
+
"payload": "3.0.0-beta.97"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"react": "^19.0.0 || ^19.0.0-rc-06d0b89e-20240801",
|
|
55
|
-
"payload": "3.0.0-beta.
|
|
55
|
+
"payload": "3.0.0-beta.97"
|
|
56
56
|
},
|
|
57
57
|
"engines": {
|
|
58
58
|
"node": "^18.20.2 || >=20.9.0"
|
|
@@ -69,6 +69,8 @@
|
|
|
69
69
|
"build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
|
|
70
70
|
"build:types": "tsc --emitDeclarationOnly --outDir dist",
|
|
71
71
|
"clean": "rimraf {dist,*.tsbuildinfo}",
|
|
72
|
-
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/"
|
|
72
|
+
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
|
|
73
|
+
"lint": "eslint .",
|
|
74
|
+
"lint:fix": "eslint . --fix"
|
|
73
75
|
}
|
|
74
76
|
}
|