@payloadcms/plugin-form-builder 3.80.0-internal.60d6f94 → 3.80.0-internal.82dcece

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.
@@ -1 +1 @@
1
- {"version":3,"file":"keyValuePairToHtmlTable.d.ts","sourceRoot":"","sources":["../../src/utilities/keyValuePairToHtmlTable.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,MAAM,CAS9E"}
1
+ {"version":3,"file":"keyValuePairToHtmlTable.d.ts","sourceRoot":"","sources":["../../src/utilities/keyValuePairToHtmlTable.ts"],"names":[],"mappings":"AAEA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,MAAM,CAS9E"}
@@ -1,7 +1,8 @@
1
+ import escapeHTML from 'escape-html';
1
2
  export function keyValuePairToHtmlTable(obj) {
2
3
  let htmlTable = '<table>';
3
4
  for (const [key, value] of Object.entries(obj)){
4
- htmlTable += `<tr><td>${key}</td><td>${value}</td></tr>`;
5
+ htmlTable += `<tr><td>${escapeHTML(key)}</td><td>${escapeHTML(value)}</td></tr>`;
5
6
  }
6
7
  htmlTable += '</table>';
7
8
  return htmlTable;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/keyValuePairToHtmlTable.ts"],"sourcesContent":["export function keyValuePairToHtmlTable(obj: { [key: string]: string }): string {\n let htmlTable = '<table>'\n\n for (const [key, value] of Object.entries(obj)) {\n htmlTable += `<tr><td>${key}</td><td>${value}</td></tr>`\n }\n\n htmlTable += '</table>'\n return htmlTable\n}\n"],"names":["keyValuePairToHtmlTable","obj","htmlTable","key","value","Object","entries"],"mappings":"AAAA,OAAO,SAASA,wBAAwBC,GAA8B;IACpE,IAAIC,YAAY;IAEhB,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACL,KAAM;QAC9CC,aAAa,CAAC,QAAQ,EAAEC,IAAI,SAAS,EAAEC,MAAM,UAAU,CAAC;IAC1D;IAEAF,aAAa;IACb,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../src/utilities/keyValuePairToHtmlTable.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\n\nexport function keyValuePairToHtmlTable(obj: { [key: string]: string }): string {\n let htmlTable = '<table>'\n\n for (const [key, value] of Object.entries(obj)) {\n htmlTable += `<tr><td>${escapeHTML(key)}</td><td>${escapeHTML(value)}</td></tr>`\n }\n\n htmlTable += '</table>'\n return htmlTable\n}\n"],"names":["escapeHTML","keyValuePairToHtmlTable","obj","htmlTable","key","value","Object","entries"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,OAAO,SAASC,wBAAwBC,GAA8B;IACpE,IAAIC,YAAY;IAEhB,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACL,KAAM;QAC9CC,aAAa,CAAC,QAAQ,EAAEH,WAAWI,KAAK,SAAS,EAAEJ,WAAWK,OAAO,UAAU,CAAC;IAClF;IAEAF,aAAa;IACb,OAAOA;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/heading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAoBnD,CAAA"}
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/heading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAOhD,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAqBnD,CAAA"}
@@ -1,4 +1,20 @@
1
1
  import { convertLexicalNodesToHTML } from '../serializeLexical.js';
2
+ const ALLOWED_HEADING_TAGS = new Set([
3
+ 'h1',
4
+ 'h2',
5
+ 'h3',
6
+ 'h4',
7
+ 'h5',
8
+ 'h6'
9
+ ]);
10
+ const ALLOWED_TEXT_ALIGN = new Set([
11
+ 'center',
12
+ 'end',
13
+ 'justify',
14
+ 'left',
15
+ 'right',
16
+ 'start'
17
+ ]);
2
18
  export const HeadingHTMLConverter = {
3
19
  async converter ({ converters, node, parent, submissionData }) {
4
20
  const childrenText = await convertLexicalNodesToHTML({
@@ -10,11 +26,12 @@ export const HeadingHTMLConverter = {
10
26
  },
11
27
  submissionData
12
28
  });
29
+ const tag = ALLOWED_HEADING_TAGS.has(node?.tag) ? node.tag : 'h1';
13
30
  const style = [
14
- node.format ? `text-align: ${node.format};` : '',
31
+ node.format && ALLOWED_TEXT_ALIGN.has(node.format) ? `text-align: ${node.format};` : '',
15
32
  node.indent > 0 ? `padding-inline-start: ${node.indent * 40}px;` : ''
16
33
  ].filter(Boolean).join(' ');
17
- return `<${node?.tag}${style ? ` style='${style}'` : ''}>${childrenText}</${node?.tag}>`;
34
+ return `<${tag}${style ? ` style='${style}'` : ''}>${childrenText}</${tag}>`;
18
35
  },
19
36
  nodeTypes: [
20
37
  'heading'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utilities/lexical/converters/heading.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nexport const HeadingHTMLConverter: HTMLConverter<any> = {\n async converter({ converters, node, parent, submissionData }) {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n const style = [\n node.format ? `text-align: ${node.format};` : '',\n node.indent > 0 ? `padding-inline-start: ${node.indent * 40}px;` : '',\n ]\n .filter(Boolean)\n .join(' ')\n return `<${node?.tag}${style ? ` style='${style}'` : ''}>${childrenText}</${node?.tag}>`\n },\n nodeTypes: ['heading'],\n}\n"],"names":["convertLexicalNodesToHTML","HeadingHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","style","format","indent","filter","Boolean","join","tag","nodeTypes"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ,yBAAwB;AAElE,OAAO,MAAMC,uBAA2C;IACtD,MAAMC,WAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC1D,MAAMC,eAAe,MAAMP,0BAA0B;YACnDG;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QACA,MAAMI,QAAQ;YACZN,KAAKO,MAAM,GAAG,CAAC,YAAY,EAAEP,KAAKO,MAAM,CAAC,CAAC,CAAC,GAAG;YAC9CP,KAAKQ,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAER,KAAKQ,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG;SACpE,CACEC,MAAM,CAACC,SACPC,IAAI,CAAC;QACR,OAAO,CAAC,CAAC,EAAEX,MAAMY,MAAMN,QAAQ,CAAC,QAAQ,EAAEA,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,EAAEH,aAAa,EAAE,EAAEH,MAAMY,IAAI,CAAC,CAAC;IAC1F;IACAC,WAAW;QAAC;KAAU;AACxB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/utilities/lexical/converters/heading.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nconst ALLOWED_HEADING_TAGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])\nconst ALLOWED_TEXT_ALIGN = new Set(['center', 'end', 'justify', 'left', 'right', 'start'])\n\nexport const HeadingHTMLConverter: HTMLConverter<any> = {\n async converter({ converters, node, parent, submissionData }) {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n const tag = ALLOWED_HEADING_TAGS.has(node?.tag) ? node.tag : 'h1'\n const style = [\n node.format && ALLOWED_TEXT_ALIGN.has(node.format) ? `text-align: ${node.format};` : '',\n node.indent > 0 ? `padding-inline-start: ${node.indent * 40}px;` : '',\n ]\n .filter(Boolean)\n .join(' ')\n return `<${tag}${style ? ` style='${style}'` : ''}>${childrenText}</${tag}>`\n },\n nodeTypes: ['heading'],\n}\n"],"names":["convertLexicalNodesToHTML","ALLOWED_HEADING_TAGS","Set","ALLOWED_TEXT_ALIGN","HeadingHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","tag","has","style","format","indent","filter","Boolean","join","nodeTypes"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ,yBAAwB;AAElE,MAAMC,uBAAuB,IAAIC,IAAI;IAAC;IAAM;IAAM;IAAM;IAAM;IAAM;CAAK;AACzE,MAAMC,qBAAqB,IAAID,IAAI;IAAC;IAAU;IAAO;IAAW;IAAQ;IAAS;CAAQ;AAEzF,OAAO,MAAME,uBAA2C;IACtD,MAAMC,WAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC1D,MAAMC,eAAe,MAAMV,0BAA0B;YACnDM;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QACA,MAAMI,MAAMZ,qBAAqBa,GAAG,CAACP,MAAMM,OAAON,KAAKM,GAAG,GAAG;QAC7D,MAAME,QAAQ;YACZR,KAAKS,MAAM,IAAIb,mBAAmBW,GAAG,CAACP,KAAKS,MAAM,IAAI,CAAC,YAAY,EAAET,KAAKS,MAAM,CAAC,CAAC,CAAC,GAAG;YACrFT,KAAKU,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAEV,KAAKU,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG;SACpE,CACEC,MAAM,CAACC,SACPC,IAAI,CAAC;QACR,OAAO,CAAC,CAAC,EAAEP,MAAME,QAAQ,CAAC,QAAQ,EAAEA,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,EAAEL,aAAa,EAAE,EAAEG,IAAI,CAAC,CAAC;IAC9E;IACAQ,WAAW;QAAC;KAAU;AACxB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAKhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAqBhD,CAAA"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/link.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAKhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,GAAG,CA0BhD,CAAA"}
@@ -1,3 +1,5 @@
1
+ import escapeHTML from 'escape-html';
2
+ import { sanitizeUrl } from 'payload/shared';
1
3
  import { replaceDoubleCurlys } from '../../replaceDoubleCurlys.js';
2
4
  import { convertLexicalNodesToHTML } from '../serializeLexical.js';
3
5
  export const LinkHTMLConverter = {
@@ -11,11 +13,12 @@ export const LinkHTMLConverter = {
11
13
  },
12
14
  submissionData
13
15
  });
14
- let href = node.fields.linkType === 'custom' ? node.fields.url : node.fields.doc?.value?.id;
16
+ let href = node.fields.linkType === 'custom' ? node.fields.url ?? '' : node.fields.doc?.value?.id ?? '';
15
17
  if (submissionData) {
16
18
  href = replaceDoubleCurlys(href, submissionData);
17
19
  }
18
- return `<a href="${href}"${node.fields.newTab ? ' rel="noopener noreferrer" target="_blank"' : ''}>${childrenText}</a>`;
20
+ const safeHref = escapeHTML(sanitizeUrl(href));
21
+ return `<a href="${safeHref}"${node.fields.newTab ? ' rel="noopener noreferrer" target="_blank"' : ''}>${childrenText}</a>`;
19
22
  },
