@payloadcms/richtext-lexical 3.43.0-internal.c5bbc84 → 3.44.0-canary.0
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/exports/client/bundled.css +1 -1
- package/dist/field/Diff/converters/listitem/index.js +1 -1
- package/dist/field/Diff/converters/listitem/index.js.map +1 -1
- package/dist/field/Diff/converters/relationship/index.d.ts.map +1 -1
- package/dist/field/Diff/converters/relationship/index.js +11 -5
- package/dist/field/Diff/converters/relationship/index.js.map +1 -1
- package/dist/field/Diff/converters/unknown/index.js +1 -1
- package/dist/field/Diff/converters/unknown/index.js.map +1 -1
- package/dist/field/Diff/converters/upload/index.js +2 -1
- package/dist/field/Diff/converters/upload/index.js.map +1 -1
- package/dist/field/Diff/index.d.ts +0 -1
- package/dist/field/Diff/index.d.ts.map +1 -1
- package/dist/field/Diff/index.js +29 -33
- package/dist/field/Diff/index.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/package.json +8 -8
- package/dist/field/Diff/htmlDiff/index.d.ts +0 -63
- package/dist/field/Diff/htmlDiff/index.d.ts.map +0 -1
- package/dist/field/Diff/htmlDiff/index.js +0 -501
- package/dist/field/Diff/htmlDiff/index.js.map +0 -1
|
@@ -43,7 +43,7 @@ export const ListItemDiffHTMLConverterAsync = {
|
|
|
43
43
|
})]
|
|
44
44
|
})
|
|
45
45
|
});
|
|
46
|
-
const html = ReactDOMServer.
|
|
46
|
+
const html = ReactDOMServer.renderToStaticMarkup(JSX);
|
|
47
47
|
// Add style="list-style-type: none;${providedCSSString}" to html
|
|
48
48
|
const styleIndex = html.indexOf('class="list-item-checkbox');
|
|
49
49
|
const classIndex = html.indexOf('class="list-item-checkbox', styleIndex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["CheckIcon","ListItemDiffHTMLConverterAsync","listitem","node","nodesToHTML","parent","providedCSSString","hasSubLists","children","some","child","type","nodes","join","listType","ReactDOMServer","default","JSX","_jsx","checked","className","role","tabIndex","value","dangerouslySetInnerHTML","__html","_jsxs","html","
|
|
1
|
+
{"version":3,"file":"index.js","names":["CheckIcon","ListItemDiffHTMLConverterAsync","listitem","node","nodesToHTML","parent","providedCSSString","hasSubLists","children","some","child","type","nodes","join","listType","ReactDOMServer","default","JSX","_jsx","checked","className","role","tabIndex","value","dangerouslySetInnerHTML","__html","_jsxs","html","renderToStaticMarkup","styleIndex","indexOf","classIndex","classEndIndex","substring","classNameWithStyle","htmlWithStyle","replace"],"sources":["../../../../../src/field/Diff/converters/listitem/index.tsx"],"sourcesContent":["import { CheckIcon } from '@payloadcms/ui/rsc'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { SerializedListItemNode } from '../../../../nodeTypes.js'\n\nimport './index.scss'\n\nexport const ListItemDiffHTMLConverterAsync: HTMLConvertersAsync<SerializedListItemNode> = {\n listitem: async ({ node, nodesToHTML, parent, providedCSSString }) => {\n const hasSubLists = node.children.some((child) => child.type === 'list')\n\n const children = (\n await nodesToHTML({\n nodes: node.children,\n })\n ).join('')\n\n if ('listType' in parent && parent?.listType === 'check') {\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const JSX = (\n <li\n aria-checked={node.checked ? true : false}\n className={`checkboxItem ${node.checked ? 'checkboxItem--checked' : 'checkboxItem--unchecked'}${\n hasSubLists ? ' checkboxItem--nested' : ''\n }`}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n role=\"checkbox\"\n tabIndex={-1}\n value={node.value}\n >\n {hasSubLists ? (\n // When sublists exist, just render them safely as HTML\n <div dangerouslySetInnerHTML={{ __html: children }} />\n ) : (\n // Otherwise, show our custom styled checkbox\n <div className=\"checkboxItem__wrapper\">\n <div\n className=\"checkboxItem__icon\"\n data-checked={node.checked}\n data-enable-match=\"true\"\n >\n {node.checked && <CheckIcon />}\n </div>\n <span className=\"checkboxItem__label\">{children}</span>\n </div>\n )}\n </li>\n )\n\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n // Add style=\"list-style-type: none;${providedCSSString}\" to html\n const styleIndex = html.indexOf('class=\"list-item-checkbox')\n const classIndex = html.indexOf('class=\"list-item-checkbox', styleIndex)\n const classEndIndex = html.indexOf('\"', classIndex + 6)\n const className = html.substring(classIndex, classEndIndex)\n const classNameWithStyle = `${className} style=\"list-style-type: none;${providedCSSString}\"`\n const htmlWithStyle = html.replace(className, classNameWithStyle)\n\n return htmlWithStyle\n } else {\n return `<li\n class=\"${hasSubLists ? 'nestedListItem' : ''}\"\n style=\"${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}\"\n value=\"${node.value}\"\n data-enable-match=\"true\"\n >${children}</li>`\n }\n },\n}\n"],"mappings":";AAAA,SAASA,SAAS,QAAQ;AAO1B,OAAO,MAAMC,8BAAA,GAA8E;EACzFC,QAAA,EAAU,MAAAA,CAAO;IAAEC,IAAI;IAAEC,WAAW;IAAEC,MAAM;IAAEC;EAAiB,CAAE;IAC/D,MAAMC,WAAA,GAAcJ,IAAA,CAAKK,QAAQ,CAACC,IAAI,CAAEC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAK;IAEjE,MAAMH,QAAA,GAAW,CACf,MAAMJ,WAAA,CAAY;MAChBQ,KAAA,EAAOT,IAAA,CAAKK;IACd,EAAC,EACDK,IAAI,CAAC;IAEP,IAAI,cAAcR,MAAA,IAAUA,MAAA,EAAQS,QAAA,KAAa,SAAS;MACxD,MAAMC,cAAA,GAAiB,CAAC,MAAM,MAAM,CAAC,mBAAkB,EAAGC,OAAO;MAEjE,MAAMC,GAAA,gBACJC,IAAA,CAAC;QACC,gBAAcf,IAAA,CAAKgB,OAAO,GAAG,OAAO;QACpCC,SAAA,EAAW,gBAAgBjB,IAAA,CAAKgB,OAAO,GAAG,0BAA0B,4BAClEZ,WAAA,GAAc,0BAA0B,IACxC;QACF;QACAc,IAAA,EAAK;QACLC,QAAA,EAAU,CAAC;QACXC,KAAA,EAAOpB,IAAA,CAAKoB,KAAK;kBAEhBhB,WAAA;QACC;;QACAW,IAAA,CAAC;UAAIM,uBAAA,EAAyB;YAAEC,MAAA,EAAQjB;UAAS;;QAEjD;;QACAkB,KAAA,CAAC;UAAIN,SAAA,EAAU;kCACbF,IAAA,CAAC;YACCE,SAAA,EAAU;YACV,gBAAcjB,IAAA,CAAKgB,OAAO;YAC1B,qBAAkB;sBAEjBhB,IAAA,CAAKgB,OAAO,iBAAID,IAAA,CAAClB,SAAA;2BAEpBkB,IAAA,CAAC;YAAKE,SAAA,EAAU;sBAAuBZ;;;;MAM/C,MAAMmB,IAAA,GAAOZ,cAAA,CAAea,oBAAoB,CAACX,GAAA;MAEjD;MACA,MAAMY,UAAA,GAAaF,IAAA,CAAKG,OAAO,CAAC;MAChC,MAAMC,UAAA,GAAaJ,IAAA,CAAKG,OAAO,CAAC,6BAA6BD,UAAA;MAC7D,MAAMG,aAAA,GAAgBL,IAAA,CAAKG,OAAO,CAAC,KAAKC,UAAA,GAAa;MACrD,MAAMX,SAAA,GAAYO,IAAA,CAAKM,SAAS,CAACF,UAAA,EAAYC,aAAA;MAC7C,MAAME,kBAAA,GAAqB,GAAGd,SAAA,iCAA0Cd,iBAAA,GAAoB;MAC5F,MAAM6B,aAAA,GAAgBR,IAAA,CAAKS,OAAO,CAAChB,SAAA,EAAWc,kBAAA;MAE9C,OAAOC,aAAA;IACT,OAAO;MACL,OAAO;mBACM5B,WAAA,GAAc,mBAAmB;mBACjCA,WAAA,GAAc,yBAAyBD,iBAAA,EAAmB,GAAGA,iBAAA;mBAC7DH,IAAA,CAAKoB,KAAK;;WAElBf,QAAA,OAAe;IACtB;EACF;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/Diff/converters/relationship/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,cAAc,EAAc,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/Diff/converters/relationship/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,cAAc,EAAc,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AACvG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAI1E,eAAO,MAAM,kCAAkC,EAAE,CAAC,IAAI,EAAE;IACtD,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAK,mBAAmB,CAAC,0BAA0B,CAsEnD,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { getTranslation } from '@payloadcms/translations';
|
|
3
|
+
import { formatAdminURL } from 'payload/shared';
|
|
3
4
|
const baseClass = 'lexical-relationship-diff';
|
|
4
5
|
export const RelationshipDiffHTMLConverterAsync = ({
|
|
5
6
|
i18n,
|
|
@@ -12,13 +13,14 @@ export const RelationshipDiffHTMLConverterAsync = ({
|
|
|
12
13
|
providedCSSString
|
|
13
14
|
}) => {
|
|
14
15
|
let data = undefined;
|
|
16
|
+
const id = typeof node.value === 'object' ? node.value.id : node.value;
|
|
15
17
|
// If there's no valid upload data, populate return an empty string
|
|
16
18
|
if (typeof node.value !== 'object') {
|
|
17
19
|
if (!populate) {
|
|
18
20
|
return '';
|
|
19
21
|
}
|
|
20
22
|
data = await populate({
|
|
21
|
-
id
|
|
23
|
+
id,
|
|
22
24
|
collectionSlug: node.relationTo
|
|
23
25
|
});
|
|
24
26
|
} else {
|
|
@@ -29,7 +31,7 @@ export const RelationshipDiffHTMLConverterAsync = ({
|
|
|
29
31
|
const JSX = /*#__PURE__*/_jsx("div", {
|
|
30
32
|
className: `${baseClass}${providedCSSString}`,
|
|
31
33
|
"data-enable-match": "true",
|
|
32
|
-
"data-id":
|
|
34
|
+
"data-id": id,
|
|
33
35
|
"data-slug": node.relationTo,
|
|
34
36
|
children: /*#__PURE__*/_jsxs("div", {
|
|
35
37
|
className: `${baseClass}__card`,
|
|
@@ -44,18 +46,22 @@ export const RelationshipDiffHTMLConverterAsync = ({
|
|
|
44
46
|
children: /*#__PURE__*/_jsx("a", {
|
|
45
47
|
className: `${baseClass}__link`,
|
|
46
48
|
"data-enable-match": "false",
|
|
47
|
-
href:
|
|
49
|
+
href: formatAdminURL({
|
|
50
|
+
adminRoute: req.payload.config.routes.admin,
|
|
51
|
+
path: `/collections/${relatedCollection?.slug}/${data.id}`,
|
|
52
|
+
serverURL: req.payload.config.serverURL
|
|
53
|
+
}),
|
|
48
54
|
rel: "noopener noreferrer",
|
|
49
55
|
target: "_blank",
|
|
50
56
|
children: data[relatedCollection.admin.useAsTitle]
|
|
51
57
|
})
|
|
52
58
|
}) : /*#__PURE__*/_jsx("strong", {
|
|
53
|
-
children:
|
|
59
|
+
children: id
|
|
54
60
|
})]
|
|
55
61
|
})
|
|
56
62
|
});
|
|
57
63
|
// Render to HTML
|
|
58
|
-
const html = ReactDOMServer.
|
|
64
|
+
const html = ReactDOMServer.renderToStaticMarkup(JSX);
|
|
59
65
|
return html;
|
|
60
66
|
}
|
|
61
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","baseClass","RelationshipDiffHTMLConverterAsync","i18n","req","relationship","node","populate","providedCSSString","data","undefined","
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","baseClass","RelationshipDiffHTMLConverterAsync","i18n","req","relationship","node","populate","providedCSSString","data","undefined","id","value","collectionSlug","relationTo","relatedCollection","payload","collections","config","ReactDOMServer","default","JSX","_jsx","className","_jsxs","t","label","labels","singular","slug","admin","useAsTitle","href","adminRoute","routes","path","serverURL","rel","target","html","renderToStaticMarkup"],"sources":["../../../../../src/field/Diff/converters/relationship/index.tsx"],"sourcesContent":["import type { FileData, PayloadRequest, TypeWithID } from 'payload'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\n\nimport './index.scss'\n\nimport { formatAdminURL } from 'payload/shared'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { SerializedRelationshipNode } from '../../../../nodeTypes.js'\n\nconst baseClass = 'lexical-relationship-diff'\n\nexport const RelationshipDiffHTMLConverterAsync: (args: {\n i18n: I18nClient\n req: PayloadRequest\n}) => HTMLConvertersAsync<SerializedRelationshipNode> = ({ i18n, req }) => {\n return {\n relationship: async ({ node, populate, providedCSSString }) => {\n let data: (Record<string, any> & TypeWithID) | undefined = undefined\n\n const id = typeof node.value === 'object' ? node.value.id : node.value\n\n // If there's no valid upload data, populate return an empty string\n if (typeof node.value !== 'object') {\n if (!populate) {\n return ''\n }\n data = await populate<FileData & TypeWithID>({\n id,\n collectionSlug: node.relationTo,\n })\n } else {\n data = node.value as unknown as FileData & TypeWithID\n }\n\n const relatedCollection = req.payload.collections[node.relationTo]?.config\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const JSX = (\n <div\n className={`${baseClass}${providedCSSString}`}\n data-enable-match=\"true\"\n data-id={id}\n data-slug={node.relationTo}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__collectionLabel`}>\n {i18n.t('fields:labelRelationship', {\n label: relatedCollection?.labels?.singular\n ? getTranslation(relatedCollection?.labels?.singular, i18n)\n : relatedCollection?.slug,\n })}\n </div>\n {data &&\n relatedCollection?.admin?.useAsTitle &&\n data[relatedCollection.admin.useAsTitle] ? (\n <strong className={`${baseClass}__title`} data-enable-match=\"false\">\n <a\n className={`${baseClass}__link`}\n data-enable-match=\"false\"\n href={formatAdminURL({\n adminRoute: req.payload.config.routes.admin,\n path: `/collections/${relatedCollection?.slug}/${data.id}`,\n serverURL: req.payload.config.serverURL,\n })}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {data[relatedCollection.admin.useAsTitle]}\n </a>\n </strong>\n ) : (\n <strong>{id as string}</strong>\n )}\n </div>\n </div>\n )\n\n // Render to HTML\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n return html\n },\n }\n}\n"],"mappings":";AAEA,SAASA,cAAc,QAAyB;AAIhD,SAASC,cAAc,QAAQ;AAK/B,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,kCAAA,GAG2CA,CAAC;EAAEC,IAAI;EAAEC;AAAG,CAAE;EACpE,OAAO;IACLC,YAAA,EAAc,MAAAA,CAAO;MAAEC,IAAI;MAAEC,QAAQ;MAAEC;IAAiB,CAAE;MACxD,IAAIC,IAAA,GAAuDC,SAAA;MAE3D,MAAMC,EAAA,GAAK,OAAOL,IAAA,CAAKM,KAAK,KAAK,WAAWN,IAAA,CAAKM,KAAK,CAACD,EAAE,GAAGL,IAAA,CAAKM,KAAK;MAEtE;MACA,IAAI,OAAON,IAAA,CAAKM,KAAK,KAAK,UAAU;QAClC,IAAI,CAACL,QAAA,EAAU;UACb,OAAO;QACT;QACAE,IAAA,GAAO,MAAMF,QAAA,CAAgC;UAC3CI,EAAA;UACAE,cAAA,EAAgBP,IAAA,CAAKQ;QACvB;MACF,OAAO;QACLL,IAAA,GAAOH,IAAA,CAAKM,KAAK;MACnB;MAEA,MAAMG,iBAAA,GAAoBX,GAAA,CAAIY,OAAO,CAACC,WAAW,CAACX,IAAA,CAAKQ,UAAU,CAAC,EAAEI,MAAA;MAEpE,MAAMC,cAAA,GAAiB,CAAC,MAAM,MAAM,CAAC,mBAAkB,EAAGC,OAAO;MAEjE,MAAMC,GAAA,gBACJC,IAAA,CAAC;QACCC,SAAA,EAAW,GAAGtB,SAAA,GAAYO,iBAAA,EAAmB;QAC7C,qBAAkB;QAClB,WAASG,EAAA;QACT,aAAWL,IAAA,CAAKQ,UAAU;kBAE1B,aAAAU,KAAA,CAAC;UAAID,SAAA,EAAW,GAAGtB,SAAA,QAAiB;kCAClCqB,IAAA,CAAC;YAAIC,SAAA,EAAW,GAAGtB,SAAA,mBAA4B;sBAC5CE,IAAA,CAAKsB,CAAC,CAAC,4BAA4B;cAClCC,KAAA,EAAOX,iBAAA,EAAmBY,MAAA,EAAQC,QAAA,GAC9B7B,cAAA,CAAegB,iBAAA,EAAmBY,MAAA,EAAQC,QAAA,EAAUzB,IAAA,IACpDY,iBAAA,EAAmBc;YACzB;cAEDpB,IAAA,IACDM,iBAAA,EAAmBe,KAAA,EAAOC,UAAA,IAC1BtB,IAAI,CAACM,iBAAA,CAAkBe,KAAK,CAACC,UAAU,CAAC,gBACtCT,IAAA,CAAC;YAAOC,SAAA,EAAW,GAAGtB,SAAA,SAAkB;YAAE,qBAAkB;sBAC1D,aAAAqB,IAAA,CAAC;cACCC,SAAA,EAAW,GAAGtB,SAAA,QAAiB;cAC/B,qBAAkB;cAClB+B,IAAA,EAAMhC,cAAA,CAAe;gBACnBiC,UAAA,EAAY7B,GAAA,CAAIY,OAAO,CAACE,MAAM,CAACgB,MAAM,CAACJ,KAAK;gBAC3CK,IAAA,EAAM,gBAAgBpB,iBAAA,EAAmBc,IAAA,IAAQpB,IAAA,CAAKE,EAAE,EAAE;gBAC1DyB,SAAA,EAAWhC,GAAA,CAAIY,OAAO,CAACE,MAAM,CAACkB;cAChC;cACAC,GAAA,EAAI;cACJC,MAAA,EAAO;wBAEN7B,IAAI,CAACM,iBAAA,CAAkBe,KAAK,CAACC,UAAU;;4BAI5CT,IAAA,CAAC;sBAAQX;;;;MAMjB;MACA,MAAM4B,IAAA,GAAOpB,cAAA,CAAeqB,oBAAoB,CAACnB,GAAA;MAEjD,OAAOkB,IAAA;IACT;EACF;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createHash","baseClass","UnknownDiffHTMLConverterAsync","i18n","req","unknown","node","providedCSSString","ReactDOMServer","default","nodeFieldsHash","update","JSON","stringify","digest","nodeType","type","nodeTypeSpecifier","fields","blockType","JSX","_jsxs","className","_jsx","html","
|
|
1
|
+
{"version":3,"file":"index.js","names":["createHash","baseClass","UnknownDiffHTMLConverterAsync","i18n","req","unknown","node","providedCSSString","ReactDOMServer","default","nodeFieldsHash","update","JSON","stringify","digest","nodeType","type","nodeTypeSpecifier","fields","blockType","JSX","_jsxs","className","_jsx","html","renderToStaticMarkup"],"sources":["../../../../../src/field/Diff/converters/unknown/index.tsx"],"sourcesContent":["import type { LexicalNode } from 'lexical'\nimport type { PayloadRequest } from 'payload'\n\nimport { type I18nClient } from '@payloadcms/translations'\n\nimport './index.scss'\n\nimport { createHash } from 'crypto'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { SerializedBlockNode } from '../../../../nodeTypes.js'\n\nconst baseClass = 'lexical-unknown-diff'\n\nexport const UnknownDiffHTMLConverterAsync: (args: {\n i18n: I18nClient\n req: PayloadRequest\n}) => HTMLConvertersAsync<LexicalNode> = ({ i18n, req }) => {\n return {\n unknown: async ({ node, providedCSSString }) => {\n const ReactDOMServer = (await import('react-dom/server')).default\n\n // hash fields to ensure they are diffed if they change\n const nodeFieldsHash = createHash('sha256')\n .update(JSON.stringify(node ?? {}))\n .digest('hex')\n\n let nodeType = node.type\n\n let nodeTypeSpecifier: null | string = null\n\n if (node.type === 'block') {\n nodeTypeSpecifier = (node as SerializedBlockNode).fields.blockType\n nodeType = 'Block'\n } else if (node.type === 'inlineBlock') {\n nodeTypeSpecifier = (node as SerializedBlockNode).fields.blockType\n nodeType = 'InlineBlock'\n }\n\n const JSX = (\n <div\n className={`${baseClass}${providedCSSString}`}\n data-enable-match=\"true\"\n data-fields-hash={`${nodeFieldsHash}`}\n >\n {nodeTypeSpecifier && (\n <span className={`${baseClass}__specifier`}>{nodeTypeSpecifier} </span>\n )}\n <span>{nodeType}</span>\n <div className={`${baseClass}__meta`}>\n <br />\n </div>\n </div>\n )\n\n // Render to HTML\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n return html\n },\n }\n}\n"],"mappings":";AAOA,SAASA,UAAU,QAAQ;AAK3B,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,6BAAA,GAG4BA,CAAC;EAAEC,IAAI;EAAEC;AAAG,CAAE;EACrD,OAAO;IACLC,OAAA,EAAS,MAAAA,CAAO;MAAEC,IAAI;MAAEC;IAAiB,CAAE;MACzC,MAAMC,cAAA,GAAiB,CAAC,MAAM,MAAM,CAAC,mBAAkB,EAAGC,OAAO;MAEjE;MACA,MAAMC,cAAA,GAAiBV,UAAA,CAAW,UAC/BW,MAAM,CAACC,IAAA,CAAKC,SAAS,CAACP,IAAA,IAAQ,CAAC,IAC/BQ,MAAM,CAAC;MAEV,IAAIC,QAAA,GAAWT,IAAA,CAAKU,IAAI;MAExB,IAAIC,iBAAA,GAAmC;MAEvC,IAAIX,IAAA,CAAKU,IAAI,KAAK,SAAS;QACzBC,iBAAA,GAAoBX,IAAC,CAA6BY,MAAM,CAACC,SAAS;QAClEJ,QAAA,GAAW;MACb,OAAO,IAAIT,IAAA,CAAKU,IAAI,KAAK,eAAe;QACtCC,iBAAA,GAAoBX,IAAC,CAA6BY,MAAM,CAACC,SAAS;QAClEJ,QAAA,GAAW;MACb;MAEA,MAAMK,GAAA,gBACJC,KAAA,CAAC;QACCC,SAAA,EAAW,GAAGrB,SAAA,GAAYM,iBAAA,EAAmB;QAC7C,qBAAkB;QAClB,oBAAkB,GAAGG,cAAA,EAAgB;mBAEpCO,iBAAA,iBACCI,KAAA,CAAC;UAAKC,SAAA,EAAW,GAAGrB,SAAA,aAAsB;qBAAGgB,iBAAA,EAAkB;yBAEjEM,IAAA,CAAC;oBAAMR;yBACPQ,IAAA,CAAC;UAAID,SAAA,EAAW,GAAGrB,SAAA,QAAiB;oBAClC,aAAAsB,IAAA,CAAC;;;MAKP;MACA,MAAMC,IAAA,GAAOhB,cAAA,CAAeiB,oBAAoB,CAACL,GAAA;MAEjD,OAAOI,IAAA;IACT;EACF;AACF","ignoreList":[]}
|
|
@@ -54,6 +54,7 @@ export const UploadDiffHTMLConverterAsync = ({
|
|
|
54
54
|
}) : /*#__PURE__*/_jsx(File, {})
|
|
55
55
|
}), /*#__PURE__*/_jsxs("div", {
|
|
56
56
|
className: `${baseClass}__info`,
|
|
57
|
+
"data-enable-match": "false",
|
|
57
58
|
children: [/*#__PURE__*/_jsx("strong", {
|
|
58
59
|
children: uploadDoc?.filename
|
|
59
60
|
}), /*#__PURE__*/_jsxs("div", {
|
|
@@ -68,7 +69,7 @@ export const UploadDiffHTMLConverterAsync = ({
|
|
|
68
69
|
})
|
|
69
70
|
});
|
|
70
71
|
// Render to HTML
|
|
71
|
-
const html = ReactDOMServer.
|
|
72
|
+
const html = ReactDOMServer.renderToStaticMarkup(JSX);
|
|
72
73
|
return html;
|
|
73
74
|
}
|
|
74
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["File","createHash","formatFilesize","React","baseClass","UploadDiffHTMLConverterAsync","i18n","req","upload","node","populate","providedCSSString","uploadNode","uploadDoc","undefined","value","id","collectionSlug","relationTo","relatedCollection","payload","collections","config","thumbnailSRC","thumbnailURL","url","ReactDOMServer","default","nodeFieldsHash","update","JSON","stringify","fields","digest","JSX","_jsx","className","filename","_jsxs","length","alt","src","filesize","width","height","Fragment","mimeType","html","
|
|
1
|
+
{"version":3,"file":"index.js","names":["File","createHash","formatFilesize","React","baseClass","UploadDiffHTMLConverterAsync","i18n","req","upload","node","populate","providedCSSString","uploadNode","uploadDoc","undefined","value","id","collectionSlug","relationTo","relatedCollection","payload","collections","config","thumbnailSRC","thumbnailURL","url","ReactDOMServer","default","nodeFieldsHash","update","JSON","stringify","fields","digest","JSX","_jsx","className","filename","_jsxs","length","alt","src","filesize","width","height","Fragment","mimeType","html","renderToStaticMarkup"],"sources":["../../../../../src/field/Diff/converters/upload/index.tsx"],"sourcesContent":["import type { FileData, PayloadRequest, TypeWithID } from 'payload'\n\nimport { type I18nClient } from '@payloadcms/translations'\nimport { File } from '@payloadcms/ui/rsc'\nimport { createHash } from 'crypto'\n\nimport './index.scss'\n\nimport { formatFilesize } from 'payload/shared'\nimport React from 'react'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { UploadDataImproved } from '../../../../features/upload/server/nodes/UploadNode.js'\nimport type { SerializedUploadNode } from '../../../../nodeTypes.js'\n\nconst baseClass = 'lexical-upload-diff'\n\nexport const UploadDiffHTMLConverterAsync: (args: {\n i18n: I18nClient\n req: PayloadRequest\n}) => HTMLConvertersAsync<SerializedUploadNode> = ({ i18n, req }) => {\n return {\n upload: async ({ node, populate, providedCSSString }) => {\n const uploadNode = node as UploadDataImproved\n\n let uploadDoc: (FileData & TypeWithID) | undefined = undefined\n\n // If there's no valid upload data, populate return an empty string\n if (typeof uploadNode.value !== 'object') {\n if (!populate) {\n return ''\n }\n uploadDoc = await populate<FileData & TypeWithID>({\n id: uploadNode.value,\n collectionSlug: uploadNode.relationTo,\n })\n } else {\n uploadDoc = uploadNode.value as unknown as FileData & TypeWithID\n }\n\n if (!uploadDoc) {\n return ''\n }\n\n const relatedCollection = req.payload.collections[uploadNode.relationTo]?.config\n\n const thumbnailSRC: string =\n ('thumbnailURL' in uploadDoc && (uploadDoc?.thumbnailURL as string)) || uploadDoc?.url || ''\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n // hash fields to ensure they are diffed if they change\n const nodeFieldsHash = createHash('sha256')\n .update(JSON.stringify(node.fields ?? {}))\n .digest('hex')\n\n const JSX = (\n <div\n className={`${baseClass}${providedCSSString}`}\n data-enable-match=\"true\"\n data-fields-hash={`${nodeFieldsHash}`}\n data-filename={uploadDoc?.filename}\n data-lexical-upload-id={uploadNode.value}\n data-lexical-upload-relation-to={uploadNode.relationTo}\n data-src={thumbnailSRC}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC?.length ? (\n <img alt={uploadDoc?.filename} src={thumbnailSRC} />\n ) : (\n <File />\n )}\n </div>\n <div className={`${baseClass}__info`} data-enable-match=\"false\">\n <strong>{uploadDoc?.filename}</strong>\n <div className={`${baseClass}__meta`}>\n {formatFilesize(uploadDoc?.filesize)}\n {typeof uploadDoc?.width === 'number' && typeof uploadDoc?.height === 'number' && (\n <React.Fragment>\n - \n {uploadDoc?.width}x{uploadDoc?.height}\n </React.Fragment>\n )}\n {uploadDoc?.mimeType && (\n <React.Fragment>\n - \n {uploadDoc?.mimeType}\n </React.Fragment>\n )}\n </div>\n </div>\n </div>\n </div>\n )\n\n // Render to HTML\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n return html\n },\n }\n}\n"],"mappings":";AAGA,SAASA,IAAI,QAAQ;AACrB,SAASC,UAAU,QAAQ;AAI3B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAMlB,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,4BAAA,GAGqCA,CAAC;EAAEC,IAAI;EAAEC;AAAG,CAAE;EAC9D,OAAO;IACLC,MAAA,EAAQ,MAAAA,CAAO;MAAEC,IAAI;MAAEC,QAAQ;MAAEC;IAAiB,CAAE;MAClD,MAAMC,UAAA,GAAaH,IAAA;MAEnB,IAAII,SAAA,GAAiDC,SAAA;MAErD;MACA,IAAI,OAAOF,UAAA,CAAWG,KAAK,KAAK,UAAU;QACxC,IAAI,CAACL,QAAA,EAAU;UACb,OAAO;QACT;QACAG,SAAA,GAAY,MAAMH,QAAA,CAAgC;UAChDM,EAAA,EAAIJ,UAAA,CAAWG,KAAK;UACpBE,cAAA,EAAgBL,UAAA,CAAWM;QAC7B;MACF,OAAO;QACLL,SAAA,GAAYD,UAAA,CAAWG,KAAK;MAC9B;MAEA,IAAI,CAACF,SAAA,EAAW;QACd,OAAO;MACT;MAEA,MAAMM,iBAAA,GAAoBZ,GAAA,CAAIa,OAAO,CAACC,WAAW,CAACT,UAAA,CAAWM,UAAU,CAAC,EAAEI,MAAA;MAE1E,MAAMC,YAAA,GACJ,cAAC,IAAkBV,SAAA,IAAcA,SAAA,EAAWW,YAAA,IAA4BX,SAAA,EAAWY,GAAA,IAAO;MAE5F,MAAMC,cAAA,GAAiB,CAAC,MAAM,MAAM,CAAC,mBAAkB,EAAGC,OAAO;MAEjE;MACA,MAAMC,cAAA,GAAiB3B,UAAA,CAAW,UAC/B4B,MAAM,CAACC,IAAA,CAAKC,SAAS,CAACtB,IAAA,CAAKuB,MAAM,IAAI,CAAC,IACtCC,MAAM,CAAC;MAEV,MAAMC,GAAA,gBACJC,IAAA,CAAC;QACCC,SAAA,EAAW,GAAGhC,SAAA,GAAYO,iBAAA,EAAmB;QAC7C,qBAAkB;QAClB,oBAAkB,GAAGiB,cAAA,EAAgB;QACrC,iBAAef,SAAA,EAAWwB,QAAA;QAC1B,0BAAwBzB,UAAA,CAAWG,KAAK;QACxC,mCAAiCH,UAAA,CAAWM,UAAU;QACtD,YAAUK,YAAA;kBAEV,aAAAe,KAAA,CAAC;UAAIF,SAAA,EAAW,GAAGhC,SAAA,QAAiB;kCAClC+B,IAAA,CAAC;YAAIC,SAAA,EAAW,GAAGhC,SAAA,aAAsB;sBACtCmB,YAAA,EAAcgB,MAAA,gBACbJ,IAAA,CAAC;cAAIK,GAAA,EAAK3B,SAAA,EAAWwB,QAAA;cAAUI,GAAA,EAAKlB;8BAEpCY,IAAA,CAACnC,IAAA;2BAGLsC,KAAA,CAAC;YAAIF,SAAA,EAAW,GAAGhC,SAAA,QAAiB;YAAE,qBAAkB;oCACtD+B,IAAA,CAAC;wBAAQtB,SAAA,EAAWwB;6BACpBC,KAAA,CAAC;cAAIF,SAAA,EAAW,GAAGhC,SAAA,QAAiB;yBACjCF,cAAA,CAAeW,SAAA,EAAW6B,QAAA,GAC1B,OAAO7B,SAAA,EAAW8B,KAAA,KAAU,YAAY,OAAO9B,SAAA,EAAW+B,MAAA,KAAW,yBACpEN,KAAA,CAACnC,KAAA,CAAM0C,QAAQ;2BAAC,OAEbhC,SAAA,EAAW8B,KAAA,EAAM,KAAE9B,SAAA,EAAW+B,MAAA;kBAGlC/B,SAAA,EAAWiC,QAAA,iBACVR,KAAA,CAACnC,KAAA,CAAM0C,QAAQ;2BAAC,OAEbhC,SAAA,EAAWiC,QAAA;;;;;;MAS1B;MACA,MAAMC,IAAA,GAAOrB,cAAA,CAAesB,oBAAoB,CAACd,GAAA;MAEjD,OAAOa,IAAA;IACT;EACF;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/field/Diff/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/field/Diff/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAA;AAI/D,OAAO,cAAc,CAAA;AACrB,OAAO,gBAAgB,CAAA;AAgBvB,eAAO,MAAM,oBAAoB,EAAE,gCAyDlC,CAAA"}
|
package/dist/field/Diff/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import {
|
|
3
|
-
import { FieldDiffLabel } from '@payloadcms/ui/rsc';
|
|
4
|
-
import React from 'react';
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { FieldDiffContainer, getHTMLDiffComponents } from '@payloadcms/ui/rsc';
|
|
5
3
|
import '../bundled.css';
|
|
4
|
+
import React from 'react';
|
|
6
5
|
import { convertLexicalToHTMLAsync } from '../../features/converters/lexicalToHtml/async/index.js';
|
|
7
6
|
import { getPayloadPopulateFn } from '../../features/converters/utilities/payloadPopulateFn.js';
|
|
8
7
|
import { LinkDiffHTMLConverterAsync } from './converters/link.js';
|
|
@@ -10,15 +9,15 @@ import { ListItemDiffHTMLConverterAsync } from './converters/listitem/index.js';
|
|
|
10
9
|
import { RelationshipDiffHTMLConverterAsync } from './converters/relationship/index.js';
|
|
11
10
|
import { UnknownDiffHTMLConverterAsync } from './converters/unknown/index.js';
|
|
12
11
|
import { UploadDiffHTMLConverterAsync } from './converters/upload/index.js';
|
|
13
|
-
import { HtmlDiff } from './htmlDiff/index.js';
|
|
14
12
|
const baseClass = 'lexical-diff';
|
|
15
13
|
export const LexicalDiffComponent = async args => {
|
|
16
14
|
const {
|
|
17
|
-
comparisonValue,
|
|
15
|
+
comparisonValue: valueFrom,
|
|
18
16
|
field,
|
|
19
17
|
i18n,
|
|
20
18
|
locale,
|
|
21
|
-
|
|
19
|
+
nestingLevel,
|
|
20
|
+
versionValue: valueTo
|
|
22
21
|
} = args;
|
|
23
22
|
const converters = ({
|
|
24
23
|
defaultConverters
|
|
@@ -44,39 +43,36 @@ export const LexicalDiffComponent = async args => {
|
|
|
44
43
|
depth: 1,
|
|
45
44
|
req: args.req
|
|
46
45
|
});
|
|
47
|
-
const
|
|
46
|
+
const fromHTML = await convertLexicalToHTMLAsync({
|
|
48
47
|
converters,
|
|
49
|
-
data:
|
|
48
|
+
data: valueFrom,
|
|
49
|
+
disableContainer: true,
|
|
50
50
|
populate: payloadPopulateFn
|
|
51
51
|
});
|
|
52
|
-
const
|
|
52
|
+
const toHTML = await convertLexicalToHTMLAsync({
|
|
53
53
|
converters,
|
|
54
|
-
data:
|
|
54
|
+
data: valueTo,
|
|
55
|
+
disableContainer: true,
|
|
55
56
|
populate: payloadPopulateFn
|
|
56
57
|
});
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const {
|
|
59
|
+
From,
|
|
60
|
+
To
|
|
61
|
+
} = getHTMLDiffComponents({
|
|
62
|
+
// Ensure empty paragraph is displayed for empty rich text fields - otherwise, toHTML may be displayed in the wrong column
|
|
63
|
+
fromHTML: fromHTML?.length ? fromHTML : '<p></p>',
|
|
64
|
+
toHTML: toHTML?.length ? toHTML : '<p></p>'
|
|
65
|
+
});
|
|
66
|
+
return /*#__PURE__*/_jsx(FieldDiffContainer, {
|
|
60
67
|
className: baseClass,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
className: `${baseClass}__diff-old`,
|
|
70
|
-
dangerouslySetInnerHTML: {
|
|
71
|
-
__html: oldHTML
|
|
72
|
-
}
|
|
73
|
-
}), newHTML && /*#__PURE__*/_jsx("div", {
|
|
74
|
-
className: `${baseClass}__diff-new`,
|
|
75
|
-
dangerouslySetInnerHTML: {
|
|
76
|
-
__html: newHTML
|
|
77
|
-
}
|
|
78
|
-
})]
|
|
79
|
-
})]
|
|
68
|
+
From: From,
|
|
69
|
+
i18n: i18n,
|
|
70
|
+
label: {
|
|
71
|
+
label: field.label,
|
|
72
|
+
locale
|
|
73
|
+
},
|
|
74
|
+
nestingLevel: nestingLevel,
|
|
75
|
+
To: To
|
|
80
76
|
});
|
|
81
77
|
};
|
|
82
78
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["FieldDiffContainer","getHTMLDiffComponents","React","convertLexicalToHTMLAsync","getPayloadPopulateFn","LinkDiffHTMLConverterAsync","ListItemDiffHTMLConverterAsync","RelationshipDiffHTMLConverterAsync","UnknownDiffHTMLConverterAsync","UploadDiffHTMLConverterAsync","baseClass","LexicalDiffComponent","args","comparisonValue","valueFrom","field","i18n","locale","nestingLevel","versionValue","valueTo","converters","defaultConverters","req","payloadPopulateFn","currentDepth","depth","fromHTML","data","disableContainer","populate","toHTML","From","To","length","_jsx","className","label"],"sources":["../../../src/field/Diff/index.tsx"],"sourcesContent":["import type { SerializedEditorState } from 'lexical'\nimport type { RichTextFieldDiffServerComponent } from 'payload'\n\nimport { FieldDiffContainer, getHTMLDiffComponents } from '@payloadcms/ui/rsc'\n\nimport './index.scss'\nimport '../bundled.css'\n\nimport React from 'react'\n\nimport type { HTMLConvertersFunctionAsync } from '../../features/converters/lexicalToHtml/async/types.js'\n\nimport { convertLexicalToHTMLAsync } from '../../features/converters/lexicalToHtml/async/index.js'\nimport { getPayloadPopulateFn } from '../../features/converters/utilities/payloadPopulateFn.js'\nimport { LinkDiffHTMLConverterAsync } from './converters/link.js'\nimport { ListItemDiffHTMLConverterAsync } from './converters/listitem/index.js'\nimport { RelationshipDiffHTMLConverterAsync } from './converters/relationship/index.js'\nimport { UnknownDiffHTMLConverterAsync } from './converters/unknown/index.js'\nimport { UploadDiffHTMLConverterAsync } from './converters/upload/index.js'\n\nconst baseClass = 'lexical-diff'\n\nexport const LexicalDiffComponent: RichTextFieldDiffServerComponent = async (args) => {\n const {\n comparisonValue: valueFrom,\n field,\n i18n,\n locale,\n nestingLevel,\n versionValue: valueTo,\n } = args\n\n const converters: HTMLConvertersFunctionAsync = ({ defaultConverters }) => ({\n ...defaultConverters,\n ...LinkDiffHTMLConverterAsync({}),\n ...ListItemDiffHTMLConverterAsync,\n ...UploadDiffHTMLConverterAsync({ i18n: args.i18n, req: args.req }),\n ...RelationshipDiffHTMLConverterAsync({ i18n: args.i18n, req: args.req }),\n ...UnknownDiffHTMLConverterAsync({ i18n: args.i18n, req: args.req }),\n })\n\n const payloadPopulateFn = await getPayloadPopulateFn({\n currentDepth: 0,\n depth: 1,\n req: args.req,\n })\n const fromHTML = await convertLexicalToHTMLAsync({\n converters,\n data: valueFrom as SerializedEditorState,\n disableContainer: true,\n populate: payloadPopulateFn,\n })\n\n const toHTML = await convertLexicalToHTMLAsync({\n converters,\n data: valueTo as SerializedEditorState,\n disableContainer: true,\n populate: payloadPopulateFn,\n })\n\n const { From, To } = getHTMLDiffComponents({\n // Ensure empty paragraph is displayed for empty rich text fields - otherwise, toHTML may be displayed in the wrong column\n fromHTML: fromHTML?.length ? fromHTML : '<p></p>',\n toHTML: toHTML?.length ? toHTML : '<p></p>',\n })\n\n return (\n <FieldDiffContainer\n className={baseClass}\n From={From}\n i18n={i18n}\n label={{\n label: field.label,\n locale,\n }}\n nestingLevel={nestingLevel}\n To={To}\n />\n )\n}\n"],"mappings":";AAGA,SAASA,kBAAkB,EAAEC,qBAAqB,QAAQ;AAG1D,OAAO;AAEP,OAAOC,KAAA,MAAW;AAIlB,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,oBAAoB,QAAQ;AACrC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,8BAA8B,QAAQ;AAC/C,SAASC,kCAAkC,QAAQ;AACnD,SAASC,6BAA6B,QAAQ;AAC9C,SAASC,4BAA4B,QAAQ;AAE7C,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,oBAAA,GAAyD,MAAOC,IAAA;EAC3E,MAAM;IACJC,eAAA,EAAiBC,SAAS;IAC1BC,KAAK;IACLC,IAAI;IACJC,MAAM;IACNC,YAAY;IACZC,YAAA,EAAcC;EAAO,CACtB,GAAGR,IAAA;EAEJ,MAAMS,UAAA,GAA0CA,CAAC;IAAEC;EAAiB,CAAE,MAAM;IAC1E,GAAGA,iBAAiB;IACpB,GAAGjB,0BAAA,CAA2B,CAAC,EAAE;IACjC,GAAGC,8BAA8B;IACjC,GAAGG,4BAAA,CAA6B;MAAEO,IAAA,EAAMJ,IAAA,CAAKI,IAAI;MAAEO,GAAA,EAAKX,IAAA,CAAKW;IAAI,EAAE;IACnE,GAAGhB,kCAAA,CAAmC;MAAES,IAAA,EAAMJ,IAAA,CAAKI,IAAI;MAAEO,GAAA,EAAKX,IAAA,CAAKW;IAAI,EAAE;IACzE,GAAGf,6BAAA,CAA8B;MAAEQ,IAAA,EAAMJ,IAAA,CAAKI,IAAI;MAAEO,GAAA,EAAKX,IAAA,CAAKW;IAAI;EACpE;EAEA,MAAMC,iBAAA,GAAoB,MAAMpB,oBAAA,CAAqB;IACnDqB,YAAA,EAAc;IACdC,KAAA,EAAO;IACPH,GAAA,EAAKX,IAAA,CAAKW;EACZ;EACA,MAAMI,QAAA,GAAW,MAAMxB,yBAAA,CAA0B;IAC/CkB,UAAA;IACAO,IAAA,EAAMd,SAAA;IACNe,gBAAA,EAAkB;IAClBC,QAAA,EAAUN;EACZ;EAEA,MAAMO,MAAA,GAAS,MAAM5B,yBAAA,CAA0B;IAC7CkB,UAAA;IACAO,IAAA,EAAMR,OAAA;IACNS,gBAAA,EAAkB;IAClBC,QAAA,EAAUN;EACZ;EAEA,MAAM;IAAEQ,IAAI;IAAEC;EAAE,CAAE,GAAGhC,qBAAA,CAAsB;IACzC;IACA0B,QAAA,EAAUA,QAAA,EAAUO,MAAA,GAASP,QAAA,GAAW;IACxCI,MAAA,EAAQA,MAAA,EAAQG,MAAA,GAASH,MAAA,GAAS;EACpC;EAEA,oBACEI,IAAA,CAACnC,kBAAA;IACCoC,SAAA,EAAW1B,SAAA;IACXsB,IAAA,EAAMA,IAAA;IACNhB,IAAA,EAAMA,IAAA;IACNqB,KAAA,EAAO;MACLA,KAAA,EAAOtB,KAAA,CAAMsB,KAAK;MAClBpB;IACF;IACAC,YAAA,EAAcA,YAAA;IACde,EAAA,EAAIA;;AAGV","ignoreList":[]}
|