@payloadcms/richtext-lexical 3.89.0 → 3.90.1
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/{Field-J6MIUIWP.js → Field-YZR46UCY.js} +1 -1
- package/dist/exports/client/{Field-J6MIUIWP.js.map → Field-YZR46UCY.js.map} +1 -1
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-OSMEE5HW.js +2 -0
- package/dist/exports/client/chunk-OSMEE5HW.js.map +7 -0
- package/dist/exports/client/component-UBRNPIQ6.js +2 -0
- package/dist/exports/client/component-UBRNPIQ6.js.map +7 -0
- package/dist/exports/client/index.js +21 -21
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/converters/lexicalToHtml/async/converters/heading.js +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/list.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/list.js +4 -3
- package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/list.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/list.js +4 -3
- package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/Component/nodeTags.spec.js +114 -0
- package/dist/features/converters/lexicalToJSX/Component/nodeTags.spec.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/heading.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +2 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/list.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/list.js +2 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts +8 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js +19 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +16 -43
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/heading/constants.d.ts +2 -0
- package/dist/features/heading/constants.d.ts.map +1 -0
- package/dist/features/heading/constants.js +2 -0
- package/dist/features/heading/constants.js.map +1 -0
- package/dist/features/heading/server/index.d.ts.map +1 -1
- package/dist/features/heading/server/index.js +8 -2
- package/dist/features/heading/server/index.js.map +1 -1
- package/dist/features/heading/server/validate.d.ts +6 -0
- package/dist/features/heading/server/validate.d.ts.map +1 -0
- package/dist/features/heading/server/validate.js +15 -0
- package/dist/features/heading/server/validate.js.map +1 -0
- package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
- package/dist/features/lists/checklist/server/index.js +5 -2
- package/dist/features/lists/checklist/server/index.js.map +1 -1
- package/dist/features/lists/htmlConverter.d.ts.map +1 -1
- package/dist/features/lists/htmlConverter.js +6 -3
- package/dist/features/lists/htmlConverter.js.map +1 -1
- package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
- package/dist/features/lists/orderedList/server/index.js +5 -2
- package/dist/features/lists/orderedList/server/index.js.map +1 -1
- package/dist/features/lists/shared/constants.d.ts +2 -0
- package/dist/features/lists/shared/constants.d.ts.map +1 -0
- package/dist/features/lists/shared/constants.js +2 -0
- package/dist/features/lists/shared/constants.js.map +1 -0
- package/dist/features/lists/shared/validate.d.ts +5 -0
- package/dist/features/lists/shared/validate.d.ts.map +1 -0
- package/dist/features/lists/shared/validate.js +15 -0
- package/dist/features/lists/shared/validate.js.map +1 -0
- package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
- package/dist/features/lists/unorderedList/server/index.js +5 -2
- package/dist/features/lists/unorderedList/server/index.js.map +1 -1
- package/dist/features/relationship/client/index.d.ts +2 -2
- package/dist/features/relationship/client/index.d.ts.map +1 -1
- package/dist/features/relationship/client/index.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.d.ts +2 -2
- package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
- package/dist/features/relationship/client/plugins/index.js +27 -31
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts +2 -4
- package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.js +52 -50
- package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +2 -2
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.js +2 -2
- package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/relationship/server/index.d.ts +8 -1
- package/dist/features/relationship/server/index.d.ts.map +1 -1
- package/dist/features/relationship/server/index.js +28 -11
- package/dist/features/relationship/server/index.js.map +1 -1
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +7 -0
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -0
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +23 -0
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -0
- package/dist/features/toolbars/shared/useToolbarStates.d.ts.map +1 -1
- package/dist/features/toolbars/shared/useToolbarStates.js +3 -1
- package/dist/features/toolbars/shared/useToolbarStates.js.map +1 -1
- package/dist/features/upload/client/component/index.js +2 -1
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/features/upload/client/index.d.ts +3 -2
- package/dist/features/upload/client/index.d.ts.map +1 -1
- package/dist/features/upload/client/index.js.map +1 -1
- package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
- package/dist/features/upload/client/plugin/index.js +47 -52
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts +2 -2
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.js +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/upload/server/index.d.ts +6 -2
- package/dist/features/upload/server/index.d.ts.map +1 -1
- package/dist/features/upload/server/index.js +21 -14
- package/dist/features/upload/server/index.js.map +1 -1
- package/dist/features/upload/server/validate.d.ts +2 -2
- package/dist/features/upload/server/validate.d.ts.map +1 -1
- package/dist/features/upload/server/validate.js +3 -0
- package/dist/features/upload/server/validate.js.map +1 -1
- package/dist/field/Diff/converters/listitem/index.d.ts.map +1 -1
- package/dist/field/Diff/converters/listitem/index.js +2 -1
- package/dist/field/Diff/converters/listitem/index.js.map +1 -1
- package/dist/field/Diff/index.d.ts.map +1 -1
- package/dist/field/Diff/index.js +1 -0
- package/dist/field/Diff/index.js.map +1 -1
- package/dist/field/RenderLexical/index.d.ts +3 -1
- package/dist/field/RenderLexical/index.d.ts.map +1 -1
- package/dist/field/RenderLexical/index.js +23 -23
- package/dist/field/RenderLexical/index.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js +2 -0
- package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js +2 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js +2 -0
- package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js +2 -0
- package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/ReactExtension.js +2 -0
- package/dist/lexical-proxy/@lexical-react/ReactExtension.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js +2 -0
- package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js +2 -0
- package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js +2 -0
- package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js +2 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js +2 -0
- package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts.map +1 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js +2 -0
- package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js.map +1 -0
- package/package.json +94 -24
- package/dist/exports/client/chunk-FWFDJAJ5.js +0 -2
- package/dist/exports/client/chunk-FWFDJAJ5.js.map +0 -7
- package/dist/exports/client/component-BAAVC34S.js +0 -2
- package/dist/exports/client/component-BAAVC34S.js.map +0 -7
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts +0 -2
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts.map +0 -1
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +0 -2
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.js","names":["ALLOWED_HEADING_TAGS","
|
|
1
|
+
{"version":3,"file":"heading.js","names":["ALLOWED_HEADING_TAGS","HeadingHTMLConverterAsync","heading","node","nodesToHTML","providedStyleTag","children","nodes","join","tag","has"],"sources":["../../../../../../src/features/converters/lexicalToHtml/async/converters/heading.ts"],"sourcesContent":["import type { SerializedHeadingNode } from '../../../../../nodeTypes.js'\nimport type { HTMLConvertersAsync } from '../types.js'\n\nimport { ALLOWED_HEADING_TAGS } from '../../../../heading/constants.js'\n\nexport const HeadingHTMLConverterAsync: HTMLConvertersAsync<SerializedHeadingNode> = {\n heading: async ({ node, nodesToHTML, providedStyleTag }) => {\n const children = (\n await nodesToHTML({\n nodes: node.children,\n })\n ).join('')\n\n const tag = ALLOWED_HEADING_TAGS.has(node.tag) ? node.tag : 'h1'\n\n return `<${tag}${providedStyleTag}>${children}</${tag}>`\n },\n}\n"],"mappings":"AAGA,SAASA,oBAAoB,QAAQ;AAErC,OAAO,MAAMC,yBAAA,GAAwE;EACnFC,OAAA,EAAS,MAAAA,CAAO;IAAEC,IAAI;IAAEC,WAAW;IAAEC;EAAgB,CAAE;IACrD,MAAMC,QAAA,GAAW,CACf,MAAMF,WAAA,CAAY;MAChBG,KAAA,EAAOJ,IAAA,CAAKG;IACd,EAAC,EACDE,IAAI,CAAC;IAEP,MAAMC,GAAA,GAAMT,oBAAA,CAAqBU,GAAG,CAACP,IAAA,CAAKM,GAAG,IAAIN,IAAA,CAAKM,GAAG,GAAG;IAE5D,OAAO,IAAIA,GAAA,GAAMJ,gBAAA,IAAoBC,QAAA,KAAaG,GAAA,GAAM;EAC1D;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToHtml/async/converters/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToHtml/async/converters/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAMtD,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,CACtD,sBAAsB,GAAG,kBAAkB,CAiD5C,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import escapeHTML from 'escape-html';
|
|
1
2
|
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
-
|
|
3
|
+
import { ALLOWED_LIST_TAGS } from '../../../../lists/shared/constants.js';
|
|
3
4
|
const ALLOWED_LIST_TYPES = new Set(['bullet', 'check', 'number']);
|
|
4
5
|
export const ListHTMLConverterAsync = {
|
|
5
6
|
list: async ({
|
|
@@ -32,7 +33,7 @@ export const ListHTMLConverterAsync = {
|
|
|
32
33
|
role="checkbox"
|
|
33
34
|
style="list-style-type: none;${providedCSSString}"
|
|
34
35
|
tabIndex="-1"
|
|
35
|
-
value="${node.value}"
|
|
36
|
+
value="${escapeHTML(String(node.value))}"
|
|
36
37
|
>
|
|
37
38
|
${hasSubLists ? children : `<input${node.checked ? ' checked' : ''} id="${uuid}" readOnly="true" type="checkbox" />
|
|
38
39
|
<label htmlFor="${uuid}">${children}</label>
|
|
@@ -42,7 +43,7 @@ export const ListHTMLConverterAsync = {
|
|
|
42
43
|
return `<li
|
|
43
44
|
class="${hasSubLists ? 'nestedListItem' : ''}"
|
|
44
45
|
style="${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}"
|
|
45
|
-
value="${node.value}"
|
|
46
|
+
value="${escapeHTML(String(node.value))}"
|
|
46
47
|
>${children}</li>`;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","names":["v4","uuidv4","ALLOWED_LIST_TAGS","
|
|
1
|
+
{"version":3,"file":"list.js","names":["escapeHTML","v4","uuidv4","ALLOWED_LIST_TAGS","ALLOWED_LIST_TYPES","Set","ListHTMLConverterAsync","list","node","nodesToHTML","providedStyleTag","children","nodes","join","tag","has","listType","listitem","parent","providedCSSString","hasSubLists","some","child","type","uuid","checked","String","value"],"sources":["../../../../../../src/features/converters/lexicalToHtml/async/converters/list.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport type { SerializedListItemNode, SerializedListNode } from '../../../../../nodeTypes.js'\nimport type { HTMLConvertersAsync } from '../types.js'\n\nimport { ALLOWED_LIST_TAGS } from '../../../../lists/shared/constants.js'\n\nconst ALLOWED_LIST_TYPES = new Set(['bullet', 'check', 'number'])\n\nexport const ListHTMLConverterAsync: HTMLConvertersAsync<\n SerializedListItemNode | SerializedListNode\n> = {\n list: async ({ node, nodesToHTML, providedStyleTag }) => {\n const children = (\n await nodesToHTML({\n nodes: node.children,\n })\n ).join('')\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}${providedStyleTag} class=\"list-${listType}\">${children}</${tag}>`\n },\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 uuid = uuidv4()\n return `<li\n aria-checked=\"${node.checked ? 'true' : 'false'}\"\n class=\"list-item-checkbox${node.checked ? ' list-item-checkbox-checked' : ' list-item-checkbox-unchecked'}${hasSubLists ? ' nestedListItem' : ''}\"\n role=\"checkbox\"\n style=\"list-style-type: none;${providedCSSString}\"\n tabIndex=\"-1\"\n value=\"${escapeHTML(String(node.value))}\"\n >\n ${\n hasSubLists\n ? children\n : `<input${node.checked ? ' checked' : ''} id=\"${uuid}\" readOnly=\"true\" type=\"checkbox\" />\n <label htmlFor=\"${uuid}\">${children}</label>\n <br />`\n }\n </li>`\n } else {\n return `<li\n class=\"${hasSubLists ? 'nestedListItem' : ''}\"\n style=\"${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}\"\n value=\"${escapeHTML(String(node.value))}\"\n >${children}</li>`\n }\n },\n}\n"],"mappings":"AAAA,OAAOA,UAAA,MAAgB;AACvB,SAASC,EAAA,IAAMC,MAAM,QAAQ;AAK7B,SAASC,iBAAiB,QAAQ;AAElC,MAAMC,kBAAA,GAAqB,IAAIC,GAAA,CAAI,CAAC,UAAU,SAAS,SAAS;AAEhE,OAAO,MAAMC,sBAAA,GAET;EACFC,IAAA,EAAM,MAAAA,CAAO;IAAEC,IAAI;IAAEC,WAAW;IAAEC;EAAgB,CAAE;IAClD,MAAMC,QAAA,GAAW,CACf,MAAMF,WAAA,CAAY;MAChBG,KAAA,EAAOJ,IAAA,CAAKG;IACd,EAAC,EACDE,IAAI,CAAC;IAEP,MAAMC,GAAA,GAAMX,iBAAA,CAAkBY,GAAG,CAACP,IAAA,CAAKM,GAAG,IAAIN,IAAA,CAAKM,GAAG,GAAG;IACzD,MAAME,QAAA,GAAWZ,kBAAA,CAAmBW,GAAG,CAACP,IAAA,CAAKQ,QAAQ,IAAIR,IAAA,CAAKQ,QAAQ,GAAG;IAEzE,OAAO,IAAIF,GAAA,GAAMJ,gBAAA,gBAAgCM,QAAA,KAAaL,QAAA,KAAaG,GAAA,GAAM;EACnF;EACAG,QAAA,EAAU,MAAAA,CAAO;IAAET,IAAI;IAAEC,WAAW;IAAES,MAAM;IAAEC;EAAiB,CAAE;IAC/D,MAAMC,WAAA,GAAcZ,IAAA,CAAKG,QAAQ,CAACU,IAAI,CAAEC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAK;IAEjE,MAAMZ,QAAA,GAAW,CACf,MAAMF,WAAA,CAAY;MAChBG,KAAA,EAAOJ,IAAA,CAAKG;IACd,EAAC,EACDE,IAAI,CAAC;IAEP,IAAI,cAAcK,MAAA,IAAUA,MAAA,EAAQF,QAAA,KAAa,SAAS;MACxD,MAAMQ,IAAA,GAAOtB,MAAA;MACb,OAAO;0BACaM,IAAA,CAAKiB,OAAO,GAAG,SAAS;qCACbjB,IAAA,CAAKiB,OAAO,GAAG,gCAAgC,kCAAkCL,WAAA,GAAc,oBAAoB;;yCAE/GD,iBAAA;;mBAEtBnB,UAAA,CAAW0B,MAAA,CAAOlB,IAAA,CAAKmB,KAAK;;YAGnCP,WAAA,GACIT,QAAA,GACA,SAASH,IAAA,CAAKiB,OAAO,GAAG,aAAa,UAAUD,IAAA;8BACjCA,IAAA,KAASb,QAAA;mBACpB;cAEL;IACV,OAAO;MACL,OAAO;mBACMS,WAAA,GAAc,mBAAmB;mBACjCA,WAAA,GAAc,yBAAyBD,iBAAA,EAAmB,GAAGA,iBAAA;mBAC7DnB,UAAA,CAAW0B,MAAA,CAAOlB,IAAA,CAAKmB,KAAK;WACpChB,QAAA,OAAe;IACtB;EACF;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.js","names":["ALLOWED_HEADING_TAGS","
|
|
1
|
+
{"version":3,"file":"heading.js","names":["ALLOWED_HEADING_TAGS","HeadingHTMLConverter","heading","node","nodesToHTML","providedStyleTag","children","nodes","join","tag","has"],"sources":["../../../../../../src/features/converters/lexicalToHtml/sync/converters/heading.ts"],"sourcesContent":["import type { SerializedHeadingNode } from '../../../../../nodeTypes.js'\nimport type { HTMLConverters } from '../types.js'\n\nimport { ALLOWED_HEADING_TAGS } from '../../../../heading/constants.js'\n\nexport const HeadingHTMLConverter: HTMLConverters<SerializedHeadingNode> = {\n heading: ({ node, nodesToHTML, providedStyleTag }) => {\n const children = nodesToHTML({\n nodes: node.children,\n }).join('')\n\n const tag = ALLOWED_HEADING_TAGS.has(node.tag) ? node.tag : 'h1'\n\n return `<${tag}${providedStyleTag}>${children}</${tag}>`\n },\n}\n"],"mappings":"AAGA,SAASA,oBAAoB,QAAQ;AAErC,OAAO,MAAMC,oBAAA,GAA8D;EACzEC,OAAA,EAASA,CAAC;IAAEC,IAAI;IAAEC,WAAW;IAAEC;EAAgB,CAAE;IAC/C,MAAMC,QAAA,GAAWF,WAAA,CAAY;MAC3BG,KAAA,EAAOJ,IAAA,CAAKG;IACd,GAAGE,IAAI,CAAC;IAER,MAAMC,GAAA,GAAMT,oBAAA,CAAqBU,GAAG,CAACP,IAAA,CAAKM,GAAG,IAAIN,IAAA,CAAKM,GAAG,GAAG;IAE5D,OAAO,IAAIA,GAAA,GAAMJ,gBAAA,IAAoBC,QAAA,KAAaG,GAAA,GAAM;EAC1D;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToHtml/sync/converters/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToHtml/sync/converters/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAMjD,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,sBAAsB,GAAG,kBAAkB,CA4CzF,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import escapeHTML from 'escape-html';
|
|
1
2
|
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
-
|
|
3
|
+
import { ALLOWED_LIST_TAGS } from '../../../../lists/shared/constants.js';
|
|
3
4
|
const ALLOWED_LIST_TYPES = new Set(['bullet', 'check', 'number']);
|
|
4
5
|
export const ListHTMLConverter = {
|
|
5
6
|
list: ({
|
|
@@ -32,7 +33,7 @@ export const ListHTMLConverter = {
|
|
|
32
33
|
role="checkbox"
|
|
33
34
|
style="list-style-type: none;${providedCSSString}"
|
|
34
35
|
tabIndex="-1"
|
|
35
|
-
value="${node.value}"
|
|
36
|
+
value="${escapeHTML(String(node.value))}"
|
|
36
37
|
>
|
|
37
38
|
${hasSubLists ? children : `<input${node.checked ? ' checked' : ''} id="${uuid}" readOnly="true" type="checkbox" />
|
|
38
39
|
<label htmlFor="${uuid}">${children}</label>
|
|
@@ -42,7 +43,7 @@ export const ListHTMLConverter = {
|
|
|
42
43
|
return `<li
|
|
43
44
|
class="${hasSubLists ? 'nestedListItem' : ''}"
|
|
44
45
|
style="${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}"
|
|
45
|
-
value="${node.value}"
|
|
46
|
+
value="${escapeHTML(String(node.value))}"
|
|
46
47
|
>${children}</li>`;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","names":["v4","uuidv4","ALLOWED_LIST_TAGS","
|
|
1
|
+
{"version":3,"file":"list.js","names":["escapeHTML","v4","uuidv4","ALLOWED_LIST_TAGS","ALLOWED_LIST_TYPES","Set","ListHTMLConverter","list","node","nodesToHTML","providedStyleTag","children","nodes","join","tag","has","listType","listitem","parent","providedCSSString","hasSubLists","some","child","type","uuid","checked","String","value"],"sources":["../../../../../../src/features/converters/lexicalToHtml/sync/converters/list.ts"],"sourcesContent":["import escapeHTML from 'escape-html'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport type { SerializedListItemNode, SerializedListNode } from '../../../../../nodeTypes.js'\nimport type { HTMLConverters } from '../types.js'\n\nimport { ALLOWED_LIST_TAGS } from '../../../../lists/shared/constants.js'\n\nconst ALLOWED_LIST_TYPES = new Set(['bullet', 'check', 'number'])\n\nexport const ListHTMLConverter: HTMLConverters<SerializedListItemNode | SerializedListNode> = {\n list: ({ node, nodesToHTML, providedStyleTag }) => {\n const children = nodesToHTML({\n nodes: node.children,\n }).join('')\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}${providedStyleTag} class=\"list-${listType}\">${children}</${tag}>`\n },\n listitem: ({ node, nodesToHTML, parent, providedCSSString }) => {\n const hasSubLists = node.children.some((child) => child.type === 'list')\n\n const children = nodesToHTML({\n nodes: node.children,\n }).join('')\n\n if ('listType' in parent && parent?.listType === 'check') {\n const uuid = uuidv4()\n return `<li\n aria-checked=\"${node.checked ? 'true' : 'false'}\"\n class=\"list-item-checkbox${node.checked ? ' list-item-checkbox-checked' : ' list-item-checkbox-unchecked'}${hasSubLists ? ' nestedListItem' : ''}\"\n role=\"checkbox\"\n style=\"list-style-type: none;${providedCSSString}\"\n tabIndex=\"-1\"\n value=\"${escapeHTML(String(node.value))}\"\n >\n ${\n hasSubLists\n ? children\n : `<input${node.checked ? ' checked' : ''} id=\"${uuid}\" readOnly=\"true\" type=\"checkbox\" />\n <label htmlFor=\"${uuid}\">${children}</label>\n <br />`\n }\n </li>`\n } else {\n return `<li\n class=\"${hasSubLists ? 'nestedListItem' : ''}\"\n style=\"${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}\"\n value=\"${escapeHTML(String(node.value))}\"\n >${children}</li>`\n }\n },\n}\n"],"mappings":"AAAA,OAAOA,UAAA,MAAgB;AACvB,SAASC,EAAA,IAAMC,MAAM,QAAQ;AAK7B,SAASC,iBAAiB,QAAQ;AAElC,MAAMC,kBAAA,GAAqB,IAAIC,GAAA,CAAI,CAAC,UAAU,SAAS,SAAS;AAEhE,OAAO,MAAMC,iBAAA,GAAiF;EAC5FC,IAAA,EAAMA,CAAC;IAAEC,IAAI;IAAEC,WAAW;IAAEC;EAAgB,CAAE;IAC5C,MAAMC,QAAA,GAAWF,WAAA,CAAY;MAC3BG,KAAA,EAAOJ,IAAA,CAAKG;IACd,GAAGE,IAAI,CAAC;IAER,MAAMC,GAAA,GAAMX,iBAAA,CAAkBY,GAAG,CAACP,IAAA,CAAKM,GAAG,IAAIN,IAAA,CAAKM,GAAG,GAAG;IACzD,MAAME,QAAA,GAAWZ,kBAAA,CAAmBW,GAAG,CAACP,IAAA,CAAKQ,QAAQ,IAAIR,IAAA,CAAKQ,QAAQ,GAAG;IAEzE,OAAO,IAAIF,GAAA,GAAMJ,gBAAA,gBAAgCM,QAAA,KAAaL,QAAA,KAAaG,GAAA,GAAM;EACnF;EACAG,QAAA,EAAUA,CAAC;IAAET,IAAI;IAAEC,WAAW;IAAES,MAAM;IAAEC;EAAiB,CAAE;IACzD,MAAMC,WAAA,GAAcZ,IAAA,CAAKG,QAAQ,CAACU,IAAI,CAAEC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAK;IAEjE,MAAMZ,QAAA,GAAWF,WAAA,CAAY;MAC3BG,KAAA,EAAOJ,IAAA,CAAKG;IACd,GAAGE,IAAI,CAAC;IAER,IAAI,cAAcK,MAAA,IAAUA,MAAA,EAAQF,QAAA,KAAa,SAAS;MACxD,MAAMQ,IAAA,GAAOtB,MAAA;MACb,OAAO;0BACaM,IAAA,CAAKiB,OAAO,GAAG,SAAS;qCACbjB,IAAA,CAAKiB,OAAO,GAAG,gCAAgC,kCAAkCL,WAAA,GAAc,oBAAoB;;yCAE/GD,iBAAA;;mBAEtBnB,UAAA,CAAW0B,MAAA,CAAOlB,IAAA,CAAKmB,KAAK;;YAGnCP,WAAA,GACIT,QAAA,GACA,SAASH,IAAA,CAAKiB,OAAO,GAAG,aAAa,UAAUD,IAAA;8BACjCA,IAAA,KAASb,QAAA;mBACpB;cAEL;IACV,OAAO;MACL,OAAO;mBACMS,WAAA,GAAc,mBAAmB;mBACjCA,WAAA,GAAc,yBAAyBD,iBAAA,EAAmB,GAAGA,iBAAA;mBAC7DnB,UAAA,CAAW0B,MAAA,CAAOlB,IAAA,CAAKmB,KAAK;WACpChB,QAAA,OAAe;IACtB;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { createElement } from 'react';
|
|
2
|
+
import { renderToStaticMarkup } from 'react-dom/server';
|
|
3
|
+
import { describe, expect, it } from 'vitest';
|
|
4
|
+
import { RichText } from './index.js';
|
|
5
|
+
const text = 'body { display: none; }';
|
|
6
|
+
const textNode = {
|
|
7
|
+
type: 'text',
|
|
8
|
+
detail: 0,
|
|
9
|
+
format: 0,
|
|
10
|
+
mode: 'normal',
|
|
11
|
+
style: '',
|
|
12
|
+
text,
|
|
13
|
+
version: 1
|
|
14
|
+
};
|
|
15
|
+
describe('RichText node tags', () => {
|
|
16
|
+
it.each(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])('should preserve the allowed heading tag %s', tag => {
|
|
17
|
+
const html = renderToStaticMarkup(createElement(RichText, {
|
|
18
|
+
data: createEditorState({
|
|
19
|
+
tag,
|
|
20
|
+
type: 'heading'
|
|
21
|
+
}),
|
|
22
|
+
disableContainer: true
|
|
23
|
+
}));
|
|
24
|
+
expect(html).toBe(`<${tag}>${text}</${tag}>`);
|
|
25
|
+
});
|
|
26
|
+
it.each([{
|
|
27
|
+
listType: 'bullet',
|
|
28
|
+
tag: 'ul'
|
|
29
|
+
}, {
|
|
30
|
+
listType: 'number',
|
|
31
|
+
tag: 'ol'
|
|
32
|
+
}, {
|
|
33
|
+
listType: 'check',
|
|
34
|
+
tag: 'ul'
|
|
35
|
+
}])('should preserve the allowed $listType list tag $tag', ({
|
|
36
|
+
listType,
|
|
37
|
+
tag
|
|
38
|
+
}) => {
|
|
39
|
+
const html = renderToStaticMarkup(createElement(RichText, {
|
|
40
|
+
data: createEditorState({
|
|
41
|
+
listType,
|
|
42
|
+
tag,
|
|
43
|
+
type: 'list'
|
|
44
|
+
}),
|
|
45
|
+
disableContainer: true
|
|
46
|
+
}));
|
|
47
|
+
expect(html).toBe(`<${tag} class="list-${listType}">${text}</${tag}>`);
|
|
48
|
+
});
|
|
49
|
+
describe.each(['heading', 'list'])('%s', type => {
|
|
50
|
+
it.each(['style', 'script', 'plaintext', 'iframe', 'div', 'h7', '', null, undefined, 1, {}, ['h1']].map(tag => ({
|
|
51
|
+
tag
|
|
52
|
+
})))('should replace an invalid tag $tag with a safe fallback', ({
|
|
53
|
+
tag
|
|
54
|
+
}) => {
|
|
55
|
+
const html = renderToStaticMarkup(createElement(RichText, {
|
|
56
|
+
data: createEditorState({
|
|
57
|
+
tag,
|
|
58
|
+
type
|
|
59
|
+
}),
|
|
60
|
+
disableContainer: true
|
|
61
|
+
}));
|
|
62
|
+
expect(html).toBe(type === 'heading' ? `<h1>${text}</h1>` : `<ul class="list-bullet">${text}</ul>`);
|
|
63
|
+
});
|
|
64
|
+
it('should replace invalid tags in nested nodes', () => {
|
|
65
|
+
const data = createEditorState({
|
|
66
|
+
tag: 'style',
|
|
67
|
+
type
|
|
68
|
+
});
|
|
69
|
+
data.root.children = [{
|
|
70
|
+
type: 'quote',
|
|
71
|
+
children: data.root.children,
|
|
72
|
+
direction: null,
|
|
73
|
+
format: '',
|
|
74
|
+
indent: 0,
|
|
75
|
+
version: 1
|
|
76
|
+
}];
|
|
77
|
+
const html = renderToStaticMarkup(createElement(RichText, {
|
|
78
|
+
data,
|
|
79
|
+
disableContainer: true
|
|
80
|
+
}));
|
|
81
|
+
expect(html).toBe(`<blockquote>${type === 'heading' ? `<h1>${text}</h1>` : `<ul class="list-bullet">${text}</ul>`}</blockquote>`);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
function createEditorState({
|
|
86
|
+
listType = 'bullet',
|
|
87
|
+
tag,
|
|
88
|
+
type
|
|
89
|
+
}) {
|
|
90
|
+
// Stored JSON can contain values outside the serialized node's TypeScript types.
|
|
91
|
+
return {
|
|
92
|
+
root: {
|
|
93
|
+
type: 'root',
|
|
94
|
+
children: [{
|
|
95
|
+
type,
|
|
96
|
+
children: [textNode],
|
|
97
|
+
direction: null,
|
|
98
|
+
format: '',
|
|
99
|
+
indent: 0,
|
|
100
|
+
...(type === 'list' ? {
|
|
101
|
+
listType,
|
|
102
|
+
start: 1
|
|
103
|
+
} : {}),
|
|
104
|
+
tag,
|
|
105
|
+
version: 1
|
|
106
|
+
}],
|
|
107
|
+
direction: null,
|
|
108
|
+
format: '',
|
|
109
|
+
indent: 0,
|
|
110
|
+
version: 1
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=nodeTags.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeTags.spec.js","names":["createElement","renderToStaticMarkup","describe","expect","it","RichText","text","textNode","type","detail","format","mode","style","version","each","tag","html","data","createEditorState","disableContainer","toBe","listType","undefined","map","root","children","direction","indent","start"],"sources":["../../../../../src/features/converters/lexicalToJSX/Component/nodeTags.spec.ts"],"sourcesContent":["import { createElement } from 'react'\nimport { renderToStaticMarkup } from 'react-dom/server'\nimport { describe, expect, it } from 'vitest'\n\nimport type { DefaultTypedEditorState, SerializedTextNode } from '../../../../nodeTypes.js'\n\nimport { RichText } from './index.js'\n\nconst text = 'body { display: none; }'\nconst textNode: SerializedTextNode = {\n type: 'text',\n detail: 0,\n format: 0,\n mode: 'normal',\n style: '',\n text,\n version: 1,\n}\n\ndescribe('RichText node tags', () => {\n it.each(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])(\n 'should preserve the allowed heading tag %s',\n (tag) => {\n const html = renderToStaticMarkup(\n createElement(RichText, {\n data: createEditorState({ tag, type: 'heading' }),\n disableContainer: true,\n }),\n )\n\n expect(html).toBe(`<${tag}>${text}</${tag}>`)\n },\n )\n\n it.each([\n { listType: 'bullet', tag: 'ul' },\n { listType: 'number', tag: 'ol' },\n { listType: 'check', tag: 'ul' },\n ])('should preserve the allowed $listType list tag $tag', ({ listType, tag }) => {\n const html = renderToStaticMarkup(\n createElement(RichText, {\n data: createEditorState({ listType, tag, type: 'list' }),\n disableContainer: true,\n }),\n )\n\n expect(html).toBe(`<${tag} class=\"list-${listType}\">${text}</${tag}>`)\n })\n\n describe.each(['heading', 'list'] as const)('%s', (type) => {\n it.each(\n [\n 'style',\n 'script',\n 'plaintext',\n 'iframe',\n 'div',\n 'h7',\n '',\n null,\n undefined,\n 1,\n {},\n ['h1'],\n ].map((tag) => ({ tag })),\n )('should replace an invalid tag $tag with a safe fallback', ({ tag }) => {\n const html = renderToStaticMarkup(\n createElement(RichText, { data: createEditorState({ tag, type }), disableContainer: true }),\n )\n\n expect(html).toBe(\n type === 'heading' ? `<h1>${text}</h1>` : `<ul class=\"list-bullet\">${text}</ul>`,\n )\n })\n\n it('should replace invalid tags in nested nodes', () => {\n const data = createEditorState({ tag: 'style', type })\n\n data.root.children = [\n {\n type: 'quote',\n children: data.root.children,\n direction: null,\n format: '',\n indent: 0,\n version: 1,\n },\n ]\n\n const html = renderToStaticMarkup(createElement(RichText, { data, disableContainer: true }))\n\n expect(html).toBe(\n `<blockquote>${type === 'heading' ? `<h1>${text}</h1>` : `<ul class=\"list-bullet\">${text}</ul>`}</blockquote>`,\n )\n })\n })\n})\n\nfunction createEditorState({\n listType = 'bullet',\n tag,\n type,\n}: {\n listType?: string\n tag: unknown\n type: 'heading' | 'list'\n}): DefaultTypedEditorState {\n // Stored JSON can contain values outside the serialized node's TypeScript types.\n return {\n root: {\n type: 'root',\n children: [\n {\n type,\n children: [textNode],\n direction: null,\n format: '',\n indent: 0,\n ...(type === 'list' ? { listType, start: 1 } : {}),\n tag,\n version: 1,\n },\n ],\n direction: null,\n format: '',\n indent: 0,\n version: 1,\n },\n } as DefaultTypedEditorState\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,qBAAqB,CAUpE,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ALLOWED_HEADING_TAGS } from '../../../../heading/constants.js';
|
|
2
3
|
export const HeadingJSXConverter = {
|
|
3
4
|
heading: ({
|
|
4
5
|
node,
|
|
@@ -7,7 +8,7 @@ export const HeadingJSXConverter = {
|
|
|
7
8
|
const children = nodesToJSX({
|
|
8
9
|
nodes: node.children
|
|
9
10
|
});
|
|
10
|
-
const NodeTag = node.tag;
|
|
11
|
+
const NodeTag = ALLOWED_HEADING_TAGS.has(node.tag) ? node.tag : 'h1';
|
|
11
12
|
return /*#__PURE__*/_jsx(NodeTag, {
|
|
12
13
|
children: children
|
|
13
14
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.js","names":["HeadingJSXConverter","heading","node","nodesToJSX","children","nodes","NodeTag","tag","_jsx"],"sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/heading.tsx"],"sourcesContent":["import type { SerializedHeadingNode } from '../../../../../nodeTypes.js'\nimport type { JSXConverters } from '../types.js'\n\nexport const HeadingJSXConverter: JSXConverters<SerializedHeadingNode> = {\n heading: ({ node, nodesToJSX }) => {\n const children = nodesToJSX({\n nodes: node.children,\n })\n\n const NodeTag = node.tag\n\n return <NodeTag>{children}</NodeTag>\n },\n}\n"],"mappings":";AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"heading.js","names":["ALLOWED_HEADING_TAGS","HeadingJSXConverter","heading","node","nodesToJSX","children","nodes","NodeTag","has","tag","_jsx"],"sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/heading.tsx"],"sourcesContent":["import type { SerializedHeadingNode } from '../../../../../nodeTypes.js'\nimport type { JSXConverters } from '../types.js'\n\nimport { ALLOWED_HEADING_TAGS } from '../../../../heading/constants.js'\n\nexport const HeadingJSXConverter: JSXConverters<SerializedHeadingNode> = {\n heading: ({ node, nodesToJSX }) => {\n const children = nodesToJSX({\n nodes: node.children,\n })\n\n const NodeTag = ALLOWED_HEADING_TAGS.has(node.tag) ? node.tag : 'h1'\n\n return <NodeTag>{children}</NodeTag>\n },\n}\n"],"mappings":";AAGA,SAASA,oBAAoB,QAAQ;AAErC,OAAO,MAAMC,mBAAA,GAA4D;EACvEC,OAAA,EAASA,CAAC;IAAEC,IAAI;IAAEC;EAAU,CAAE;IAC5B,MAAMC,QAAA,GAAWD,UAAA,CAAW;MAC1BE,KAAA,EAAOH,IAAA,CAAKE;IACd;IAEA,MAAME,OAAA,GAAUP,oBAAA,CAAqBQ,GAAG,CAACL,IAAA,CAAKM,GAAG,IAAIN,IAAA,CAAKM,GAAG,GAAG;IAEhE,oBAAOC,IAAA,CAACH,OAAA;gBAASF;;EACnB;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,sBAAsB,GAAG,kBAAkB,CAqDvF,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
+
import { ALLOWED_LIST_TAGS } from '../../../../lists/shared/constants.js';
|
|
3
4
|
export const ListJSXConverter = {
|
|
4
5
|
list: ({
|
|
5
6
|
node,
|
|
@@ -8,7 +9,7 @@ export const ListJSXConverter = {
|
|
|
8
9
|
const children = nodesToJSX({
|
|
9
10
|
nodes: node.children
|
|
10
11
|
});
|
|
11
|
-
const NodeTag = node.tag;
|
|
12
|
+
const NodeTag = ALLOWED_LIST_TAGS.has(node.tag) ? node.tag : 'ul';
|
|
12
13
|
return /*#__PURE__*/_jsx(NodeTag, {
|
|
13
14
|
className: `list-${node?.listType}`,
|
|
14
15
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","names":["v4","uuidv4","ListJSXConverter","list","node","nodesToJSX","children","nodes","NodeTag","tag","_jsx","className","listType","listitem","parent","hasSubLists","some","child","type","uuid","checked","role","style","listStyleType","tabIndex","value","_jsxs","_Fragment","id","readOnly","htmlFor","undefined"],"sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/list.tsx"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid'\n\nimport type { SerializedListItemNode, SerializedListNode } from '../../../../../nodeTypes.js'\nimport type { JSXConverters } from '../types.js'\n\nexport const ListJSXConverter: JSXConverters<SerializedListItemNode | SerializedListNode> = {\n list: ({ node, nodesToJSX }) => {\n const children = nodesToJSX({\n nodes: node.children,\n })\n\n const NodeTag = node.tag\n\n return <NodeTag className={`list-${node?.listType}`}>{children}</NodeTag>\n },\n listitem: ({ node, nodesToJSX, parent }) => {\n const hasSubLists = node.children.some((child) => child.type === 'list')\n\n const children = nodesToJSX({\n nodes: node.children,\n })\n\n if ('listType' in parent && parent?.listType === 'check') {\n const uuid = uuidv4()\n\n return (\n <li\n aria-checked={node.checked ? 'true' : 'false'}\n className={`list-item-checkbox${node.checked ? ' list-item-checkbox-checked' : ' list-item-checkbox-unchecked'}${hasSubLists ? ' nestedListItem' : ''}`}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n role=\"checkbox\"\n style={{ listStyleType: 'none' }}\n tabIndex={-1}\n value={node?.value}\n >\n {hasSubLists ? (\n children\n ) : (\n <>\n <input checked={node.checked} id={uuid} readOnly={true} type=\"checkbox\" />\n <label htmlFor={uuid}>{children}</label>\n <br />\n </>\n )}\n </li>\n )\n } else {\n return (\n <li\n className={`${hasSubLists ? 'nestedListItem' : ''}`}\n style={hasSubLists ? { listStyleType: 'none' } : undefined}\n value={node?.value}\n >\n {children}\n </li>\n )\n }\n },\n}\n"],"mappings":";AAAA,SAASA,EAAA,IAAMC,MAAM,QAAQ;AAK7B,OAAO,MAAMC,gBAAA,GAA+E;EAC1FC,IAAA,EAAMA,CAAC;IAAEC,IAAI;IAAEC;EAAU,CAAE;IACzB,MAAMC,QAAA,GAAWD,UAAA,CAAW;MAC1BE,KAAA,EAAOH,IAAA,CAAKE;IACd;IAEA,MAAME,OAAA,
|
|
1
|
+
{"version":3,"file":"list.js","names":["v4","uuidv4","ALLOWED_LIST_TAGS","ListJSXConverter","list","node","nodesToJSX","children","nodes","NodeTag","has","tag","_jsx","className","listType","listitem","parent","hasSubLists","some","child","type","uuid","checked","role","style","listStyleType","tabIndex","value","_jsxs","_Fragment","id","readOnly","htmlFor","undefined"],"sources":["../../../../../../src/features/converters/lexicalToJSX/converter/converters/list.tsx"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid'\n\nimport type { SerializedListItemNode, SerializedListNode } from '../../../../../nodeTypes.js'\nimport type { JSXConverters } from '../types.js'\n\nimport { ALLOWED_LIST_TAGS } from '../../../../lists/shared/constants.js'\n\nexport const ListJSXConverter: JSXConverters<SerializedListItemNode | SerializedListNode> = {\n list: ({ node, nodesToJSX }) => {\n const children = nodesToJSX({\n nodes: node.children,\n })\n\n const NodeTag = ALLOWED_LIST_TAGS.has(node.tag) ? node.tag : 'ul'\n\n return <NodeTag className={`list-${node?.listType}`}>{children}</NodeTag>\n },\n listitem: ({ node, nodesToJSX, parent }) => {\n const hasSubLists = node.children.some((child) => child.type === 'list')\n\n const children = nodesToJSX({\n nodes: node.children,\n })\n\n if ('listType' in parent && parent?.listType === 'check') {\n const uuid = uuidv4()\n\n return (\n <li\n aria-checked={node.checked ? 'true' : 'false'}\n className={`list-item-checkbox${node.checked ? ' list-item-checkbox-checked' : ' list-item-checkbox-unchecked'}${hasSubLists ? ' nestedListItem' : ''}`}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n role=\"checkbox\"\n style={{ listStyleType: 'none' }}\n tabIndex={-1}\n value={node?.value}\n >\n {hasSubLists ? (\n children\n ) : (\n <>\n <input checked={node.checked} id={uuid} readOnly={true} type=\"checkbox\" />\n <label htmlFor={uuid}>{children}</label>\n <br />\n </>\n )}\n </li>\n )\n } else {\n return (\n <li\n className={`${hasSubLists ? 'nestedListItem' : ''}`}\n style={hasSubLists ? { listStyleType: 'none' } : undefined}\n value={node?.value}\n >\n {children}\n </li>\n )\n }\n },\n}\n"],"mappings":";AAAA,SAASA,EAAA,IAAMC,MAAM,QAAQ;AAK7B,SAASC,iBAAiB,QAAQ;AAElC,OAAO,MAAMC,gBAAA,GAA+E;EAC1FC,IAAA,EAAMA,CAAC;IAAEC,IAAI;IAAEC;EAAU,CAAE;IACzB,MAAMC,QAAA,GAAWD,UAAA,CAAW;MAC1BE,KAAA,EAAOH,IAAA,CAAKE;IACd;IAEA,MAAME,OAAA,GAAUP,iBAAA,CAAkBQ,GAAG,CAACL,IAAA,CAAKM,GAAG,IAAIN,IAAA,CAAKM,GAAG,GAAG;IAE7D,oBAAOC,IAAA,CAACH,OAAA;MAAQI,SAAA,EAAW,QAAQR,IAAA,EAAMS,QAAA,EAAU;gBAAGP;;EACxD;EACAQ,QAAA,EAAUA,CAAC;IAAEV,IAAI;IAAEC,UAAU;IAAEU;EAAM,CAAE;IACrC,MAAMC,WAAA,GAAcZ,IAAA,CAAKE,QAAQ,CAACW,IAAI,CAAEC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAK;IAEjE,MAAMb,QAAA,GAAWD,UAAA,CAAW;MAC1BE,KAAA,EAAOH,IAAA,CAAKE;IACd;IAEA,IAAI,cAAcS,MAAA,IAAUA,MAAA,EAAQF,QAAA,KAAa,SAAS;MACxD,MAAMO,IAAA,GAAOpB,MAAA;MAEb,oBACEW,IAAA,CAAC;QACC,gBAAcP,IAAA,CAAKiB,OAAO,GAAG,SAAS;QACtCT,SAAA,EAAW,qBAAqBR,IAAA,CAAKiB,OAAO,GAAG,gCAAgC,kCAAkCL,WAAA,GAAc,oBAAoB,IAAI;QACvJ;QACAM,IAAA,EAAK;QACLC,KAAA,EAAO;UAAEC,aAAA,EAAe;QAAO;QAC/BC,QAAA,EAAU,CAAC;QACXC,KAAA,EAAOtB,IAAA,EAAMsB,KAAA;kBAEZV,WAAA,GACCV,QAAA,gBAEAqB,KAAA,CAAAC,SAAA;kCACEjB,IAAA,CAAC;YAAMU,OAAA,EAASjB,IAAA,CAAKiB,OAAO;YAAEQ,EAAA,EAAIT,IAAA;YAAMU,QAAA,EAAU;YAAMX,IAAA,EAAK;2BAC7DR,IAAA,CAAC;YAAMoB,OAAA,EAASX,IAAA;sBAAOd;2BACvBK,IAAA,CAAC;;;IAKX,OAAO;MACL,oBACEA,IAAA,CAAC;QACCC,SAAA,EAAW,GAAGI,WAAA,GAAc,mBAAmB,IAAI;QACnDO,KAAA,EAAOP,WAAA,GAAc;UAAEQ,aAAA,EAAe;QAAO,IAAIQ,SAAA;QACjDN,KAAA,EAAOtB,IAAA,EAAMsB,KAAA;kBAEZpB;;IAGP;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeSelectionCount.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/computeSelectionCount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAIpD,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,cAAc,CAAA;CAAE,GAAG;IACpF,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAUA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { $computeTableCellRectBoundary, $computeTableMap, $getNodeTriplet } from '@lexical/table';
|
|
2
|
+
export function $computeSelectionCount({
|
|
3
|
+
selection
|
|
4
|
+
}) {
|
|
5
|
+
const [anchorCell,, table] = $getNodeTriplet(selection.anchor);
|
|
6
|
+
const [focusCell] = $getNodeTriplet(selection.focus);
|
|
7
|
+
const [map, anchor, focus] = $computeTableMap(table, anchorCell, focusCell);
|
|
8
|
+
const {
|
|
9
|
+
maxColumn,
|
|
10
|
+
maxRow,
|
|
11
|
+
minColumn,
|
|
12
|
+
minRow
|
|
13
|
+
} = $computeTableCellRectBoundary(map, anchor, focus);
|
|
14
|
+
return {
|
|
15
|
+
columns: maxColumn - minColumn + 1,
|
|
16
|
+
rows: maxRow - minRow + 1
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=computeSelectionCount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeSelectionCount.js","names":["$computeTableCellRectBoundary","$computeTableMap","$getNodeTriplet","$computeSelectionCount","selection","anchorCell","table","anchor","focusCell","focus","map","maxColumn","maxRow","minColumn","minRow","columns","rows"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/computeSelectionCount.ts"],"sourcesContent":["import type { TableSelection } from '@lexical/table'\n\nimport { $computeTableCellRectBoundary, $computeTableMap, $getNodeTriplet } from '@lexical/table'\n\nexport function $computeSelectionCount({ selection }: { selection: TableSelection }): {\n columns: number\n rows: number\n} {\n const [anchorCell, , table] = $getNodeTriplet(selection.anchor)\n const [focusCell] = $getNodeTriplet(selection.focus)\n const [map, anchor, focus] = $computeTableMap(table, anchorCell, focusCell)\n const { maxColumn, maxRow, minColumn, minRow } = $computeTableCellRectBoundary(map, anchor, focus)\n\n return {\n columns: maxColumn - minColumn + 1,\n rows: maxRow - minRow + 1,\n }\n}\n"],"mappings":"AAEA,SAASA,6BAA6B,EAAEC,gBAAgB,EAAEC,eAAe,QAAQ;AAEjF,OAAO,SAASC,uBAAuB;EAAEC;AAAS,CAAiC;EAIjF,MAAM,CAACC,UAAA,GAAcC,KAAA,CAAM,GAAGJ,eAAA,CAAgBE,SAAA,CAAUG,MAAM;EAC9D,MAAM,CAACC,SAAA,CAAU,GAAGN,eAAA,CAAgBE,SAAA,CAAUK,KAAK;EACnD,MAAM,CAACC,GAAA,EAAKH,MAAA,EAAQE,KAAA,CAAM,GAAGR,gBAAA,CAAiBK,KAAA,EAAOD,UAAA,EAAYG,SAAA;EACjE,MAAM;IAAEG,SAAS;IAAEC,MAAM;IAAEC,SAAS;IAAEC;EAAM,CAAE,GAAGd,6BAAA,CAA8BU,GAAA,EAAKH,MAAA,EAAQE,KAAA;EAE5F,OAAO;IACLM,OAAA,EAASJ,SAAA,GAAYE,SAAA,GAAY;IACjCG,IAAA,EAAMJ,MAAA,GAASE,MAAA,GAAS;EAC1B;AACF","ignoreList":[]}
|
package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAE3E,OAAO,cAAc,CAAA;AAqmBrB,eAAO,MAAM,qBAAqB,EAAE,yBAQnC,CAAA"}
|
|
@@ -4,7 +4,7 @@ import { c as _c } from "react/compiler-runtime";
|
|
|
4
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
6
6
|
import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
|
|
7
|
-
import { $
|
|
7
|
+
import { $computeTableMap, $deleteTableColumnAtSelection, $deleteTableRowAtSelection, $getNodeTriplet, $getTableCellNodeFromLexicalNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableCellNode, $isTableSelection, $mergeCells, $setTableColumnIsHeader, $setTableRowIsHeader, $unmergeCell, getTableElement, getTableObserverFromTableElement, TableCellHeaderStates, TableCellNode } from '@lexical/table';
|
|
8
8
|
import { mergeRegister } from '@lexical/utils';
|
|
9
9
|
import { useScrollInfo } from '@payloadcms/ui';
|
|
10
10
|
import { $getSelection, $isElementNode, $isRangeSelection, $isTextNode, $setSelection, COMMAND_PRIORITY_CRITICAL, getDOMSelection, isDOMNode, SELECTION_CHANGE_COMMAND } from 'lexical';
|
|
@@ -12,13 +12,7 @@ import * as React from 'react';
|
|
|
12
12
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
13
13
|
import { createPortal } from 'react-dom';
|
|
14
14
|
import { MeatballsIcon } from '../../../../../lexical/ui/icons/Meatballs/index.js';
|
|
15
|
-
|
|
16
|
-
const selectionShape = selection.getShape();
|
|
17
|
-
return {
|
|
18
|
-
columns: selectionShape.toX - selectionShape.fromX + 1,
|
|
19
|
-
rows: selectionShape.toY - selectionShape.fromY + 1
|
|
20
|
-
};
|
|
21
|
-
}
|
|
15
|
+
import { $computeSelectionCount } from './computeSelectionCount.js';
|
|
22
16
|
function $canUnmerge() {
|
|
23
17
|
const selection = $getSelection();
|
|
24
18
|
if ($isRangeSelection(selection) && !selection.isCollapsed() || $isTableSelection(selection) && !selection.anchor.is(selection.focus) || !$isRangeSelection(selection) && !$isTableSelection(selection)) {
|
|
@@ -73,9 +67,12 @@ function TableActionMenu({
|
|
|
73
67
|
const selection = $getSelection();
|
|
74
68
|
// Merge cells
|
|
75
69
|
if ($isTableSelection(selection)) {
|
|
76
|
-
const currentSelectionCounts = computeSelectionCount(
|
|
77
|
-
|
|
78
|
-
|
|
70
|
+
const currentSelectionCounts = $computeSelectionCount({
|
|
71
|
+
selection
|
|
72
|
+
});
|
|
73
|
+
updateSelectionCounts(currentSelectionCounts);
|
|
74
|
+
const isCollapsedTableSelection = selection.anchor.is(selection.focus);
|
|
75
|
+
setCanMergeCells(!isCollapsedTableSelection && (currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1));
|
|
79
76
|
}
|
|
80
77
|
// Unmerge cell
|
|
81
78
|
setCanUnmergeCell($canUnmerge());
|
|
@@ -151,6 +148,7 @@ function TableActionMenu({
|
|
|
151
148
|
editor.update(() => {
|
|
152
149
|
$unmergeCell();
|
|
153
150
|
});
|
|
151
|
+
clearTableSelection();
|
|
154
152
|
};
|
|
155
153
|
const insertTableRowAtSelection = useCallback(shouldInsertAfter => {
|
|
156
154
|
editor.update(() => {
|
|
@@ -191,22 +189,9 @@ function TableActionMenu({
|
|
|
191
189
|
const toggleTableRowIsHeader = useCallback(() => {
|
|
192
190
|
editor.update(() => {
|
|
193
191
|
const tableNode_1 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
|
|
194
|
-
const
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW;
|
|
198
|
-
if (gridMap[tableRowIndex]) {
|
|
199
|
-
for (let col = 0; col < gridMap[tableRowIndex].length; col++) {
|
|
200
|
-
const mapCell = gridMap[tableRowIndex][col];
|
|
201
|
-
if (!mapCell?.cell) {
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
if (!rowCells.has(mapCell.cell)) {
|
|
205
|
-
rowCells.add(mapCell.cell);
|
|
206
|
-
mapCell.cell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
192
|
+
const rowIndex = $getTableRowIndexFromTableCellNode(tableCellNode);
|
|
193
|
+
const isHeader = !tableCellNode.hasHeaderState(TableCellHeaderStates.ROW);
|
|
194
|
+
$setTableRowIsHeader(tableNode_1, rowIndex, isHeader);
|
|
210
195
|
clearTableSelection();
|
|
211
196
|
onClose();
|
|
212
197
|
});
|
|
@@ -214,22 +199,10 @@ function TableActionMenu({
|
|
|
214
199
|
const toggleTableColumnIsHeader = useCallback(() => {
|
|
215
200
|
editor.update(() => {
|
|
216
201
|
const tableNode_2 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
|
|
217
|
-
|
|
218
|
-
const [
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
if (gridMap_0) {
|
|
222
|
-
for (let row = 0; row < gridMap_0.length; row++) {
|
|
223
|
-
const mapCell_0 = gridMap_0?.[row]?.[tableColumnIndex];
|
|
224
|
-
if (!mapCell_0?.cell) {
|
|
225
|
-
continue;
|
|
226
|
-
}
|
|
227
|
-
if (!columnCells.has(mapCell_0.cell)) {
|
|
228
|
-
columnCells.add(mapCell_0.cell);
|
|
229
|
-
mapCell_0.cell.setHeaderStyles(newStyle_0, TableCellHeaderStates.COLUMN);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
202
|
+
// Merged cells can make the grid column differ from the cell's index in its row.
|
|
203
|
+
const [, cellMap] = $computeTableMap(tableNode_2, tableCellNode, tableCellNode);
|
|
204
|
+
const isHeader_0 = !tableCellNode.hasHeaderState(TableCellHeaderStates.COLUMN);
|
|
205
|
+
$setTableColumnIsHeader(tableNode_2, cellMap.startColumn, isHeader_0);
|
|
233
206
|
clearTableSelection();
|
|
234
207
|
onClose();
|
|
235
208
|
});
|