@payloadcms/richtext-lexical 3.59.0-internal.929dda3 → 3.59.0-internal.c8403a3
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-CJFETHA3.js +2 -0
- package/dist/exports/client/Field-CJFETHA3.js.map +7 -0
- package/dist/exports/client/RelationshipComponent-TSIENULZ.js +2 -0
- package/dist/exports/client/RelationshipComponent-TSIENULZ.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-BQCXN3B4.js +2 -0
- package/dist/exports/client/chunk-BQCXN3B4.js.map +7 -0
- package/dist/exports/client/{chunk-2Y72RT72.js → chunk-TLQLXR6Q.js} +2 -2
- package/dist/exports/client/chunk-XNERFY6G.js +2 -0
- package/dist/exports/client/chunk-XNERFY6G.js.map +7 -0
- package/dist/exports/client/component-CYFKY3IL.js +2 -0
- package/dist/exports/client/component-CYFKY3IL.js.map +7 -0
- package/dist/exports/client/componentInline-NGTRUSGB.js +2 -0
- package/dist/exports/client/index.d.ts +3 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +35 -10
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/align/server/i18n.d.ts.map +1 -1
- package/dist/features/align/server/i18n.js +6 -0
- package/dist/features/align/server/i18n.js.map +1 -1
- package/dist/features/blockquote/server/i18n.d.ts.map +1 -1
- package/dist/features/blockquote/server/i18n.js +3 -0
- package/dist/features/blockquote/server/i18n.js.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.d.ts +52 -27
- package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.js +48 -51
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts +2 -9
- package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts.map +1 -1
- package/dist/features/blocks/client/component/components/BlockCollapsible.js +7 -25
- package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +71 -56
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +13 -11
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/index.d.ts.map +1 -1
- package/dist/features/blocks/client/index.js +5 -0
- package/dist/features/blocks/client/index.js.map +1 -1
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts +6 -0
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts.map +1 -0
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +24 -0
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -0
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts +6 -0
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts.map +1 -0
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +20 -0
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -0
- package/dist/features/blocks/client/markdown/markdownTransformer.d.ts +12 -0
- package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -0
- package/dist/features/blocks/client/markdown/markdownTransformer.js +348 -0
- package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts +5 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js +114 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Code.d.ts +56 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Code.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Code.js +96 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.d.ts +4 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js +17 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.d.ts +4 -0
- package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js +26 -0
- package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.d.ts +5 -0
- package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js +87 -0
- package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/converter.d.ts +7 -0
- package/dist/features/blocks/premade/CodeBlock/converter.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/converter.js +46 -0
- package/dist/features/blocks/premade/CodeBlock/converter.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/converterClient.d.ts +2 -0
- package/dist/features/blocks/premade/CodeBlock/converterClient.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/converterClient.js +4 -0
- package/dist/features/blocks/premade/CodeBlock/converterClient.js.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/index.d.ts +7 -0
- package/dist/features/blocks/premade/CodeBlock/index.d.ts.map +1 -0
- package/dist/features/blocks/premade/CodeBlock/index.js +50 -0
- package/dist/features/blocks/premade/CodeBlock/index.js.map +1 -0
- package/dist/features/blocks/server/i18n.d.ts.map +1 -1
- package/dist/features/blocks/server/i18n.js +9 -0
- package/dist/features/blocks/server/i18n.js.map +1 -1
- package/dist/features/blocks/server/index.js +1 -1
- package/dist/features/blocks/server/index.js.map +1 -1
- package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.d.ts.map +1 -0
- package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.js.map +1 -0
- package/dist/features/blocks/server/markdown/markdownTransformer.d.ts +15 -0
- package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -0
- package/dist/features/blocks/server/{markdownTransformer.js → markdown/markdownTransformer.js} +22 -53
- package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +5 -3
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
- package/dist/features/heading/server/i18n.d.ts.map +1 -1
- package/dist/features/heading/server/i18n.js +3 -0
- package/dist/features/heading/server/i18n.js.map +1 -1
- package/dist/features/horizontalRule/server/i18n.d.ts.map +1 -1
- package/dist/features/horizontalRule/server/i18n.js +3 -0
- package/dist/features/horizontalRule/server/i18n.js.map +1 -1
- package/dist/features/indent/server/i18n.d.ts.map +1 -1
- package/dist/features/indent/server/i18n.js +4 -0
- package/dist/features/indent/server/i18n.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/server/i18n.d.ts.map +1 -1
- package/dist/features/link/server/i18n.js +4 -0
- package/dist/features/link/server/i18n.js.map +1 -1
- package/dist/features/lists/checklist/server/i18n.d.ts.map +1 -1
- package/dist/features/lists/checklist/server/i18n.js +3 -0
- package/dist/features/lists/checklist/server/i18n.js.map +1 -1
- package/dist/features/lists/orderedList/server/i18n.d.ts.map +1 -1
- package/dist/features/lists/orderedList/server/i18n.js +3 -0
- package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
- package/dist/features/lists/unorderedList/server/i18n.d.ts.map +1 -1
- package/dist/features/lists/unorderedList/server/i18n.js +3 -0
- package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
- package/dist/features/paragraph/server/i18n.d.ts.map +1 -1
- package/dist/features/paragraph/server/i18n.js +4 -0
- package/dist/features/paragraph/server/i18n.js.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.js +5 -9
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
- package/dist/features/relationship/server/i18n.d.ts.map +1 -1
- package/dist/features/relationship/server/i18n.js +3 -0
- package/dist/features/relationship/server/i18n.js.map +1 -1
- package/dist/features/textState/i18n.d.ts.map +1 -1
- package/dist/features/textState/i18n.js +3 -0
- package/dist/features/textState/i18n.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.js +7 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js +3 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
- package/dist/features/upload/client/component/index.d.ts.map +1 -1
- package/dist/features/upload/client/component/index.js +6 -5
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/features/upload/server/i18n.d.ts.map +1 -1
- package/dist/features/upload/server/i18n.js +3 -0
- package/dist/features/upload/server/i18n.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/rscEntry.d.ts.map +1 -1
- package/dist/field/rscEntry.js +2 -0
- package/dist/field/rscEntry.js.map +1 -1
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +6 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/lexical/LexicalEditor.js +20 -26
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/CodeBlock/index.js +10 -15
- package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
- package/dist/lexical/ui/icons/Collapse/index.d.ts +3 -0
- package/dist/lexical/ui/icons/Collapse/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Collapse/index.js +18 -0
- package/dist/lexical/ui/icons/Collapse/index.js.map +1 -0
- package/dist/utilities/buildInitialState.d.ts +1 -0
- package/dist/utilities/buildInitialState.d.ts.map +1 -1
- package/dist/utilities/buildInitialState.js +1 -0
- package/dist/utilities/buildInitialState.js.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.js +7 -3
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/jsx/collectTopLevelJSXInLines.js +2 -2
- package/dist/utilities/jsx/collectTopLevelJSXInLines.js.map +1 -1
- package/package.json +6 -6
- package/dist/exports/client/Field-EHRBYNHO.js +0 -2
- package/dist/exports/client/Field-EHRBYNHO.js.map +0 -7
- package/dist/exports/client/RelationshipComponent-APF3CN47.js +0 -2
- package/dist/exports/client/RelationshipComponent-APF3CN47.js.map +0 -7
- package/dist/exports/client/chunk-3BY5IZJD.js +0 -2
- package/dist/exports/client/chunk-3BY5IZJD.js.map +0 -7
- package/dist/exports/client/chunk-CYLMY5ZJ.js +0 -2
- package/dist/exports/client/chunk-CYLMY5ZJ.js.map +0 -7
- package/dist/exports/client/component-VDJI45F2.js +0 -2
- package/dist/exports/client/component-VDJI45F2.js.map +0 -7
- package/dist/exports/client/componentInline-7TPI7ZBC.js +0 -2
- package/dist/features/blocks/client/markdownTransformer.d.ts +0 -17
- package/dist/features/blocks/client/markdownTransformer.d.ts.map +0 -1
- package/dist/features/blocks/client/markdownTransformer.js +0 -144
- package/dist/features/blocks/client/markdownTransformer.js.map +0 -1
- package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.d.ts.map +0 -1
- package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js.map +0 -1
- package/dist/features/blocks/server/markdownTransformer.d.ts +0 -22
- package/dist/features/blocks/server/markdownTransformer.d.ts.map +0 -1
- package/dist/features/blocks/server/markdownTransformer.js.map +0 -1
- /package/dist/exports/client/{chunk-2Y72RT72.js.map → chunk-TLQLXR6Q.js.map} +0 -0
- /package/dist/exports/client/{componentInline-7TPI7ZBC.js.map → componentInline-NGTRUSGB.js.map} +0 -0
- /package/dist/features/blocks/server/{linesFromMatchToContentAndPropsString.d.ts → markdown/linesFromMatchToContentAndPropsString.d.ts} +0 -0
- /package/dist/features/blocks/server/{linesFromMatchToContentAndPropsString.js → markdown/linesFromMatchToContentAndPropsString.js} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use client";import{a as S,b as y,c as R}from"./chunk-CYLMY5ZJ.js";import{a as x}from"./chunk-INBEEENE.js";import{a as N}from"./chunk-F26IQ5RE.js";import{b as p}from"./chunk-BZZVLW4U.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{useLexicalComposerContext as Y}from"@lexical/react/LexicalComposerContext.js";import{getTranslation as E}from"@payloadcms/translations";import{Button as h,formatDrawerSlug as Z,Thumbnail as ee,useConfig as te,useEditDepth as ae,usePayloadAPI as oe,useTranslation as le}from"@payloadcms/ui";import{$getNodeByKey as P}from"lexical";import{isImage as ie}from"payload/shared";import{useCallback as f,useId as re,useReducer as se,useRef as ne,useState as de}from"react";var e="lexical-upload",T={depth:0},ce=d=>{let{data:{fields:U,relationTo:g,value:c},nodeKey:i}=d;if(typeof c=="object")throw new Error("Upload value should be a string or number. The Lexical Upload component should not receive the populated value object.");let{config:{routes:{api:L},serverURL:F},getEntityConfig:j}=te(),I=ne(null),{uuid:z}=p(),B=ae(),[o]=Y(),{editorConfig:k,fieldProps:{readOnly:u,schemaPath:A}}=p(),{i18n:_,t:r}=le(),[b,O]=se(s=>s+1,0),[l]=de(()=>j({collectionSlug:g})),K=re(),w=Z({slug:"lexical-upload-drawer-"+z+K,depth:B}),{toggleDrawer:M}=x(w,!0),{closeDocumentDrawer:D,DocumentDrawer:W,DocumentDrawerToggler:H}=N({id:c,collectionSlug:l.slug}),[{data:a},{setParams:v}]=oe(`${F}${L}/${l.slug}/${c}`,{initialParams:T}),C=a?.thumbnailURL||a?.url,q=f(()=>{o.update(()=>{P(i)?.remove()})},[o,i]),G=f(s=>{v({...T,cacheBust:b}),O(),D()},[v,b,D]),$=k?.resolvedFeatureMap?.get("upload")?.sanitizedClientFeatureProps.collections?.[l.slug]?.hasExtraFields,J=f((s,V)=>{o.update(()=>{let m=P(i);if(m){let X={...m.getData(),fields:V};m.setData(X)}})},[o,i]),Q=C&&a?.width&&a?.height?a.width>a.height?"landscape":"portrait":"landscape";return n("div",{className:`${e} ${e}--${Q}`,"data-filename":a?.filename,ref:I,children:[n("div",{className:`${e}__card`,children:[n("div",{className:`${e}__media`,children:[t(ee,{collectionSlug:g,fileSrc:ie(a?.mimeType)?C:null,height:a?.height,size:"none",width:a?.width}),o.isEditable()&&t("div",{className:`${e}__overlay ${e}__floater`,children:n("div",{className:`${e}__actions`,role:"toolbar",children:[$?t(h,{buttonStyle:"icon-label",className:`${e}__upload-drawer-toggler`,disabled:u,el:"button",icon:"edit",onClick:M,round:!0,size:"medium",tooltip:r("fields:editRelationship")}):null,t(h,{buttonStyle:"icon-label",className:`${e}__swap-drawer-toggler`,disabled:u,el:"button",icon:"swap",onClick:()=>{o.dispatchCommand(R,{replace:{nodeKey:i}})},round:!0,size:"medium",tooltip:r("fields:swapUpload")}),t(h,{buttonStyle:"icon-label",className:`${e}__removeButton`,disabled:u,icon:"x",onClick:s=>{s.preventDefault(),q()},round:!0,size:"medium",tooltip:r("fields:removeUpload")})]})})]}),n("div",{className:`${e}__metaOverlay ${e}__floater`,children:[t(H,{className:`${e}__doc-drawer-toggler`,children:t("strong",{className:`${e}__filename`,children:a?.filename||r("general:untitled")})}),t("div",{className:`${e}__collectionLabel`,children:E(l.labels.singular,_)})]})]}),c?t(W,{onSave:G}):null,$?t(S,{data:U,drawerSlug:w,drawerTitle:r("general:editLabel",{label:E(l.labels.singular,_)}),featureKey:"upload",handleDrawerSubmit:J,schemaPath:A,schemaPathSuffix:l.slug}):null]})},Se=d=>t(y,{...d,uploads:!0,children:t(ce,{...d})});export{Se as UploadComponent};
|
|
2
|
-
//# sourceMappingURL=component-VDJI45F2.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/features/upload/client/component/index.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client'\nimport type { ClientCollectionConfig, Data, FormState, JsonObject } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n formatDrawerSlug,\n Thumbnail,\n useConfig,\n useEditDepth,\n usePayloadAPI,\n useTranslation,\n} from '@payloadcms/ui'\nimport { $getNodeByKey, type ElementFormatType } from 'lexical'\nimport { isImage } from 'payload/shared'\nimport React, { useCallback, useId, useReducer, useRef, useState } from 'react'\n\nimport type { BaseClientFeatureProps } from '../../../typesClient.js'\nimport type { UploadData } from '../../server/nodes/UploadNode.js'\nimport type { UploadFeaturePropsClient } from '../index.js'\nimport type { UploadNode } from '../nodes/UploadNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDocumentDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDocumentDrawer.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\nexport type ElementProps = {\n data: UploadData\n format?: ElementFormatType\n nodeKey: string\n}\n\nconst Component: React.FC<ElementProps> = (props) => {\n const {\n data: { fields, relationTo, value },\n nodeKey,\n } = props\n\n if (typeof value === 'object') {\n throw new Error(\n 'Upload value should be a string or number. The Lexical Upload component should not receive the populated value object.',\n )\n }\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n const uploadRef = useRef<HTMLDivElement | null>(null)\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n const [editor] = useLexicalComposerContext()\n\n const {\n editorConfig,\n fieldProps: { readOnly, schemaPath },\n } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection] = useState<ClientCollectionConfig>(() =>\n getEntityConfig({ collectionSlug: relationTo }),\n )\n\n const componentID = useId()\n\n const extraFieldsDrawerSlug = formatDrawerSlug({\n slug: `lexical-upload-drawer-` + uuid + componentID, // There can be multiple upload components, each with their own drawer, in one single editor => separate them by componentID\n depth: editDepth,\n })\n\n // Need to use hook to initialize useEffect that restores cursor position\n const { toggleDrawer } = useLexicalDrawer(extraFieldsDrawerSlug, true)\n\n const { closeDocumentDrawer, DocumentDrawer, DocumentDrawerToggler } = useLexicalDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const updateUpload = useCallback(\n (data: Data) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDocumentDrawer()\n },\n [setParams, cacheBust, closeDocumentDrawer],\n )\n\n const hasExtraFields = (\n editorConfig?.resolvedFeatureMap?.get('upload')\n ?.sanitizedClientFeatureProps as BaseClientFeatureProps<UploadFeaturePropsClient>\n ).collections?.[relatedCollection.slug]?.hasExtraFields\n\n const onExtraFieldsDrawerSubmit = useCallback(\n (_: FormState, data: JsonObject) => {\n // Update lexical node (with key nodeKey) with new data\n editor.update(() => {\n const uploadNode: null | UploadNode = $getNodeByKey(nodeKey)\n if (uploadNode) {\n const newData: UploadData = {\n ...uploadNode.getData(),\n fields: data,\n }\n uploadNode.setData(newData)\n }\n })\n },\n [editor, nodeKey],\n )\n\n const aspectRatio =\n thumbnailSRC && data?.width && data?.height\n ? data.width > data.height\n ? 'landscape'\n : 'portrait'\n : 'landscape'\n\n return (\n <div\n className={`${baseClass} ${baseClass}--${aspectRatio}`}\n data-filename={data?.filename}\n ref={uploadRef}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__media`}>\n <Thumbnail\n collectionSlug={relationTo}\n fileSrc={isImage(data?.mimeType) ? thumbnailSRC : null}\n height={data?.height}\n size=\"none\"\n width={data?.width}\n />\n\n {editor.isEditable() && (\n <div className={`${baseClass}__overlay ${baseClass}__floater`}>\n <div className={`${baseClass}__actions`} role=\"toolbar\">\n {hasExtraFields ? (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={readOnly}\n el=\"button\"\n icon=\"edit\"\n onClick={toggleDrawer}\n round\n size=\"medium\"\n tooltip={t('fields:editRelationship')}\n />\n ) : null}\n\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__swap-drawer-toggler`}\n disabled={readOnly}\n el=\"button\"\n icon=\"swap\"\n onClick={() => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }}\n round\n size=\"medium\"\n tooltip={t('fields:swapUpload')}\n />\n\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n size=\"medium\"\n tooltip={t('fields:removeUpload')}\n />\n </div>\n </div>\n )}\n </div>\n\n <div className={`${baseClass}__metaOverlay ${baseClass}__floater`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong className={`${baseClass}__filename`}>\n {data?.filename || t('general:untitled')}\n </strong>\n </DocumentDrawerToggler>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n </div>\n </div>\n\n {value ? <DocumentDrawer onSave={updateUpload} /> : null}\n {hasExtraFields ? (\n <FieldsDrawer\n data={fields}\n drawerSlug={extraFieldsDrawerSlug}\n drawerTitle={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n featureKey=\"upload\"\n handleDrawerSubmit={onExtraFieldsDrawerSubmit}\n schemaPath={schemaPath}\n schemaPathSuffix={relatedCollection.slug}\n />\n ) : null}\n </div>\n )\n}\n\nexport const UploadComponent = (props: ElementProps): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <Component {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["useLexicalComposerContext", "getTranslation", "Button", "formatDrawerSlug", "Thumbnail", "useConfig", "useEditDepth", "usePayloadAPI", "useTranslation", "$getNodeByKey", "isImage", "useCallback", "useId", "useReducer", "useRef", "useState", "baseClass", "initialParams", "depth", "Component", "props", "data", "fields", "relationTo", "value", "nodeKey", "Error", "config", "routes", "api", "serverURL", "getEntityConfig", "useConfig", "uploadRef", "useRef", "uuid", "useEditorConfigContext", "editDepth", "useEditDepth", "editor", "useLexicalComposerContext", "editorConfig", "fieldProps", "readOnly", "schemaPath", "i18n", "t", "useTranslation", "cacheBust", "dispatchCacheBust", "useReducer", "state", "relatedCollection", "useState", "collectionSlug", "componentID", "useId", "extraFieldsDrawerSlug", "formatDrawerSlug", "slug", "toggleDrawer", "useLexicalDrawer", "closeDocumentDrawer", "DocumentDrawer", "DocumentDrawerToggler", "useLexicalDocumentDrawer", "id", "setParams", "usePayloadAPI", "thumbnailSRC", "thumbnailURL", "url", "removeUpload", "useCallback", "update", "$getNodeByKey", "remove", "updateUpload", "hasExtraFields", "resolvedFeatureMap", "get", "sanitizedClientFeatureProps", "collections", "onExtraFieldsDrawerSubmit", "_", "uploadNode", "newData", "getData", "setData", "aspectRatio", "width", "height", "_jsxs", "className", "filename", "ref", "_jsx", "Thumbnail", "fileSrc", "isImage", "mimeType", "size", "isEditable", "role", "Button", "buttonStyle", "disabled", "el", "icon", "onClick", "round", "tooltip", "dispatchCommand", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "replace", "e", "preventDefault", "getTranslation", "labels", "singular", "onSave", "FieldsDrawer", "drawerSlug", "drawerTitle", "label", "featureKey", "handleDrawerSubmit", "schemaPathSuffix", "UploadComponent", "EnabledRelationshipsCondition", "uploads"]
|
|
7
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Klass, LexicalNode, LexicalNodeReplacement, SerializedEditorState } from 'lexical';
|
|
2
|
-
import type { ClientBlock } from 'payload';
|
|
3
|
-
import type { Transformer } from '../../../packages/@lexical/markdown/index.js';
|
|
4
|
-
import type { MultilineElementTransformer } from '../../../packages/@lexical/markdown/MarkdownTransformers.js';
|
|
5
|
-
export declare const getBlockMarkdownTransformers: ({ blocks, }: {
|
|
6
|
-
blocks: ClientBlock[];
|
|
7
|
-
}) => ((props: {
|
|
8
|
-
allNodes: Array<Klass<LexicalNode> | LexicalNodeReplacement>;
|
|
9
|
-
allTransformers: Transformer[];
|
|
10
|
-
}) => MultilineElementTransformer)[];
|
|
11
|
-
export declare function getMarkdownToLexical(allNodes: Array<Klass<LexicalNode> | LexicalNodeReplacement>, allTransformers: Transformer[]): (args: {
|
|
12
|
-
markdown: string;
|
|
13
|
-
}) => SerializedEditorState;
|
|
14
|
-
export declare function getLexicalToMarkdown(allNodes: Array<Klass<LexicalNode> | LexicalNodeReplacement>, allTransformers: Transformer[]): (args: {
|
|
15
|
-
editorState: Record<string, any>;
|
|
16
|
-
}) => string;
|
|
17
|
-
//# sourceMappingURL=markdownTransformer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdownTransformer.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/client/markdownTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAChG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAA;AAiB9G,eAAO,MAAM,4BAA4B,gBAEtC;IACD,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB,KAAG,CAAC,CAAC,KAAK,EAAE;IACX,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,sBAAsB,CAAC,CAAA;IAC5D,eAAe,EAAE,WAAW,EAAE,CAAA;CAC/B,KAAK,2BAA2B,CAAC,EAqGjC,CAAA;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,sBAAsB,CAAC,EAC5D,eAAe,EAAE,WAAW,EAAE,GAC7B,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,qBAAqB,CAkBvD;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,sBAAsB,CAAC,EAC5D,eAAe,EAAE,WAAW,EAAE,GAC7B,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,KAAK,MAAM,CAoBxD"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { createHeadlessEditor } from '@lexical/headless';
|
|
2
|
-
import { $convertFromMarkdownString, $convertToMarkdownString } from '../../../packages/@lexical/markdown/index.js';
|
|
3
|
-
import { extractPropsFromJSXPropsString } from '../../../utilities/jsx/extractPropsFromJSXPropsString.js';
|
|
4
|
-
import { propsToJSXString } from '../../../utilities/jsx/jsx.js';
|
|
5
|
-
import { $createBlockNode, $isBlockNode, BlockNode } from './nodes/BlocksNode.js';
|
|
6
|
-
function createTagRegexes(tagName) {
|
|
7
|
-
const escapedTagName = tagName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
8
|
-
return {
|
|
9
|
-
regExpEnd: new RegExp(`</(${escapedTagName})\\s*>|<${escapedTagName}[^>]*?/>`, 'i'),
|
|
10
|
-
regExpStart: new RegExp(`<(${escapedTagName})([^>]*?)\\s*(/?)>`, 'i')
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export const getBlockMarkdownTransformers = ({
|
|
14
|
-
blocks
|
|
15
|
-
}) => {
|
|
16
|
-
if (!blocks?.length) {
|
|
17
|
-
return [];
|
|
18
|
-
}
|
|
19
|
-
const transformers = [];
|
|
20
|
-
for (const block of blocks) {
|
|
21
|
-
if (!block.jsx) {
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
const regex = createTagRegexes(block.slug);
|
|
25
|
-
transformers.push(({
|
|
26
|
-
allNodes,
|
|
27
|
-
allTransformers
|
|
28
|
-
}) => ({
|
|
29
|
-
type: 'multiline-element',
|
|
30
|
-
dependencies: [BlockNode],
|
|
31
|
-
export: node => {
|
|
32
|
-
if (!$isBlockNode(node)) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
const nodeFields = node.getFields();
|
|
39
|
-
const lexicalToMarkdown = getLexicalToMarkdown(allNodes, allTransformers);
|
|
40
|
-
const exportResult = block.jsx.export({
|
|
41
|
-
fields: nodeFields,
|
|
42
|
-
lexicalToMarkdown
|
|
43
|
-
});
|
|
44
|
-
if (exportResult === false) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
if (typeof exportResult === 'string') {
|
|
48
|
-
return exportResult;
|
|
49
|
-
}
|
|
50
|
-
if (exportResult?.children?.length) {
|
|
51
|
-
return `<${nodeFields.blockType}${exportResult.props ? ' ' + propsToJSXString({
|
|
52
|
-
props: exportResult.props
|
|
53
|
-
}) : ''}>\n ${exportResult.children}\n</${nodeFields.blockType}>`;
|
|
54
|
-
}
|
|
55
|
-
return `<${nodeFields.blockType}${exportResult.props ? ' ' + propsToJSXString({
|
|
56
|
-
props: exportResult.props
|
|
57
|
-
}) : ''}/>`;
|
|
58
|
-
},
|
|
59
|
-
regExpEnd: block.jsx?.customEndRegex ?? regex.regExpEnd,
|
|
60
|
-
regExpStart: block.jsx?.customStartRegex ?? regex.regExpStart,
|
|
61
|
-
replace: (rootNode, children, openMatch, closeMatch, linesInBetween) => {
|
|
62
|
-
if (block?.jsx?.import) {
|
|
63
|
-
if (!linesInBetween) {
|
|
64
|
-
// convert children to linesInBetween
|
|
65
|
-
let line = '';
|
|
66
|
-
if (children) {
|
|
67
|
-
for (const child of children) {
|
|
68
|
-
line += child.getTextContent();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
linesInBetween = [line];
|
|
72
|
-
}
|
|
73
|
-
const childrenString = linesInBetween.join('\n').trim();
|
|
74
|
-
const propsString = openMatch[2]?.trim();
|
|
75
|
-
const markdownToLexical = getMarkdownToLexical(allNodes, allTransformers);
|
|
76
|
-
const blockFields = block.jsx.import({
|
|
77
|
-
children: childrenString,
|
|
78
|
-
closeMatch: closeMatch,
|
|
79
|
-
htmlToLexical: null,
|
|
80
|
-
markdownToLexical,
|
|
81
|
-
openMatch: openMatch,
|
|
82
|
-
props: propsString ? extractPropsFromJSXPropsString({
|
|
83
|
-
propsString
|
|
84
|
-
}) : {}
|
|
85
|
-
});
|
|
86
|
-
if (blockFields === false) {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
const node = $createBlockNode({
|
|
90
|
-
blockType: block.slug,
|
|
91
|
-
...blockFields,
|
|
92
|
-
blockName: blockFields.blockName || ''
|
|
93
|
-
});
|
|
94
|
-
if (node) {
|
|
95
|
-
rootNode.append(node);
|
|
96
|
-
}
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
return false // Run next transformer
|
|
100
|
-
;
|
|
101
|
-
}
|
|
102
|
-
}));
|
|
103
|
-
}
|
|
104
|
-
return transformers;
|
|
105
|
-
};
|
|
106
|
-
export function getMarkdownToLexical(allNodes, allTransformers) {
|
|
107
|
-
const markdownToLexical = ({
|
|
108
|
-
markdown
|
|
109
|
-
}) => {
|
|
110
|
-
const headlessEditor = createHeadlessEditor({
|
|
111
|
-
nodes: allNodes
|
|
112
|
-
});
|
|
113
|
-
headlessEditor.update(() => {
|
|
114
|
-
$convertFromMarkdownString(markdown, allTransformers);
|
|
115
|
-
}, {
|
|
116
|
-
discrete: true
|
|
117
|
-
});
|
|
118
|
-
const editorJSON = headlessEditor.getEditorState().toJSON();
|
|
119
|
-
return editorJSON;
|
|
120
|
-
};
|
|
121
|
-
return markdownToLexical;
|
|
122
|
-
}
|
|
123
|
-
export function getLexicalToMarkdown(allNodes, allTransformers) {
|
|
124
|
-
const lexicalToMarkdown = ({
|
|
125
|
-
editorState
|
|
126
|
-
}) => {
|
|
127
|
-
const headlessEditor = createHeadlessEditor({
|
|
128
|
-
nodes: allNodes
|
|
129
|
-
});
|
|
130
|
-
try {
|
|
131
|
-
headlessEditor.setEditorState(headlessEditor.parseEditorState(editorState)) // This should commit the editor state immediately
|
|
132
|
-
;
|
|
133
|
-
} catch (e) {
|
|
134
|
-
console.error('getLexicalToMarkdown: ERROR parsing editor state', e);
|
|
135
|
-
}
|
|
136
|
-
let markdown = '';
|
|
137
|
-
headlessEditor.getEditorState().read(() => {
|
|
138
|
-
markdown = $convertToMarkdownString(allTransformers);
|
|
139
|
-
});
|
|
140
|
-
return markdown;
|
|
141
|
-
};
|
|
142
|
-
return lexicalToMarkdown;
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=markdownTransformer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdownTransformer.js","names":["createHeadlessEditor","$convertFromMarkdownString","$convertToMarkdownString","extractPropsFromJSXPropsString","propsToJSXString","$createBlockNode","$isBlockNode","BlockNode","createTagRegexes","tagName","escapedTagName","replace","regExpEnd","RegExp","regExpStart","getBlockMarkdownTransformers","blocks","length","transformers","block","jsx","regex","slug","push","allNodes","allTransformers","type","dependencies","export","node","getFields","blockType","toLowerCase","nodeFields","lexicalToMarkdown","getLexicalToMarkdown","exportResult","fields","children","props","customEndRegex","customStartRegex","rootNode","openMatch","closeMatch","linesInBetween","import","line","child","getTextContent","childrenString","join","trim","propsString","markdownToLexical","getMarkdownToLexical","blockFields","htmlToLexical","blockName","append","markdown","headlessEditor","nodes","update","discrete","editorJSON","getEditorState","toJSON","editorState","setEditorState","parseEditorState","e","console","error","read"],"sources":["../../../../src/features/blocks/client/markdownTransformer.ts"],"sourcesContent":["import type { Klass, LexicalNode, LexicalNodeReplacement, SerializedEditorState } from 'lexical'\nimport type { ClientBlock } from 'payload'\n\nimport { createHeadlessEditor } from '@lexical/headless'\n\nimport type { Transformer } from '../../../packages/@lexical/markdown/index.js'\nimport type { MultilineElementTransformer } from '../../../packages/@lexical/markdown/MarkdownTransformers.js'\n\nimport {\n $convertFromMarkdownString,\n $convertToMarkdownString,\n} from '../../../packages/@lexical/markdown/index.js'\nimport { extractPropsFromJSXPropsString } from '../../../utilities/jsx/extractPropsFromJSXPropsString.js'\nimport { propsToJSXString } from '../../../utilities/jsx/jsx.js'\nimport { $createBlockNode, $isBlockNode, BlockNode } from './nodes/BlocksNode.js'\n\nfunction createTagRegexes(tagName: string) {\n const escapedTagName = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n return {\n regExpEnd: new RegExp(`</(${escapedTagName})\\\\s*>|<${escapedTagName}[^>]*?/>`, 'i'),\n regExpStart: new RegExp(`<(${escapedTagName})([^>]*?)\\\\s*(/?)>`, 'i'),\n }\n}\nexport const getBlockMarkdownTransformers = ({\n blocks,\n}: {\n blocks: ClientBlock[]\n}): ((props: {\n allNodes: Array<Klass<LexicalNode> | LexicalNodeReplacement>\n allTransformers: Transformer[]\n}) => MultilineElementTransformer)[] => {\n if (!blocks?.length) {\n return []\n }\n\n const transformers: ((props: {\n allNodes: Array<Klass<LexicalNode> | LexicalNodeReplacement>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer)[] = []\n\n for (const block of blocks) {\n if (!block.jsx) {\n continue\n }\n const regex = createTagRegexes(block.slug)\n transformers.push(({ allNodes, allTransformers }) => ({\n type: 'multiline-element',\n dependencies: [BlockNode],\n export: (node) => {\n if (!$isBlockNode(node)) {\n return null\n }\n if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {\n return null\n }\n\n const nodeFields = node.getFields()\n const lexicalToMarkdown = getLexicalToMarkdown(allNodes, allTransformers)\n\n const exportResult = block.jsx!.export({\n fields: nodeFields,\n lexicalToMarkdown,\n })\n if (exportResult === false) {\n return null\n }\n if (typeof exportResult === 'string') {\n return exportResult\n }\n\n if (exportResult?.children?.length) {\n return `<${nodeFields.blockType}${exportResult.props ? ' ' + propsToJSXString({ props: exportResult.props }) : ''}>\\n ${exportResult.children}\\n</${nodeFields.blockType}>`\n }\n\n return `<${nodeFields.blockType}${exportResult.props ? ' ' + propsToJSXString({ props: exportResult.props }) : ''}/>`\n },\n regExpEnd: block.jsx?.customEndRegex ?? regex.regExpEnd,\n regExpStart: block.jsx?.customStartRegex ?? regex.regExpStart,\n replace: (rootNode, children, openMatch, closeMatch, linesInBetween) => {\n if (block?.jsx?.import) {\n if (!linesInBetween) {\n // convert children to linesInBetween\n let line = ''\n if (children) {\n for (const child of children) {\n line += child.getTextContent()\n }\n }\n\n linesInBetween = [line]\n }\n\n const childrenString = linesInBetween.join('\\n').trim()\n\n const propsString = openMatch[2]?.trim()\n\n const markdownToLexical = getMarkdownToLexical(allNodes, allTransformers)\n\n const blockFields = block.jsx.import({\n children: childrenString,\n closeMatch: closeMatch as RegExpMatchArray,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: openMatch as RegExpMatchArray,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return false\n }\n\n const node = $createBlockNode({\n blockType: block.slug,\n ...blockFields,\n blockName: blockFields.blockName || '',\n })\n if (node) {\n rootNode.append(node)\n }\n\n return\n }\n return false // Run next transformer\n },\n }))\n }\n\n return transformers\n}\n\nexport function getMarkdownToLexical(\n allNodes: Array<Klass<LexicalNode> | LexicalNodeReplacement>,\n allTransformers: Transformer[],\n): (args: { markdown: string }) => SerializedEditorState {\n const markdownToLexical = ({ markdown }: { markdown: string }): SerializedEditorState => {\n const headlessEditor = createHeadlessEditor({\n nodes: allNodes,\n })\n\n headlessEditor.update(\n () => {\n $convertFromMarkdownString(markdown, allTransformers)\n },\n { discrete: true },\n )\n\n const editorJSON = headlessEditor.getEditorState().toJSON()\n\n return editorJSON\n }\n return markdownToLexical\n}\n\nexport function getLexicalToMarkdown(\n allNodes: Array<Klass<LexicalNode> | LexicalNodeReplacement>,\n allTransformers: Transformer[],\n): (args: { editorState: Record<string, any> }) => string {\n const lexicalToMarkdown = ({ editorState }: { editorState: Record<string, any> }): string => {\n const headlessEditor = createHeadlessEditor({\n nodes: allNodes,\n })\n\n try {\n headlessEditor.setEditorState(headlessEditor.parseEditorState(editorState as any)) // This should commit the editor state immediately\n } catch (e) {\n console.error('getLexicalToMarkdown: ERROR parsing editor state', e)\n }\n\n let markdown: string = ''\n headlessEditor.getEditorState().read(() => {\n markdown = $convertToMarkdownString(allTransformers)\n })\n\n return markdown\n }\n return lexicalToMarkdown\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"linesFromMatchToContentAndPropsString.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/server/linesFromMatchToContentAndPropsString.ts"],"names":[],"mappings":"AAAA,wBAAgB,qCAAqC,CAAC,EACpD,aAAa,EACb,KAAK,EACL,cAAc,EACd,cAAc,EACd,UAAU,EACV,YAAY,GACb,EAAE;IACD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG;IACF;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;CACpB,CAqJA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"linesFromMatchToContentAndPropsString.js","names":["linesFromStartToContentAndPropsString","isEndOptional","lines","regexpEndRegex","startLineIndex","startMatch","trimChildren","propsString","content","linesCopy","slice","isWithinContent","contentSubTagStartAmount","bracketCount","quoteChar","isSelfClosing","isWithinCodeBlockAmount","beforeStartLine","index","endlineLastCharIndex","endLineIndex","mainLoop","lineIndex","lineCopy","entries","line","trim","amountOfBeginningSpacesRemoved","i","length","charIndex","char","nextChar","match","undefined","Error","join","JSON","stringify","afterEndLine"],"sources":["../../../../src/features/blocks/server/linesFromMatchToContentAndPropsString.ts"],"sourcesContent":["export function linesFromStartToContentAndPropsString({\n isEndOptional,\n lines,\n regexpEndRegex,\n startLineIndex,\n startMatch,\n trimChildren,\n}: {\n isEndOptional?: boolean\n lines: string[]\n regexpEndRegex?: RegExp\n startLineIndex: number\n startMatch: RegExpMatchArray\n trimChildren?: boolean\n}): {\n /**\n * The matched string after the end match, in the same line as the end match. Useful for inline matches.\n */\n afterEndLine: string\n /**\n * The matched string before the start match, in the same line as the start match. Useful for inline matches.\n */\n beforeStartLine: string\n content: string\n endLineIndex: number\n endlineLastCharIndex: number\n propsString: string\n} {\n let propsString = ''\n let content = ''\n const linesCopy = lines.slice(startLineIndex)\n\n let isWithinContent = false // If false => is within prop\n let contentSubTagStartAmount = 0\n\n let bracketCount = 0\n let quoteChar: null | string = null\n let isSelfClosing = false\n let isWithinCodeBlockAmount = 0\n\n const beforeStartLine = linesCopy[0]!.slice(0, startMatch.index)\n let endlineLastCharIndex = 0\n\n let endLineIndex = startLineIndex\n\n mainLoop: for (const [lineIndex, lineCopy] of linesCopy.entries()) {\n const line = trimChildren ? lineCopy.trim() : lineCopy\n let amountOfBeginningSpacesRemoved = 0\n if (trimChildren) {\n for (let i = 0; i < lineCopy.length; i++) {\n if (lineCopy[i] === ' ') {\n amountOfBeginningSpacesRemoved++\n } else {\n break\n }\n }\n }\n\n let charIndex = 0\n\n if (lineIndex === 0) {\n charIndex = (startMatch.index ?? 0) + startMatch[0].length - amountOfBeginningSpacesRemoved // We need to also loop over the \">\" in something like \"<InlineCode>\" in order to later set isWithinContent to true\n }\n\n while (charIndex < line.length) {\n const char = line[charIndex]\n const nextChar = line[charIndex + 1]\n\n if (!isWithinContent) {\n if (char === '{' && !quoteChar) {\n bracketCount++\n } else if (char === '}' && !quoteChar) {\n bracketCount--\n } else if ((char === '\"' || char === \"'\") && !quoteChar) {\n quoteChar = char\n } else if (char === quoteChar) {\n quoteChar = null\n }\n\n if (char === '/' && nextChar === '>' && bracketCount === 0 && !quoteChar) {\n isSelfClosing = true\n endLineIndex = lineIndex\n endlineLastCharIndex = charIndex + 2\n\n break mainLoop\n } else if (char === '>' && bracketCount === 0 && !quoteChar) {\n isWithinContent = true\n charIndex++\n continue\n }\n\n propsString += char\n } else {\n if (char === '`') {\n isWithinCodeBlockAmount++\n }\n\n if (isWithinCodeBlockAmount % 2 === 0) {\n if (char === '<' && nextChar === '/') {\n contentSubTagStartAmount--\n\n if (contentSubTagStartAmount < 0) {\n if (content[content.length - 1] === '\\n') {\n content = content.slice(0, -1) // Remove the last newline\n }\n endLineIndex = lineIndex\n // Calculate endlineLastCharIndex by finding \">\" in line\n for (let i = charIndex; i < line.length; i++) {\n if (line[i] === '>') {\n endlineLastCharIndex = i + 1\n\n break\n }\n }\n break mainLoop\n }\n } else if (char === '/' && nextChar === '>') {\n contentSubTagStartAmount--\n\n if (contentSubTagStartAmount < 0) {\n if (content[content.length - 1] === '\\n') {\n content = content.slice(0, -1) // Remove the last newline\n }\n endLineIndex = lineIndex\n endlineLastCharIndex = charIndex + 2\n break mainLoop\n }\n } else if (char === '<' && nextChar !== '/') {\n contentSubTagStartAmount++\n }\n }\n\n content += char\n }\n\n charIndex++\n }\n\n if (isWithinContent) {\n if (content?.length > 0 && lineIndex > 0) {\n content += '\\n'\n }\n } else {\n propsString += '\\n'\n }\n\n if (regexpEndRegex && contentSubTagStartAmount < 0) {\n // If 0 and in same line where it got lowered to 0 then this is not the match we are looking for\n const match = line.match(regexpEndRegex)\n if (match?.index !== undefined) {\n endLineIndex = lineIndex\n endlineLastCharIndex = match.index + match[0].length - 1\n break\n }\n }\n\n if (lineIndex === linesCopy.length - 1 && !isEndOptional && !isSelfClosing) {\n throw new Error(\n 'End match not found for lines ' +\n lines.join('\\n') +\n '\\n\\n. Start match: ' +\n JSON.stringify(startMatch),\n )\n }\n }\n\n const afterEndLine = linesCopy[endLineIndex]!.trim().slice(endlineLastCharIndex)\n\n return {\n afterEndLine,\n beforeStartLine,\n content,\n endLineIndex: startLineIndex + endLineIndex,\n endlineLastCharIndex,\n propsString,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { SerializedEditorState } from 'lexical';
|
|
2
|
-
import type { Block } from 'payload';
|
|
3
|
-
import type { NodeWithHooks } from '../../typesServer.js';
|
|
4
|
-
import { type MultilineElementTransformer, type TextMatchTransformer, type Transformer } from '../../../packages/@lexical/markdown/index.js';
|
|
5
|
-
export declare function createTagRegexes(tagName: string): {
|
|
6
|
-
regExpEnd: RegExp;
|
|
7
|
-
regExpStart: RegExp;
|
|
8
|
-
};
|
|
9
|
-
export declare const getBlockMarkdownTransformers: ({ blocks, inlineBlocks, }: {
|
|
10
|
-
blocks: Block[];
|
|
11
|
-
inlineBlocks: Block[];
|
|
12
|
-
}) => ((props: {
|
|
13
|
-
allNodes: Array<NodeWithHooks>;
|
|
14
|
-
allTransformers: Transformer[];
|
|
15
|
-
}) => MultilineElementTransformer | TextMatchTransformer)[];
|
|
16
|
-
export declare function getMarkdownToLexical(allNodes: Array<NodeWithHooks>, allTransformers: Transformer[]): (args: {
|
|
17
|
-
markdown: string;
|
|
18
|
-
}) => SerializedEditorState;
|
|
19
|
-
export declare function getLexicalToMarkdown(allNodes: Array<NodeWithHooks>, allTransformers: Transformer[]): (args: {
|
|
20
|
-
editorState: Record<string, any>;
|
|
21
|
-
}) => string;
|
|
22
|
-
//# sourceMappingURL=markdownTransformer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdownTransformer.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/server/markdownTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,qBAAqB,EAAyB,MAAM,SAAS,CAAA;AACxF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,WAAW,EACjB,MAAM,8CAA8C,CAAA;AAWrD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM;;;EAiB/C;AACD,eAAO,MAAM,4BAA4B,8BAGtC;IACD,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,YAAY,EAAE,KAAK,EAAE,CAAA;CACtB,KAAG,CAAC,CAAC,KAAK,EAAE;IACX,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC9B,eAAe,EAAE,WAAW,EAAE,CAAA;CAC/B,KAAK,2BAA2B,GAAG,oBAAoB,CAAC,EA+BxD,CAAA;AA6WD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,EAC9B,eAAe,EAAE,WAAW,EAAE,GAC7B,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,qBAAqB,CAkBvD;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,EAC9B,eAAe,EAAE,WAAW,EAAE,GAC7B,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,KAAK,MAAM,CAsBxD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdownTransformer.js","names":["createHeadlessEditor","$parseSerializedNode","getEnabledNodesFromServerNodes","$convertFromMarkdownString","$convertToMarkdownString","extractPropsFromJSXPropsString","propsToJSXString","linesFromStartToContentAndPropsString","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","$createServerInlineBlockNode","$isServerInlineBlockNode","ServerInlineBlockNode","createTagRegexes","tagName","escapedTagName","replace","openingTag","closingTag","optionalWhitespace","mandatoryClosingBracket","startPattern","endPattern","regExpEnd","RegExp","regExpStart","getBlockMarkdownTransformers","blocks","inlineBlocks","length","transformers","block","transformer","getMarkdownTransformerForBlock","concat","isInlineBlock","jsx","regex","slug","toReturn","push","allNodes","allTransformers","type","dependencies","export","node","getFields","blockType","toLowerCase","nodeFields","lexicalToMarkdown","getLexicalToMarkdown","exportResult","fields","hasProps","props","Object","keys","children","getEndIndex","match","endlineLastCharIndex","isEndOptional","lines","getTextContent","regexpEndRegex","startLineIndex","startMatch","trimChildren","importRegExp","customStartRegex","regExp","content","propsString","index","import","markdownToLexical","getMarkdownToLexical","blockFields","closeMatch","htmlToLexical","openMatch","inlineBlockNode","sanitizedChildren","includes","child","split","sanitizedChild","doNotTrimChildren","handleImportAfterStartMatch","customEndRegex","undefined","rootNode","optional","afterEndLine","beforeStartLine","unsanitizedContent","endLineIndex","endsWith","slice","startsWith","prevNodes","nextNodes","markdown","root","firstPrevNode","append","lastChild","getChildren","linesInBetween","line","childrenString","join","trim","headlessEditor","nodes","update","discrete","getEditorState","toJSON","editorState","setEditorState","parseEditorState","e","console","error","read"],"sources":["../../../../src/features/blocks/server/markdownTransformer.ts"],"sourcesContent":["import type { ElementNode, SerializedEditorState, SerializedLexicalNode } from 'lexical'\nimport type { Block } from 'payload'\n\nimport { createHeadlessEditor } from '@lexical/headless'\nimport { $parseSerializedNode } from 'lexical'\n\nimport type { NodeWithHooks } from '../../typesServer.js'\n\nimport { getEnabledNodesFromServerNodes } from '../../../lexical/nodes/index.js'\nimport {\n $convertFromMarkdownString,\n $convertToMarkdownString,\n type MultilineElementTransformer,\n type TextMatchTransformer,\n type Transformer,\n} from '../../../packages/@lexical/markdown/index.js'\nimport { extractPropsFromJSXPropsString } from '../../../utilities/jsx/extractPropsFromJSXPropsString.js'\nimport { propsToJSXString } from '../../../utilities/jsx/jsx.js'\nimport { linesFromStartToContentAndPropsString } from './linesFromMatchToContentAndPropsString.js'\nimport { $createServerBlockNode, $isServerBlockNode, ServerBlockNode } from './nodes/BlocksNode.js'\nimport {\n $createServerInlineBlockNode,\n $isServerInlineBlockNode,\n ServerInlineBlockNode,\n} from './nodes/InlineBlocksNode.js'\n\nexport function createTagRegexes(tagName: string) {\n const escapedTagName = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n // Regex components\n const openingTag = `<${escapedTagName}`\n const closingTag = `</${escapedTagName}`\n const optionalWhitespace = `\\\\s*`\n const mandatoryClosingBracket = `>`\n\n // Assembled regex patterns\n const startPattern = `${openingTag}(?=\\\\s|>|$)` // Only match the tag name\n const endPattern = `${closingTag}${optionalWhitespace}${mandatoryClosingBracket}`\n\n return {\n regExpEnd: new RegExp(endPattern, 'i'),\n regExpStart: new RegExp(startPattern, 'i'),\n }\n}\nexport const getBlockMarkdownTransformers = ({\n blocks,\n inlineBlocks,\n}: {\n blocks: Block[]\n inlineBlocks: Block[]\n}): ((props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n}) => MultilineElementTransformer | TextMatchTransformer)[] => {\n if (!blocks?.length && !inlineBlocks?.length) {\n return []\n }\n\n let transformers: ((props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer)[] = []\n\n if (blocks?.length) {\n for (const block of blocks) {\n const transformer = getMarkdownTransformerForBlock(block, false)\n\n if (transformer) {\n transformers = transformers.concat(transformer)\n }\n }\n }\n\n if (inlineBlocks?.length) {\n for (const block of inlineBlocks) {\n const transformer = getMarkdownTransformerForBlock(block, true)\n\n if (transformer) {\n transformers = transformers.concat(transformer)\n }\n }\n }\n\n return transformers\n}\n\nfunction getMarkdownTransformerForBlock(\n block: Block,\n isInlineBlock: boolean,\n): Array<\n (props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer\n> | null {\n if (!block.jsx) {\n return null\n }\n const regex = createTagRegexes(block.slug)\n const toReturn: Array<\n (props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer\n > = []\n\n if (isInlineBlock) {\n toReturn.push(({ allNodes, allTransformers }) => ({\n type: 'text-match',\n dependencies: [ServerInlineBlockNode],\n export: (node) => {\n if (!$isServerInlineBlockNode(node)) {\n return null\n }\n\n if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {\n return null\n }\n\n const nodeFields = node.getFields()\n const lexicalToMarkdown = getLexicalToMarkdown(allNodes, allTransformers)\n\n const exportResult = block.jsx!.export({\n fields: nodeFields,\n lexicalToMarkdown,\n })\n if (exportResult === false) {\n return null\n }\n if (typeof exportResult === 'string') {\n return exportResult\n }\n\n const hasProps = exportResult.props && Object.keys(exportResult.props)?.length > 0\n const props = exportResult.props ?? {}\n\n if (exportResult?.children?.length) {\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}>${exportResult.children}</${nodeFields.blockType}>`\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}/>`\n },\n getEndIndex: (node, match) => {\n const { endlineLastCharIndex } = linesFromStartToContentAndPropsString({\n isEndOptional: false,\n lines: [node.getTextContent()],\n regexpEndRegex: regex.regExpEnd,\n startLineIndex: 0,\n startMatch: match,\n trimChildren: false,\n })\n\n return endlineLastCharIndex\n },\n importRegExp: block.jsx?.customStartRegex ?? regex.regExpStart,\n regExp: /___ignoreignoreignore___/g,\n replace(node, match) {\n const { content, propsString } = linesFromStartToContentAndPropsString({\n isEndOptional: false,\n lines: [node.getTextContent()],\n regexpEndRegex: regex.regExpEnd,\n startLineIndex: 0,\n startMatch: {\n ...match,\n index: 0,\n },\n trimChildren: false,\n })\n\n if (!block?.jsx?.import) {\n // No multiline transformer handled this line successfully\n return\n }\n\n const markdownToLexical = getMarkdownToLexical(allNodes, allTransformers)\n\n const blockFields = block.jsx.import({\n children: content,\n closeMatch: null,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: match,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return\n }\n\n const inlineBlockNode = $createServerInlineBlockNode({\n blockType: block.slug,\n ...(blockFields as any),\n })\n\n node.replace(inlineBlockNode)\n },\n }))\n\n return toReturn\n }\n\n toReturn.push(({ allNodes, allTransformers }) => ({\n dependencies: [ServerBlockNode],\n export: (node) => {\n if (!$isServerBlockNode(node)) {\n return null\n }\n\n if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {\n return null\n }\n\n const nodeFields = node.getFields()\n const lexicalToMarkdown = getLexicalToMarkdown(allNodes, allTransformers)\n\n const exportResult = block.jsx!.export({\n fields: nodeFields,\n lexicalToMarkdown,\n })\n if (exportResult === false) {\n return null\n }\n if (typeof exportResult === 'string') {\n return exportResult\n }\n\n const hasProps = exportResult.props && Object.keys(exportResult.props)?.length > 0\n const props = exportResult.props ?? {}\n\n if (exportResult?.children?.length) {\n const children = exportResult.children\n let sanitizedChildren = ''\n\n // Ensure it has a leftpad of at least 2 spaces. The data is saved without those spaces, so we can just blindly add it to every child\n if (children.includes('\\n')) {\n for (const child of children.split('\\n')) {\n let sanitizedChild = ''\n if (!block?.jsx?.doNotTrimChildren && child !== '') {\n sanitizedChild = ' '\n }\n sanitizedChild += child + '\\n'\n\n sanitizedChildren += sanitizedChild\n }\n } else {\n sanitizedChildren = (block?.jsx?.doNotTrimChildren ? '' : ' ') + children + '\\n'\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}>\\n${sanitizedChildren}</${nodeFields.blockType}>`\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}/>`\n },\n handleImportAfterStartMatch: block.jsx?.customEndRegex\n ? undefined\n : ({ lines, rootNode, startLineIndex, startMatch, transformer }) => {\n const regexpEndRegex: RegExp | undefined =\n typeof transformer.regExpEnd === 'object' && 'regExp' in transformer.regExpEnd\n ? transformer.regExpEnd.regExp\n : transformer.regExpEnd\n\n const isEndOptional =\n transformer.regExpEnd &&\n typeof transformer.regExpEnd === 'object' &&\n 'optional' in transformer.regExpEnd\n ? transformer.regExpEnd.optional\n : !transformer.regExpEnd\n\n const {\n afterEndLine,\n beforeStartLine,\n content: unsanitizedContent,\n endLineIndex,\n propsString,\n } = linesFromStartToContentAndPropsString({\n isEndOptional,\n lines,\n regexpEndRegex,\n startLineIndex,\n startMatch,\n trimChildren: false,\n })\n\n let content = ''\n\n if (block?.jsx?.doNotTrimChildren) {\n content = unsanitizedContent.endsWith('\\n')\n ? unsanitizedContent.slice(0, -1)\n : unsanitizedContent\n } else {\n // Ensure it has a leftpad of at least 2 spaces. The data is saved without those spaces, so we can just blindly add it to every child\n if (unsanitizedContent.includes('\\n')) {\n const split = unsanitizedContent.split('\\n')\n let index = 0\n for (const child of split) {\n index++\n\n if (child.startsWith(' ')) {\n content += child.slice(2)\n } else {\n // If one child is misaligned, skip aligning completely, unless it's just empty\n if (child === '') {\n content += child\n } else {\n content = unsanitizedContent.endsWith('\\n')\n ? unsanitizedContent.slice(0, -1)\n : unsanitizedContent\n break\n }\n }\n\n content += index === split.length ? '' : '\\n'\n }\n } else {\n content =\n (!unsanitizedContent.startsWith(' ')\n ? unsanitizedContent\n : unsanitizedContent.slice(2)) + '\\n'\n }\n }\n\n if (!block?.jsx?.import) {\n // No multiline transformer handled this line successfully\n return [false, startLineIndex]\n }\n\n const markdownToLexical = getMarkdownToLexical(allNodes, allTransformers)\n\n const blockFields = block.jsx.import({\n children: content,\n closeMatch: null,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: startMatch,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return [false, startLineIndex]\n }\n\n const node = $createServerBlockNode({\n blockType: block.slug,\n ...blockFields,\n } as any)\n\n if (node) {\n // Now handle beforeStartLine and afterEndLine. If those are not empty, we need to add them as text nodes before and after the block node.\n // However, those themselves can contain other markdown matches, so we need to parse them as well.\n // Example where this is needed: \"Hello <InlineCode>inline code</InlineCode> test.\"\n let prevNodes: null | SerializedLexicalNode[] = null\n let nextNodes: null | SerializedLexicalNode[] = null\n // TODO: Might not need this prevNodes and nextNodes handling if inline nodes are handled by textmatch transformers\n\n if (beforeStartLine?.length) {\n prevNodes = markdownToLexical({ markdown: beforeStartLine })?.root?.children ?? []\n\n const firstPrevNode = prevNodes?.[0]\n if (firstPrevNode) {\n rootNode.append($parseSerializedNode(firstPrevNode))\n }\n }\n\n rootNode.append(node)\n\n if (afterEndLine?.length) {\n nextNodes = markdownToLexical({ markdown: afterEndLine })?.root?.children\n const lastChild = rootNode.getChildren()[rootNode.getChildren().length - 1]\n\n const children = ($parseSerializedNode(nextNodes[0]!) as ElementNode)?.getChildren()\n if (children?.length) {\n for (const child of children) {\n ;(lastChild as ElementNode).append(child)\n }\n }\n }\n }\n\n return [true, endLineIndex]\n },\n regExpEnd: block.jsx?.customEndRegex ?? regex.regExpEnd,\n regExpStart: block.jsx?.customStartRegex ?? regex.regExpStart,\n // This replace is ONLY run for ``` code blocks (so any blocks with custom start and end regexes). For others, we use the special JSX handling above:\n type: 'multiline-element',\n replace: (rootNode, children, openMatch, closeMatch, linesInBetween) => {\n if (block?.jsx?.import) {\n if (!linesInBetween) {\n // convert children to linesInBetween\n let line = ''\n if (children) {\n for (const child of children) {\n line += child.getTextContent()\n }\n }\n\n linesInBetween = [line]\n }\n\n let childrenString = ''\n if (block?.jsx?.doNotTrimChildren) {\n childrenString = linesInBetween.join('\\n')\n } else {\n childrenString = linesInBetween.join('\\n').trim()\n }\n\n const propsString = openMatch[1]?.trim()\n\n const markdownToLexical = getMarkdownToLexical(allNodes, allTransformers)\n\n const blockFields = block.jsx.import({\n children: childrenString,\n closeMatch: closeMatch as RegExpMatchArray,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: openMatch as RegExpMatchArray,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return false\n }\n\n const node = $createServerBlockNode({\n blockType: block.slug,\n ...blockFields,\n } as any)\n\n if (node) {\n rootNode.append(node)\n }\n\n return\n }\n return false // Run next transformer\n },\n }))\n\n return toReturn\n}\n\nexport function getMarkdownToLexical(\n allNodes: Array<NodeWithHooks>,\n allTransformers: Transformer[],\n): (args: { markdown: string }) => SerializedEditorState {\n const markdownToLexical = ({ markdown }: { markdown: string }): SerializedEditorState => {\n const headlessEditor = createHeadlessEditor({\n nodes: getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n })\n\n headlessEditor.update(\n () => {\n $convertFromMarkdownString(markdown, allTransformers)\n },\n { discrete: true },\n )\n\n return headlessEditor.getEditorState().toJSON()\n }\n return markdownToLexical\n}\n\nexport function getLexicalToMarkdown(\n allNodes: Array<NodeWithHooks>,\n allTransformers: Transformer[],\n): (args: { editorState: Record<string, any> }) => string {\n const lexicalToMarkdown = ({ editorState }: { editorState: Record<string, any> }): string => {\n const headlessEditor = createHeadlessEditor({\n nodes: getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n })\n\n try {\n headlessEditor.setEditorState(headlessEditor.parseEditorState(editorState as any)) // This should commit the editor state immediately\n } catch (e) {\n console.error('getLexicalToMarkdown: ERROR parsing editor state', e)\n }\n\n let markdown: string = ''\n headlessEditor.getEditorState().read(() => {\n markdown = $convertToMarkdownString(allTransformers)\n })\n\n return markdown\n }\n return lexicalToMarkdown\n}\n"],"mappings":"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","ignoreList":[]}
|
|
File without changes
|
/package/dist/exports/client/{componentInline-7TPI7ZBC.js.map → componentInline-NGTRUSGB.js.map}
RENAMED
|
File without changes
|
|
File without changes
|