20
23
  nodeTypes: [
21
24
  'link'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utilities/lexical/converters/link.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { replaceDoubleCurlys } from '../../replaceDoubleCurlys.js'\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nexport const LinkHTMLConverter: HTMLConverter<any> = {\n async converter({ converters, node, parent, submissionData }) {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n\n let href: string =\n node.fields.linkType === 'custom' ? node.fields.url : node.fields.doc?.value?.id\n\n if (submissionData) {\n href = replaceDoubleCurlys(href, submissionData)\n }\n return `<a href=\"${href}\"${node.fields.newTab ? ' rel=\"noopener noreferrer\" target=\"_blank\"' : ''}>${childrenText}</a>`\n },\n nodeTypes: ['link'],\n}\n"],"names":["replaceDoubleCurlys","convertLexicalNodesToHTML","LinkHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","href","fields","linkType","url","doc","value","id","newTab","nodeTypes"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,+BAA8B;AAClE,SAASC,yBAAyB,QAAQ,yBAAwB;AAElE,OAAO,MAAMC,oBAAwC;IACnD,MAAMC,WAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC1D,MAAMC,eAAe,MAAMP,0BAA0B;YACnDG;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QAEA,IAAII,OACFN,KAAKO,MAAM,CAACC,QAAQ,KAAK,WAAWR,KAAKO,MAAM,CAACE,GAAG,GAAGT,KAAKO,MAAM,CAACG,GAAG,EAAEC,OAAOC;QAEhF,IAAIV,gBAAgB;YAClBI,OAAOX,oBAAoBW,MAAMJ;QACnC;QACA,OAAO,CAAC,SAAS,EAAEI,KAAK,CAAC,EAAEN,KAAKO,MAAM,CAACM,MAAM,GAAG,+CAA+C,GAAG,CAAC,EAAEV,aAAa,IAAI,CAAC;IACzH;IACAW,WAAW;QAAC;KAAO;AACrB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/utilities/lexical/converters/link.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\nimport { sanitizeUrl } from 'payload/shared'\n\nimport type { HTMLConverter } from '../types.js'\n\nimport { replaceDoubleCurlys } from '../../replaceDoubleCurlys.js'\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nexport const LinkHTMLConverter: HTMLConverter<any> = {\n async converter({ converters, node, parent, submissionData }) {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n\n let href: string =\n node.fields.linkType === 'custom'\n ? (node.fields.url ?? '')\n : (node.fields.doc?.value?.id ?? '')\n\n if (submissionData) {\n href = replaceDoubleCurlys(href, submissionData)\n }\n\n const safeHref = escapeHTML(sanitizeUrl(href))\n\n return `<a href=\"${safeHref}\"${node.fields.newTab ? ' rel=\"noopener noreferrer\" target=\"_blank\"' : ''}>${childrenText}</a>`\n },\n nodeTypes: ['link'],\n}\n"],"names":["escapeHTML","sanitizeUrl","replaceDoubleCurlys","convertLexicalNodesToHTML","LinkHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","href","fields","linkType","url","doc","value","id","safeHref","newTab","nodeTypes"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AACpC,SAASC,WAAW,QAAQ,iBAAgB;AAI5C,SAASC,mBAAmB,QAAQ,+BAA8B;AAClE,SAASC,yBAAyB,QAAQ,yBAAwB;AAElE,OAAO,MAAMC,oBAAwC;IACnD,MAAMC,WAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC1D,MAAMC,eAAe,MAAMP,0BAA0B;YACnDG;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QAEA,IAAII,OACFN,KAAKO,MAAM,CAACC,QAAQ,KAAK,WACpBR,KAAKO,MAAM,CAACE,GAAG,IAAI,KACnBT,KAAKO,MAAM,CAACG,GAAG,EAAEC,OAAOC,MAAM;QAErC,IAAIV,gBAAgB;YAClBI,OAAOX,oBAAoBW,MAAMJ;QACnC;QAEA,MAAMW,WAAWpB,WAAWC,YAAYY;QAExC,OAAO,CAAC,SAAS,EAAEO,SAAS,CAAC,EAAEb,KAAKO,MAAM,CAACO,MAAM,GAAG,+CAA+C,GAAG,CAAC,EAAEX,aAAa,IAAI,CAAC;IAC7H;IACAY,WAAW;QAAC;KAAO;AACrB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAehD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,GAAG,CA4BpD,CAAA"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAOhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAkBhD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,GAAG,CA8BpD,CAAA"}
