@payloadcms/richtext-slate 3.0.0-canary.a0b06af → 3.0.0-canary.b750ebf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/data/populate.d.ts +2 -2
  2. package/dist/data/populate.d.ts.map +1 -1
  3. package/dist/data/populate.js.map +1 -1
  4. package/dist/field/RichText.d.ts +3 -3
  5. package/dist/field/RichText.d.ts.map +1 -1
  6. package/dist/field/RichText.js.map +1 -1
  7. package/dist/field/elements/link/types.d.ts +2 -2
  8. package/dist/field/elements/link/types.d.ts.map +1 -1
  9. package/dist/field/elements/link/types.js.map +1 -1
  10. package/dist/field/elements/relationship/Element/index.d.ts +2 -2
  11. package/dist/field/elements/relationship/Element/index.d.ts.map +1 -1
  12. package/dist/field/elements/relationship/Element/index.js.map +1 -1
  13. package/dist/field/elements/relationship/types.d.ts +2 -2
  14. package/dist/field/elements/relationship/types.d.ts.map +1 -1
  15. package/dist/field/elements/relationship/types.js.map +1 -1
  16. package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts +2 -2
  17. package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts.map +1 -1
  18. package/dist/field/elements/upload/Element/UploadDrawer/index.js.map +1 -1
  19. package/dist/field/elements/upload/Element/index.d.ts +2 -2
  20. package/dist/field/elements/upload/Element/index.d.ts.map +1 -1
  21. package/dist/field/elements/upload/Element/index.js.map +1 -1
  22. package/dist/field/elements/upload/types.d.ts +2 -2
  23. package/dist/field/elements/upload/types.d.ts.map +1 -1
  24. package/dist/field/elements/upload/types.js.map +1 -1
  25. package/dist/field/index.d.ts +2 -2
  26. package/dist/field/index.d.ts.map +1 -1
  27. package/dist/field/index.js.map +1 -1
  28. package/dist/field/providers/ElementButtonProvider.d.ts +4 -4
  29. package/dist/field/providers/ElementButtonProvider.d.ts.map +1 -1
  30. package/dist/field/providers/ElementButtonProvider.js.map +1 -1
  31. package/dist/field/providers/ElementProvider.d.ts +4 -4
  32. package/dist/field/providers/ElementProvider.d.ts.map +1 -1
  33. package/dist/field/providers/ElementProvider.js.map +1 -1
  34. package/dist/field/providers/LeafButtonProvider.d.ts +4 -4
  35. package/dist/field/providers/LeafButtonProvider.d.ts.map +1 -1
  36. package/dist/field/providers/LeafButtonProvider.js.map +1 -1
  37. package/dist/field/providers/LeafProvider.d.ts +4 -4
  38. package/dist/field/providers/LeafProvider.d.ts.map +1 -1
  39. package/dist/field/providers/LeafProvider.js.map +1 -1
  40. package/package.json +6 -6
@@ -11,10 +11,10 @@ type Arguments = {
11
11
  req: PayloadRequest;
12
12
  showHiddenFields: boolean;
13
13
  };
14
- export declare const populate: ({ id, collection, currentDepth, data, depth, draft, key, overrideAccess, req, showHiddenFields, }: Omit<Arguments, "field"> & {
14
+ export declare const populate: ({ id, collection, currentDepth, data, depth, draft, key, overrideAccess, req, showHiddenFields, }: {
15
15
  collection: Collection;
16
16
  field: Field;
17
17
  id: string;
18
- }) => Promise<void>;
18
+ } & Omit<Arguments, "field">) => Promise<void>;
19
19
  export {};
20
20
  //# sourceMappingURL=populate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../src/data/populate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAI/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,KAAK,SAAS,GAAG;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;IAC/D,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,QAAQ,sGAWlB,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,KAAG,OAAO,CAAC,IAAI,CAuBf,CAAA"}
1
+ {"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../src/data/populate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAI/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,KAAK,SAAS,GAAG;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;IAC/D,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,QAAQ,sGAWlB;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,IAAI,CAuB1C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data/populate.ts"],"sourcesContent":["import type { Collection, Field, PayloadRequest, RichTextField } from 'payload'\n\nimport { createDataloaderCacheKey } from 'payload'\n\nimport type { AdapterArguments } from '../types.js'\n\ntype Arguments = {\n currentDepth?: number\n data: unknown\n depth: number\n draft: boolean\n field: RichTextField<any[], AdapterArguments, AdapterArguments>\n key: number | string\n overrideAccess?: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n}\n\nexport const populate = async ({\n id,\n collection,\n currentDepth,\n data,\n depth,\n draft,\n key,\n overrideAccess,\n req,\n showHiddenFields,\n}: Omit<Arguments, 'field'> & {\n collection: Collection\n field: Field\n id: string\n}): Promise<void> => {\n const dataRef = data as Record<string, unknown>\n\n const doc = await req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collection.config.slug,\n currentDepth: currentDepth + 1,\n depth,\n docID: id,\n draft,\n fallbackLocale: req.locale,\n locale: req.fallbackLocale,\n overrideAccess: typeof overrideAccess === 'undefined' ? false : overrideAccess,\n showHiddenFields,\n transactionID: req.transactionID,\n }),\n )\n\n if (doc) {\n dataRef[key] = doc\n } else {\n dataRef[key] = null\n }\n}\n"],"names":["createDataloaderCacheKey","populate","id","collection","currentDepth","data","depth","draft","key","overrideAccess","req","showHiddenFields","dataRef","doc","payloadDataLoader","load","collectionSlug","config","slug","docID","fallbackLocale","locale","transactionID"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,UAAS;AAgBlD,OAAO,MAAMC,WAAW,OAAO,EAC7BC,EAAE,EACFC,UAAU,EACVC,YAAY,EACZC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,GAAG,EACHC,cAAc,EACdC,GAAG,EACHC,gBAAgB,EAKjB;IACC,MAAMC,UAAUP;IAEhB,MAAMQ,MAAM,MAAMH,IAAII,iBAAiB,CAACC,IAAI,CAC1Cf,yBAAyB;QACvBgB,gBAAgBb,WAAWc,MAAM,CAACC,IAAI;QACtCd,cAAcA,eAAe;QAC7BE;QACAa,OAAOjB;QACPK;QACAa,gBAAgBV,IAAIW,MAAM;QAC1BA,QAAQX,IAAIU,cAAc;QAC1BX,gBAAgB,OAAOA,mBAAmB,cAAc,QAAQA;QAChEE;QACAW,eAAeZ,IAAIY,aAAa;IAClC;IAGF,IAAIT,KAAK;QACPD,OAAO,CAACJ,IAAI,GAAGK;IACjB,OAAO;QACLD,OAAO,CAACJ,IAAI,GAAG;IACjB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/data/populate.ts"],"sourcesContent":["import type { Collection, Field, PayloadRequest, RichTextField } from 'payload'\n\nimport { createDataloaderCacheKey } from 'payload'\n\nimport type { AdapterArguments } from '../types.js'\n\ntype Arguments = {\n currentDepth?: number\n data: unknown\n depth: number\n draft: boolean\n field: RichTextField<any[], AdapterArguments, AdapterArguments>\n key: number | string\n overrideAccess?: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n}\n\nexport const populate = async ({\n id,\n collection,\n currentDepth,\n data,\n depth,\n draft,\n key,\n overrideAccess,\n req,\n showHiddenFields,\n}: {\n collection: Collection\n field: Field\n id: string\n} & Omit<Arguments, 'field'>): Promise<void> => {\n const dataRef = data as Record<string, unknown>\n\n const doc = await req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collection.config.slug,\n currentDepth: currentDepth + 1,\n depth,\n docID: id,\n draft,\n fallbackLocale: req.locale,\n locale: req.fallbackLocale,\n overrideAccess: typeof overrideAccess === 'undefined' ? false : overrideAccess,\n showHiddenFields,\n transactionID: req.transactionID,\n }),\n )\n\n if (doc) {\n dataRef[key] = doc\n } else {\n dataRef[key] = null\n }\n}\n"],"names":["createDataloaderCacheKey","populate","id","collection","currentDepth","data","depth","draft","key","overrideAccess","req","showHiddenFields","dataRef","doc","payloadDataLoader","load","collectionSlug","config","slug","docID","fallbackLocale","locale","transactionID"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,UAAS;AAgBlD,OAAO,MAAMC,WAAW,OAAO,EAC7BC,EAAE,EACFC,UAAU,EACVC,YAAY,EACZC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,GAAG,EACHC,cAAc,EACdC,GAAG,EACHC,gBAAgB,EAKU;IAC1B,MAAMC,UAAUP;IAEhB,MAAMQ,MAAM,MAAMH,IAAII,iBAAiB,CAACC,IAAI,CAC1Cf,yBAAyB;QACvBgB,gBAAgBb,WAAWc,MAAM,CAACC,IAAI;QACtCd,cAAcA,eAAe;QAC7BE;QACAa,OAAOjB;QACPK;QACAa,gBAAgBV,IAAIW,MAAM;QAC1BA,QAAQX,IAAIU,cAAc;QAC1BX,gBAAgB,OAAOA,mBAAmB,cAAc,QAAQA;QAChEE;QACAW,eAAeZ,IAAIY,aAAa;IAClC;IAGF,IAAIT,KAAK;QACPD,OAAO,CAACJ,IAAI,GAAGK;IACjB,OAAO;QACLD,OAAO,CAACJ,IAAI,GAAG;IACjB;AACF,EAAC"}
@@ -8,12 +8,12 @@ import type { EnabledFeatures } from './types.js';
8
8
  import './index.scss';
