@payloadcms/richtext-slate 3.0.0-beta.20 → 3.0.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/field/elements/link/LinkDrawer/baseFields.d.ts +2 -2
- package/dist/field/elements/link/LinkDrawer/baseFields.d.ts.map +1 -1
- package/dist/field/elements/link/LinkDrawer/baseFields.js.map +1 -1
- package/dist/field/elements/link/utilities.d.ts +1 -3
- package/dist/field/elements/link/utilities.d.ts.map +1 -1
- package/dist/field/elements/link/utilities.js +3 -4
- package/dist/field/elements/link/utilities.js.map +1 -1
- package/dist/generateComponentMap.d.ts.map +1 -1
- package/dist/generateComponentMap.js +2 -15
- package/dist/generateComponentMap.js.map +1 -1
- package/dist/generateSchemaMap.d.ts.map +1 -1
- package/dist/generateSchemaMap.js +3 -16
- package/dist/generateSchemaMap.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +60 -30
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +0 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SanitizedConfig } from 'payload/config';
|
|
2
2
|
import type { Field } from 'payload/types';
|
|
3
|
-
export declare const getBaseFields: (config:
|
|
3
|
+
export declare const getBaseFields: (config: SanitizedConfig) => Field[];
|
|
4
4
|
//# sourceMappingURL=baseFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseFields.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/LinkDrawer/baseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"baseFields.d.ts","sourceRoot":"","sources":["../../../../../src/field/elements/link/LinkDrawer/baseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,eAAO,MAAM,aAAa,WAAY,eAAe,KAAG,KAAK,EAmE5D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/baseFields.ts"],"sourcesContent":["import type { User } from 'payload/auth'\nimport type {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/field/elements/link/LinkDrawer/baseFields.ts"],"sourcesContent":["import type { User } from 'payload/auth'\nimport type { SanitizedConfig } from 'payload/config'\nimport type { Field } from 'payload/types'\n\nexport const getBaseFields = (config: SanitizedConfig): Field[] => [\n {\n name: 'text',\n type: 'text',\n label: ({ t }) => t('fields:textToDisplay'),\n required: true,\n },\n {\n name: 'linkType',\n type: 'radio',\n admin: {\n description: ({ t }) => t('fields:chooseBetweenCustomTextOrDocument'),\n },\n defaultValue: 'custom',\n label: ({ t }) => t('fields:linkType'),\n options: [\n {\n label: ({ t }) => t('fields:customURL'),\n value: 'custom',\n },\n {\n label: ({ t }) => t('fields:internalLink'),\n value: 'internal',\n },\n ],\n required: true,\n },\n {\n name: 'url',\n type: 'text',\n admin: {\n condition: ({ linkType }) => linkType !== 'internal',\n },\n label: ({ t }) => t('fields:enterURL'),\n required: true,\n },\n {\n name: 'doc',\n admin: {\n condition: ({ linkType }) => {\n return linkType === 'internal'\n },\n },\n // when admin.hidden is a function we need to dynamically call hidden with the user to know if the collection should be shown\n type: 'relationship',\n filterOptions: ({ relationTo, user }) => {\n const hidden = config.collections.find(({ slug }) => slug === relationTo).admin.hidden\n if (typeof hidden === 'function' && hidden({ user } as { user: User })) {\n return false\n }\n },\n label: ({ t }) => t('fields:chooseDocumentToLink'),\n relationTo: config.collections\n .filter(({ admin: { enableRichTextLink, hidden } }) => {\n if (typeof hidden !== 'function' && hidden) {\n return false\n }\n return enableRichTextLink\n })\n .map(({ slug }) => slug),\n required: true,\n },\n {\n name: 'newTab',\n type: 'checkbox',\n label: ({ t }) => t('fields:openInNewTab'),\n },\n]\n"],"names":["getBaseFields","config","name","type","label","t","required","admin","description","defaultValue","options","value","condition","linkType","filterOptions","relationTo","user","hidden","collections","find","slug","filter","enableRichTextLink","map"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,OAAO,MAAMA,gBAAgB,CAACC,SAAqC;QACjE;YACEC,MAAM;YACNC,MAAM;YACNC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNI,OAAO;gBACLC,aAAa,CAAC,EAAEH,CAAC,EAAE,GAAKA,EAAE;YAC5B;YACAI,cAAc;YACdL,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBK,SAAS;gBACP;oBACEN,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBACpBM,OAAO;gBACT;gBACA;oBACEP,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;oBACpBM,OAAO;gBACT;aACD;YACDL,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNI,OAAO;gBACLK,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAKA,aAAa;YAC5C;YACAT,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBC,UAAU;QACZ;QACA;YACEJ,MAAM;YACNK,OAAO;gBACLK,WAAW,CAAC,EAAEC,QAAQ,EAAE;oBACtB,OAAOA,aAAa;gBACtB;YACF;YACA,6HAA6H;YAC7HV,MAAM;YACNW,eAAe,CAAC,EAAEC,UAAU,EAAEC,IAAI,EAAE;gBAClC,MAAMC,SAAShB,OAAOiB,WAAW,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASL,YAAYR,KAAK,CAACU,MAAM;gBACtF,IAAI,OAAOA,WAAW,cAAcA,OAAO;oBAAED;gBAAK,IAAsB;oBACtE,OAAO;gBACT;YACF;YACAZ,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;YACpBU,YAAYd,OAAOiB,WAAW,CAC3BG,MAAM,CAAC,CAAC,EAAEd,OAAO,EAAEe,kBAAkB,EAAEL,MAAM,EAAE,EAAE;gBAChD,IAAI,OAAOA,WAAW,cAAcA,QAAQ;oBAC1C,OAAO;gBACT;gBACA,OAAOK;YACT,GACCC,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAE,GAAKA;YACrBd,UAAU;QACZ;QACA;YACEJ,MAAM;YACNC,MAAM;YACNC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;QACtB;KACD,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { I18n } from '@payloadcms/translations';
|
|
2
1
|
import type { SanitizedConfig } from 'payload/config';
|
|
3
2
|
import type { Field } from 'payload/types';
|
|
4
3
|
import type { Editor } from 'slate';
|
|
@@ -10,6 +9,5 @@ export declare const wrapLink: (editor: Editor) => void;
|
|
|
10
9
|
export declare function transformExtraFields(customFieldSchema: ((args: {
|
|
11
10
|
config: SanitizedConfig;
|
|
12
11
|
defaultFields: Field[];
|
|
13
|
-
|
|
14
|
-
}) => Field[]) | Field[], config: SanitizedConfig, i18n: I18n): Field[];
|
|
12
|
+
}) => Field[]) | Field[], config: SanitizedConfig): Field[];
|
|
15
13
|
//# sourceMappingURL=utilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/link/utilities.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/field/elements/link/utilities.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAMnC,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,IAE3C,CAAA;AAED,eAAO,MAAM,QAAQ,WAAY,MAAM,KAAG,IAiBzC,CAAA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EACb,CAAC,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,aAAa,EAAE,KAAK,EAAE,CAAA;CAAE,KAAK,KAAK,EAAE,CAAC,GACxE,KAAK,EAAE,EACX,MAAM,EAAE,eAAe,GACtB,KAAK,EAAE,CA4CT"}
|
|
@@ -31,12 +31,11 @@ export const wrapLink = (editor)=>{
|
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
33
|
* This function is run to enrich the basefields which every link has with potential, custom user-added fields.
|
|
34
|
-
*/ export function transformExtraFields(customFieldSchema, config
|
|
34
|
+
*/ export function transformExtraFields(customFieldSchema, config) {
|
|
35
35
|
const baseFields = getBaseFields(config);
|
|
36
36
|
const fields = typeof customFieldSchema === 'function' ? customFieldSchema({
|
|
37
37
|
config,
|
|
38
|
-
defaultFields: baseFields
|
|
39
|
-
i18n
|
|
38
|
+
defaultFields: baseFields
|
|
40
39
|
}) : baseFields;
|
|
41
40
|
// Wrap fields which are not part of the base schema in a group named 'fields' - otherwise they will be rendered but not saved
|
|
42
41
|
const extraFields = [];
|
|
@@ -52,7 +51,7 @@ export const wrapLink = (editor)=>{
|
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
|
-
if (Array.isArray(customFieldSchema)
|
|
54
|
+
if (Array.isArray(customFieldSchema) && customFieldSchema?.length || extraFields?.length) {
|
|
56
55
|
fields.push({
|
|
57
56
|
name: 'fields',
|
|
58
57
|
type: 'group',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/field/elements/link/utilities.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../../../src/field/elements/link/utilities.tsx"],"sourcesContent":["import type { SanitizedConfig } from 'payload/config'\nimport type { Field } from 'payload/types'\nimport type { Editor } from 'slate'\n\nimport { Element, Range, Transforms } from 'slate'\n\nimport { getBaseFields } from './LinkDrawer/baseFields.js'\n\nexport const unwrapLink = (editor: Editor): void => {\n Transforms.unwrapNodes(editor, { match: (n) => Element.isElement(n) && n.type === 'link' })\n}\n\nexport const wrapLink = (editor: Editor): void => {\n const { selection } = editor\n const isCollapsed = selection && Range.isCollapsed(selection)\n\n const link = {\n type: 'link',\n children: isCollapsed ? [{ text: '' }] : [],\n newTab: false,\n url: undefined,\n }\n\n if (isCollapsed) {\n Transforms.insertNodes(editor, link)\n } else {\n Transforms.wrapNodes(editor, link, { split: true })\n Transforms.collapse(editor, { edge: 'end' })\n }\n}\n\n/**\n * This function is run to enrich the basefields which every link has with potential, custom user-added fields.\n */\nexport function transformExtraFields(\n customFieldSchema:\n | ((args: { config: SanitizedConfig; defaultFields: Field[] }) => Field[])\n | Field[],\n config: SanitizedConfig,\n): Field[] {\n const baseFields: Field[] = getBaseFields(config)\n\n const fields =\n typeof customFieldSchema === 'function'\n ? customFieldSchema({ config, defaultFields: baseFields })\n : baseFields\n\n // Wrap fields which are not part of the base schema in a group named 'fields' - otherwise they will be rendered but not saved\n const extraFields = []\n for (let i = fields.length - 1; i >= 0; i--) {\n const field = fields[i]\n\n if ('name' in field) {\n if (\n !baseFields.find((baseField) => !('name' in baseField) || baseField.name === field.name)\n ) {\n if (field.name !== 'fields' && field.type !== 'group') {\n extraFields.push(field)\n // Remove from fields from now, as they need to be part of the fields group below\n fields.splice(fields.indexOf(field), 1)\n }\n }\n }\n }\n\n if ((Array.isArray(customFieldSchema) && customFieldSchema?.length) || extraFields?.length) {\n fields.push({\n name: 'fields',\n type: 'group',\n admin: {\n style: {\n borderBottom: 0,\n borderTop: 0,\n margin: 0,\n padding: 0,\n },\n },\n fields: Array.isArray(customFieldSchema)\n ? customFieldSchema.concat(extraFields)\n : extraFields,\n })\n }\n return fields\n}\n"],"names":["Element","Range","Transforms","getBaseFields","unwrapLink","editor","unwrapNodes","match","n","isElement","type","wrapLink","selection","isCollapsed","link","children","text","newTab","url","undefined","insertNodes","wrapNodes","split","collapse","edge","transformExtraFields","customFieldSchema","config","baseFields","fields","defaultFields","extraFields","i","length","field","find","baseField","name","push","splice","indexOf","Array","isArray","admin","style","borderBottom","borderTop","margin","padding","concat"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,OAAO,EAAEC,KAAK,EAAEC,UAAU,QAAQ,QAAO;AAElD,SAASC,aAAa,QAAQ,6BAA4B;AAE1D,OAAO,MAAMC,aAAa,CAACC;IACzBH,WAAWI,WAAW,CAACD,QAAQ;QAAEE,OAAO,CAACC,IAAMR,QAAQS,SAAS,CAACD,MAAMA,EAAEE,IAAI,KAAK;IAAO;AAC3F,EAAC;AAED,OAAO,MAAMC,WAAW,CAACN;IACvB,MAAM,EAAEO,SAAS,EAAE,GAAGP;IACtB,MAAMQ,cAAcD,aAAaX,MAAMY,WAAW,CAACD;IAEnD,MAAME,OAAO;QACXJ,MAAM;QACNK,UAAUF,cAAc;YAAC;gBAAEG,MAAM;YAAG;SAAE,GAAG,EAAE;QAC3CC,QAAQ;QACRC,KAAKC;IACP;IAEA,IAAIN,aAAa;QACfX,WAAWkB,WAAW,CAACf,QAAQS;IACjC,OAAO;QACLZ,WAAWmB,SAAS,CAAChB,QAAQS,MAAM;YAAEQ,OAAO;QAAK;QACjDpB,WAAWqB,QAAQ,CAAClB,QAAQ;YAAEmB,MAAM;QAAM;IAC5C;AACF,EAAC;AAED;;CAEC,GACD,OAAO,SAASC,qBACdC,iBAEW,EACXC,MAAuB;IAEvB,MAAMC,aAAsBzB,cAAcwB;IAE1C,MAAME,SACJ,OAAOH,sBAAsB,aACzBA,kBAAkB;QAAEC;QAAQG,eAAeF;IAAW,KACtDA;IAEN,8HAA8H;IAC9H,MAAMG,cAAc,EAAE;IACtB,IAAK,IAAIC,IAAIH,OAAOI,MAAM,GAAG,GAAGD,KAAK,GAAGA,IAAK;QAC3C,MAAME,QAAQL,MAAM,CAACG,EAAE;QAEvB,IAAI,UAAUE,OAAO;YACnB,IACE,CAACN,WAAWO,IAAI,CAAC,CAACC,YAAc,CAAE,CAAA,UAAUA,SAAQ,KAAMA,UAAUC,IAAI,KAAKH,MAAMG,IAAI,GACvF;gBACA,IAAIH,MAAMG,IAAI,KAAK,YAAYH,MAAMxB,IAAI,KAAK,SAAS;oBACrDqB,YAAYO,IAAI,CAACJ;oBACjB,iFAAiF;oBACjFL,OAAOU,MAAM,CAACV,OAAOW,OAAO,CAACN,QAAQ;gBACvC;YACF;QACF;IACF;IAEA,IAAI,AAACO,MAAMC,OAAO,CAAChB,sBAAsBA,mBAAmBO,UAAWF,aAAaE,QAAQ;QAC1FJ,OAAOS,IAAI,CAAC;YACVD,MAAM;YACN3B,MAAM;YACNiC,OAAO;gBACLC,OAAO;oBACLC,cAAc;oBACdC,WAAW;oBACXC,QAAQ;oBACRC,SAAS;gBACX;YACF;YACAnB,QAAQY,MAAMC,OAAO,CAAChB,qBAClBA,kBAAkBuB,MAAM,CAAClB,eACzBA;QACN;IACF;IACA,OAAOF;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateComponentMap.d.ts","sourceRoot":"","sources":["../src/generateComponentMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"generateComponentMap.d.ts","sourceRoot":"","sources":["../src/generateComponentMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,eAAe,EAAE,MAAM,eAAe,CAAA;AAK3D,OAAO,KAAK,EAAE,gBAAgB,EAA6C,MAAM,YAAY,CAAA;AAO7F,eAAO,MAAM,uBAAuB,SAC3B,gBAAgB,KAAG,eAAe,CAAC,sBAAsB,CAmG/D,CAAA"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { mapFields } from '@payloadcms/ui/utilities/buildComponentMap';
|
|
2
|
-
import { sanitizeFields } from 'payload/config';
|
|
3
2
|
import React from 'react';
|
|
4
3
|
import { elements as elementTypes } from './field/elements/index.js';
|
|
5
4
|
import { linkFieldsSchemaPath } from './field/elements/link/shared.js';
|
|
6
|
-
import { transformExtraFields } from './field/elements/link/utilities.js';
|
|
7
5
|
import { uploadFieldsSchemaPath } from './field/elements/upload/shared.js';
|
|
8
6
|
import { defaultLeaves as leafTypes } from './field/leaves/index.js';
|
|
9
7
|
export const getGenerateComponentMap = (args)=>({ WithServerSideProps, config, i18n })=>{
|
|
10
8
|
const componentMap = new Map();
|
|
11
|
-
const validRelationships = config.collections.map((c)=>c.slug) || [];
|
|
12
9
|
(args?.admin?.leaves || Object.values(leafTypes)).forEach((leaf)=>{
|
|
13
10
|
let leafObject;
|
|
14
11
|
if (typeof leaf === 'object' && leaf !== null) {
|
|
@@ -48,15 +45,10 @@ export const getGenerateComponentMap = (args)=>({ WithServerSideProps, config, i
|
|
|
48
45
|
switch(element.name){
|
|
49
46
|
case 'link':
|
|
50
47
|
{
|
|
51
|
-
const linkFields = sanitizeFields({
|
|
52
|
-
config,
|
|
53
|
-
fields: transformExtraFields(args.admin?.link?.fields, config, i18n),
|
|
54
|
-
validRelationships
|
|
55
|
-
});
|
|
56
48
|
const mappedFields = mapFields({
|
|
57
49
|
WithServerSideProps,
|
|
58
50
|
config,
|
|
59
|
-
fieldSchema:
|
|
51
|
+
fieldSchema: args.admin?.link?.fields,
|
|
60
52
|
i18n,
|
|
61
53
|
readOnly: false
|
|
62
54
|
});
|
|
@@ -73,15 +65,10 @@ export const getGenerateComponentMap = (args)=>({ WithServerSideProps, config, i
|
|
|
73
65
|
});
|
|
74
66
|
uploadEnabledCollections.forEach((collection)=>{
|
|
75
67
|
if (args?.admin?.upload?.collections[collection.slug]?.fields) {
|
|
76
|
-
const uploadFields = sanitizeFields({
|
|
77
|
-
config,
|
|
78
|
-
fields: args?.admin?.upload?.collections[collection.slug]?.fields,
|
|
79
|
-
validRelationships
|
|
80
|
-
});
|
|
81
68
|
const mappedFields = mapFields({
|
|
82
69
|
WithServerSideProps,
|
|
83
70
|
config,
|
|
84
|
-
fieldSchema:
|
|
71
|
+
fieldSchema: args?.admin?.upload?.collections[collection.slug]?.fields,
|
|
85
72
|
i18n,
|
|
86
73
|
readOnly: false
|
|
87
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generateComponentMap.tsx"],"sourcesContent":["import type { RichTextAdapter } from 'payload/types'\n\nimport { mapFields } from '@payloadcms/ui/utilities/buildComponentMap'\nimport
|
|
1
|
+
{"version":3,"sources":["../src/generateComponentMap.tsx"],"sourcesContent":["import type { Field, RichTextAdapter } from 'payload/types'\n\nimport { mapFields } from '@payloadcms/ui/utilities/buildComponentMap'\nimport React from 'react'\n\nimport type { AdapterArguments, RichTextCustomElement, RichTextCustomLeaf } from './types.js'\n\nimport { elements as elementTypes } from './field/elements/index.js'\nimport { linkFieldsSchemaPath } from './field/elements/link/shared.js'\nimport { uploadFieldsSchemaPath } from './field/elements/upload/shared.js'\nimport { defaultLeaves as leafTypes } from './field/leaves/index.js'\n\nexport const getGenerateComponentMap =\n (args: AdapterArguments): RichTextAdapter['generateComponentMap'] =>\n ({ WithServerSideProps, config, i18n }) => {\n const componentMap = new Map()\n\n ;(args?.admin?.leaves || Object.values(leafTypes)).forEach((leaf) => {\n let leafObject: RichTextCustomLeaf\n\n if (typeof leaf === 'object' && leaf !== null) {\n leafObject = leaf\n } else if (typeof leaf === 'string' && leafTypes[leaf]) {\n leafObject = leafTypes[leaf]\n }\n\n if (leafObject) {\n const LeafButton = leafObject.Button\n const LeafComponent = leafObject.Leaf\n\n componentMap.set(`leaf.button.${leafObject.name}`, <LeafButton />)\n componentMap.set(`leaf.component.${leafObject.name}`, <LeafComponent />)\n\n if (Array.isArray(leafObject.plugins)) {\n leafObject.plugins.forEach((Plugin, i) => {\n componentMap.set(`leaf.plugin.${leafObject.name}.${i}`, <Plugin />)\n })\n }\n }\n })\n ;(args?.admin?.elements || Object.values(elementTypes)).forEach((el) => {\n let element: RichTextCustomElement\n\n if (typeof el === 'object' && el !== null) {\n element = el\n } else if (typeof el === 'string' && elementTypes[el]) {\n element = elementTypes[el]\n }\n\n if (element) {\n const ElementButton = element.Button\n const ElementComponent = element.Element\n\n if (ElementButton) componentMap.set(`element.button.${element.name}`, <ElementButton />)\n componentMap.set(`element.component.${element.name}`, <ElementComponent />)\n\n if (Array.isArray(element.plugins)) {\n element.plugins.forEach((Plugin, i) => {\n componentMap.set(`element.plugin.${element.name}.${i}`, <Plugin />)\n })\n }\n\n switch (element.name) {\n case 'link': {\n const mappedFields = mapFields({\n WithServerSideProps,\n config,\n fieldSchema: args.admin?.link?.fields as Field[],\n i18n,\n readOnly: false,\n })\n\n componentMap.set(linkFieldsSchemaPath, mappedFields)\n\n break\n }\n\n case 'upload': {\n const uploadEnabledCollections = config.collections.filter(\n ({ admin: { enableRichTextRelationship, hidden }, upload }) => {\n if (hidden === true) {\n return false\n }\n\n return enableRichTextRelationship && Boolean(upload) === true\n },\n )\n\n uploadEnabledCollections.forEach((collection) => {\n if (args?.admin?.upload?.collections[collection.slug]?.fields) {\n const mappedFields = mapFields({\n WithServerSideProps,\n config,\n fieldSchema: args?.admin?.upload?.collections[collection.slug]?.fields,\n i18n,\n readOnly: false,\n })\n\n componentMap.set(`${uploadFieldsSchemaPath}.${collection.slug}`, mappedFields)\n }\n })\n\n break\n }\n\n case 'relationship':\n break\n }\n }\n })\n\n return componentMap\n }\n"],"names":["mapFields","React","elements","elementTypes","linkFieldsSchemaPath","uploadFieldsSchemaPath","defaultLeaves","leafTypes","getGenerateComponentMap","args","WithServerSideProps","config","i18n","componentMap","Map","admin","leaves","Object","values","forEach","leaf","leafObject","LeafButton","Button","LeafComponent","Leaf","set","name","Array","isArray","plugins","Plugin","i","el","element","ElementButton","ElementComponent","Element","mappedFields","fieldSchema","link","fields","readOnly","uploadEnabledCollections","collections","filter","enableRichTextRelationship","hidden","upload","Boolean","collection","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateSchemaMap.d.ts","sourceRoot":"","sources":["../src/generateSchemaMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"generateSchemaMap.d.ts","sourceRoot":"","sources":["../src/generateSchemaMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,eAAe,EAAE,MAAM,eAAe,CAAA;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAA;AAMzE,eAAO,MAAM,oBAAoB,SACxB,gBAAgB,KAAG,eAAe,CAAC,mBAAmB,CAoD5D,CAAA"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { sanitizeFields } from 'payload/config';
|
|
2
1
|
import { elements as elementTypes } from './field/elements/index.js';
|
|
3
2
|
import { linkFieldsSchemaPath } from './field/elements/link/shared.js';
|
|
4
|
-
import { transformExtraFields } from './field/elements/link/utilities.js';
|
|
5
3
|
import { uploadFieldsSchemaPath } from './field/elements/upload/shared.js';
|
|
6
|
-
export const getGenerateSchemaMap = (args)=>({ config,
|
|
7
|
-
const validRelationships = config.collections.map((c)=>c.slug) || [];
|
|
4
|
+
export const getGenerateSchemaMap = (args)=>({ config, schemaMap, schemaPath })=>{
|
|
8
5
|
(args?.admin?.elements || Object.values(elementTypes)).forEach((el)=>{
|
|
9
6
|
let element;
|
|
10
7
|
if (typeof el === 'object' && el !== null) {
|
|
@@ -16,12 +13,7 @@ export const getGenerateSchemaMap = (args)=>({ config, i18n, schemaMap, schemaPa
|
|
|
16
13
|
switch(element.name){
|
|
17
14
|
case 'link':
|
|
18
15
|
{
|
|
19
|
-
|
|
20
|
-
config,
|
|
21
|
-
fields: transformExtraFields(args.admin?.link?.fields, config, i18n),
|
|
22
|
-
validRelationships
|
|
23
|
-
});
|
|
24
|
-
schemaMap.set(`${schemaPath}.${linkFieldsSchemaPath}`, linkFields);
|
|
16
|
+
schemaMap.set(`${schemaPath}.${linkFieldsSchemaPath}`, args.admin?.link?.fields);
|
|
25
17
|
break;
|
|
26
18
|
}
|
|
27
19
|
case 'upload':
|
|
@@ -34,12 +26,7 @@ export const getGenerateSchemaMap = (args)=>({ config, i18n, schemaMap, schemaPa
|
|
|
34
26
|
});
|
|
35
27
|
uploadEnabledCollections.forEach((collection)=>{
|
|
36
28
|
if (args?.admin?.upload?.collections[collection.slug]?.fields) {
|
|
37
|
-
|
|
38
|
-
config,
|
|
39
|
-
fields: args?.admin?.upload?.collections[collection.slug]?.fields,
|
|
40
|
-
validRelationships
|
|
41
|
-
});
|
|
42
|
-
schemaMap.set(`${schemaPath}.${uploadFieldsSchemaPath}.${collection.slug}`, uploadFields);
|
|
29
|
+
schemaMap.set(`${schemaPath}.${uploadFieldsSchemaPath}.${collection.slug}`, args?.admin?.upload?.collections[collection.slug]?.fields);
|
|
43
30
|
}
|
|
44
31
|
});
|
|
45
32
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generateSchemaMap.ts"],"sourcesContent":["import type { RichTextAdapter } from 'payload/types'\n\nimport
|
|
1
|
+
{"version":3,"sources":["../src/generateSchemaMap.ts"],"sourcesContent":["import type { Field, RichTextAdapter } from 'payload/types'\n\nimport type { AdapterArguments, RichTextCustomElement } from './types.js'\n\nimport { elements as elementTypes } from './field/elements/index.js'\nimport { linkFieldsSchemaPath } from './field/elements/link/shared.js'\nimport { uploadFieldsSchemaPath } from './field/elements/upload/shared.js'\n\nexport const getGenerateSchemaMap =\n (args: AdapterArguments): RichTextAdapter['generateSchemaMap'] =>\n ({ config, schemaMap, schemaPath }) => {\n ;(args?.admin?.elements || Object.values(elementTypes)).forEach((el) => {\n let element: RichTextCustomElement\n\n if (typeof el === 'object' && el !== null) {\n element = el\n } else if (typeof el === 'string' && elementTypes[el]) {\n element = elementTypes[el]\n }\n\n if (element) {\n switch (element.name) {\n case 'link': {\n schemaMap.set(\n `${schemaPath}.${linkFieldsSchemaPath}`,\n args.admin?.link?.fields as Field[],\n )\n\n break\n }\n\n case 'upload': {\n const uploadEnabledCollections = config.collections.filter(\n ({ admin: { enableRichTextRelationship, hidden }, upload }) => {\n if (hidden === true) {\n return false\n }\n\n return enableRichTextRelationship && Boolean(upload) === true\n },\n )\n\n uploadEnabledCollections.forEach((collection) => {\n if (args?.admin?.upload?.collections[collection.slug]?.fields) {\n schemaMap.set(\n `${schemaPath}.${uploadFieldsSchemaPath}.${collection.slug}`,\n args?.admin?.upload?.collections[collection.slug]?.fields,\n )\n }\n })\n\n break\n }\n\n case 'relationship':\n break\n }\n }\n })\n\n return schemaMap\n }\n"],"names":["elements","elementTypes","linkFieldsSchemaPath","uploadFieldsSchemaPath","getGenerateSchemaMap","args","config","schemaMap","schemaPath","admin","Object","values","forEach","el","element","name","set","link","fields","uploadEnabledCollections","collections","filter","enableRichTextRelationship","hidden","upload","Boolean","collection","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,YAAYC,YAAY,QAAQ,4BAA2B;AACpE,SAASC,oBAAoB,QAAQ,kCAAiC;AACtE,SAASC,sBAAsB,QAAQ,oCAAmC;AAE1E,OAAO,MAAMC,uBACX,CAACC,OACD,CAAC,EAAEC,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAE;QAC9BH,CAAAA,MAAMI,OAAOT,YAAYU,OAAOC,MAAM,CAACV,aAAY,EAAGW,OAAO,CAAC,CAACC;YAC/D,IAAIC;YAEJ,IAAI,OAAOD,OAAO,YAAYA,OAAO,MAAM;gBACzCC,UAAUD;YACZ,OAAO,IAAI,OAAOA,OAAO,YAAYZ,YAAY,CAACY,GAAG,EAAE;gBACrDC,UAAUb,YAAY,CAACY,GAAG;YAC5B;YAEA,IAAIC,SAAS;gBACX,OAAQA,QAAQC,IAAI;oBAClB,KAAK;wBAAQ;4BACXR,UAAUS,GAAG,CACX,CAAC,EAAER,WAAW,CAAC,EAAEN,qBAAqB,CAAC,EACvCG,KAAKI,KAAK,EAAEQ,MAAMC;4BAGpB;wBACF;oBAEA,KAAK;wBAAU;4BACb,MAAMC,2BAA2Bb,OAAOc,WAAW,CAACC,MAAM,CACxD,CAAC,EAAEZ,OAAO,EAAEa,0BAA0B,EAAEC,MAAM,EAAE,EAAEC,MAAM,EAAE;gCACxD,IAAID,WAAW,MAAM;oCACnB,OAAO;gCACT;gCAEA,OAAOD,8BAA8BG,QAAQD,YAAY;4BAC3D;4BAGFL,yBAAyBP,OAAO,CAAC,CAACc;gCAChC,IAAIrB,MAAMI,OAAOe,QAAQJ,WAAW,CAACM,WAAWC,IAAI,CAAC,EAAET,QAAQ;oCAC7DX,UAAUS,GAAG,CACX,CAAC,EAAER,WAAW,CAAC,EAAEL,uBAAuB,CAAC,EAAEuB,WAAWC,IAAI,CAAC,CAAC,EAC5DtB,MAAMI,OAAOe,QAAQJ,WAAW,CAACM,WAAWC,IAAI,CAAC,EAAET;gCAEvD;4BACF;4BAEA;wBACF;oBAEA,KAAK;wBACH;gBACJ;YACF;QACF;QAEA,OAAOX;IACT,EAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RichTextAdapterProvider } from 'payload/types';
|
|
2
2
|
import type { AdapterArguments } from './types.js';
|
|
3
|
-
export declare function slateEditor(args: AdapterArguments):
|
|
3
|
+
export declare function slateEditor(args: AdapterArguments): RichTextAdapterProvider<any[], AdapterArguments, any>;
|
|
4
4
|
export { ElementButton } from './field/elements/Button.js';
|
|
5
5
|
export { toggleElement } from './field/elements/toggle.js';
|
|
6
6
|
export { LeafButton } from './field/leaves/Button.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAK5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAUlD,wBAAgB,WAAW,CACzB,IAAI,EAAE,gBAAgB,GACrB,uBAAuB,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAmFvD;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,43 +1,73 @@
|
|
|
1
|
+
import { sanitizeFields } from 'payload/config';
|
|
1
2
|
import { withNullableJSONSchemaType } from 'payload/utilities';
|
|
2
3
|
import { RichTextCell } from './cell/index.js';
|
|
3
4
|
import { richTextRelationshipPromise } from './data/richTextRelationshipPromise.js';
|
|
4
5
|
import { richTextValidate } from './data/validation.js';
|
|
6
|
+
import { transformExtraFields } from './field/elements/link/utilities.js';
|
|
5
7
|
import { RichTextField } from './field/index.js';
|
|
6
8
|
import { getGenerateComponentMap } from './generateComponentMap.js';
|
|
7
9
|
import { getGenerateSchemaMap } from './generateSchemaMap.js';
|
|
8
10
|
export function slateEditor(args) {
|
|
9
|
-
return {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
return async ({ config })=>{
|
|
12
|
+
const validRelationships = config.collections.map((c)=>c.slug) || [];
|
|
13
|
+
if (!args.admin) {
|
|
14
|
+
args.admin = {};
|
|
15
|
+
}
|
|
16
|
+
if (!args.admin.link) {
|
|
17
|
+
args.admin.link = {};
|
|
18
|
+
}
|
|
19
|
+
if (!args.admin.link.fields) {
|
|
20
|
+
args.admin.link.fields = [];
|
|
21
|
+
}
|
|
22
|
+
args.admin.link.fields = await sanitizeFields({
|
|
23
|
+
config: config,
|
|
24
|
+
fields: transformExtraFields(args.admin?.link?.fields, config),
|
|
25
|
+
validRelationships
|
|
26
|
+
});
|
|
27
|
+
if (args?.admin?.upload?.collections) {
|
|
28
|
+
for (const collection of Object.keys(args.admin.upload.collections)){
|
|
29
|
+
if (args?.admin?.upload?.collections[collection]?.fields) {
|
|
30
|
+
args.admin.upload.collections[collection].fields = await sanitizeFields({
|
|
31
|
+
config: config,
|
|
32
|
+
fields: args.admin?.upload?.collections[collection]?.fields,
|
|
33
|
+
validRelationships
|
|
34
|
+
});
|
|
19
35
|
}
|
|
20
|
-
};
|
|
21
|
-
},
|
|
22
|
-
populationPromises ({ context, currentDepth, depth, field, fieldPromises, findMany, flattenLocales, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc }) {
|
|
23
|
-
if (field.admin?.elements?.includes('relationship') || field.admin?.elements?.includes('upload') || field.admin?.elements?.includes('link') || !field?.admin?.elements) {
|
|
24
|
-
richTextRelationshipPromise({
|
|
25
|
-
context,
|
|
26
|
-
currentDepth,
|
|
27
|
-
depth,
|
|
28
|
-
field,
|
|
29
|
-
fieldPromises,
|
|
30
|
-
findMany,
|
|
31
|
-
flattenLocales,
|
|
32
|
-
overrideAccess,
|
|
33
|
-
populationPromises,
|
|
34
|
-
req,
|
|
35
|
-
showHiddenFields,
|
|
36
|
-
siblingDoc
|
|
37
|
-
});
|
|
38
36
|
}
|
|
39
|
-
}
|
|
40
|
-
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
CellComponent: RichTextCell,
|
|
40
|
+
FieldComponent: RichTextField,
|
|
41
|
+
generateComponentMap: getGenerateComponentMap(args),
|
|
42
|
+
generateSchemaMap: getGenerateSchemaMap(args),
|
|
43
|
+
outputSchema: ({ isRequired })=>{
|
|
44
|
+
return {
|
|
45
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
46
|
+
items: {
|
|
47
|
+
type: 'object'
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
populationPromises ({ context, currentDepth, depth, field, fieldPromises, findMany, flattenLocales, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc }) {
|
|
52
|
+
if (field.admin?.elements?.includes('relationship') || field.admin?.elements?.includes('upload') || field.admin?.elements?.includes('link') || !field?.admin?.elements) {
|
|
53
|
+
richTextRelationshipPromise({
|
|
54
|
+
context,
|
|
55
|
+
currentDepth,
|
|
56
|
+
depth,
|
|
57
|
+
field,
|
|
58
|
+
fieldPromises,
|
|
59
|
+
findMany,
|
|
60
|
+
flattenLocales,
|
|
61
|
+
overrideAccess,
|
|
62
|
+
populationPromises,
|
|
63
|
+
req,
|
|
64
|
+
showHiddenFields,
|
|
65
|
+
siblingDoc
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
validate: richTextValidate
|
|
70
|
+
};
|
|
41
71
|
};
|
|
42
72
|
}
|
|
43
73
|
export { ElementButton } from './field/elements/Button.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import type { Config } from 'payload/config'\nimport type { RichTextAdapterProvider } from 'payload/types'\n\nimport { sanitizeFields } from 'payload/config'\nimport { withNullableJSONSchemaType } from 'payload/utilities'\n\nimport type { AdapterArguments } from './types.js'\n\nimport { RichTextCell } from './cell/index.js'\nimport { richTextRelationshipPromise } from './data/richTextRelationshipPromise.js'\nimport { richTextValidate } from './data/validation.js'\nimport { transformExtraFields } from './field/elements/link/utilities.js'\nimport { RichTextField } from './field/index.js'\nimport { getGenerateComponentMap } from './generateComponentMap.js'\nimport { getGenerateSchemaMap } from './generateSchemaMap.js'\n\nexport function slateEditor(\n args: AdapterArguments,\n): RichTextAdapterProvider<any[], AdapterArguments, any> {\n return async ({ config }) => {\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n if (!args.admin) {\n args.admin = {}\n }\n if (!args.admin.link) {\n args.admin.link = {}\n }\n if (!args.admin.link.fields) {\n args.admin.link.fields = []\n }\n args.admin.link.fields = await sanitizeFields({\n config: config as unknown as Config,\n fields: transformExtraFields(args.admin?.link?.fields, config),\n validRelationships,\n })\n\n if (args?.admin?.upload?.collections) {\n for (const collection of Object.keys(args.admin.upload.collections)) {\n if (args?.admin?.upload?.collections[collection]?.fields) {\n args.admin.upload.collections[collection].fields = await sanitizeFields({\n config: config as unknown as Config,\n fields: args.admin?.upload?.collections[collection]?.fields,\n validRelationships,\n })\n }\n }\n }\n\n return {\n CellComponent: RichTextCell,\n FieldComponent: RichTextField,\n generateComponentMap: getGenerateComponentMap(args),\n generateSchemaMap: getGenerateSchemaMap(args),\n outputSchema: ({ isRequired }) => {\n return {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n },\n }\n },\n populationPromises({\n context,\n currentDepth,\n depth,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n if (\n field.admin?.elements?.includes('relationship') ||\n field.admin?.elements?.includes('upload') ||\n field.admin?.elements?.includes('link') ||\n !field?.admin?.elements\n ) {\n richTextRelationshipPromise({\n context,\n currentDepth,\n depth,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n validate: richTextValidate,\n }\n }\n}\n\nexport { ElementButton } from './field/elements/Button.js'\n\nexport { toggleElement } from './field/elements/toggle.js'\nexport { LeafButton } from './field/leaves/Button.js'\nexport type {\n AdapterArguments,\n ElementNode,\n FieldProps,\n RichTextCustomElement,\n RichTextCustomLeaf,\n RichTextElement,\n RichTextLeaf,\n TextNode,\n} from './types.js'\n\nexport { nodeIsTextNode } from './types.js'\n"],"names":["sanitizeFields","withNullableJSONSchemaType","RichTextCell","richTextRelationshipPromise","richTextValidate","transformExtraFields","RichTextField","getGenerateComponentMap","getGenerateSchemaMap","slateEditor","args","config","validRelationships","collections","map","c","slug","admin","link","fields","upload","collection","Object","keys","CellComponent","FieldComponent","generateComponentMap","generateSchemaMap","outputSchema","isRequired","type","items","populationPromises","context","currentDepth","depth","field","fieldPromises","findMany","flattenLocales","overrideAccess","req","showHiddenFields","siblingDoc","elements","includes","validate","ElementButton","toggleElement","LeafButton","nodeIsTextNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,cAAc,QAAQ,iBAAgB;AAC/C,SAASC,0BAA0B,QAAQ,oBAAmB;AAI9D,SAASC,YAAY,QAAQ,kBAAiB;AAC9C,SAASC,2BAA2B,QAAQ,wCAAuC;AACnF,SAASC,gBAAgB,QAAQ,uBAAsB;AACvD,SAASC,oBAAoB,QAAQ,qCAAoC;AACzE,SAASC,aAAa,QAAQ,mBAAkB;AAChD,SAASC,uBAAuB,QAAQ,4BAA2B;AACnE,SAASC,oBAAoB,QAAQ,yBAAwB;AAE7D,OAAO,SAASC,YACdC,IAAsB;IAEtB,OAAO,OAAO,EAAEC,MAAM,EAAE;QACtB,MAAMC,qBAAqBD,OAAOE,WAAW,CAACC,GAAG,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAK,EAAE;QAEtE,IAAI,CAACN,KAAKO,KAAK,EAAE;YACfP,KAAKO,KAAK,GAAG,CAAC;QAChB;QACA,IAAI,CAACP,KAAKO,KAAK,CAACC,IAAI,EAAE;YACpBR,KAAKO,KAAK,CAACC,IAAI,GAAG,CAAC;QACrB;QACA,IAAI,CAACR,KAAKO,KAAK,CAACC,IAAI,CAACC,MAAM,EAAE;YAC3BT,KAAKO,KAAK,CAACC,IAAI,CAACC,MAAM,GAAG,EAAE;QAC7B;QACAT,KAAKO,KAAK,CAACC,IAAI,CAACC,MAAM,GAAG,MAAMnB,eAAe;YAC5CW,QAAQA;YACRQ,QAAQd,qBAAqBK,KAAKO,KAAK,EAAEC,MAAMC,QAAQR;YACvDC;QACF;QAEA,IAAIF,MAAMO,OAAOG,QAAQP,aAAa;YACpC,KAAK,MAAMQ,cAAcC,OAAOC,IAAI,CAACb,KAAKO,KAAK,CAACG,MAAM,CAACP,WAAW,EAAG;gBACnE,IAAIH,MAAMO,OAAOG,QAAQP,WAAW,CAACQ,WAAW,EAAEF,QAAQ;oBACxDT,KAAKO,KAAK,CAACG,MAAM,CAACP,WAAW,CAACQ,WAAW,CAACF,MAAM,GAAG,MAAMnB,eAAe;wBACtEW,QAAQA;wBACRQ,QAAQT,KAAKO,KAAK,EAAEG,QAAQP,WAAW,CAACQ,WAAW,EAAEF;wBACrDP;oBACF;gBACF;YACF;QACF;QAEA,OAAO;YACLY,eAAetB;YACfuB,gBAAgBnB;YAChBoB,sBAAsBnB,wBAAwBG;YAC9CiB,mBAAmBnB,qBAAqBE;YACxCkB,cAAc,CAAC,EAAEC,UAAU,EAAE;gBAC3B,OAAO;oBACLC,MAAM7B,2BAA2B,SAAS4B;oBAC1CE,OAAO;wBACLD,MAAM;oBACR;gBACF;YACF;YACAE,oBAAmB,EACjBC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,cAAc,EACdR,kBAAkB,EAClBS,GAAG,EACHC,gBAAgB,EAChBC,UAAU,EACX;gBACC,IACEP,MAAMnB,KAAK,EAAE2B,UAAUC,SAAS,mBAChCT,MAAMnB,KAAK,EAAE2B,UAAUC,SAAS,aAChCT,MAAMnB,KAAK,EAAE2B,UAAUC,SAAS,WAChC,CAACT,OAAOnB,OAAO2B,UACf;oBACAzC,4BAA4B;wBAC1B8B;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAR;wBACAS;wBACAC;wBACAC;oBACF;gBACF;YACF;YACAG,UAAU1C;QACZ;IACF;AACF;AAEA,SAAS2C,aAAa,QAAQ,6BAA4B;AAE1D,SAASC,aAAa,QAAQ,6BAA4B;AAC1D,SAASC,UAAU,QAAQ,2BAA0B;AAYrD,SAASC,cAAc,QAAQ,aAAY"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" resolution-mode="require"/>
|
|
2
|
-
import type { I18n } from '@payloadcms/translations';
|
|
3
2
|
import type { SanitizedConfig } from 'payload/config';
|
|
4
3
|
import type { Field, RichTextFieldProps } from 'payload/types';
|
|
5
4
|
import type { Editor } from 'slate';
|
|
@@ -37,7 +36,6 @@ export type AdapterArguments = {
|
|
|
37
36
|
fields?: ((args: {
|
|
38
37
|
config: SanitizedConfig;
|
|
39
38
|
defaultFields: Field[];
|
|
40
|
-
i18n: I18n;
|
|
41
39
|
}) => Field[]) | Field[];
|
|
42
40
|
};
|
|
43
41
|
placeholder?: Record<string, string> | string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAU,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEnC,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,CAAC,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjF,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,IAAI,IAAI,QAAQ,CAE7E;AAED,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAA;AACzD,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;AAEvD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACjC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,QAAQ,GACR,MAAM,GACN,IAAI,GACJ,cAAc,GACd,WAAW,GACX,IAAI,GACJ,QAAQ,GACR,qBAAqB,CAAA;AACzB,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,CAAA;AAEtB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;QAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;QACvB,IAAI,CAAC,EAAE;YACL,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;gBAAE,MAAM,EAAE,eAAe,CAAC;gBAAC,aAAa,EAAE,KAAK,EAAE,CAAA;aAAE,KAAK,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAA;SAC5F,CAAA;QACD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;QAC7C,GAAG,CAAC,EAAE,OAAO,CAAA;QACb,MAAM,CAAC,EAAE;YACP,WAAW,EAAE;gBACX,CAAC,UAAU,EAAE,MAAM,GAAG;oBACpB,MAAM,EAAE,KAAK,EAAE,CAAA;iBAChB,CAAA;aACF,CAAA;SACF,CAAA;KACF,CAAA;CACF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAA"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from 'payload/config'\nimport type { Field, RichTextFieldProps } from 'payload/types'\nimport type { Editor } from 'slate'\n\nexport type TextNode = { [x: string]: unknown; text: string }\n\nexport type ElementNode = { children: (ElementNode | TextNode)[]; type?: string }\n\nexport function nodeIsTextNode(node: ElementNode | TextNode): node is TextNode {\n return 'text' in node\n}\n\nexport type RichTextPluginComponent = React.ComponentType\nexport type RichTextPlugin = (editor: Editor) => Editor\n\nexport type RichTextCustomElement = {\n Button?: React.ComponentType<any>\n Element: React.ComponentType<any>\n name: string\n plugins?: RichTextPluginComponent[]\n}\n\nexport type RichTextCustomLeaf = {\n Button: React.ComponentType<any>\n Leaf: React.ComponentType<any>\n name: string\n plugins?: RichTextPluginComponent[]\n}\n\nexport type RichTextElement =\n | 'blockquote'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'indent'\n | 'link'\n | 'ol'\n | 'relationship'\n | 'textAlign'\n | 'ul'\n | 'upload'\n | RichTextCustomElement\nexport type RichTextLeaf =\n | 'bold'\n | 'code'\n | 'italic'\n | 'strikethrough'\n | 'underline'\n | RichTextCustomLeaf\n\nexport type AdapterArguments = {\n admin?: {\n elements?: RichTextElement[]\n hideGutter?: boolean\n leaves?: RichTextLeaf[]\n link?: {\n fields?: ((args: { config: SanitizedConfig; defaultFields: Field[] }) => Field[]) | Field[]\n }\n placeholder?: Record<string, string> | string\n rtl?: boolean\n upload?: {\n collections: {\n [collection: string]: {\n fields: Field[]\n }\n }\n }\n }\n}\n\nexport type FieldProps = RichTextFieldProps<any[], AdapterArguments, AdapterArguments>\n"],"names":["nodeIsTextNode","node"],"rangeMappings":";;","mappings":"AAQA,OAAO,SAASA,eAAeC,IAA4B;IACzD,OAAO,UAAUA;AACnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/richtext-slate",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.22",
|
|
4
4
|
"description": "The officially supported Slate richtext adapter for Payload",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -34,15 +34,15 @@
|
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "20.12.5",
|
|
36
36
|
"@types/react": "18.2.74",
|
|
37
|
-
"@payloadcms/
|
|
38
|
-
"
|
|
39
|
-
"
|
|
37
|
+
"@payloadcms/ui": "3.0.0-beta.22",
|
|
38
|
+
"payload": "3.0.0-beta.22",
|
|
39
|
+
"@payloadcms/eslint-config": "1.1.1"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
43
|
-
"@payloadcms/translations": "3.0.0-beta.
|
|
44
|
-
"
|
|
45
|
-
"
|
|
43
|
+
"@payloadcms/translations": "3.0.0-beta.22",
|
|
44
|
+
"@payloadcms/ui": "3.0.0-beta.22",
|
|
45
|
+
"payload": "3.0.0-beta.22"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
48
|
"node": ">=18.20.2"
|