@payloadcms/richtext-lexical 3.33.0-internal.d1efdd8 → 3.33.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.
Files changed (75) hide show
  1. package/dist/exports/client/bundled.css +1 -1
  2. package/dist/exports/client/index.d.ts +1 -0
  3. package/dist/exports/client/index.d.ts.map +1 -1
  4. package/dist/exports/client/index.js +10 -10
  5. package/dist/exports/client/index.js.map +4 -4
  6. package/dist/exports/server/rsc.d.ts +1 -0
  7. package/dist/exports/server/rsc.d.ts.map +1 -1
  8. package/dist/exports/server/rsc.js +1 -0
  9. package/dist/exports/server/rsc.js.map +1 -1
  10. package/dist/features/converters/lexicalToHtml/async/types.d.ts +1 -0
  11. package/dist/features/converters/lexicalToHtml/async/types.d.ts.map +1 -1
  12. package/dist/features/converters/lexicalToHtml/async/types.js.map +1 -1
  13. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.d.ts.map +1 -1
  14. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js +3 -3
  15. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js.map +1 -1
  16. package/dist/features/converters/lexicalToHtml/sync/types.d.ts +1 -0
  17. package/dist/features/converters/lexicalToHtml/sync/types.d.ts.map +1 -1
  18. package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
  19. package/dist/features/converters/lexicalToJSX/converter/index.d.ts.map +1 -1
  20. package/dist/features/converters/lexicalToJSX/converter/index.js +3 -3
  21. package/dist/features/converters/lexicalToJSX/converter/index.js.map +1 -1
  22. package/dist/features/converters/lexicalToJSX/converter/types.d.ts +1 -0
  23. package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -1
  24. package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
  25. package/dist/features/debug/jsxConverter/client/index.d.ts +2 -0
  26. package/dist/features/debug/jsxConverter/client/index.d.ts.map +1 -0
  27. package/dist/features/debug/jsxConverter/client/index.js +11 -0
  28. package/dist/features/debug/jsxConverter/client/index.js.map +1 -0
  29. package/dist/features/debug/jsxConverter/client/plugin/index.d.ts +2 -0
  30. package/dist/features/debug/jsxConverter/client/plugin/index.d.ts.map +1 -0
  31. package/dist/features/debug/jsxConverter/client/plugin/index.js +52 -0
  32. package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -0
  33. package/dist/features/debug/jsxConverter/server/index.d.ts +2 -0
  34. package/dist/features/debug/jsxConverter/server/index.d.ts.map +1 -0
  35. package/dist/features/debug/jsxConverter/server/index.js +8 -0
  36. package/dist/features/debug/jsxConverter/server/index.js.map +1 -0
  37. package/dist/features/upload/server/validate.d.ts.map +1 -1
  38. package/dist/features/upload/server/validate.js.map +1 -1
  39. package/dist/field/Diff/converters/link.d.ts +9 -0
  40. package/dist/field/Diff/converters/link.d.ts.map +1 -0
  41. package/dist/field/Diff/converters/link.js +48 -0
  42. package/dist/field/Diff/converters/link.js.map +1 -0
  43. package/dist/field/Diff/converters/listitem/index.d.ts +5 -0
  44. package/dist/field/Diff/converters/listitem/index.d.ts.map +1 -0
  45. package/dist/field/Diff/converters/listitem/index.js +65 -0
  46. package/dist/field/Diff/converters/listitem/index.js.map +1 -0
  47. package/dist/field/Diff/converters/relationship/index.d.ts +10 -0
  48. package/dist/field/Diff/converters/relationship/index.d.ts.map +1 -0
  49. package/dist/field/Diff/converters/relationship/index.js +63 -0
  50. package/dist/field/Diff/converters/relationship/index.js.map +1 -0
  51. package/dist/field/Diff/converters/unknown/index.d.ts +10 -0
  52. package/dist/field/Diff/converters/unknown/index.d.ts.map +1 -0
  53. package/dist/field/Diff/converters/unknown/index.js +45 -0
  54. package/dist/field/Diff/converters/unknown/index.js.map +1 -0
  55. package/dist/field/Diff/converters/upload/index.d.ts +10 -0
  56. package/dist/field/Diff/converters/upload/index.d.ts.map +1 -0
  57. package/dist/field/Diff/converters/upload/index.js +76 -0
  58. package/dist/field/Diff/converters/upload/index.js.map +1 -0
  59. package/dist/field/Diff/htmlDiff/index.d.ts +63 -0
  60. package/dist/field/Diff/htmlDiff/index.d.ts.map +1 -0
  61. package/dist/field/Diff/htmlDiff/index.js +501 -0
  62. package/dist/field/Diff/htmlDiff/index.js.map +1 -0
  63. package/dist/field/Diff/index.d.ts +5 -0
  64. package/dist/field/Diff/index.d.ts.map +1 -0
  65. package/dist/field/Diff/index.js +81 -0
  66. package/dist/field/Diff/index.js.map +1 -0
  67. package/dist/field/bundled.css +1 -1
  68. package/dist/index.d.ts +1 -0
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +8 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  73. package/dist/utilities/generateImportMap.js +1 -0
  74. package/dist/utilities/generateImportMap.js.map +1 -1
  75. package/package.json +6 -6
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CheckIcon } from '@payloadcms/ui/rsc';
3
+ export const ListItemDiffHTMLConverterAsync = {
4
+ listitem: async ({
5
+ node,
6
+ nodesToHTML,
7
+ parent,
8
+ providedCSSString
9
+ }) => {
10
+ const hasSubLists = node.children.some(child => child.type === 'list');
11
+ const children = (await nodesToHTML({
12
+ nodes: node.children
13
+ })).join('');
14
+ if ('listType' in parent && parent?.listType === 'check') {
15
+ const ReactDOMServer = (await import('react-dom/server')).default;
16
+ const JSX = /*#__PURE__*/_jsx("li", {
17
+ "aria-checked": node.checked ? true : false,
18
+ className: `checkboxItem ${node.checked ? 'checkboxItem--checked' : 'checkboxItem--unchecked'}${hasSubLists ? ' checkboxItem--nested' : ''}`,
19
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role
20
+ role: "checkbox",
21
+ tabIndex: -1,
22
+ value: node.value,
23
+ children: hasSubLists ?
24
+ // When sublists exist, just render them safely as HTML
25
+ /*#__PURE__*/
26
+ _jsx("div", {
27
+ dangerouslySetInnerHTML: {
28
+ __html: children
29
+ }
30
+ }) :
31
+ // Otherwise, show our custom styled checkbox
32
+ /*#__PURE__*/
33
+ _jsxs("div", {
34
+ className: "checkboxItem__wrapper",
35
+ children: [/*#__PURE__*/_jsx("div", {
36
+ className: "checkboxItem__icon",
37
+ "data-checked": node.checked,
38
+ "data-enable-match": "true",
39
+ children: node.checked && /*#__PURE__*/_jsx(CheckIcon, {})
40
+ }), /*#__PURE__*/_jsx("span", {
41
+ className: "checkboxItem__label",
42
+ children: children
43
+ })]
44
+ })
45
+ });
46
+ const html = ReactDOMServer.renderToString(JSX);
47
+ // Add style="list-style-type: none;${providedCSSString}" to html
48
+ const styleIndex = html.indexOf('class="list-item-checkbox');
49
+ const classIndex = html.indexOf('class="list-item-checkbox', styleIndex);
50
+ const classEndIndex = html.indexOf('"', classIndex + 6);
51
+ const className = html.substring(classIndex, classEndIndex);
52
+ const classNameWithStyle = `${className} style="list-style-type: none;${providedCSSString}"`;
53
+ const htmlWithStyle = html.replace(className, classNameWithStyle);
54
+ return htmlWithStyle;
55
+ } else {
56
+ return `<li
57
+ class="${hasSubLists ? 'nestedListItem' : ''}"
58
+ style="${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}"
59
+ value="${node.value}"
60
+ data-enable-match="true"
61
+ >${children}</li>`;
62
+ }
63
+ }
64
+ };
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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","renderToString","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.renderToString(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,cAAc,CAACX,GAAA;MAE3C;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":[]}
@@ -0,0 +1,10 @@
1
+ import type { PayloadRequest } from 'payload';
2
+ import { type I18nClient } from '@payloadcms/translations';
3
+ import './index.scss';
4
+ import type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js';
5
+ import type { SerializedRelationshipNode } from '../../../../nodeTypes.js';
6
+ export declare const RelationshipDiffHTMLConverterAsync: (args: {
7
+ i18n: I18nClient;
8
+ req: PayloadRequest;
9
+ }) => HTMLConvertersAsync<SerializedRelationshipNode>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAErB,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,CAgEnD,CAAA"}
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getTranslation } from '@payloadcms/translations';
3
+ const baseClass = 'lexical-relationship-diff';
4
+ export const RelationshipDiffHTMLConverterAsync = ({
5
+ i18n,
6
+ req
7
+ }) => {
8
+ return {
9
+ relationship: async ({
10
+ node,
11
+ populate,
12
+ providedCSSString
13
+ }) => {
14
+ let data = undefined;
15
+ // If there's no valid upload data, populate return an empty string
16
+ if (typeof node.value !== 'object') {
17
+ if (!populate) {
18
+ return '';
19
+ }
20
+ data = await populate({
21
+ id: node.value,
22
+ collectionSlug: node.relationTo
23
+ });
24
+ } else {
25
+ data = node.value;
26
+ }
27
+ const relatedCollection = req.payload.collections[node.relationTo]?.config;
28
+ const ReactDOMServer = (await import('react-dom/server')).default;
29
+ const JSX = /*#__PURE__*/_jsx("div", {
30
+ className: `${baseClass}${providedCSSString}`,
31
+ "data-enable-match": "true",
32
+ "data-id": node.value,
33
+ "data-slug": node.relationTo,
34
+ children: /*#__PURE__*/_jsxs("div", {
35
+ className: `${baseClass}__card`,
36
+ children: [/*#__PURE__*/_jsx("div", {
37
+ className: `${baseClass}__collectionLabel`,
38
+ children: i18n.t('fields:labelRelationship', {
39
+ label: relatedCollection?.labels?.singular ? getTranslation(relatedCollection?.labels?.singular, i18n) : relatedCollection?.slug
40
+ })
41
+ }), data && relatedCollection?.admin?.useAsTitle && data[relatedCollection.admin.useAsTitle] ? /*#__PURE__*/_jsx("strong", {
42
+ className: `${baseClass}__title`,
43
+ "data-enable-match": "false",
44
+ children: /*#__PURE__*/_jsx("a", {
45
+ className: `${baseClass}__link`,
46
+ "data-enable-match": "false",
47
+ href: `/${relatedCollection.slug}/${data.id}`,
48
+ rel: "noopener noreferrer",
49
+ target: "_blank",
50
+ children: data[relatedCollection.admin.useAsTitle]
51
+ })
52
+ }) : /*#__PURE__*/_jsx("strong", {
53
+ children: node.value
54
+ })]
55
+ })
56
+ });
57
+ // Render to HTML
58
+ const html = ReactDOMServer.renderToString(JSX);
59
+ return html;
60
+ }
61
+ };
62
+ };
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTranslation","baseClass","RelationshipDiffHTMLConverterAsync","i18n","req","relationship","node","populate","providedCSSString","data","undefined","value","id","collectionSlug","relationTo","relatedCollection","payload","collections","config","ReactDOMServer","default","JSX","_jsx","className","_jsxs","t","label","labels","singular","slug","admin","useAsTitle","href","rel","target","html","renderToString"],"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 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 // 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: node.value,\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={node.value}\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={`/${relatedCollection.slug}/${data.id}`}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {data[relatedCollection.admin.useAsTitle]}\n </a>\n </strong>\n ) : (\n <strong>{node.value as string}</strong>\n )}\n </div>\n </div>\n )\n\n // Render to HTML\n const html = ReactDOMServer.renderToString(JSX)\n\n return html\n },\n }\n}\n"],"mappings":";AAEA,SAASA,cAAc,QAAyB;AAOhD,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;MACA,IAAI,OAAOJ,IAAA,CAAKK,KAAK,KAAK,UAAU;QAClC,IAAI,CAACJ,QAAA,EAAU;UACb,OAAO;QACT;QACAE,IAAA,GAAO,MAAMF,QAAA,CAAgC;UAC3CK,EAAA,EAAIN,IAAA,CAAKK,KAAK;UACdE,cAAA,EAAgBP,IAAA,CAAKQ;QACvB;MACF,OAAO;QACLL,IAAA,GAAOH,IAAA,CAAKK,KAAK;MACnB;MAEA,MAAMI,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,WAASF,IAAA,CAAKK,KAAK;QACnB,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,GAC9B5B,cAAA,CAAee,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,EAAM,IAAIjB,iBAAA,CAAkBc,IAAI,IAAIpB,IAAA,CAAKG,EAAE,EAAE;cAC7CqB,GAAA,EAAI;cACJC,MAAA,EAAO;wBAENzB,IAAI,CAACM,iBAAA,CAAkBe,KAAK,CAACC,UAAU;;4BAI5CT,IAAA,CAAC;sBAAQhB,IAAA,CAAKK;;;;MAMtB;MACA,MAAMwB,IAAA,GAAOhB,cAAA,CAAeiB,cAAc,CAACf,GAAA;MAE3C,OAAOc,IAAA;IACT;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type { LexicalNode } from 'lexical';
2
+ import type { PayloadRequest } from 'payload';
3
+ import { type I18nClient } from '@payloadcms/translations';
4
+ import './index.scss';
5
+ import type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js';
6
+ export declare const UnknownDiffHTMLConverterAsync: (args: {
7
+ i18n: I18nClient;
8
+ req: PayloadRequest;
9
+ }) => HTMLConvertersAsync<LexicalNode>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/Diff/converters/unknown/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AAKvG,eAAO,MAAM,6BAA6B,EAAE,CAAC,IAAI,EAAE;IACjD,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAK,mBAAmB,CAAC,WAAW,CA4CpC,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createHash } from 'crypto';
3
+ const baseClass = 'lexical-unknown-diff';
4
+ export const UnknownDiffHTMLConverterAsync = ({
5
+ i18n,
6
+ req
7
+ }) => {
8
+ return {
9
+ unknown: async ({
10
+ node,
11
+ providedCSSString
12
+ }) => {
13
+ const ReactDOMServer = (await import('react-dom/server')).default;
14
+ // hash fields to ensure they are diffed if they change
15
+ const nodeFieldsHash = createHash('sha256').update(JSON.stringify(node ?? {})).digest('hex');
16
+ let nodeType = node.type;
17
+ let nodeTypeSpecifier = null;
18
+ if (node.type === 'block') {
19
+ nodeTypeSpecifier = node.fields.blockType;
20
+ nodeType = 'Block';
21
+ } else if (node.type === 'inlineBlock') {
22
+ nodeTypeSpecifier = node.fields.blockType;
23
+ nodeType = 'InlineBlock';
24
+ }
25
+ const JSX = /*#__PURE__*/_jsxs("div", {
26
+ className: `${baseClass}${providedCSSString}`,
27
+ "data-enable-match": "true",
28
+ "data-fields-hash": `${nodeFieldsHash}`,
29
+ children: [nodeTypeSpecifier && /*#__PURE__*/_jsxs("span", {
30
+ className: `${baseClass}__specifier`,
31
+ children: [nodeTypeSpecifier, " "]
32
+ }), /*#__PURE__*/_jsx("span", {
33
+ children: nodeType
34
+ }), /*#__PURE__*/_jsx("div", {
35
+ className: `${baseClass}__meta`,
36
+ children: /*#__PURE__*/_jsx("br", {})
37
+ })]
38
+ });
39
+ // Render to HTML
40
+ const html = ReactDOMServer.renderToString(JSX);
41
+ return html;
42
+ }
43
+ };
44
+ };
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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","renderToString"],"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}&nbsp;</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.renderToString(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,cAAc,CAACL,GAAA;MAE3C,OAAOI,IAAA;IACT;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type { PayloadRequest } from 'payload';
2
+ import { type I18nClient } from '@payloadcms/translations';
3
+ import './index.scss';
4
+ import type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js';
5
+ import type { SerializedUploadNode } from '../../../../nodeTypes.js';
6
+ export declare const UploadDiffHTMLConverterAsync: (args: {
7
+ i18n: I18nClient;
8
+ req: PayloadRequest;
9
+ }) => HTMLConvertersAsync<SerializedUploadNode>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/Diff/converters/upload/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,cAAc,EAAc,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAI1D,OAAO,cAAc,CAAA;AAKrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AAEvG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAIpE,eAAO,MAAM,4BAA4B,EAAE,CAAC,IAAI,EAAE;IAChD,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAK,mBAAmB,CAAC,oBAAoB,CAkF7C,CAAA"}
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { File } from '@payloadcms/ui/rsc';
3
+ import { createHash } from 'crypto';
4
+ import { formatFilesize } from 'payload/shared';
5
+ import React from 'react';
6
+ const baseClass = 'lexical-upload-diff';
7
+ export const UploadDiffHTMLConverterAsync = ({
8
+ i18n,
9
+ req
10
+ }) => {
11
+ return {
12
+ upload: async ({
13
+ node,
14
+ populate,
15
+ providedCSSString
16
+ }) => {
17
+ const uploadNode = node;
18
+ let uploadDoc = undefined;
19
+ // If there's no valid upload data, populate return an empty string
20
+ if (typeof uploadNode.value !== 'object') {
21
+ if (!populate) {
22
+ return '';
23
+ }
24
+ uploadDoc = await populate({
25
+ id: uploadNode.value,
26
+ collectionSlug: uploadNode.relationTo
27
+ });
28
+ } else {
29
+ uploadDoc = uploadNode.value;
30
+ }
31
+ if (!uploadDoc) {
32
+ return '';
33
+ }
34
+ const relatedCollection = req.payload.collections[uploadNode.relationTo]?.config;
35
+ const thumbnailSRC = 'thumbnailURL' in uploadDoc && uploadDoc?.thumbnailURL || uploadDoc?.url || '';
36
+ const ReactDOMServer = (await import('react-dom/server')).default;
37
+ // hash fields to ensure they are diffed if they change
38
+ const nodeFieldsHash = createHash('sha256').update(JSON.stringify(node.fields ?? {})).digest('hex');
39
+ const JSX = /*#__PURE__*/_jsx("div", {
40
+ className: `${baseClass}${providedCSSString}`,
41
+ "data-enable-match": "true",
42
+ "data-fields-hash": `${nodeFieldsHash}`,
43
+ "data-filename": uploadDoc?.filename,
44
+ "data-lexical-upload-id": uploadNode.value,
45
+ "data-lexical-upload-relation-to": uploadNode.relationTo,
46
+ "data-src": thumbnailSRC,
47
+ children: /*#__PURE__*/_jsxs("div", {
48
+ className: `${baseClass}__card`,
49
+ children: [/*#__PURE__*/_jsx("div", {
50
+ className: `${baseClass}__thumbnail`,
51
+ children: thumbnailSRC?.length ? /*#__PURE__*/_jsx("img", {
52
+ alt: uploadDoc?.filename,
53
+ src: thumbnailSRC
54
+ }) : /*#__PURE__*/_jsx(File, {})
55
+ }), /*#__PURE__*/_jsxs("div", {
56
+ className: `${baseClass}__info`,
57
+ children: [/*#__PURE__*/_jsx("strong", {
58
+ children: uploadDoc?.filename
59
+ }), /*#__PURE__*/_jsxs("div", {
60
+ className: `${baseClass}__meta`,
61
+ children: [formatFilesize(uploadDoc?.filesize), typeof uploadDoc?.width === 'number' && typeof uploadDoc?.height === 'number' && /*#__PURE__*/_jsxs(React.Fragment, {
62
+ children: [" - ", uploadDoc?.width, "x", uploadDoc?.height]
63
+ }), uploadDoc?.mimeType && /*#__PURE__*/_jsxs(React.Fragment, {
64
+ children: [" - ", uploadDoc?.mimeType]
65
+ })]
66
+ })]
67
+ })]
68
+ })
69
+ });
70
+ // Render to HTML
71
+ const html = ReactDOMServer.renderToString(JSX);
72
+ return html;
73
+ }
74
+ };
75
+ };
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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","renderToString"],"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`}>\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 &nbsp;-&nbsp;\n {uploadDoc?.width}x{uploadDoc?.height}\n </React.Fragment>\n )}\n {uploadDoc?.mimeType && (\n <React.Fragment>\n &nbsp;-&nbsp;\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.renderToString(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;oCAClC+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,cAAc,CAACd,GAAA;MAE3C,OAAOa,IAAA;IACT;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ export interface HtmlDiffOptions {
2
+ /**
3
+ * The classNames for wrapper DOM.
4
+ * Use this to configure your own styles without importing the built-in CSS file
5
+ */
6
+ classNames?: Partial<{
7
+ createBlock?: string;
8
+ createInline?: string;
9
+ deleteBlock?: string;
10
+ deleteInline?: string;
11
+ }>;
12
+ /**
13
+ * @defaultValue 1000
14
+ */
15
+ greedyBoundary?: number;
16
+ /**
17
+ * When greedyMatch is enabled, if the length of the sub-tokens exceeds greedyBoundary,
18
+ * we will use the matched sub-tokens that are sufficiently good, even if they are not optimal, to enhance performance.
19
+ * @defaultValue true
20
+ */
21
+ greedyMatch?: boolean;
22
+ /**
23
+ * Determine the minimum threshold for calculating common sub-tokens.
24
+ * You may adjust it to a value larger than 2, but not lower, due to the potential inclusion of HTML tags in the count.
25
+ * @defaultValue 2
26
+ */
27
+ minMatchedSize?: number;
28
+ }
29
+ export declare class HtmlDiff {
30
+ private readonly config;
31
+ private leastCommonLength;
32
+ private readonly matchedBlockList;
33
+ private readonly newTokens;
34
+ private readonly oldTokens;
35
+ private readonly operationList;
36
+ private sideBySideContents?;
37
+ private unifiedContent?;
38
+ constructor(oldHtml: string, newHtml: string, { classNames, greedyBoundary, greedyMatch, minMatchedSize, }?: HtmlDiffOptions);
39
+ private computeBestMatchedBlock;
40
+ private computeMatchedBlockList;
41
+ private dressUpBlockTag;
42
+ private dressUpDiffContent;
43
+ private dressUpInlineTag;
44
+ private dressupMatchEnabledHtmlTag;
45
+ private dressUpText;
46
+ /**
47
+ * Generates a list of token entries that are matched between the old and new HTML. This list will not
48
+ * include token ranges that differ.
49
+ */
50
+ private getMatchedBlockList;
51
+ private getOperationList;
52
+ private slideBestMatchedBlock;
53
+ /**
54
+ * convert HTML to tokens
55
+ * @example
56
+ * tokenize("<a> Hello World </a>")
57
+ * ["<a>"," ", "Hello", " ", "World", " ", "</a>"]
58
+ */
59
+ private tokenize;
60
+ getSideBySideContents(): string[];
61
+ getUnifiedContent(): string;
62
+ }
63
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/field/Diff/htmlDiff/index.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAC,CAAA;IACF;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAWD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAChD,OAAO,CAAC,kBAAkB,CAAC,CAAkB;IAC7C,OAAO,CAAC,cAAc,CAAC,CAAQ;gBAG7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,EACE,UAKC,EACD,cAAqB,EACrB,WAAkB,EAClB,cAAkB,GACnB,GAAE,eAAoB;IA2CzB,OAAO,CAAC,uBAAuB;IA8B/B,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,kBAAkB;IAwD1B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,WAAW;IAcnB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA+D3B,OAAO,CAAC,gBAAgB;IAoDxB,OAAO,CAAC,qBAAqB;IA0B7B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAST,qBAAqB,IAAI,MAAM,EAAE;IAiEjC,iBAAiB,IAAI,MAAM;CA4HnC"}