@@ -1,4 +1,13 @@
1
1
  import { convertLexicalNodesToHTML } from '../serializeLexical.js';
2
+ const ALLOWED_LIST_TAGS = new Set([
3
+ 'ol',
4
+ 'ul'
5
+ ]);
6
+ const ALLOWED_LIST_TYPES = new Set([
7
+ 'bullet',
8
+ 'check',
9
+ 'number'
10
+ ]);
2
11
  export const ListHTMLConverter = {
3
12
  converter: async ({ converters, node, parent, submissionData })=>{
4
13
  const childrenText = await convertLexicalNodesToHTML({
@@ -10,7 +19,9 @@ export const ListHTMLConverter = {
10
19
  },
11
20
  submissionData
12
21
  });
13
- return `<${node?.tag} class="${node?.listType}">${childrenText}</${node?.tag}>`;
22
+ const tag = ALLOWED_LIST_TAGS.has(node?.tag) ? node.tag : 'ul';
23
+ const listType = ALLOWED_LIST_TYPES.has(node?.listType) ? node.listType : 'bullet';
24
+ return `<${tag} class="${listType}">${childrenText}</${tag}>`;
14
25
  },
15
26
  nodeTypes: [
16
27
  'list'
@@ -26,16 +37,17 @@ export const ListItemHTMLConverter = {
26
37
  parent
27
38
  }
28
39
  });
40
+ const safeValue = Number.isFinite(Number(node?.value)) ? Number(node.value) : 1;
29
41
  if ('listType' in parent && parent?.listType === 'check') {
30
- return `<li aria-checked=${node.checked ? 'true' : 'false'} class="${'list-item-checkbox' + node.checked ? 'list-item-checkbox-checked' : 'list-item-checkbox-unchecked'}"
42
+ return `<li aria-checked="${node.checked ? 'true' : 'false'}" class="${node.checked ? 'list-item-checkbox list-item-checkbox-checked' : 'list-item-checkbox list-item-checkbox-unchecked'}"
31
43
  role="checkbox"
32
- tabIndex=${-1}
33
- value=${node?.value}
44
+ tabIndex="-1"
45
+ value="${safeValue}"
34
46
  >
35
47
  ${childrenText}
36
48
  </li>`;
37
49
  } else {
38
- return `<li value=${node?.value}>${childrenText}</li>`;
50
+ return `<li value="${safeValue}">${childrenText}</li>`;
39
51
  }
40
52
  },
41
53
  nodeTypes: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utilities/lexical/converters/list.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nexport const ListHTMLConverter: HTMLConverter<any> = {\n converter: async ({ converters, node, parent, submissionData }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n\n return `<${node?.tag} class=\"${node?.listType}\">${childrenText}</${node?.tag}>`\n },\n nodeTypes: ['list'],\n}\n\nexport const ListItemHTMLConverter: HTMLConverter<any> = {\n converter: async ({ converters, node, parent }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n })\n\n if ('listType' in parent && parent?.listType === 'check') {\n return `<li aria-checked=${node.checked ? 'true' : 'false'} class=\"${\n 'list-item-checkbox' + node.checked\n ? 'list-item-checkbox-checked'\n : 'list-item-checkbox-unchecked'\n }\"\n role=\"checkbox\"\n tabIndex=${-1}\n value=${node?.value}\n >\n ${childrenText}\n </li>`\n } else {\n return `<li value=${node?.value}>${childrenText}</li>`\n }\n },\n nodeTypes: ['listitem'],\n}\n"],"names":["convertLexicalNodesToHTML","ListHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","tag","listType","nodeTypes","ListItemHTMLConverter","checked","value"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ,yBAAwB;AAElE,OAAO,MAAMC,oBAAwC;IACnDC,WAAW,OAAO,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC5D,MAAMC,eAAe,MAAMP,0BAA0B;YACnDG;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QAEA,OAAO,CAAC,CAAC,EAAEF,MAAMM,IAAI,QAAQ,EAAEN,MAAMO,SAAS,EAAE,EAAEJ,aAAa,EAAE,EAAEH,MAAMM,IAAI,CAAC,CAAC;IACjF;IACAE,WAAW;QAAC;KAAO;AACrB,EAAC;AAED,OAAO,MAAMC,wBAA4C;IACvDX,WAAW,OAAO,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAE;QAC5C,MAAME,eAAe,MAAMP,0BAA0B;YACnDG;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;QACF;QAEA,IAAI,cAAcA,UAAUA,QAAQM,aAAa,SAAS;YACxD,OAAO,CAAC,iBAAiB,EAAEP,KAAKU,OAAO,GAAG,SAAS,QAAQ,QAAQ,EACjE,uBAAuBV,KAAKU,OAAO,GAC/B,+BACA,+BACL;;mBAEY,EAAE,CAAC,EAAE;gBACR,EAAEV,MAAMW,MAAM;;UAEpB,EAAER,aAAa;eACV,CAAC;QACZ,OAAO;YACL,OAAO,CAAC,UAAU,EAAEH,MAAMW,MAAM,CAAC,EAAER,aAAa,KAAK,CAAC;QACxD;IACF;IACAK,WAAW;QAAC;KAAW;AACzB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/utilities/lexical/converters/list.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nconst ALLOWED_LIST_TAGS = new Set(['ol', 'ul'])\nconst ALLOWED_LIST_TYPES = new Set(['bullet', 'check', 'number'])\n\nexport const ListHTMLConverter: HTMLConverter<any> = {\n converter: async ({ converters, node, parent, submissionData }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n\n const tag = ALLOWED_LIST_TAGS.has(node?.tag) ? node.tag : 'ul'\n const listType = ALLOWED_LIST_TYPES.has(node?.listType) ? node.listType : 'bullet'\n\n return `<${tag} class=\"${listType}\">${childrenText}</${tag}>`\n },\n nodeTypes: ['list'],\n}\n\nexport const ListItemHTMLConverter: HTMLConverter<any> = {\n converter: async ({ converters, node, parent }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n })\n\n const safeValue = Number.isFinite(Number(node?.value)) ? Number(node.value) : 1\n\n if ('listType' in parent && parent?.listType === 'check') {\n return `<li aria-checked=\"${node.checked ? 'true' : 'false'}\" class=\"${\n node.checked\n ? 'list-item-checkbox list-item-checkbox-checked'\n : 'list-item-checkbox list-item-checkbox-unchecked'\n }\"\n role=\"checkbox\"\n tabIndex=\"-1\"\n value=\"${safeValue}\"\n >\n ${childrenText}\n </li>`\n } else {\n return `<li value=\"${safeValue}\">${childrenText}</li>`\n }\n },\n nodeTypes: ['listitem'],\n}\n"],"names":["convertLexicalNodesToHTML","ALLOWED_LIST_TAGS","Set","ALLOWED_LIST_TYPES","ListHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","tag","has","listType","nodeTypes","ListItemHTMLConverter","safeValue","Number","isFinite","value","checked"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ,yBAAwB;AAElE,MAAMC,oBAAoB,IAAIC,IAAI;IAAC;IAAM;CAAK;AAC9C,MAAMC,qBAAqB,IAAID,IAAI;IAAC;IAAU;IAAS;CAAS;AAEhE,OAAO,MAAME,oBAAwC;IACnDC,WAAW,OAAO,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC5D,MAAMC,eAAe,MAAMV,0BAA0B;YACnDM;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QAEA,MAAMI,MAAMZ,kBAAkBa,GAAG,CAACP,MAAMM,OAAON,KAAKM,GAAG,GAAG;QAC1D,MAAME,WAAWZ,mBAAmBW,GAAG,CAACP,MAAMQ,YAAYR,KAAKQ,QAAQ,GAAG;QAE1E,OAAO,CAAC,CAAC,EAAEF,IAAI,QAAQ,EAAEE,SAAS,EAAE,EAAEL,aAAa,EAAE,EAAEG,IAAI,CAAC,CAAC;IAC/D;IACAG,WAAW;QAAC;KAAO;AACrB,EAAC;AAED,OAAO,MAAMC,wBAA4C;IACvDZ,WAAW,OAAO,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAE;QAC5C,MAAME,eAAe,MAAMV,0BAA0B;YACnDM;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;QACF;QAEA,MAAMU,YAAYC,OAAOC,QAAQ,CAACD,OAAOZ,MAAMc,UAAUF,OAAOZ,KAAKc,KAAK,IAAI;QAE9E,IAAI,cAAcb,UAAUA,QAAQO,aAAa,SAAS;YACxD,OAAO,CAAC,kBAAkB,EAAER,KAAKe,OAAO,GAAG,SAAS,QAAQ,SAAS,EACnEf,KAAKe,OAAO,GACR,kDACA,kDACL;;;iBAGU,EAAEJ,UAAU;;UAEnB,EAAER,aAAa;eACV,CAAC;QACZ,OAAO;YACL,OAAO,CAAC,WAAW,EAAEQ,UAAU,EAAE,EAAER,aAAa,KAAK,CAAC;QACxD;IACF;IACAM,WAAW;QAAC;KAAW;AACzB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/quote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,GAAG,CAqBjD,CAAA"}
