@payloadcms/richtext-lexical 3.59.1 → 3.60.0-canary.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.
Files changed (187) hide show
  1. package/dist/exports/client/Field-CJFETHA3.js +2 -0
  2. package/dist/exports/client/Field-CJFETHA3.js.map +7 -0
  3. package/dist/exports/client/RelationshipComponent-JXQOFHXF.js +2 -0
  4. package/dist/exports/client/RelationshipComponent-JXQOFHXF.js.map +7 -0
  5. package/dist/exports/client/bundled.css +1 -1
  6. package/dist/exports/client/chunk-O6XRT2H3.js +2 -0
  7. package/dist/exports/client/chunk-O6XRT2H3.js.map +7 -0
  8. package/dist/exports/client/{chunk-2Y72RT72.js → chunk-TLQLXR6Q.js} +2 -2
  9. package/dist/exports/client/chunk-XNERFY6G.js +2 -0
  10. package/dist/exports/client/chunk-XNERFY6G.js.map +7 -0
  11. package/dist/exports/client/component-WT25HAJA.js +2 -0
  12. package/dist/exports/client/component-WT25HAJA.js.map +7 -0
  13. package/dist/exports/client/componentInline-NGTRUSGB.js +2 -0
  14. package/dist/exports/client/index.d.ts +3 -0
  15. package/dist/exports/client/index.d.ts.map +1 -1
  16. package/dist/exports/client/index.js +35 -10
  17. package/dist/exports/client/index.js.map +4 -4
  18. package/dist/features/blocks/client/component/BlockContent.d.ts +52 -27
  19. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  20. package/dist/features/blocks/client/component/BlockContent.js +48 -51
  21. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  22. package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts +2 -9
  23. package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts.map +1 -1
  24. package/dist/features/blocks/client/component/components/BlockCollapsible.js +7 -25
  25. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
  26. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  27. package/dist/features/blocks/client/component/index.js +71 -56
  28. package/dist/features/blocks/client/component/index.js.map +1 -1
  29. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  30. package/dist/features/blocks/client/componentInline/index.js +13 -11
  31. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  32. package/dist/features/blocks/client/index.d.ts.map +1 -1
  33. package/dist/features/blocks/client/index.js +5 -0
  34. package/dist/features/blocks/client/index.js.map +1 -1
  35. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts +6 -0
  36. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts.map +1 -0
  37. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +24 -0
  38. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -0
  39. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts +6 -0
  40. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts.map +1 -0
  41. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +20 -0
  42. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -0
  43. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts +12 -0
  44. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -0
  45. package/dist/features/blocks/client/markdown/markdownTransformer.js +348 -0
  46. package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -0
  47. package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts +5 -0
  48. package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts.map +1 -0
  49. package/dist/features/blocks/premade/CodeBlock/Component/Block.js +114 -0
  50. package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -0
  51. package/dist/features/blocks/premade/CodeBlock/Component/Code.d.ts +56 -0
  52. package/dist/features/blocks/premade/CodeBlock/Component/Code.d.ts.map +1 -0
  53. package/dist/features/blocks/premade/CodeBlock/Component/Code.js +96 -0
  54. package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -0
  55. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.d.ts +4 -0
  56. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.d.ts.map +1 -0
  57. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js +17 -0
  58. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js.map +1 -0
  59. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.d.ts +4 -0
  60. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.d.ts.map +1 -0
  61. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js +26 -0
  62. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js.map +1 -0
  63. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.d.ts +5 -0
  64. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.d.ts.map +1 -0
  65. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js +87 -0
  66. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js.map +1 -0
  67. package/dist/features/blocks/premade/CodeBlock/converter.d.ts +7 -0
  68. package/dist/features/blocks/premade/CodeBlock/converter.d.ts.map +1 -0
  69. package/dist/features/blocks/premade/CodeBlock/converter.js +46 -0
  70. package/dist/features/blocks/premade/CodeBlock/converter.js.map +1 -0
  71. package/dist/features/blocks/premade/CodeBlock/converterClient.d.ts +2 -0
  72. package/dist/features/blocks/premade/CodeBlock/converterClient.d.ts.map +1 -0
  73. package/dist/features/blocks/premade/CodeBlock/converterClient.js +4 -0
  74. package/dist/features/blocks/premade/CodeBlock/converterClient.js.map +1 -0
  75. package/dist/features/blocks/premade/CodeBlock/index.d.ts +7 -0
  76. package/dist/features/blocks/premade/CodeBlock/index.d.ts.map +1 -0
  77. package/dist/features/blocks/premade/CodeBlock/index.js +50 -0
  78. package/dist/features/blocks/premade/CodeBlock/index.js.map +1 -0
  79. package/dist/features/blocks/server/index.js +1 -1
  80. package/dist/features/blocks/server/index.js.map +1 -1
  81. package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.d.ts.map +1 -0
  82. package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.js.map +1 -0
  83. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts +15 -0
  84. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -0
  85. package/dist/features/blocks/server/{markdownTransformer.js → markdown/markdownTransformer.js} +22 -53
  86. package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -0
  87. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  88. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +5 -3
  89. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  90. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  91. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -1
  92. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  93. package/dist/features/relationship/client/components/RelationshipComponent.d.ts +1 -1
  94. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  95. package/dist/features/relationship/client/components/RelationshipComponent.js +6 -15
  96. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  97. package/dist/features/relationship/client/drawer/index.d.ts +3 -2
  98. package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
  99. package/dist/features/relationship/client/drawer/index.js +72 -59
  100. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  101. package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
  102. package/dist/features/relationship/client/plugins/index.js +41 -49
  103. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  104. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts +13 -0
  105. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -0
  106. package/dist/features/relationship/client/utils/useEnabledRelationships.js +64 -0
  107. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -0
  108. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  109. package/dist/features/toolbars/fixed/client/Toolbar/index.js +7 -1
  110. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  111. package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
  112. package/dist/features/toolbars/inline/client/Toolbar/index.js +3 -1
  113. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  114. package/dist/features/upload/client/component/index.d.ts +1 -1
  115. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  116. package/dist/features/upload/client/component/index.js +7 -16
  117. package/dist/features/upload/client/component/index.js.map +1 -1
  118. package/dist/features/upload/client/drawer/index.d.ts +3 -2
  119. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  120. package/dist/features/upload/client/drawer/index.js +8 -9
  121. package/dist/features/upload/client/drawer/index.js.map +1 -1
  122. package/dist/features/upload/client/index.d.ts +2 -1
  123. package/dist/features/upload/client/index.d.ts.map +1 -1
  124. package/dist/features/upload/client/index.js.map +1 -1
  125. package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
  126. package/dist/features/upload/client/plugin/index.js +72 -75
  127. package/dist/features/upload/client/plugin/index.js.map +1 -1
  128. package/dist/features/upload/server/index.d.ts +18 -3
  129. package/dist/features/upload/server/index.d.ts.map +1 -1
  130. package/dist/features/upload/server/index.js +6 -0
  131. package/dist/features/upload/server/index.js.map +1 -1
  132. package/dist/field/bundled.css +1 -1
  133. package/dist/field/rscEntry.d.ts.map +1 -1
  134. package/dist/field/rscEntry.js +2 -0
  135. package/dist/field/rscEntry.js.map +1 -1
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +1 -0
  139. package/dist/index.js.map +1 -1
  140. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  141. package/dist/lexical/LexicalEditor.js +20 -26
  142. package/dist/lexical/LexicalEditor.js.map +1 -1
  143. package/dist/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -1
  144. package/dist/lexical/ui/icons/CodeBlock/index.js +10 -15
  145. package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  146. package/dist/lexical/ui/icons/Collapse/index.d.ts +3 -0
  147. package/dist/lexical/ui/icons/Collapse/index.d.ts.map +1 -0
  148. package/dist/lexical/ui/icons/Collapse/index.js +18 -0
  149. package/dist/lexical/ui/icons/Collapse/index.js.map +1 -0
  150. package/dist/utilities/buildInitialState.d.ts +1 -0
  151. package/dist/utilities/buildInitialState.d.ts.map +1 -1
  152. package/dist/utilities/buildInitialState.js +1 -0
  153. package/dist/utilities/buildInitialState.js.map +1 -1
  154. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  155. package/dist/utilities/fieldsDrawer/DrawerContent.js +7 -3
  156. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  157. package/dist/utilities/jsx/collectTopLevelJSXInLines.js +2 -2
  158. package/dist/utilities/jsx/collectTopLevelJSXInLines.js.map +1 -1
  159. package/package.json +7 -7
  160. package/dist/exports/client/Field-EHRBYNHO.js +0 -2
  161. package/dist/exports/client/Field-EHRBYNHO.js.map +0 -7
  162. package/dist/exports/client/RelationshipComponent-APF3CN47.js +0 -2
  163. package/dist/exports/client/RelationshipComponent-APF3CN47.js.map +0 -7
  164. package/dist/exports/client/chunk-3BY5IZJD.js +0 -2
  165. package/dist/exports/client/chunk-3BY5IZJD.js.map +0 -7
  166. package/dist/exports/client/chunk-CYLMY5ZJ.js +0 -2
  167. package/dist/exports/client/chunk-CYLMY5ZJ.js.map +0 -7
  168. package/dist/exports/client/component-VDJI45F2.js +0 -2
  169. package/dist/exports/client/component-VDJI45F2.js.map +0 -7
  170. package/dist/exports/client/componentInline-7TPI7ZBC.js +0 -2
  171. package/dist/features/blocks/client/markdownTransformer.d.ts +0 -17
  172. package/dist/features/blocks/client/markdownTransformer.d.ts.map +0 -1
  173. package/dist/features/blocks/client/markdownTransformer.js +0 -144
  174. package/dist/features/blocks/client/markdownTransformer.js.map +0 -1
  175. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.d.ts.map +0 -1
  176. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js.map +0 -1
  177. package/dist/features/blocks/server/markdownTransformer.d.ts +0 -22
  178. package/dist/features/blocks/server/markdownTransformer.d.ts.map +0 -1
  179. package/dist/features/blocks/server/markdownTransformer.js.map +0 -1
  180. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.d.ts +0 -7
  181. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.d.ts.map +0 -1
  182. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +0 -96
  183. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +0 -1
  184. /package/dist/exports/client/{chunk-2Y72RT72.js.map → chunk-TLQLXR6Q.js.map} +0 -0
  185. /package/dist/exports/client/{componentInline-7TPI7ZBC.js.map → componentInline-NGTRUSGB.js.map} +0 -0
  186. /package/dist/features/blocks/server/{linesFromMatchToContentAndPropsString.d.ts → markdown/linesFromMatchToContentAndPropsString.d.ts} +0 -0
  187. /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,2 +0,0 @@