9
9
  declare module 'slate' {
10
10
  interface CustomTypes {
11
- Editor: BaseEditor & ReactEditor & HistoryEditor;
11
+ Editor: BaseEditor & HistoryEditor & ReactEditor;
12
12
  Element: ElementNode;
13
13
  Text: TextNode;
14
14
  }
15
15
  }
16
- export declare const RichText: React.FC<FormFieldBase & {
16
+ export declare const RichText: React.FC<{
17
17
  elements: EnabledFeatures["elements"];
18
18
  leaves: EnabledFeatures["leaves"];
19
19
  name: string;
@@ -21,5 +21,5 @@ export declare const RichText: React.FC<FormFieldBase & {
21
21
  plugins: RichTextPlugin[];
22
22
  richTextComponentMap: Map<string, React.ReactNode>;
23
23
  width?: string;
24
- }>;
24
+ } & FormFieldBase>;
25
25
  //# sourceMappingURL=RichText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../src/field/RichText.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,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;AAc9C,OAAO,KAAkD,MAAM,OAAO,CAAA;AAKtE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,OAAO,cAAc,CAAA;AAWrB,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,WAAW;QACnB,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,CAAA;QAChD,OAAO,EAAE,WAAW,CAAA;QACpB,IAAI,EAAE,QAAQ,CAAA;KACf;CACF;AAsaD,eAAO,MAAM,QAAQ;cAlaP,eAAe,CAAC,UAAU,CAAC;YAC7B,eAAe,CAAC,QAAQ,CAAC;UAC3B,MAAM;kBACE,MAAM;aACX,cAAc,EAAE;0BACH,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;YAC1C,MAAM;EA4ZkC,CAAA"}
1
+ {"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../src/field/RichText.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,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;AAc9C,OAAO,KAAkD,MAAM,OAAO,CAAA;AAKtE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,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;AAsaD,eAAO,MAAM,QAAQ;cAlaP,eAAe,CAAC,UAAU,CAAC;YAC7B,eAAe,CAAC,QAAQ,CAAC;UAC3B,MAAM;kBACE,MAAM;aACX,cAAc,EAAE;0BACH,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;YAC1C,MAAM;kBA4ZkC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/field/RichText.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\nimport type { ClientValidate } 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 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, RichTextPlugin, TextNode } from '../types.js'\nimport type { EnabledFeatures } 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 & ReactEditor & HistoryEditor\n Element: ElementNode\n Text: TextNode\n }\n}\n\nconst RichTextField: React.FC<\n FormFieldBase & {\n elements: EnabledFeatures['elements']\n leaves: EnabledFeatures['leaves']\n name: string\n placeholder?: string\n plugins: RichTextPlugin[]\n richTextComponentMap: Map<string, React.ReactNode>\n width?: string\n }\n> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n elements,\n errorProps,\n label,\n labelProps,\n leaves,\n path: pathFromProps,\n placeholder,\n plugins,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate = richTextValidate,\n width,\n } = props\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: ClientValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, {\n ...validationOptions,\n req: {\n t: i18n.t,\n },\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 {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 {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 CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${baseClass}__wrap`}>\n <FieldError CustomError={CustomError} 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 {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 {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 {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n </div>\n )\n}\n\nexport const RichText = withCondition(RichTextField)\n"],"names":["getTranslation","FieldDescription","FieldError","FieldLabel","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","name","CustomDescription","CustomError","CustomLabel","className","descriptionProps","elements","errorProps","label","labelProps","leaves","path","pathFromProps","placeholder","plugins","readOnly","readOnlyFromProps","required","style","validate","width","i18n","editorRef","toolbarRef","drawerDepth","drawerIsOpen","memoizedValidate","value","validationOptions","req","t","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","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","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 { FormFieldBase } from '@payloadcms/ui'\nimport type { ClientValidate } 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 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, RichTextPlugin, TextNode } from '../types.js'\nimport type { EnabledFeatures } 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<\n {\n elements: EnabledFeatures['elements']\n leaves: EnabledFeatures['leaves']\n name: string\n placeholder?: string\n plugins: RichTextPlugin[]\n richTextComponentMap: Map<string, React.ReactNode>\n width?: string\n } & FormFieldBase\n> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n elements,\n errorProps,\n label,\n labelProps,\n leaves,\n path: pathFromProps,\n placeholder,\n plugins,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate = richTextValidate,\n width,\n } = props\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: ClientValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, {\n ...validationOptions,\n req: {\n t: i18n.t,\n },\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 {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 {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 CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${baseClass}__wrap`}>\n <FieldError CustomError={CustomError} 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 {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 {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 {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n </div>\n )\n}\n\nexport const RichText = withCondition(RichTextField)\n"],"names":["getTranslation","FieldDescription","FieldError","FieldLabel","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","name","CustomDescription","CustomError","CustomLabel","className","descriptionProps","elements","errorProps","label","labelProps","leaves","path","pathFromProps","placeholder","plugins","readOnly","readOnlyFromProps","required","style","validate","width","i18n","editorRef","toolbarRef","drawerDepth","drawerIsOpen","memoizedValidate","value","validationOptions","req","t","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","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","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,9 +1,9 @@
1
1
  import type { Element } from 'slate';
2
- export type LinkElementType = Element & {
2
+ export type LinkElementType = {
3
3
  doc: Record<string, unknown>;
4
4
  fields: Record<string, unknown>;
5
5
  linkType: string;
6
6
  newTab: boolean;
7
7
  url: string;
8
- };
8
+ } & Element;
9
9
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/link/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG;IACtC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/link/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/link/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type LinkElementType = Element & {\n doc: Record<string, unknown>\n fields: Record<string, unknown>\n linkType: string\n newTab: boolean\n url: string\n}\n"],"names":[],"mappings":"AAEA,WAMC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/link/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type LinkElementType = {\n doc: Record<string, unknown>\n fields: Record<string, unknown>\n linkType: string\n newTab: boolean\n url: string\n} & Element\n"],"names":[],"mappings":"AAEA,WAMW"}
@@ -1,10 +1,10 @@
1
1
  import type { FormFieldBase } from '@payloadcms/ui';
2
2
  import React from 'react';
3
3
  import './index.scss';
4
- type Props = FormFieldBase & {
4
+ type Props = {
5
5
  name: string;
6
6
  richTextComponentMap: Map<string, React.ReactNode>;
7
- };
7
+ } & FormFieldBase;
8
8
  export declare const Element: (props: Props) => React.ReactNode;
9
9
  export {};
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/relationship/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAWnD,OAAO,KAA4C,MAAM,OAAO,CAAA;AAQhE,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,CAAA;AAkKD,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,KAAK,CAAC,SAM5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/relationship/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAWnD,OAAO,KAA4C,MAAM,OAAO,CAAA;AAQhE,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,GAAG,aAAa,CAAA;AAkKjB,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,KAAK,CAAC,SAM5C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/relationship/Element/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n useConfig,\n useDocumentDrawer,\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 { RelationshipElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-relationship'\n\nconst initialParams = {\n depth: 0,\n}\n\ntype Props = FormFieldBase & {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n}\n\nconst RelationshipElement: React.FC<Props> = () => {\n const {\n attributes,\n children,\n element,\n element: { relationTo, value },\n fieldProps,\n } = useElement<RelationshipElementType>()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n const [enabledCollectionSlugs] = useState(() =>\n collections\n .filter(({ admin: { enableRichTextRelationship } }) => enableRichTextRelationship)\n .map(({ slug }) => slug),\n )\n const [relatedCollection, setRelatedCollection] = useState(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const selected = useSelected()\n const focused = useFocused()\n const { i18n, t } = useTranslation()\n const editor = useSlateStatic()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value?.id}`,\n { initialParams },\n )\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value?.id,\n collectionSlug: relatedCollection.slug,\n })\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer: closeListDrawer }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n selectedCollection: relatedCollection.slug,\n })\n\n const removeRelationship = useCallback(() => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.removeNodes(editor, { at: elementPath })\n }, [editor, element])\n\n const updateRelationship = React.useCallback(\n ({ doc }) => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(\n editor,\n {\n type: 'relationship',\n children: [{ text: ' ' }],\n relationTo: relatedCollection.slug,\n value: { id: doc.id },\n },\n { at: elementPath },\n )\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 closeDrawer()\n dispatchCacheBust()\n },\n [editor, element, relatedCollection, cacheBust, setParams, closeDrawer],\n )\n\n const swapRelationship = React.useCallback(\n ({ collectionSlug, docID }) => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(\n editor,\n {\n type: 'relationship',\n children: [{ text: ' ' }],\n relationTo: collectionSlug,\n value: { id: docID },\n },\n { at: elementPath },\n )\n\n setRelatedCollection(collections.find((coll) => coll.slug === collectionSlug))\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 closeListDrawer()\n dispatchCacheBust()\n },\n [closeListDrawer, editor, element, cacheBust, setParams, collections],\n )\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}__wrap`}>\n <p className={`${baseClass}__label`}>\n {t('fields:labelRelationship', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n </p>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <p className={`${baseClass}__title`}>\n {data[relatedCollection?.admin?.useAsTitle || 'id']}\n </p>\n </DocumentDrawerToggler>\n </div>\n <div className={`${baseClass}__actions`}>\n <ListDrawerToggler\n className={`${baseClass}__list-drawer-toggler`}\n disabled={fieldProps?.readOnly}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={fieldProps?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n // do nothing\n }}\n round\n tooltip={t('fields:swapRelationship')}\n />\n </ListDrawerToggler>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={fieldProps?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeRelationship()\n }}\n round\n tooltip={t('fields:removeRelationship')}\n />\n </div>\n {value?.id && <DocumentDrawer onSave={updateRelationship} />}\n <ListDrawer onSelect={swapRelationship} />\n {children}\n </div>\n )\n}\n\nexport const Element = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipElement {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["getTranslation","Button","useConfig","useDocumentDrawer","useListDrawer","usePayloadAPI","useTranslation","React","useCallback","useReducer","useState","Transforms","ReactEditor","useFocused","useSelected","useSlateStatic","useElement","EnabledRelationshipsCondition","baseClass","initialParams","depth","RelationshipElement","attributes","children","element","relationTo","value","fieldProps","collections","routes","api","serverURL","enabledCollectionSlugs","filter","admin","enableRichTextRelationship","map","slug","relatedCollection","setRelatedCollection","find","coll","selected","focused","i18n","t","editor","cacheBust","dispatchCacheBust","state","data","setParams","id","DocumentDrawer","DocumentDrawerToggler","closeDrawer","collectionSlug","ListDrawer","ListDrawerToggler","closeListDrawer","collectionSlugs","selectedCollection","removeRelationship","elementPath","findPath","removeNodes","at","updateRelationship","doc","setNodes","type","text","swapRelationship","docID","div","className","Boolean","join","contentEditable","p","label","labels","singular","useAsTitle","disabled","readOnly","buttonStyle","el","icon","onClick","round","tooltip","e","preventDefault","onSave","onSelect","Element","props"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/relationship/Element/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n useConfig,\n useDocumentDrawer,\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 { RelationshipElementType } from '../types.js'\n\nimport { useElement } from '../../../providers/ElementProvider.js'\nimport { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition.js'\nimport './index.scss'\n\nconst baseClass = 'rich-text-relationship'\n\nconst initialParams = {\n depth: 0,\n}\n\ntype Props = {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n} & FormFieldBase\n\nconst RelationshipElement: React.FC<Props> = () => {\n const {\n attributes,\n children,\n element,\n element: { relationTo, value },\n fieldProps,\n } = useElement<RelationshipElementType>()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n const [enabledCollectionSlugs] = useState(() =>\n collections\n .filter(({ admin: { enableRichTextRelationship } }) => enableRichTextRelationship)\n .map(({ slug }) => slug),\n )\n const [relatedCollection, setRelatedCollection] = useState(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const selected = useSelected()\n const focused = useFocused()\n const { i18n, t } = useTranslation()\n const editor = useSlateStatic()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value?.id}`,\n { initialParams },\n )\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value?.id,\n collectionSlug: relatedCollection.slug,\n })\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer: closeListDrawer }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n selectedCollection: relatedCollection.slug,\n })\n\n const removeRelationship = useCallback(() => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.removeNodes(editor, { at: elementPath })\n }, [editor, element])\n\n const updateRelationship = React.useCallback(\n ({ doc }) => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(\n editor,\n {\n type: 'relationship',\n children: [{ text: ' ' }],\n relationTo: relatedCollection.slug,\n value: { id: doc.id },\n },\n { at: elementPath },\n )\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 closeDrawer()\n dispatchCacheBust()\n },\n [editor, element, relatedCollection, cacheBust, setParams, closeDrawer],\n )\n\n const swapRelationship = React.useCallback(\n ({ collectionSlug, docID }) => {\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(\n editor,\n {\n type: 'relationship',\n children: [{ text: ' ' }],\n relationTo: collectionSlug,\n value: { id: docID },\n },\n { at: elementPath },\n )\n\n setRelatedCollection(collections.find((coll) => coll.slug === collectionSlug))\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 closeListDrawer()\n dispatchCacheBust()\n },\n [closeListDrawer, editor, element, cacheBust, setParams, collections],\n )\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}__wrap`}>\n <p className={`${baseClass}__label`}>\n {t('fields:labelRelationship', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n </p>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <p className={`${baseClass}__title`}>\n {data[relatedCollection?.admin?.useAsTitle || 'id']}\n </p>\n </DocumentDrawerToggler>\n </div>\n <div className={`${baseClass}__actions`}>\n <ListDrawerToggler\n className={`${baseClass}__list-drawer-toggler`}\n disabled={fieldProps?.readOnly}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={fieldProps?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n // do nothing\n }}\n round\n tooltip={t('fields:swapRelationship')}\n />\n </ListDrawerToggler>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={fieldProps?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeRelationship()\n }}\n round\n tooltip={t('fields:removeRelationship')}\n />\n </div>\n {value?.id && <DocumentDrawer onSave={updateRelationship} />}\n <ListDrawer onSelect={swapRelationship} />\n {children}\n </div>\n )\n}\n\nexport const Element = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipElement {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["getTranslation","Button","useConfig","useDocumentDrawer","useListDrawer","usePayloadAPI","useTranslation","React","useCallback","useReducer","useState","Transforms","ReactEditor","useFocused","useSelected","useSlateStatic","useElement","EnabledRelationshipsCondition","baseClass","initialParams","depth","RelationshipElement","attributes","children","element","relationTo","value","fieldProps","collections","routes","api","serverURL","enabledCollectionSlugs","filter","admin","enableRichTextRelationship","map","slug","relatedCollection","setRelatedCollection","find","coll","selected","focused","i18n","t","editor","cacheBust","dispatchCacheBust","state","data","setParams","id","DocumentDrawer","DocumentDrawerToggler","closeDrawer","collectionSlug","ListDrawer","ListDrawerToggler","closeListDrawer","collectionSlugs","selectedCollection","removeRelationship","elementPath","findPath","removeNodes","at","updateRelationship","doc","setNodes","type","text","swapRelationship","docID","div","className","Boolean","join","contentEditable","p","label","labels","singular","useAsTitle","disabled","readOnly","buttonStyle","el","icon","onClick","round","tooltip","e","preventDefault","onSave","onSelect","Element","props"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { Element } from 'slate';
2
- export type RelationshipElementType = Element & {
2
+ export type RelationshipElementType = {
3
3
  relationTo: string;
4
4
  value: {
5
5
  id: number | string;
6
6
  } | null;
7
- };
7
+ } & Element;
8
8
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/relationship/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG;IAC9C,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KACpB,GAAG,IAAI,CAAA;CACT,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/relationship/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KACpB,GAAG,IAAI,CAAA;CACT,GAAG,OAAO,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/relationship/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type RelationshipElementType = Element & {\n relationTo: string\n value: {\n id: number | string\n } | null\n}\n"],"names":[],"mappings":"AAEA,WAKC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/relationship/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type RelationshipElementType = {\n relationTo: string\n value: {\n id: number | string\n } | null\n} & Element\n"],"names":[],"mappings":"AAEA,WAKW"}
@@ -5,10 +5,10 @@ import type { UploadElementType } from '../../types.js';
5
5
  export declare const UploadDrawer: React.FC<{
6
6
  drawerSlug: string;
7
7
  element: UploadElementType;
8
- fieldProps: FormFieldBase & {
8
+ fieldProps: {
9
9
  name: string;
10
10
  richTextComponentMap: Map<string, React.ReactNode>;
11
- };
11
+ } & FormFieldBase;
12
12
  relatedCollection: ClientCollectionConfig;
13
13
  schemaPath: string;
14
14
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/elements/upload/Element/UploadDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,gBAAgB,CAAA;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAiBrD,OAAO,KAA2C,MAAM,OAAO,CAAA;AAI/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAIvD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,UAAU,EAAE,aAAa,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAA;QACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KACnD,CAAA;IACD,iBAAiB,EAAE,sBAAsB,CAAA;IACzC,UAAU,EAAE,MAAM,CAAA;CACnB,CAyGA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/elements/upload/Element/UploadDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,gBAAgB,CAAA;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAiBrD,OAAO,KAA2C,MAAM,OAAO,CAAA;AAI/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAIvD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KACnD,GAAG,aAAa,CAAA;IACjB,iBAAiB,EAAE,sBAAsB,CAAA;IACzC,UAAU,EAAE,MAAM,CAAA;CACnB,CAyGA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/field/elements/upload/Element/UploadDrawer/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase, FormProps } from '@payloadcms/ui'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Drawer,\n Form,\n FormSubmit,\n RenderFields,\n useAuth,\n useConfig,\n useDocumentInfo,\n useLocale,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport { deepCopyObject } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Transforms } from 'slate'\nimport { ReactEditor, useSlateStatic } from 'slate-react'\n\nimport type { UploadElementType } from '../../types.js'\n\nimport { uploadFieldsSchemaPath } from '../../shared.js'\n\nexport const UploadDrawer: React.FC<{\n drawerSlug: string\n element: UploadElementType\n fieldProps: FormFieldBase & {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n }\n relatedCollection: ClientCollectionConfig\n schemaPath: string\n}> = (props) => {\n const editor = useSlateStatic()\n\n const { drawerSlug, element, fieldProps, relatedCollection, schemaPath } = props\n\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const { user } = useAuth()\n const { closeModal } = useModal()\n const { id, collectionSlug } = useDocumentInfo()\n const [initialState, setInitialState] = useState({})\n const { richTextComponentMap } = fieldProps\n\n const relatedFieldSchemaPath = `${uploadFieldsSchemaPath}.${relatedCollection.slug}`\n const fieldMap = richTextComponentMap.get(relatedFieldSchemaPath)\n\n const config = useConfig()\n\n const handleUpdateEditData = useCallback(\n (_, data) => {\n const newNode = {\n fields: data,\n }\n\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(editor, newNode, { at: elementPath })\n closeModal(drawerSlug)\n },\n [closeModal, editor, element, drawerSlug],\n )\n\n useEffect(() => {\n const data = deepCopyObject(element?.fields || {})\n\n const awaitInitialState = async () => {\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n collectionSlug,\n data,\n operation: 'update',\n schemaPath: `${schemaPath}.${uploadFieldsSchemaPath}.${relatedCollection.slug}`,\n },\n serverURL: config.serverURL,\n })\n\n setInitialState(state)\n }\n\n void awaitInitialState()\n }, [\n config,\n element?.fields,\n user,\n locale,\n t,\n collectionSlug,\n id,\n schemaPath,\n relatedCollection.slug,\n ])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: `${schemaPath}.${uploadFieldsSchemaPath}.${relatedCollection.slug}`,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, relatedCollection.slug, schemaPath, id],\n )\n\n return (\n <Drawer\n slug={drawerSlug}\n title={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n >\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleUpdateEditData}\n >\n <RenderFields\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n path=\"\"\n readOnly={false}\n schemaPath=\"\"\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n </Drawer>\n )\n}\n"],"names":["getTranslation","Drawer","Form","FormSubmit","RenderFields","useAuth","useConfig","useDocumentInfo","useLocale","useModal","useTranslation","getFormState","deepCopyObject","React","useCallback","useEffect","useState","Transforms","ReactEditor","useSlateStatic","uploadFieldsSchemaPath","UploadDrawer","props","editor","drawerSlug","element","fieldProps","relatedCollection","schemaPath","i18n","t","code","locale","user","closeModal","id","collectionSlug","initialState","setInitialState","richTextComponentMap","relatedFieldSchemaPath","slug","fieldMap","get","config","handleUpdateEditData","_","data","newNode","fields","elementPath","findPath","setNodes","at","awaitInitialState","state","apiRoute","routes","api","body","operation","serverURL","onChange","formState","prevFormState","title","label","labels","singular","beforeSubmit","disableValidationOnSubmit","onSubmit","Array","isArray","path","readOnly"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/field/elements/upload/Element/UploadDrawer/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase, FormProps } from '@payloadcms/ui'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Drawer,\n Form,\n FormSubmit,\n RenderFields,\n useAuth,\n useConfig,\n useDocumentInfo,\n useLocale,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport { deepCopyObject } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { Transforms } from 'slate'\nimport { ReactEditor, useSlateStatic } from 'slate-react'\n\nimport type { UploadElementType } from '../../types.js'\n\nimport { uploadFieldsSchemaPath } from '../../shared.js'\n\nexport const UploadDrawer: React.FC<{\n drawerSlug: string\n element: UploadElementType\n fieldProps: {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n } & FormFieldBase\n relatedCollection: ClientCollectionConfig\n schemaPath: string\n}> = (props) => {\n const editor = useSlateStatic()\n\n const { drawerSlug, element, fieldProps, relatedCollection, schemaPath } = props\n\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const { user } = useAuth()\n const { closeModal } = useModal()\n const { id, collectionSlug } = useDocumentInfo()\n const [initialState, setInitialState] = useState({})\n const { richTextComponentMap } = fieldProps\n\n const relatedFieldSchemaPath = `${uploadFieldsSchemaPath}.${relatedCollection.slug}`\n const fieldMap = richTextComponentMap.get(relatedFieldSchemaPath)\n\n const config = useConfig()\n\n const handleUpdateEditData = useCallback(\n (_, data) => {\n const newNode = {\n fields: data,\n }\n\n const elementPath = ReactEditor.findPath(editor, element)\n\n Transforms.setNodes(editor, newNode, { at: elementPath })\n closeModal(drawerSlug)\n },\n [closeModal, editor, element, drawerSlug],\n )\n\n useEffect(() => {\n const data = deepCopyObject(element?.fields || {})\n\n const awaitInitialState = async () => {\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n collectionSlug,\n data,\n operation: 'update',\n schemaPath: `${schemaPath}.${uploadFieldsSchemaPath}.${relatedCollection.slug}`,\n },\n serverURL: config.serverURL,\n })\n\n setInitialState(state)\n }\n\n void awaitInitialState()\n }, [\n config,\n element?.fields,\n user,\n locale,\n t,\n collectionSlug,\n id,\n schemaPath,\n relatedCollection.slug,\n ])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: `${schemaPath}.${uploadFieldsSchemaPath}.${relatedCollection.slug}`,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, relatedCollection.slug, schemaPath, id],\n )\n\n return (\n <Drawer\n slug={drawerSlug}\n title={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n >\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleUpdateEditData}\n >\n <RenderFields\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n path=\"\"\n readOnly={false}\n schemaPath=\"\"\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n </Drawer>\n )\n}\n"],"names":["getTranslation","Drawer","Form","FormSubmit","RenderFields","useAuth","useConfig","useDocumentInfo","useLocale","useModal","useTranslation","getFormState","deepCopyObject","React","useCallback","useEffect","useState","Transforms","ReactEditor","useSlateStatic","uploadFieldsSchemaPath","UploadDrawer","props","editor","drawerSlug","element","fieldProps","relatedCollection","schemaPath","i18n","t","code","locale","user","closeModal","id","collectionSlug","initialState","setInitialState","richTextComponentMap","relatedFieldSchemaPath","slug","fieldMap","get","config","handleUpdateEditData","_","data","newNode","fields","elementPath","findPath","setNodes","at","awaitInitialState","state","apiRoute","routes","api","body","operation","serverURL","onChange","formState","prevFormState","title","label","labels","singular","beforeSubmit","disableValidationOnSubmit","onSubmit","Array","isArray","path","readOnly"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import type { FormFieldBase } from '@payloadcms/ui';
2
2
  import React from 'react';
3
3
  import './index.scss';
4
- type Props = FormFieldBase & {
4
+ type Props = {
5
5
  name: string;
6
6
  richTextComponentMap: Map<string, React.ReactNode>;
7
- };
7
+ } & FormFieldBase;
8
8
  export declare const Element: (props: Props) => React.ReactNode;
9
9
  export {};
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAenD,OAAO,KAA4C,MAAM,OAAO,CAAA;AAUhE,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,CAAA;AAwLD,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,KAAK,CAAC,SAM5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAenD,OAAO,KAA4C,MAAM,OAAO,CAAA;AAUhE,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,GAAG,aAAa,CAAA;AAwLjB,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,KAAK,CAAC,SAM5C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\nimport type { ClientCollectionConfig } 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 = FormFieldBase & {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n}\n\nconst UploadElement: React.FC<Props & { enabledCollectionSlugs?: string[] }> = ({\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 collections,\n routes: { api },\n serverURL,\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.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?.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?.readOnly}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={fieldProps?.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?.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 Element = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <UploadElement {...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","UploadElement","enabledCollectionSlugs","attributes","children","element","relationTo","value","fieldProps","schemaPath","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","richTextComponentMap","get","div","className","filter","Boolean","join","contentEditable","img","alt","filename","src","labels","singular","disabled","readOnly","buttonStyle","el","icon","onClick","e","preventDefault","round","tooltip","strong","onSave","onSelect","Element","props","uploads"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/field/elements/upload/Element/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\nimport type { ClientCollectionConfig } 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 UploadElement: 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 collections,\n routes: { api },\n serverURL,\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.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?.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?.readOnly}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={fieldProps?.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?.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 Element = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <UploadElement {...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","UploadElement","enabledCollectionSlugs","attributes","children","element","relationTo","value","fieldProps","schemaPath","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","richTextComponentMap","get","div","className","filter","Boolean","join","contentEditable","img","alt","filename","src","labels","singular","disabled","readOnly","buttonStyle","el","icon","onClick","e","preventDefault","round","tooltip","strong","onSave","onSelect","Element","props","uploads"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type { Element } from 'slate';
2
- export type UploadElementType = Element & {
2
+ export type UploadElementType = {
3
3
  fields: Record<string, unknown>;
4
4
  relationTo: string;
5
5
  value: {
6
6
  id: number | string;
7
7
  } | null;
8
- };
8
+ } & Element;
9
9
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/upload/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KACpB,GAAG,IAAI,CAAA;CACT,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/upload/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KACpB,GAAG,IAAI,CAAA;CACT,GAAG,OAAO,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/elements/upload/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type UploadElementType = Element & {\n fields: Record<string, unknown>\n relationTo: string\n value: {\n id: number | string\n } | null\n}\n"],"names":[],"mappings":"AAEA,WAMC"}
1
+ {"version":3,"sources":["../../../../src/field/elements/upload/types.ts"],"sourcesContent":["import type { Element } from 'slate'\n\nexport type UploadElementType = {\n fields: Record<string, unknown>\n relationTo: string\n value: {\n id: number | string\n } | null\n} & Element\n"],"names":[],"mappings":"AAEA,WAMW"}
@@ -1,7 +1,7 @@
1
1
  import type { FormFieldBase } from '@payloadcms/ui';
2
2
  import React from 'react';
3
- export declare const RichTextField: React.FC<FormFieldBase & {
3
+ export declare const RichTextField: React.FC<{
4
4
  name: string;
5
5
  richTextComponentMap: Map<string, React.ReactNode>;
6
- }>;
6
+ } & FormFieldBase>;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,OAAO,KAA8C,MAAM,OAAO,CAAA;AAalE,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAClC,aAAa,GAAG;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,CAoDF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,OAAO,KAA8C,MAAM,OAAO,CAAA;AAalE,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAClC;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,GAAG,aAAa,CAoDlB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport { ShimmerEffect, useClientFunctions, useFieldProps } from '@payloadcms/ui'\nimport React, { Suspense, lazy, useEffect, useState } from 'react'\n\nimport type { RichTextPlugin } 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<\n FormFieldBase & {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n }\n> = (props) => {\n const { richTextComponentMap } = 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)\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 <React.Fragment key={i}>{Plugin}</React.Fragment>\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":["ShimmerEffect","useClientFunctions","useFieldProps","React","Suspense","lazy","useEffect","useState","createFeatureMap","RichTextEditor","then","module","default","RichText","RichTextField","props","richTextComponentMap","schemaPath","clientFunctions","hasLoadedPlugins","setHasLoadedPlugins","features","plugins","setPlugins","Object","entries","forEach","key","plugin","startsWith","push","length","Fragment","Array","isArray","map","Plugin","i","fallback","height","elements","leaves"],"mappings":"AAAA;;AAIA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,aAAa,QAAQ,iBAAgB;AACjF,OAAOC,SAASC,QAAQ,EAAEC,IAAI,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAKlE,SAASC,gBAAgB,QAAQ,wBAAuB;AAExD,MAAMC,+BAAiBJ,KAAK,IAC1B,MAAM,CAAC,iBAAiBK,IAAI,CAAC,CAACC,SAAY,CAAA;YACxCC,SAASD,OAAOE,QAAQ;QAC1B,CAAA;AAGF,OAAO,MAAMC,gBAKT,CAACC;IACH,MAAM,EAAEC,oBAAoB,EAAE,GAAGD;IAEjC,MAAM,EAAEE,UAAU,EAAE,GAAGf;IACvB,MAAMgB,kBAAkBjB;IACxB,MAAM,CAACkB,kBAAkBC,oBAAoB,GAAGb,SAAS;IAEzD,MAAM,CAACc,SAAS,GAAGd,SAA0B;QAC3C,OAAOC,iBAAiBQ;IAC1B;IAEA,MAAM,CAACM,SAASC,WAAW,GAAGhB,SAA2B,EAAE;IAE3DD,UAAU;QACR,IAAI,CAACa,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,KAAChB,MAAM6B,QAAQ;sBACZC,MAAMC,OAAO,CAACb,SAASC,OAAO,KAC7BD,SAASC,OAAO,CAACa,GAAG,CAAC,CAACC,QAAQC;gBAC5B,qBAAO,KAAClC,MAAM6B,QAAQ;8BAAUI;mBAAJC;YAC9B;;IAGR;IAEA,qBACE,KAACjC;QAASkC,wBAAU,KAACtC;YAAcuC,QAAO;;kBACxC,cAAA,KAAC9B;YACE,GAAGM,KAAK;YACTyB,UAAUnB,SAASmB,QAAQ;YAC3BC,QAAQpB,SAASoB,MAAM;YACvBnB,SAASA;;;AAIjB,EAAC"}
1
+ {"version":3,"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport { ShimmerEffect, useClientFunctions, useFieldProps } from '@payloadcms/ui'\nimport React, { Suspense, lazy, useEffect, useState } from 'react'\n\nimport type { RichTextPlugin } 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<\n {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n } & FormFieldBase\n> = (props) => {\n const { richTextComponentMap } = 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)\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 <React.Fragment key={i}>{Plugin}</React.Fragment>\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":["ShimmerEffect","useClientFunctions","useFieldProps","React","Suspense","lazy","useEffect","useState","createFeatureMap","RichTextEditor","then","module","default","RichText","RichTextField","props","richTextComponentMap","schemaPath","clientFunctions","hasLoadedPlugins","setHasLoadedPlugins","features","plugins","setPlugins","Object","entries","forEach","key","plugin","startsWith","push","length","Fragment","Array","isArray","map","Plugin","i","fallback","height","elements","leaves"],"mappings":"AAAA;;AAIA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,aAAa,QAAQ,iBAAgB;AACjF,OAAOC,SAASC,QAAQ,EAAEC,IAAI,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAKlE,SAASC,gBAAgB,QAAQ,wBAAuB;AAExD,MAAMC,+BAAiBJ,KAAK,IAC1B,MAAM,CAAC,iBAAiBK,IAAI,CAAC,CAACC,SAAY,CAAA;YACxCC,SAASD,OAAOE,QAAQ;QAC1B,CAAA;AAGF,OAAO,MAAMC,gBAKT,CAACC;IACH,MAAM,EAAEC,oBAAoB,EAAE,GAAGD;IAEjC,MAAM,EAAEE,UAAU,EAAE,GAAGf;IACvB,MAAMgB,kBAAkBjB;IACxB,MAAM,CAACkB,kBAAkBC,oBAAoB,GAAGb,SAAS;IAEzD,MAAM,CAACc,SAAS,GAAGd,SAA0B;QAC3C,OAAOC,iBAAiBQ;IAC1B;IAEA,MAAM,CAACM,SAASC,WAAW,GAAGhB,SAA2B,EAAE;IAE3DD,UAAU;QACR,IAAI,CAACa,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,KAAChB,MAAM6B,QAAQ;sBACZC,MAAMC,OAAO,CAACb,SAASC,OAAO,KAC7BD,SAASC,OAAO,CAACa,GAAG,CAAC,CAACC,QAAQC;gBAC5B,qBAAO,KAAClC,MAAM6B,QAAQ;8BAAUI;mBAAJC;YAC9B;;IAGR;IAEA,qBACE,KAACjC;QAASkC,wBAAU,KAACtC;YAAcuC,QAAO;;kBACxC,cAAA,KAAC9B;YACE,GAAGM,KAAK;YACTyB,UAAUnB,SAASmB,QAAQ;YAC3BC,QAAQpB,SAASoB,MAAM;YACvBnB,SAASA;;;AAIjB,EAAC"}
@@ -2,16 +2,16 @@ import type { FormFieldBase } from '@payloadcms/ui';
2
2
  import React from 'react';
3
3
  type ElementButtonContextType = {
4
4
  disabled?: boolean;
5
- fieldProps: FormFieldBase & {
5
+ fieldProps: {
6
6
  name: string;
7
7
  richTextComponentMap: Map<string, React.ReactNode>;
8
- };
8
+ } & FormFieldBase;
9
9
  path: string;
10
10
  schemaPath: string;
11
11
  };
12
- export declare const ElementButtonProvider: React.FC<ElementButtonContextType & {
12
+ export declare const ElementButtonProvider: React.FC<{
13
13
  children: React.ReactNode;
14
- }>;
14
+ } & ElementButtonContextType>;
15
15
  export declare const useElementButton: () => ElementButtonContextType;
16
16
  export {};
17
17
  //# sourceMappingURL=ElementButtonProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElementButtonProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/ElementButtonProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,aAAa,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAA;QACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KACnD,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAQD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAC1C,wBAAwB,GAAG;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAaF,CAAA;AAED,eAAO,MAAM,gBAAgB,gCAG5B,CAAA"}
1
+ {"version":3,"file":"ElementButtonProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/ElementButtonProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KACnD,GAAG,aAAa,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAQD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAC1C;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,wBAAwB,CAa7B,CAAA;AAED,eAAO,MAAM,gBAAgB,gCAG5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/providers/ElementButtonProvider.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport React from 'react'\n\ntype ElementButtonContextType = {\n disabled?: boolean\n fieldProps: FormFieldBase & {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n }\n path: string\n schemaPath: string\n}\n\nconst ElementButtonContext = React.createContext<ElementButtonContextType>({\n fieldProps: {} as any,\n path: '',\n schemaPath: '',\n})\n\nexport const ElementButtonProvider: React.FC<\n ElementButtonContextType & {\n children: React.ReactNode\n }\n> = (props) => {\n const { children, ...rest } = props\n\n return (\n <ElementButtonContext.Provider\n value={{\n ...rest,\n }}\n >\n {children}\n </ElementButtonContext.Provider>\n )\n}\n\nexport const useElementButton = () => {\n const path = React.useContext(ElementButtonContext)\n return path\n}\n"],"names":["React","ElementButtonContext","createContext","fieldProps","path","schemaPath","ElementButtonProvider","props","children","rest","Provider","value","useElementButton","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAYzB,MAAMC,qCAAuBD,MAAME,aAAa,CAA2B;IACzEC,YAAY,CAAC;IACbC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,wBAIT,CAACC;IACH,MAAM,EAAEC,QAAQ,EAAE,GAAGC,MAAM,GAAGF;IAE9B,qBACE,KAACN,qBAAqBS,QAAQ;QAC5BC,OAAO;YACL,GAAGF,IAAI;QACT;kBAECD;;AAGP,EAAC;AAED,OAAO,MAAMI,mBAAmB;IAC9B,MAAMR,OAAOJ,MAAMa,UAAU,CAACZ;IAC9B,OAAOG;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/providers/ElementButtonProvider.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport React from 'react'\n\ntype ElementButtonContextType = {\n disabled?: boolean\n fieldProps: {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n } & FormFieldBase\n path: string\n schemaPath: string\n}\n\nconst ElementButtonContext = React.createContext<ElementButtonContextType>({\n fieldProps: {} as any,\n path: '',\n schemaPath: '',\n})\n\nexport const ElementButtonProvider: React.FC<\n {\n children: React.ReactNode\n } & ElementButtonContextType\n> = (props) => {\n const { children, ...rest } = props\n\n return (\n <ElementButtonContext.Provider\n value={{\n ...rest,\n }}\n >\n {children}\n </ElementButtonContext.Provider>\n )\n}\n\nexport const useElementButton = () => {\n const path = React.useContext(ElementButtonContext)\n return path\n}\n"],"names":["React","ElementButtonContext","createContext","fieldProps","path","schemaPath","ElementButtonProvider","props","children","rest","Provider","value","useElementButton","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAYzB,MAAMC,qCAAuBD,MAAME,aAAa,CAA2B;IACzEC,YAAY,CAAC;IACbC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,wBAIT,CAACC;IACH,MAAM,EAAEC,QAAQ,EAAE,GAAGC,MAAM,GAAGF;IAE9B,qBACE,KAACN,qBAAqBS,QAAQ;QAC5BC,OAAO;YACL,GAAGF,IAAI;QACT;kBAECD;;AAGP,EAAC;AAED,OAAO,MAAMI,mBAAmB;IAC9B,MAAMR,OAAOJ,MAAMa,UAAU,CAACZ;IAC9B,OAAOG;AACT,EAAC"}
@@ -6,16 +6,16 @@ type ElementContextType<T> = {
6
6
  children: React.ReactNode;
7
7
  editorRef: React.MutableRefObject<HTMLDivElement>;
8
8
  element: T;
9
- fieldProps: FormFieldBase & {
9
+ fieldProps: {
10
10
  name: string;
11
11
  richTextComponentMap: Map<string, React.ReactNode>;
12
- };
12
+ } & FormFieldBase;
13
13
  path: string;
14
14
  schemaPath: string;
15
15
  };
16
- export declare const ElementProvider: React.FC<ElementContextType<Element> & {
16
+ export declare const ElementProvider: React.FC<{
17
17
  childNodes: React.ReactNode;
18
- }>;
18
+ } & ElementContextType<Element>>;
19
19
  export declare const useElement: <T>() => ElementContextType<T>;
20
20
  export {};
21
21
  //# sourceMappingURL=ElementProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElementProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/ElementProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,kBAAkB,CAAC,CAAC,IAAI;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;IACjD,OAAO,EAAE,CAAC,CAAA;IACV,UAAU,EAAE,aAAa,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAA;QACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KACnD,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAYD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CACpC,kBAAkB,CAAC,OAAO,CAAC,GAAG;IAC5B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B,CAcF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,OAAM,kBAAkB,CAAC,CAAC,CAErD,CAAA"}
1
+ {"version":3,"file":"ElementProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/ElementProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,kBAAkB,CAAC,CAAC,IAAI;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;IACjD,OAAO,EAAE,CAAC,CAAA;IACV,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KACnD,GAAG,aAAa,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAYD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CACpC;IACE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAchC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,OAAM,kBAAkB,CAAC,CAAC,CAErD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/providers/ElementProvider.tsx"],"sourcesContent":["'use client'\nimport type { FormFieldBase } from '@payloadcms/ui'\nimport type { Element } from 'slate'\n\nimport React from 'react'\n\ntype ElementContextType<T> = {\n attributes: Record<string, unknown>\n children: React.ReactNode\n editorRef: React.MutableRefObject<HTMLDivElement>\n element: T\n fieldProps: FormFieldBase & {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n }\n path: string\n schemaPath: string\n}\n\nconst ElementContext = React.createContext<ElementContextType<Element>>({\n attributes: {},\n children: null,\n editorRef: null,\n element: {} as Element,\n fieldProps: {} as any,\n path: '',\n schemaPath: '',\n})\n\nexport const ElementProvider: React.FC<\n ElementContextType<Element> & {\n childNodes: React.ReactNode\n }\n> = (props) => {\n const { childNodes, children, ...rest } = props\n\n return (\n <ElementContext.Provider\n value={{\n ...rest,\n children: childNodes,\n }}\n >\n {children}\n </ElementContext.Provider>\n )\n}\n\nexport const useElement = <T,>(): ElementContextType<T> => {\n return React.useContext(ElementContext) as ElementContextType<T>\n}\n"],"names":["React","ElementContext","createContext","attributes","children","editorRef","element","fieldProps","path","schemaPath","ElementProvider","props","childNodes","rest","Provider","value","useElement","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAezB,MAAMC,+BAAiBD,MAAME,aAAa,CAA8B;IACtEC,YAAY,CAAC;IACbC,UAAU;IACVC,WAAW;IACXC,SAAS,CAAC;IACVC,YAAY,CAAC;IACbC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,kBAIT,CAACC;IACH,MAAM,EAAEC,UAAU,EAAER,QAAQ,EAAE,GAAGS,MAAM,GAAGF;IAE1C,qBACE,KAACV,eAAea,QAAQ;QACtBC,OAAO;YACL,GAAGF,IAAI;YACPT,UAAUQ;QACZ;kBAECR;;AAGP,EAAC;AAED,OAAO,MAAMY,aAAa;IACxB,OAAOhB,MAAMiB,UAAU,CAAChB;AAC1B,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/providers/ElementProvider.tsx"],"sourcesContent":["'use client'\nimport type { FormFieldBase } from '@payloadcms/ui'\nimport type { Element } from 'slate'\n\nimport React from 'react'\n\ntype ElementContextType<T> = {\n attributes: Record<string, unknown>\n children: React.ReactNode\n editorRef: React.MutableRefObject<HTMLDivElement>\n element: T\n fieldProps: {\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n } & FormFieldBase\n path: string\n schemaPath: string\n}\n\nconst ElementContext = React.createContext<ElementContextType<Element>>({\n attributes: {},\n children: null,\n editorRef: null,\n element: {} as Element,\n fieldProps: {} as any,\n path: '',\n schemaPath: '',\n})\n\nexport const ElementProvider: React.FC<\n {\n childNodes: React.ReactNode\n } & ElementContextType<Element>\n> = (props) => {\n const { childNodes, children, ...rest } = props\n\n return (\n <ElementContext.Provider\n value={{\n ...rest,\n children: childNodes,\n }}\n >\n {children}\n </ElementContext.Provider>\n )\n}\n\nexport const useElement = <T,>(): ElementContextType<T> => {\n return React.useContext(ElementContext) as ElementContextType<T>\n}\n"],"names":["React","ElementContext","createContext","attributes","children","editorRef","element","fieldProps","path","schemaPath","ElementProvider","props","childNodes","rest","Provider","value","useElement","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAezB,MAAMC,+BAAiBD,MAAME,aAAa,CAA8B;IACtEC,YAAY,CAAC;IACbC,UAAU;IACVC,WAAW;IACXC,SAAS,CAAC;IACVC,YAAY,CAAC;IACbC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,kBAIT,CAACC;IACH,MAAM,EAAEC,UAAU,EAAER,QAAQ,EAAE,GAAGS,MAAM,GAAGF;IAE1C,qBACE,KAACV,eAAea,QAAQ;QACtBC,OAAO;YACL,GAAGF,IAAI;YACPT,UAAUQ;QACZ;kBAECR;;AAGP,EAAC;AAED,OAAO,MAAMY,aAAa;IACxB,OAAOhB,MAAMiB,UAAU,CAAChB;AAC1B,EAAC"}
@@ -1,15 +1,15 @@
1
1
  import type { FormFieldBase } from '@payloadcms/ui';
2
2
  import React from 'react';
3
3
  type LeafButtonContextType = {
4
- fieldProps: FormFieldBase & {
4
+ fieldProps: {
5
5
  name: string;
6
- };
6
+ } & FormFieldBase;
7
7
  path: string;
8
8
  schemaPath: string;
9
9
  };
10
- export declare const LeafButtonProvider: React.FC<LeafButtonContextType & {
10
+ export declare const LeafButtonProvider: React.FC<{
11
11
  children: React.ReactNode;
12
- }>;
12
+ } & LeafButtonContextType>;
13
13
  export declare const useLeafButton: () => LeafButtonContextType;
14
14
  export {};
15
15
  //# sourceMappingURL=LeafButtonProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LeafButtonProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/LeafButtonProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,qBAAqB,GAAG;IAC3B,UAAU,EAAE,aAAa,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAQD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CACvC,qBAAqB,GAAG;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAaF,CAAA;AAED,eAAO,MAAM,aAAa,6BAGzB,CAAA"}
1
+ {"version":3,"file":"LeafButtonProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/LeafButtonProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,qBAAqB,GAAG;IAC3B,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;KACb,GAAG,aAAa,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAQD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CACvC;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,qBAAqB,CAa1B,CAAA;AAED,eAAO,MAAM,aAAa,6BAGzB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/providers/LeafButtonProvider.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport React from 'react'\n\ntype LeafButtonContextType = {\n fieldProps: FormFieldBase & {\n name: string\n }\n path: string\n schemaPath: string\n}\n\nconst LeafButtonContext = React.createContext<LeafButtonContextType>({\n fieldProps: {} as any,\n path: '',\n schemaPath: '',\n})\n\nexport const LeafButtonProvider: React.FC<\n LeafButtonContextType & {\n children: React.ReactNode\n }\n> = (props) => {\n const { children, ...rest } = props\n\n return (\n <LeafButtonContext.Provider\n value={{\n ...rest,\n }}\n >\n {children}\n </LeafButtonContext.Provider>\n )\n}\n\nexport const useLeafButton = () => {\n const path = React.useContext(LeafButtonContext)\n return path\n}\n"],"names":["React","LeafButtonContext","createContext","fieldProps","path","schemaPath","LeafButtonProvider","props","children","rest","Provider","value","useLeafButton","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAUzB,MAAMC,kCAAoBD,MAAME,aAAa,CAAwB;IACnEC,YAAY,CAAC;IACbC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,qBAIT,CAACC;IACH,MAAM,EAAEC,QAAQ,EAAE,GAAGC,MAAM,GAAGF;IAE9B,qBACE,KAACN,kBAAkBS,QAAQ;QACzBC,OAAO;YACL,GAAGF,IAAI;QACT;kBAECD;;AAGP,EAAC;AAED,OAAO,MAAMI,gBAAgB;IAC3B,MAAMR,OAAOJ,MAAMa,UAAU,CAACZ;IAC9B,OAAOG;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/providers/LeafButtonProvider.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport React from 'react'\n\ntype LeafButtonContextType = {\n fieldProps: {\n name: string\n } & FormFieldBase\n path: string\n schemaPath: string\n}\n\nconst LeafButtonContext = React.createContext<LeafButtonContextType>({\n fieldProps: {} as any,\n path: '',\n schemaPath: '',\n})\n\nexport const LeafButtonProvider: React.FC<\n {\n children: React.ReactNode\n } & LeafButtonContextType\n> = (props) => {\n const { children, ...rest } = props\n\n return (\n <LeafButtonContext.Provider\n value={{\n ...rest,\n }}\n >\n {children}\n </LeafButtonContext.Provider>\n )\n}\n\nexport const useLeafButton = () => {\n const path = React.useContext(LeafButtonContext)\n return path\n}\n"],"names":["React","LeafButtonContext","createContext","fieldProps","path","schemaPath","LeafButtonProvider","props","children","rest","Provider","value","useLeafButton","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAUzB,MAAMC,kCAAoBD,MAAME,aAAa,CAAwB;IACnEC,YAAY,CAAC;IACbC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,qBAIT,CAACC;IACH,MAAM,EAAEC,QAAQ,EAAE,GAAGC,MAAM,GAAGF;IAE9B,qBACE,KAACN,kBAAkBS,QAAQ;QACzBC,OAAO;YACL,GAAGF,IAAI;QACT;kBAECD;;AAGP,EAAC;AAED,OAAO,MAAMI,gBAAgB;IAC3B,MAAMR,OAAOJ,MAAMa,UAAU,CAACZ;IAC9B,OAAOG;AACT,EAAC"}
@@ -4,16 +4,16 @@ type LeafContextType = {
4
4
  attributes: Record<string, unknown>;
5
5
  children: React.ReactNode;
6
6
  editorRef: React.MutableRefObject<HTMLDivElement>;
7
- fieldProps: FormFieldBase & {
7
+ fieldProps: {
8
8
  name: string;
9
- };
9
+ } & FormFieldBase;
10
10
  leaf: string;
11
11
  path: string;
12
12
  schemaPath: string;
13
13
  };
14
- export declare const LeafProvider: React.FC<LeafContextType & {
14
+ export declare const LeafProvider: React.FC<{
15
15
  result: React.ReactNode;
16
- }>;
16
+ } & LeafContextType>;
17
17
  export declare const useLeaf: () => LeafContextType;
18
18
  export {};
19
19
  //# sourceMappingURL=LeafProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LeafProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/LeafProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;IACjD,UAAU,EAAE,aAAa,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAYD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CACjC,eAAe,GAAG;IAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;CACxB,CAcF,CAAA;AAED,eAAO,MAAM,OAAO,uBAGnB,CAAA"}
1
+ {"version":3,"file":"LeafProvider.d.ts","sourceRoot":"","sources":["../../../src/field/providers/LeafProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;IACjD,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;KACb,GAAG,aAAa,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAYD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CACjC;IACE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;CACxB,GAAG,eAAe,CAcpB,CAAA;AAED,eAAO,MAAM,OAAO,uBAGnB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/field/providers/LeafProvider.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport React from 'react'\n\ntype LeafContextType = {\n attributes: Record<string, unknown>\n children: React.ReactNode\n editorRef: React.MutableRefObject<HTMLDivElement>\n fieldProps: FormFieldBase & {\n name: string\n }\n leaf: string\n path: string\n schemaPath: string\n}\n\nconst LeafContext = React.createContext<LeafContextType>({\n attributes: {},\n children: null,\n editorRef: null,\n fieldProps: {} as any,\n leaf: '',\n path: '',\n schemaPath: '',\n})\n\nexport const LeafProvider: React.FC<\n LeafContextType & {\n result: React.ReactNode\n }\n> = (props) => {\n const { children, result, ...rest } = props\n\n return (\n <LeafContext.Provider\n value={{\n ...rest,\n children: result,\n }}\n >\n {children}\n </LeafContext.Provider>\n )\n}\n\nexport const useLeaf = () => {\n const path = React.useContext(LeafContext)\n return path\n}\n"],"names":["React","LeafContext","createContext","attributes","children","editorRef","fieldProps","leaf","path","schemaPath","LeafProvider","props","result","rest","Provider","value","useLeaf","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAczB,MAAMC,4BAAcD,MAAME,aAAa,CAAkB;IACvDC,YAAY,CAAC;IACbC,UAAU;IACVC,WAAW;IACXC,YAAY,CAAC;IACbC,MAAM;IACNC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,eAIT,CAACC;IACH,MAAM,EAAEP,QAAQ,EAAEQ,MAAM,EAAE,GAAGC,MAAM,GAAGF;IAEtC,qBACE,KAACV,YAAYa,QAAQ;QACnBC,OAAO;YACL,GAAGF,IAAI;YACPT,UAAUQ;QACZ;kBAECR;;AAGP,EAAC;AAED,OAAO,MAAMY,UAAU;IACrB,MAAMR,OAAOR,MAAMiB,UAAU,CAAChB;IAC9B,OAAOO;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/field/providers/LeafProvider.tsx"],"sourcesContent":["'use client'\n\nimport type { FormFieldBase } from '@payloadcms/ui'\n\nimport React from 'react'\n\ntype LeafContextType = {\n attributes: Record<string, unknown>\n children: React.ReactNode\n editorRef: React.MutableRefObject<HTMLDivElement>\n fieldProps: {\n name: string\n } & FormFieldBase\n leaf: string\n path: string\n schemaPath: string\n}\n\nconst LeafContext = React.createContext<LeafContextType>({\n attributes: {},\n children: null,\n editorRef: null,\n fieldProps: {} as any,\n leaf: '',\n path: '',\n schemaPath: '',\n})\n\nexport const LeafProvider: React.FC<\n {\n result: React.ReactNode\n } & LeafContextType\n> = (props) => {\n const { children, result, ...rest } = props\n\n return (\n <LeafContext.Provider\n value={{\n ...rest,\n children: result,\n }}\n >\n {children}\n </LeafContext.Provider>\n )\n}\n\nexport const useLeaf = () => {\n const path = React.useContext(LeafContext)\n return path\n}\n"],"names":["React","LeafContext","createContext","attributes","children","editorRef","fieldProps","leaf","path","schemaPath","LeafProvider","props","result","rest","Provider","value","useLeaf","useContext"],"mappings":"AAAA;;AAIA,OAAOA,WAAW,QAAO;AAczB,MAAMC,4BAAcD,MAAME,aAAa,CAAkB;IACvDC,YAAY,CAAC;IACbC,UAAU;IACVC,WAAW;IACXC,YAAY,CAAC;IACbC,MAAM;IACNC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,eAIT,CAACC;IACH,MAAM,EAAEP,QAAQ,EAAEQ,MAAM,EAAE,GAAGC,MAAM,GAAGF;IAEtC,qBACE,KAACV,YAAYa,QAAQ;QACnBC,OAAO;YACL,GAAGF,IAAI;YACPT,UAAUQ;QACZ;kBAECR;;AAGP,EAAC;AAED,OAAO,MAAMY,UAAU;IACrB,MAAMR,OAAOR,MAAMiB,UAAU,CAAChB;IAC9B,OAAOO;AACT,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/richtext-slate",
3
- "version": "3.0.0-canary.a0b06af",
3
+ "version": "3.0.0-canary.b750ebf",
4
4
  "description": "The officially supported Slate richtext adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -36,14 +36,14 @@
36
36
  "@types/react": "npm:types-react@19.0.0-rc.0",
37
37
  "@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
38
38
  "@payloadcms/eslint-config": "3.0.0-beta.59",
39
- "@payloadcms/ui": "3.0.0-canary.a0b06af",
40
- "payload": "3.0.0-canary.a0b06af"
39
+ "@payloadcms/ui": "3.0.0-canary.b750ebf",
40
+ "payload": "3.0.0-canary.b750ebf"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "react": "^19.0.0 || ^19.0.0-rc-6230622a1a-20240610",
44
- "@payloadcms/translations": "3.0.0-canary.a0b06af",
45
- "@payloadcms/ui": "3.0.0-canary.a0b06af",
46
- "payload": "3.0.0-canary.a0b06af"
44
+ "@payloadcms/translations": "3.0.0-canary.b750ebf",
45
+ "@payloadcms/ui": "3.0.0-canary.b750ebf",
46
+ "payload": "3.0.0-canary.b750ebf"
47
47
  },
48
48
  "engines": {
49
49
  "node": "^18.20.2 || >=20.9.0"