1
+ {"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/quote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,GAAG,CAqBjD,CAAA"}
@@ -1,4 +1,12 @@
1
1
  import { convertLexicalNodesToHTML } from '../serializeLexical.js';
2
+ const ALLOWED_TEXT_ALIGN = new Set([
3
+ 'center',
4
+ 'end',
5
+ 'justify',
6
+ 'left',
7
+ 'right',
8
+ 'start'
9
+ ]);
2
10
  export const QuoteHTMLConverter = {
3
11
  async converter ({ converters, node, parent, submissionData }) {
4
12
  const childrenText = await convertLexicalNodesToHTML({
@@ -11,7 +19,7 @@ export const QuoteHTMLConverter = {
11
19
  submissionData
12
20
  });
13
21
  const style = [
14
- node.format ? `text-align: ${node.format};` : '',
22
+ node.format && ALLOWED_TEXT_ALIGN.has(node.format) ? `text-align: ${node.format};` : '',
15
23
  node.indent > 0 ? `padding-inline-start: ${node.indent * 40}px;` : ''
16
24
  ].filter(Boolean).join(' ');
17
25
  return `<blockquote${style ? ` style='${style}'` : ''}>${childrenText}</blockquote>`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utilities/lexical/converters/quote.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nexport const QuoteHTMLConverter: HTMLConverter<any> = {\n async converter({ converters, node, parent, submissionData }) {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n const style = [\n node.format ? `text-align: ${node.format};` : '',\n node.indent > 0 ? `padding-inline-start: ${node.indent * 40}px;` : '',\n ]\n .filter(Boolean)\n .join(' ')\n\n return `<blockquote${style ? ` style='${style}'` : ''}>${childrenText}</blockquote>`\n },\n nodeTypes: ['quote'],\n}\n"],"names":["convertLexicalNodesToHTML","QuoteHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","style","format","indent","filter","Boolean","join","nodeTypes"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ,yBAAwB;AAElE,OAAO,MAAMC,qBAAyC;IACpD,MAAMC,WAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC1D,MAAMC,eAAe,MAAMP,0BAA0B;YACnDG;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QACA,MAAMI,QAAQ;YACZN,KAAKO,MAAM,GAAG,CAAC,YAAY,EAAEP,KAAKO,MAAM,CAAC,CAAC,CAAC,GAAG;YAC9CP,KAAKQ,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAER,KAAKQ,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG;SACpE,CACEC,MAAM,CAACC,SACPC,IAAI,CAAC;QAER,OAAO,CAAC,WAAW,EAAEL,QAAQ,CAAC,QAAQ,EAAEA,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,EAAEH,aAAa,aAAa,CAAC;IACtF;IACAS,WAAW;QAAC;KAAQ;AACtB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/utilities/lexical/converters/quote.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { convertLexicalNodesToHTML } from '../serializeLexical.js'\n\nconst ALLOWED_TEXT_ALIGN = new Set(['center', 'end', 'justify', 'left', 'right', 'start'])\n\nexport const QuoteHTMLConverter: HTMLConverter<any> = {\n async converter({ converters, node, parent, submissionData }) {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n submissionData,\n })\n const style = [\n node.format && ALLOWED_TEXT_ALIGN.has(node.format) ? `text-align: ${node.format};` : '',\n node.indent > 0 ? `padding-inline-start: ${node.indent * 40}px;` : '',\n ]\n .filter(Boolean)\n .join(' ')\n\n return `<blockquote${style ? ` style='${style}'` : ''}>${childrenText}</blockquote>`\n },\n nodeTypes: ['quote'],\n}\n"],"names":["convertLexicalNodesToHTML","ALLOWED_TEXT_ALIGN","Set","QuoteHTMLConverter","converter","converters","node","parent","submissionData","childrenText","lexicalNodes","children","style","format","has","indent","filter","Boolean","join","nodeTypes"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ,yBAAwB;AAElE,MAAMC,qBAAqB,IAAIC,IAAI;IAAC;IAAU;IAAO;IAAW;IAAQ;IAAS;CAAQ;AAEzF,OAAO,MAAMC,qBAAyC;IACpD,MAAMC,WAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,cAAc,EAAE;QAC1D,MAAMC,eAAe,MAAMT,0BAA0B;YACnDK;YACAK,cAAcJ,KAAKK,QAAQ;YAC3BJ,QAAQ;gBACN,GAAGD,IAAI;gBACPC;YACF;YACAC;QACF;QACA,MAAMI,QAAQ;YACZN,KAAKO,MAAM,IAAIZ,mBAAmBa,GAAG,CAACR,KAAKO,MAAM,IAAI,CAAC,YAAY,EAAEP,KAAKO,MAAM,CAAC,CAAC,CAAC,GAAG;YACrFP,KAAKS,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAET,KAAKS,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG;SACpE,CACEC,MAAM,CAACC,SACPC,IAAI,CAAC;QAER,OAAO,CAAC,WAAW,EAAEN,QAAQ,CAAC,QAAQ,EAAEA,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,EAAEH,aAAa,aAAa,CAAC;IACtF;IACAU,WAAW;QAAC;KAAQ;AACtB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAKhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAiChD,CAAA"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/utilities/lexical/converters/text.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAKhD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAiChD,CAAA"}
@@ -1,8 +1,9 @@
1
+ import escapeHTML from 'escape-html';
1
2
  import { replaceDoubleCurlys } from '../../replaceDoubleCurlys.js';
2
3
  import { NodeFormat } from '../nodeFormat.js';
3
4
  export const TextHTMLConverter = {
4
5
  converter ({ node, submissionData }) {
5
- let text = node.text;
6
+ let text = escapeHTML(node.text);
6
7
  if (submissionData) {
7
8
  text = replaceDoubleCurlys(text, submissionData);
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utilities/lexical/converters/text.ts"],"sourcesContent":["import type { HTMLConverter } from '../types.js'\n\nimport { replaceDoubleCurlys } from '../../replaceDoubleCurlys.js'\nimport { NodeFormat } from '../nodeFormat.js'\n\nexport const TextHTMLConverter: HTMLConverter<any> = {\n converter({ node, submissionData }) {\n let text = node.text\n\n if (submissionData) {\n text = replaceDoubleCurlys(text, submissionData)\n }\n\n if (node.format & NodeFormat.IS_BOLD) {\n text = `<strong>${text}</strong>`\n }\n if (node.format & NodeFormat.IS_ITALIC) {\n text = `<em>${text}</em>`\n }\n if (node.format & NodeFormat.IS_STRIKETHROUGH) {\n text = `<span style=\"text-decoration: line-through\">${text}</span>`\n }\n if (node.format & NodeFormat.IS_UNDERLINE) {\n text = `<span style=\"text-decoration: underline\">${text}</span>`\n }\n if (node.format & NodeFormat.IS_CODE) {\n text = `<code>${text}</code>`\n }\n if (node.format & NodeFormat.IS_SUBSCRIPT) {\n text = `<sub>${text}</sub>`\n }\n if (node.format & NodeFormat.IS_SUPERSCRIPT) {\n text = `<sup>${text}</sup>`\n }\n\n return text\n },\n nodeTypes: ['text'],\n}\n"],"names":["replaceDoubleCurlys","NodeFormat","TextHTMLConverter","converter","node","submissionData","text","format","IS_BOLD","IS_ITALIC","IS_STRIKETHROUGH","IS_UNDERLINE","IS_CODE","IS_SUBSCRIPT","IS_SUPERSCRIPT","nodeTypes"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,+BAA8B;AAClE,SAASC,UAAU,QAAQ,mBAAkB;AAE7C,OAAO,MAAMC,oBAAwC;IACnDC,WAAU,EAAEC,IAAI,EAAEC,cAAc,EAAE;QAChC,IAAIC,OAAOF,KAAKE,IAAI;QAEpB,IAAID,gBAAgB;YAClBC,OAAON,oBAAoBM,MAAMD;QACnC;QAEA,IAAID,KAAKG,MAAM,GAAGN,WAAWO,OAAO,EAAE;YACpCF,OAAO,CAAC,QAAQ,EAAEA,KAAK,SAAS,CAAC;QACnC;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWQ,SAAS,EAAE;YACtCH,OAAO,CAAC,IAAI,EAAEA,KAAK,KAAK,CAAC;QAC3B;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWS,gBAAgB,EAAE;YAC7CJ,OAAO,CAAC,4CAA4C,EAAEA,KAAK,OAAO,CAAC;QACrE;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWU,YAAY,EAAE;YACzCL,OAAO,CAAC,yCAAyC,EAAEA,KAAK,OAAO,CAAC;QAClE;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWW,OAAO,EAAE;YACpCN,OAAO,CAAC,MAAM,EAAEA,KAAK,OAAO,CAAC;QAC/B;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWY,YAAY,EAAE;YACzCP,OAAO,CAAC,KAAK,EAAEA,KAAK,MAAM,CAAC;QAC7B;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWa,cAAc,EAAE;YAC3CR,OAAO,CAAC,KAAK,EAAEA,KAAK,MAAM,CAAC;QAC7B;QAEA,OAAOA;IACT;IACAS,WAAW;QAAC;KAAO;AACrB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/utilities/lexical/converters/text.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\n\nimport type { HTMLConverter } from '../types.js'\n\nimport { replaceDoubleCurlys } from '../../replaceDoubleCurlys.js'\nimport { NodeFormat } from '../nodeFormat.js'\n\nexport const TextHTMLConverter: HTMLConverter<any> = {\n converter({ node, submissionData }) {\n let text = escapeHTML(node.text)\n\n if (submissionData) {\n text = replaceDoubleCurlys(text, submissionData)\n }\n\n if (node.format & NodeFormat.IS_BOLD) {\n text = `<strong>${text}</strong>`\n }\n if (node.format & NodeFormat.IS_ITALIC) {\n text = `<em>${text}</em>`\n }\n if (node.format & NodeFormat.IS_STRIKETHROUGH) {\n text = `<span style=\"text-decoration: line-through\">${text}</span>`\n }\n if (node.format & NodeFormat.IS_UNDERLINE) {\n text = `<span style=\"text-decoration: underline\">${text}</span>`\n }\n if (node.format & NodeFormat.IS_CODE) {\n text = `<code>${text}</code>`\n }\n if (node.format & NodeFormat.IS_SUBSCRIPT) {\n text = `<sub>${text}</sub>`\n }\n if (node.format & NodeFormat.IS_SUPERSCRIPT) {\n text = `<sup>${text}</sup>`\n }\n\n return text\n },\n nodeTypes: ['text'],\n}\n"],"names":["escapeHTML","replaceDoubleCurlys","NodeFormat","TextHTMLConverter","converter","node","submissionData","text","format","IS_BOLD","IS_ITALIC","IS_STRIKETHROUGH","IS_UNDERLINE","IS_CODE","IS_SUBSCRIPT","IS_SUPERSCRIPT","nodeTypes"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAIpC,SAASC,mBAAmB,QAAQ,+BAA8B;AAClE,SAASC,UAAU,QAAQ,mBAAkB;AAE7C,OAAO,MAAMC,oBAAwC;IACnDC,WAAU,EAAEC,IAAI,EAAEC,cAAc,EAAE;QAChC,IAAIC,OAAOP,WAAWK,KAAKE,IAAI;QAE/B,IAAID,gBAAgB;YAClBC,OAAON,oBAAoBM,MAAMD;QACnC;QAEA,IAAID,KAAKG,MAAM,GAAGN,WAAWO,OAAO,EAAE;YACpCF,OAAO,CAAC,QAAQ,EAAEA,KAAK,SAAS,CAAC;QACnC;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWQ,SAAS,EAAE;YACtCH,OAAO,CAAC,IAAI,EAAEA,KAAK,KAAK,CAAC;QAC3B;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWS,gBAAgB,EAAE;YAC7CJ,OAAO,CAAC,4CAA4C,EAAEA,KAAK,OAAO,CAAC;QACrE;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWU,YAAY,EAAE;YACzCL,OAAO,CAAC,yCAAyC,EAAEA,KAAK,OAAO,CAAC;QAClE;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWW,OAAO,EAAE;YACpCN,OAAO,CAAC,MAAM,EAAEA,KAAK,OAAO,CAAC;QAC/B;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWY,YAAY,EAAE;YACzCP,OAAO,CAAC,KAAK,EAAEA,KAAK,MAAM,CAAC;QAC7B;QACA,IAAIF,KAAKG,MAAM,GAAGN,WAAWa,cAAc,EAAE;YAC3CR,OAAO,CAAC,KAAK,EAAEA,KAAK,MAAM,CAAC;QAC7B;QAEA,OAAOA;IACT;IACAS,WAAW;QAAC;KAAO;AACrB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"replaceDoubleCurlys.d.ts","sourceRoot":"","sources":["../../src/utilities/replaceDoubleCurlys.ts"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,KAAK,cAAc,GAAG,aAAa,EAAE,CAAA;AAErC,eAAO,MAAM,mBAAmB,QAAS,MAAM,cAAc,cAAc,KAAG,MA4B7E,CAAA"}
1
+ {"version":3,"file":"replaceDoubleCurlys.d.ts","sourceRoot":"","sources":["../../src/utilities/replaceDoubleCurlys.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,KAAK,cAAc,GAAG,aAAa,EAAE,CAAA;AAErC,eAAO,MAAM,mBAAmB,QAAS,MAAM,cAAc,cAAc,KAAG,MA8B7E,CAAA"}
@@ -1,3 +1,4 @@
1
+ import escapeHTML from 'escape-html';
1
2
  import { keyValuePairToHtmlTable } from './keyValuePairToHtmlTable.js';
2
3
  export const replaceDoubleCurlys = (str, variables)=>{
3
4
  const regex = /\{\{(.+?)\}\}/g;
@@ -5,7 +6,7 @@ export const replaceDoubleCurlys = (str, variables)=>{
5
6
  return str.replace(regex, (_, variable)=>{
6
7
  if (variable.includes('*')) {
7
8
  if (variable === '*') {
8
- return variables.map(({ field, value })=>`${field} : ${value}`).join(' <br /> ');
9
+ return variables.map(({ field, value })=>`${escapeHTML(field)} : ${escapeHTML(value)}`).join(' <br /> ');
9
10
  } else if (variable === '*:table') {
10
11
  return keyValuePairToHtmlTable(variables.reduce((acc, { field, value })=>{
11
12
  acc[field] = value;
@@ -17,7 +18,7 @@ export const replaceDoubleCurlys = (str, variables)=>{
17
18
  return variable === fieldName;
18
19
  });
19
20
  if (foundVariable) {
20
- return foundVariable.value;
21
+ return escapeHTML(foundVariable.value);
21
22
  }
22
23
  }
23
24
  return variable;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/replaceDoubleCurlys.ts"],"sourcesContent":["import { keyValuePairToHtmlTable } from './keyValuePairToHtmlTable.js'\n\ninterface EmailVariable {\n field: string\n value: string\n}\n\ntype EmailVariables = EmailVariable[]\n\nexport const replaceDoubleCurlys = (str: string, variables?: EmailVariables): string => {\n const regex = /\\{\\{(.+?)\\}\\}/g\n if (str && variables) {\n return str.replace(regex, (_, variable: string) => {\n if (variable.includes('*')) {\n if (variable === '*') {\n return variables.map(({ field, value }) => `${field} : ${value}`).join(' <br /> ')\n } else if (variable === '*:table') {\n return keyValuePairToHtmlTable(\n variables.reduce<Record<string, string>>((acc, { field, value }) => {\n acc[field] = value\n return acc\n }, {}),\n )\n }\n } else {\n const foundVariable = variables.find(({ field: fieldName }) => {\n return variable === fieldName\n })\n if (foundVariable) {\n return foundVariable.value\n }\n }\n\n return variable\n })\n }\n return str\n}\n"],"names":["keyValuePairToHtmlTable","replaceDoubleCurlys","str","variables","regex","replace","_","variable","includes","map","field","value","join","reduce","acc","foundVariable","find","fieldName"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,+BAA8B;AAStE,OAAO,MAAMC,sBAAsB,CAACC,KAAaC;IAC/C,MAAMC,QAAQ;IACd,IAAIF,OAAOC,WAAW;QACpB,OAAOD,IAAIG,OAAO,CAACD,OAAO,CAACE,GAAGC;YAC5B,IAAIA,SAASC,QAAQ,CAAC,MAAM;gBAC1B,IAAID,aAAa,KAAK;oBACpB,OAAOJ,UAAUM,GAAG,CAAC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAK,GAAGD,MAAM,GAAG,EAAEC,OAAO,EAAEC,IAAI,CAAC;gBACzE,OAAO,IAAIL,aAAa,WAAW;oBACjC,OAAOP,wBACLG,UAAUU,MAAM,CAAyB,CAACC,KAAK,EAAEJ,KAAK,EAAEC,KAAK,EAAE;wBAC7DG,GAAG,CAACJ,MAAM,GAAGC;wBACb,OAAOG;oBACT,GAAG,CAAC;gBAER;YACF,OAAO;gBACL,MAAMC,gBAAgBZ,UAAUa,IAAI,CAAC,CAAC,EAAEN,OAAOO,SAAS,EAAE;oBACxD,OAAOV,aAAaU;gBACtB;gBACA,IAAIF,eAAe;oBACjB,OAAOA,cAAcJ,KAAK;gBAC5B;YACF;YAEA,OAAOJ;QACT;IACF;IACA,OAAOL;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/replaceDoubleCurlys.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\n\nimport { keyValuePairToHtmlTable } from './keyValuePairToHtmlTable.js'\n\ninterface EmailVariable {\n field: string\n value: string\n}\n\ntype EmailVariables = EmailVariable[]\n\nexport const replaceDoubleCurlys = (str: string, variables?: EmailVariables): string => {\n const regex = /\\{\\{(.+?)\\}\\}/g\n if (str && variables) {\n return str.replace(regex, (_, variable: string) => {\n if (variable.includes('*')) {\n if (variable === '*') {\n return variables\n .map(({ field, value }) => `${escapeHTML(field)} : ${escapeHTML(value)}`)\n .join(' <br /> ')\n } else if (variable === '*:table') {\n return keyValuePairToHtmlTable(\n variables.reduce<Record<string, string>>((acc, { field, value }) => {\n acc[field] = value\n return acc\n }, {}),\n )\n }\n } else {\n const foundVariable = variables.find(({ field: fieldName }) => {\n return variable === fieldName\n })\n if (foundVariable) {\n return escapeHTML(foundVariable.value)\n }\n }\n\n return variable\n })\n }\n return str\n}\n"],"names":["escapeHTML","keyValuePairToHtmlTable","replaceDoubleCurlys","str","variables","regex","replace","_","variable","includes","map","field","value","join","reduce","acc","foundVariable","find","fieldName"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,SAASC,uBAAuB,QAAQ,+BAA8B;AAStE,OAAO,MAAMC,sBAAsB,CAACC,KAAaC;IAC/C,MAAMC,QAAQ;IACd,IAAIF,OAAOC,WAAW;QACpB,OAAOD,IAAIG,OAAO,CAACD,OAAO,CAACE,GAAGC;YAC5B,IAAIA,SAASC,QAAQ,CAAC,MAAM;gBAC1B,IAAID,aAAa,KAAK;oBACpB,OAAOJ,UACJM,GAAG,CAAC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAK,GAAGZ,WAAWW,OAAO,GAAG,EAAEX,WAAWY,QAAQ,EACvEC,IAAI,CAAC;gBACV,OAAO,IAAIL,aAAa,WAAW;oBACjC,OAAOP,wBACLG,UAAUU,MAAM,CAAyB,CAACC,KAAK,EAAEJ,KAAK,EAAEC,KAAK,EAAE;wBAC7DG,GAAG,CAACJ,MAAM,GAAGC;wBACb,OAAOG;oBACT,GAAG,CAAC;gBAER;YACF,OAAO;gBACL,MAAMC,gBAAgBZ,UAAUa,IAAI,CAAC,CAAC,EAAEN,OAAOO,SAAS,EAAE;oBACxD,OAAOV,aAAaU;gBACtB;gBACA,IAAIF,eAAe;oBACjB,OAAOhB,WAAWgB,cAAcJ,KAAK;gBACvC;YACF;YAEA,OAAOJ;QACT;IACF;IACA,OAAOL;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serializeSlate.d.ts","sourceRoot":"","sources":["../../../src/utilities/slate/serializeSlate.ts"],"names":[],"mappings":"AAIA,UAAU,IAAI;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAMD,eAAO,MAAM,cAAc,cAAe,IAAI,EAAE,mBAAmB,GAAG,KAAG,MAAM,GAAG,SA0HrE,CAAA"}
1
+ {"version":3,"file":"serializeSlate.d.ts","sourceRoot":"","sources":["../../../src/utilities/slate/serializeSlate.ts"],"names":[],"mappings":"AAKA,UAAU,IAAI;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAMD,eAAO,MAAM,cAAc,cAAe,IAAI,EAAE,mBAAmB,GAAG,KAAG,MAAM,GAAG,SAiIrE,CAAA"}
@@ -1,11 +1,16 @@
1
1
  import escapeHTML from 'escape-html';
2
+ import { sanitizeUrl } from 'payload/shared';
2
3
  import { replaceDoubleCurlys } from '../replaceDoubleCurlys.js';
3
4
  const isTextNode = (node)=>{
4
5
  return 'text' in node;
5
6
  };
6
7
  export const serializeSlate = (children, submissionData)=>children?.map((node)=>{
7
8
  if (isTextNode(node)) {
8
- let text = node.text.includes('{{*') ? replaceDoubleCurlys(node.text, submissionData) : `<span>${escapeHTML(replaceDoubleCurlys(node.text, submissionData))}</span>`;
9
+ let text = escapeHTML(node.text);
10
+ if (submissionData) {
11
+ text = replaceDoubleCurlys(text, submissionData);
12
+ }
13
+ text = `<span>${text}</span>`;
9
14
  if (node.bold) {
10
15
  text = `
11
16
  <strong>
@@ -82,11 +87,17 @@ export const serializeSlate = (children, submissionData)=>children?.map((node)=>
82
87
  </li>
83
88
  `;
84
89
  case 'link':
85
- return `
86
- <a href={${escapeHTML(replaceDoubleCurlys(node.url, submissionData))}}>
90
+ {
91
+ let href = escapeHTML(sanitizeUrl(node.url ?? ''));
92
+ if (submissionData) {
93
+ href = replaceDoubleCurlys(href, submissionData);
94
+ }
95
+ return `
96
+ <a href="${href}">
87
97
  ${serializeSlate(node.children, submissionData)}
88
98
  </a>
89
99
  `;
100
+ }
90
101
  case 'ol':
91
102
  return `
92
103
  <ol>
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utilities/slate/serializeSlate.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\n\nimport { replaceDoubleCurlys } from '../replaceDoubleCurlys.js'\n\ninterface Node {\n bold?: boolean\n children?: Node[]\n code?: boolean\n italic?: boolean\n text?: string\n type?: string\n url?: string\n}\n\nconst isTextNode = (node: Node): node is { text: string } & Node => {\n return 'text' in node\n}\n\nexport const serializeSlate = (children?: Node[], submissionData?: any): string | undefined =>\n children\n ?.map((node: Node) => {\n if (isTextNode(node)) {\n let text = node.text.includes('{{*')\n ? replaceDoubleCurlys(node.text, submissionData)\n : `<span>${escapeHTML(replaceDoubleCurlys(node.text, submissionData))}</span>`\n\n if (node.bold) {\n text = `\n <strong>\n ${text}\n </strong>\n `\n }\n\n if (node.code) {\n text = `\n <code>\n ${text}\n </code>\n `\n }\n\n if (node.italic) {\n text = `\n <em >\n ${text}\n </em>\n `\n }\n\n return text\n }\n\n if (!node) {\n return null\n }\n\n switch (node.type) {\n case 'h1':\n return `\n <h1>\n ${serializeSlate(node.children, submissionData)}\n </h1>\n `\n case 'h2':\n return `\n <h2>\n ${serializeSlate(node.children, submissionData)}\n </h2>\n `\n case 'h3':\n return `\n <h3>\n ${serializeSlate(node.children, submissionData)}\n </h3>\n `\n case 'h4':\n return `\n <h4>\n ${serializeSlate(node.children, submissionData)}\n </h4>\n `\n case 'h5':\n return `\n <h5>\n ${serializeSlate(node.children, submissionData)}\n </h5>\n `\n case 'h6':\n return `\n <h6>\n ${serializeSlate(node.children, submissionData)}\n </h6>\n `\n case 'indent':\n return `\n <p style=\"padding-left: 20px\">\n ${serializeSlate(node.children, submissionData)}\n </p>\n `\n case 'li':\n return `\n <li>\n ${serializeSlate(node.children, submissionData)}\n </li>\n `\n case 'link':\n return `\n <a href={${escapeHTML(replaceDoubleCurlys(node.url!, submissionData))}}>\n ${serializeSlate(node.children, submissionData)}\n </a>\n `\n case 'ol':\n return `\n <ol>\n ${serializeSlate(node.children, submissionData)}\n </ol>\n `\n case 'quote':\n return `\n <blockquote>\n ${serializeSlate(node.children, submissionData)}\n </blockquote>\n `\n case 'ul':\n return `\n <ul>\n ${serializeSlate(node.children, submissionData)}\n </ul>\n `\n\n default:\n return `\n <p>\n ${serializeSlate(node.children, submissionData)}\n </p>\n `\n }\n })\n .filter(Boolean)\n .join('')\n"],"names":["escapeHTML","replaceDoubleCurlys","isTextNode","node","serializeSlate","children","submissionData","map","text","includes","bold","code","italic","type","url","filter","Boolean","join"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,SAASC,mBAAmB,QAAQ,4BAA2B;AAY/D,MAAMC,aAAa,CAACC;IAClB,OAAO,UAAUA;AACnB;AAEA,OAAO,MAAMC,iBAAiB,CAACC,UAAmBC,iBAChDD,UACIE,IAAI,CAACJ;QACL,IAAID,WAAWC,OAAO;YACpB,IAAIK,OAAOL,KAAKK,IAAI,CAACC,QAAQ,CAAC,SAC1BR,oBAAoBE,KAAKK,IAAI,EAAEF,kBAC/B,CAAC,MAAM,EAAEN,WAAWC,oBAAoBE,KAAKK,IAAI,EAAEF,iBAAiB,OAAO,CAAC;YAEhF,IAAIH,KAAKO,IAAI,EAAE;gBACbF,OAAO,CAAC;;UAER,EAAEA,KAAK;;MAEX,CAAC;YACC;YAEA,IAAIL,KAAKQ,IAAI,EAAE;gBACbH,OAAO,CAAC;;UAER,EAAEA,KAAK;;MAEX,CAAC;YACC;YAEA,IAAIL,KAAKS,MAAM,EAAE;gBACfJ,OAAO,CAAC;;UAER,EAAEA,KAAK;;MAEX,CAAC;YACC;YAEA,OAAOA;QACT;QAEA,IAAI,CAACL,MAAM;YACT,OAAO;QACT;QAEA,OAAQA,KAAKU,IAAI;YACf,KAAK;gBACH,OAAO,CAAC;;UAER,EAAET,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;YAEN,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;QAEpD,CAAC;YACD,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;mBACC,EAAEN,WAAWC,oBAAoBE,KAAKW,GAAG,EAAGR,iBAAiB;UACtE,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YAEC;gBACE,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;QACD;IACF,GACCS,OAAOC,SACPC,KAAK,IAAG"}
1
+ {"version":3,"sources":["../../../src/utilities/slate/serializeSlate.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\nimport { sanitizeUrl } from 'payload/shared'\n\nimport { replaceDoubleCurlys } from '../replaceDoubleCurlys.js'\n\ninterface Node {\n bold?: boolean\n children?: Node[]\n code?: boolean\n italic?: boolean\n text?: string\n type?: string\n url?: string\n}\n\nconst isTextNode = (node: Node): node is { text: string } & Node => {\n return 'text' in node\n}\n\nexport const serializeSlate = (children?: Node[], submissionData?: any): string | undefined =>\n children\n ?.map((node: Node) => {\n if (isTextNode(node)) {\n let text = escapeHTML(node.text)\n if (submissionData) {\n text = replaceDoubleCurlys(text, submissionData)\n }\n text = `<span>${text}</span>`\n\n if (node.bold) {\n text = `\n <strong>\n ${text}\n </strong>\n `\n }\n\n if (node.code) {\n text = `\n <code>\n ${text}\n </code>\n `\n }\n\n if (node.italic) {\n text = `\n <em >\n ${text}\n </em>\n `\n }\n\n return text\n }\n\n if (!node) {\n return null\n }\n\n switch (node.type) {\n case 'h1':\n return `\n <h1>\n ${serializeSlate(node.children, submissionData)}\n </h1>\n `\n case 'h2':\n return `\n <h2>\n ${serializeSlate(node.children, submissionData)}\n </h2>\n `\n case 'h3':\n return `\n <h3>\n ${serializeSlate(node.children, submissionData)}\n </h3>\n `\n case 'h4':\n return `\n <h4>\n ${serializeSlate(node.children, submissionData)}\n </h4>\n `\n case 'h5':\n return `\n <h5>\n ${serializeSlate(node.children, submissionData)}\n </h5>\n `\n case 'h6':\n return `\n <h6>\n ${serializeSlate(node.children, submissionData)}\n </h6>\n `\n case 'indent':\n return `\n <p style=\"padding-left: 20px\">\n ${serializeSlate(node.children, submissionData)}\n </p>\n `\n case 'li':\n return `\n <li>\n ${serializeSlate(node.children, submissionData)}\n </li>\n `\n case 'link': {\n let href = escapeHTML(sanitizeUrl(node.url ?? ''))\n if (submissionData) {\n href = replaceDoubleCurlys(href, submissionData)\n }\n return `\n <a href=\"${href}\">\n ${serializeSlate(node.children, submissionData)}\n </a>\n `\n }\n case 'ol':\n return `\n <ol>\n ${serializeSlate(node.children, submissionData)}\n </ol>\n `\n case 'quote':\n return `\n <blockquote>\n ${serializeSlate(node.children, submissionData)}\n </blockquote>\n `\n case 'ul':\n return `\n <ul>\n ${serializeSlate(node.children, submissionData)}\n </ul>\n `\n\n default:\n return `\n <p>\n ${serializeSlate(node.children, submissionData)}\n </p>\n `\n }\n })\n .filter(Boolean)\n .join('')\n"],"names":["escapeHTML","sanitizeUrl","replaceDoubleCurlys","isTextNode","node","serializeSlate","children","submissionData","map","text","bold","code","italic","type","href","url","filter","Boolean","join"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AACpC,SAASC,WAAW,QAAQ,iBAAgB;AAE5C,SAASC,mBAAmB,QAAQ,4BAA2B;AAY/D,MAAMC,aAAa,CAACC;IAClB,OAAO,UAAUA;AACnB;AAEA,OAAO,MAAMC,iBAAiB,CAACC,UAAmBC,iBAChDD,UACIE,IAAI,CAACJ;QACL,IAAID,WAAWC,OAAO;YACpB,IAAIK,OAAOT,WAAWI,KAAKK,IAAI;YAC/B,IAAIF,gBAAgB;gBAClBE,OAAOP,oBAAoBO,MAAMF;YACnC;YACAE,OAAO,CAAC,MAAM,EAAEA,KAAK,OAAO,CAAC;YAE7B,IAAIL,KAAKM,IAAI,EAAE;gBACbD,OAAO,CAAC;;UAER,EAAEA,KAAK;;MAEX,CAAC;YACC;YAEA,IAAIL,KAAKO,IAAI,EAAE;gBACbF,OAAO,CAAC;;UAER,EAAEA,KAAK;;MAEX,CAAC;YACC;YAEA,IAAIL,KAAKQ,MAAM,EAAE;gBACfH,OAAO,CAAC;;UAER,EAAEA,KAAK;;MAEX,CAAC;YACC;YAEA,OAAOA;QACT;QAEA,IAAI,CAACL,MAAM;YACT,OAAO;QACT;QAEA,OAAQA,KAAKS,IAAI;YACf,KAAK;gBACH,OAAO,CAAC;;UAER,EAAER,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;YAEN,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;QAEpD,CAAC;YACD,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBAAQ;oBACX,IAAIO,OAAOd,WAAWC,YAAYG,KAAKW,GAAG,IAAI;oBAC9C,IAAIR,gBAAgB;wBAClBO,OAAOZ,oBAAoBY,MAAMP;oBACnC;oBACA,OAAO,CAAC;mBACC,EAAEO,KAAK;UAChB,EAAET,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;gBACC;YACA,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YACC,KAAK;gBACH,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;YAEC;gBACE,OAAO,CAAC;;UAER,EAAEF,eAAeD,KAAKE,QAAQ,EAAEC,gBAAgB;;MAEpD,CAAC;QACD;IACF,GACCS,OAAOC,SACPC,KAAK,IAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-form-builder",
3
- "version": "3.80.0-internal.60d6f94",
3
+ "version": "3.80.0-internal.82dcece",
4
4
  "description": "Form builder plugin for Payload CMS",
5
5
  "keywords": [
6
6
  "payload",
@@ -53,7 +53,7 @@
53
53
  ],
54
54
  "dependencies": {
55
55
  "escape-html": "^1.0.3",
56
- "@payloadcms/ui": "3.80.0-internal.60d6f94"
56
+ "@payloadcms/ui": "3.80.0-internal.82dcece"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/escape-html": "^1.0.4",
@@ -62,12 +62,12 @@
62
62
  "copyfiles": "^2.4.1",
63
63
  "cross-env": "^7.0.3",
64
64
  "@payloadcms/eslint-config": "3.28.0",
65
- "payload": "3.80.0-internal.60d6f94"
65
+ "payload": "3.80.0-internal.82dcece"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "react": "^19.0.1 || ^19.1.2 || ^19.2.1",
69
69
  "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
70
- "payload": "3.80.0-internal.60d6f94"
70
+ "payload": "3.80.0-internal.82dcece"
71
71
  },
72
72
  "publishConfig": {
73
73
  "registry": "https://registry.npmjs.org/"