1
- "use client";import{a,b}from"./chunk-3BY5IZJD.js";import"./chunk-INBEEENE.js";import"./chunk-BZZVLW4U.js";export{b as InlineBlockComponent,a as useInlineBlockComponentContext};
2
- //# sourceMappingURL=componentInline-7TPI7ZBC.js.map
@@ -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":[]}
@@ -1,7 +0,0 @@
1
- import * as React from 'react';
2
- export declare const EnabledRelationshipsCondition: React.FC<{
3
- children: any;
4
- FallbackComponent?: React.FC;
5
- uploads?: boolean;
6
- }>;
7
- //# sourceMappingURL=EnabledRelationshipsCondition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnabledRelationshipsCondition.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/utils/EnabledRelationshipsCondition.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2B9B,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC;IACnD,QAAQ,EAAE,GAAG,CAAA;IACb,iBAAiB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAmBA,CAAA"}
@@ -1,96 +0,0 @@
1
- 'use client';
2
-
3
- import { c as _c } from "react/compiler-runtime";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- import { useAuth, useConfig, useEntityVisibility } from '@payloadcms/ui';
6
- import * as React from 'react';
7
- const filterRichTextCollections = (collections, options) => {
8
- return collections.filter(({
9
- slug,
10
- admin: {
11
- enableRichTextRelationship
12
- },
13
- upload
14
- }) => {
15
- if (!options?.visibleEntities?.collections.includes(slug)) {
16
- return false;
17
- }
18
- if (options?.uploads) {
19
- return enableRichTextRelationship && Boolean(upload) === true;
20
- }
21
- return upload ? false : enableRichTextRelationship;
22
- });
23
- };
24
- export const EnabledRelationshipsCondition = props => {
25
- const $ = _c(12);
26
- const {
27
- children,
28
- FallbackComponent,
29
- uploads: t0,
30
- ...rest
31
- } = props;
32
- const uploads = t0 === undefined ? false : t0;
33
- const {
34
- config: t1
35
- } = useConfig();
36
- const {
37
- collections
38
- } = t1;
39
- const {
40
- user
41
- } = useAuth();
42
- const {
43
- visibleEntities
44
- } = useEntityVisibility();
45
- let t2;
46
- if ($[0] !== collections || $[1] !== uploads || $[2] !== user || $[3] !== visibleEntities) {
47
- t2 = () => filterRichTextCollections(collections, {
48
- uploads,
49
- user,
50
- visibleEntities
51
- }).map(_temp);
52
- $[0] = collections;
53
- $[1] = uploads;
54
- $[2] = user;
55
- $[3] = visibleEntities;
56
- $[4] = t2;
57
- } else {
58
- t2 = $[4];
59
- }
60
- const [enabledCollectionSlugs] = React.useState(t2);
61
- if (!enabledCollectionSlugs.length) {
62
- return FallbackComponent ? _jsx(FallbackComponent, {
63
- ...rest
64
- }) : null;
65
- }
66
- let t3;
67
- if ($[5] !== children || $[6] !== enabledCollectionSlugs || $[7] !== rest) {
68
- let t4;
69
- if ($[9] !== enabledCollectionSlugs || $[10] !== rest) {
70
- t4 = {
71
- ...rest,
72
- enabledCollectionSlugs
73
- };
74
- $[9] = enabledCollectionSlugs;
75
- $[10] = rest;
76
- $[11] = t4;
77
- } else {
78
- t4 = $[11];
79
- }
80
- t3 = React.cloneElement(children, t4);
81
- $[5] = children;
82
- $[6] = enabledCollectionSlugs;
83
- $[7] = rest;
84
- $[8] = t3;
85
- } else {
86
- t3 = $[8];
87
- }
88
- return t3;
89
- };
90
- function _temp(t0) {
91
- const {
92
- slug
93
- } = t0;
94
- return slug;
95
- }
96
- //# sourceMappingURL=EnabledRelationshipsCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnabledRelationshipsCondition.js","names":["c","_c","useAuth","useConfig","useEntityVisibility","React","filterRichTextCollections","collections","options","filter","slug","admin","enableRichTextRelationship","upload","visibleEntities","includes","uploads","Boolean","EnabledRelationshipsCondition","props","$","children","FallbackComponent","t0","rest","undefined","config","t1","user","t2","map","_temp","enabledCollectionSlugs","useState","length","_jsx","t3","t4","cloneElement"],"sources":["../../../../../src/features/relationship/client/utils/EnabledRelationshipsCondition.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientUser, VisibleEntities } from 'payload'\n\nimport { useAuth, useConfig, useEntityVisibility } from '@payloadcms/ui'\nimport * as React from 'react'\n\ntype Options = {\n uploads: boolean\n user: ClientUser\n visibleEntities?: VisibleEntities\n}\n\ntype FilteredCollectionsT = (\n collections: ClientCollectionConfig[],\n options?: Options,\n) => ClientCollectionConfig[]\n\nconst filterRichTextCollections: FilteredCollectionsT = (collections, options) => {\n return collections.filter(({ slug, admin: { enableRichTextRelationship }, upload }) => {\n if (!options?.visibleEntities?.collections.includes(slug)) {\n return false\n }\n\n if (options?.uploads) {\n return enableRichTextRelationship && Boolean(upload) === true\n }\n\n return upload ? false : enableRichTextRelationship\n })\n}\n\nexport const EnabledRelationshipsCondition: React.FC<{\n children: any\n FallbackComponent?: React.FC\n uploads?: boolean\n}> = (props) => {\n const { children, FallbackComponent, uploads = false, ...rest } = props\n const {\n config: { collections },\n } = useConfig()\n const { user } = useAuth()\n const { visibleEntities } = useEntityVisibility()\n\n const [enabledCollectionSlugs] = React.useState(() =>\n filterRichTextCollections(collections, { uploads, user: user!, visibleEntities }).map(\n ({ slug }) => slug,\n ),\n )\n\n if (!enabledCollectionSlugs.length) {\n return FallbackComponent ? <FallbackComponent {...rest} /> : null\n }\n\n return React.cloneElement(children, { ...rest, enabledCollectionSlugs })\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,OAAO,EAAEC,SAAS,EAAEC,mBAAmB,QAAQ;AACxD,YAAYC,KAAA,MAAW;AAavB,MAAMC,yBAAA,GAAkDA,CAACC,WAAA,EAAaC,OAAA;EACpE,OAAOD,WAAA,CAAYE,MAAM,CAAC,CAAC;IAAEC,IAAI;IAAEC,KAAA,EAAO;MAAEC;IAA0B,CAAE;IAAEC;EAAM,CAAE;IAChF,IAAI,CAACL,OAAA,EAASM,eAAA,EAAiBP,WAAA,CAAYQ,QAAA,CAASL,IAAA,GAAO;MACzD,OAAO;IACT;IAEA,IAAIF,OAAA,EAASQ,OAAA,EAAS;MACpB,OAAOJ,0BAAA,IAA8BK,OAAA,CAAQJ,MAAA,MAAY;IAC3D;IAEA,OAAOA,MAAA,GAAS,QAAQD,0BAAA;EAC1B;AACF;AAEA,OAAO,MAAMM,6BAAA,GAIRC,KAAA;EAAA,MAAAC,CAAA,GAAAnB,EAAA;EACH;IAAAoB,QAAA;IAAAC,iBAAA;IAAAN,OAAA,EAAAO,EAAA;IAAA,GAAAC;EAAA,IAAkEL,KAAA;EAA7B,MAAAH,OAAA,GAAAO,EAAe,KAAAE,SAAA,WAAfF,EAAe;EACpD;IAAAG,MAAA,EAAAC;EAAA,IAEIxB,SAAA;EADM;IAAAI;EAAA,IAAAoB,EAAe;EAEzB;IAAAC;EAAA,IAAiB1B,OAAA;EACjB;IAAAY;EAAA,IAA4BV,mBAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAT,CAAA,QAAAb,WAAA,IAAAa,CAAA,QAAAJ,OAAA,IAAAI,CAAA,QAAAQ,IAAA,IAAAR,CAAA,QAAAN,eAAA;IAEoBe,EAAA,GAAAA,CAAA,KAC9CvB,yBAAA,CAA0BC,WAAA;MAAAS,OAAA;MAAAY,IAAA;MAAAd;IAAA,CAAqD,EAAAgB,GAAA,CAAAC,KAC/D;IAAAX,CAAA,MAAAb,WAAA;IAAAa,CAAA,MAAAJ,OAAA;IAAAI,CAAA,MAAAQ,IAAA;IAAAR,CAAA,MAAAN,eAAA;IAAAM,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAFlB,OAAAY,sBAAA,IAAiC3B,KAAA,CAAA4B,QAAA,CAAeJ,EAE9B;EAAA,KAIbG,sBAAA,CAAAE,MAAA;IAAA,OACIZ,iBAAA,GAAoBa,IAAA,CAACb,iBAAA;MAAA,GAAsBE;IAAI,C,QAAO;EAAA;EAAA,IAAAY,EAAA;EAAA,IAAAhB,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAY,sBAAA,IAAAZ,CAAA,QAAAI,IAAA;IAAA,IAAAa,EAAA;IAAA,IAAAjB,CAAA,QAAAY,sBAAA,IAAAZ,CAAA,SAAAI,IAAA;MAG3Ba,EAAA;QAAA,GAAKb,IAAI;QAAAQ;MAAA;MAAyBZ,CAAA,MAAAY,sBAAA;MAAAZ,CAAA,OAAAI,IAAA;MAAAJ,CAAA,OAAAiB,EAAA;IAAA;MAAAA,EAAA,GAAAjB,CAAA;IAAA;IAA/DgB,EAAA,GAAA/B,KAAA,CAAAiC,YAAA,CAAmBjB,QAAA,EAAUgB,EAAkC;IAAAjB,CAAA,MAAAC,QAAA;IAAAD,CAAA,MAAAY,sBAAA;IAAAZ,CAAA,MAAAI,IAAA;IAAAJ,CAAA,MAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAAA,OAA/DgB,EAA+D;AAAA,CACxE;AAnBK,SAAAL,MAAAR,EAAA;EAUE;IAAAb;EAAA,IAAAa,EAAQ;EAAA,OAAKb,IAAA;AAAA","ignoreList":[]}