@payloadcms/richtext-lexical 3.0.0-canary.ef0a8d0 → 3.0.0-canary.f1f97ff

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 (156) hide show
  1. package/dist/exports/client/Field-YNHIDK3D.js +2 -0
  2. package/dist/exports/client/Field-YNHIDK3D.js.map +7 -0
  3. package/dist/exports/client/RelationshipComponent-ZR2OCBGL.js +2 -0
  4. package/dist/exports/client/RelationshipComponent-ZR2OCBGL.js.map +7 -0
  5. package/dist/exports/client/bundled.css +1 -1
  6. package/dist/exports/client/{chunk-LGMNC5KQ.js → chunk-6QXGZYUK.js} +2 -2
  7. package/dist/exports/client/chunk-EBB2CEB6.js +2 -0
  8. package/dist/exports/client/chunk-EBB2CEB6.js.map +7 -0
  9. package/dist/exports/client/chunk-IPCJ5EVK.js +2 -0
  10. package/dist/exports/client/chunk-IPCJ5EVK.js.map +7 -0
  11. package/dist/exports/client/{chunk-QZIAQPM7.js → chunk-IWZVO3AI.js} +2 -2
  12. package/dist/exports/client/chunk-IWZVO3AI.js.map +7 -0
  13. package/dist/exports/client/chunk-VUVXZJJR.js +2 -0
  14. package/dist/exports/client/chunk-VUVXZJJR.js.map +7 -0
  15. package/dist/exports/client/{component-VQ4OUM2Q.js → component-D4GWDXK5.js} +2 -2
  16. package/dist/exports/client/component-KA7FDRMA.js +2 -0
  17. package/dist/exports/client/component-KA7FDRMA.js.map +7 -0
  18. package/dist/exports/client/componentInline-6EKPZSCV.js +2 -0
  19. package/dist/exports/client/componentInline-6EKPZSCV.js.map +7 -0
  20. package/dist/exports/client/index.d.ts +0 -1
  21. package/dist/exports/client/index.d.ts.map +1 -1
  22. package/dist/exports/client/index.js +7 -7
  23. package/dist/exports/client/index.js.map +4 -4
  24. package/dist/features/blocks/component/BlockContent.d.ts +3 -3
  25. package/dist/features/blocks/component/BlockContent.d.ts.map +1 -1
  26. package/dist/features/blocks/component/BlockContent.js +5 -2
  27. package/dist/features/blocks/component/BlockContent.js.map +1 -1
  28. package/dist/features/blocks/component/index.d.ts +0 -4
  29. package/dist/features/blocks/component/index.d.ts.map +1 -1
  30. package/dist/features/blocks/component/index.js +6 -2
  31. package/dist/features/blocks/component/index.js.map +1 -1
  32. package/dist/features/blocks/componentInline/index.d.ts +10 -0
  33. package/dist/features/blocks/componentInline/index.d.ts.map +1 -0
  34. package/dist/features/blocks/componentInline/index.js +133 -0
  35. package/dist/features/blocks/componentInline/index.js.map +1 -0
  36. package/dist/features/blocks/feature.client.d.ts +6 -2
  37. package/dist/features/blocks/feature.client.d.ts.map +1 -1
  38. package/dist/features/blocks/feature.client.js +70 -8
  39. package/dist/features/blocks/feature.client.js.map +1 -1
  40. package/dist/features/blocks/feature.server.d.ts +2 -1
  41. package/dist/features/blocks/feature.server.d.ts.map +1 -1
  42. package/dist/features/blocks/feature.server.js +99 -34
  43. package/dist/features/blocks/feature.server.js.map +1 -1
  44. package/dist/features/blocks/graphQLPopulationPromise.d.ts +3 -2
  45. package/dist/features/blocks/graphQLPopulationPromise.d.ts.map +1 -1
  46. package/dist/features/blocks/graphQLPopulationPromise.js +2 -2
  47. package/dist/features/blocks/graphQLPopulationPromise.js.map +1 -1
  48. package/dist/features/blocks/i18n.d.ts.map +1 -1
  49. package/dist/features/blocks/i18n.js +192 -0
  50. package/dist/features/blocks/i18n.js.map +1 -1
  51. package/dist/features/blocks/nodes/BlocksNode.d.ts +3 -2
  52. package/dist/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  53. package/dist/features/blocks/nodes/BlocksNode.js +2 -2
  54. package/dist/features/blocks/nodes/BlocksNode.js.map +1 -1
  55. package/dist/features/blocks/nodes/InlineBlocksNode.d.ts +39 -0
  56. package/dist/features/blocks/nodes/InlineBlocksNode.d.ts.map +1 -0
  57. package/dist/features/blocks/nodes/InlineBlocksNode.js +94 -0
  58. package/dist/features/blocks/nodes/InlineBlocksNode.js.map +1 -0
  59. package/dist/features/blocks/plugin/commands.d.ts +5 -0
  60. package/dist/features/blocks/plugin/commands.d.ts.map +1 -1
  61. package/dist/features/blocks/plugin/commands.js +2 -0
  62. package/dist/features/blocks/plugin/commands.js.map +1 -1
  63. package/dist/features/blocks/plugin/index.d.ts.map +1 -1
  64. package/dist/features/blocks/plugin/index.js +76 -7
  65. package/dist/features/blocks/plugin/index.js.map +1 -1
  66. package/dist/features/blocks/validate.d.ts +3 -2
  67. package/dist/features/blocks/validate.d.ts.map +1 -1
  68. package/dist/features/blocks/validate.js +2 -2
  69. package/dist/features/blocks/validate.js.map +1 -1
  70. package/dist/features/link/feature.server.js +1 -1
  71. package/dist/features/link/feature.server.js.map +1 -1
  72. package/dist/features/link/nodes/types.d.ts +3 -2
  73. package/dist/features/link/nodes/types.d.ts.map +1 -1
  74. package/dist/features/link/nodes/types.js.map +1 -1
  75. package/dist/features/link/plugins/floatingLinkEditor/utilities.d.ts +1 -1
  76. package/dist/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
  77. package/dist/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -1
  78. package/dist/features/relationship/nodes/components/RelationshipComponent.d.ts +0 -1
  79. package/dist/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  80. package/dist/features/relationship/nodes/components/RelationshipComponent.js +2 -3
  81. package/dist/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  82. package/dist/features/typesServer.d.ts +5 -5
  83. package/dist/features/typesServer.d.ts.map +1 -1
  84. package/dist/features/typesServer.js.map +1 -1
  85. package/dist/features/upload/nodes/UploadNode.d.ts +2 -4
  86. package/dist/features/upload/nodes/UploadNode.d.ts.map +1 -1
  87. package/dist/features/upload/nodes/UploadNode.js.map +1 -1
  88. package/dist/field/Field.d.ts +1 -1
  89. package/dist/field/Field.d.ts.map +1 -1
  90. package/dist/field/Field.js.map +1 -1
  91. package/dist/field/index.d.ts +1 -1
  92. package/dist/field/index.d.ts.map +1 -1
  93. package/dist/field/index.js +10 -10
  94. package/dist/field/index.js.map +1 -1
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +5 -6
  97. package/dist/index.js.map +1 -1
  98. package/dist/lexical/LexicalProvider.d.ts +1 -1
  99. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  100. package/dist/lexical/LexicalProvider.js +2 -2
  101. package/dist/lexical/LexicalProvider.js.map +1 -1
  102. package/dist/lexical/config/client/EditorConfigProvider.d.ts +1 -1
  103. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  104. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  105. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +4 -4
  106. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  107. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  108. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +0 -1
  109. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  110. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +1 -20
  111. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  112. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +2 -2
  113. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  114. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  115. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  116. package/dist/lexical/plugins/SlashMenu/index.js +43 -41
  117. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  118. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
  119. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  120. package/dist/lexical/ui/icons/InlineBlocks/index.d.ts +3 -0
  121. package/dist/lexical/ui/icons/InlineBlocks/index.d.ts.map +1 -0
  122. package/dist/lexical/ui/icons/InlineBlocks/index.js +20 -0
  123. package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -0
  124. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  125. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  126. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts +2 -2
  127. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -1
  128. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  129. package/dist/utilities/fieldsDrawer/Drawer.d.ts +2 -2
  130. package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
  131. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  132. package/dist/validate/validateNodes.d.ts +1 -1
  133. package/dist/validate/validateNodes.d.ts.map +1 -1
  134. package/dist/validate/validateNodes.js.map +1 -1
  135. package/package.json +9 -9
  136. package/dist/exports/client/Field-5KHQLTCU.js +0 -2
  137. package/dist/exports/client/Field-5KHQLTCU.js.map +0 -7
  138. package/dist/exports/client/RelationshipComponent-EJB6LBDR.js +0 -2
  139. package/dist/exports/client/RelationshipComponent-EJB6LBDR.js.map +0 -7
  140. package/dist/exports/client/chunk-QZIAQPM7.js.map +0 -7
  141. package/dist/exports/client/chunk-SVDDFJRT.js +0 -2
  142. package/dist/exports/client/chunk-SVDDFJRT.js.map +0 -7
  143. package/dist/exports/client/chunk-XMCXIHWD.js +0 -2
  144. package/dist/exports/client/chunk-XMCXIHWD.js.map +0 -7
  145. package/dist/exports/client/component-Z5R2PHH3.js +0 -2
  146. package/dist/exports/client/component-Z5R2PHH3.js.map +0 -7
  147. package/dist/features/blocks/drawer/index.d.ts +0 -9
  148. package/dist/features/blocks/drawer/index.d.ts.map +0 -1
  149. package/dist/features/blocks/drawer/index.js +0 -78
  150. package/dist/features/blocks/drawer/index.js.map +0 -1
  151. package/dist/lexical/utils/cloneDeep.d.ts +0 -2
  152. package/dist/lexical/utils/cloneDeep.d.ts.map +0 -1
  153. package/dist/lexical/utils/cloneDeep.js +0 -50
  154. package/dist/lexical/utils/cloneDeep.js.map +0 -1
  155. /package/dist/exports/client/{chunk-LGMNC5KQ.js.map → chunk-6QXGZYUK.js.map} +0 -0
  156. /package/dist/exports/client/{component-VQ4OUM2Q.js.map → component-D4GWDXK5.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\nimport type { DragEvent as ReactDragEvent } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { eventFiles } from '@lexical/rich-text'\nimport { $getNearestNodeFromDOMNode, $getNodeByKey } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport './index.scss'\nimport { setTargetLine } from './setTargetLine.js'\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu'\nconst DRAG_DATA_FORMAT = 'application/x-lexical-drag-block'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction setDragImage(dataTransfer: DataTransfer, draggableBlockElem: HTMLElement) {\n const { transform } = draggableBlockElem.style\n\n // Remove dragImage borders\n dataTransfer.setDragImage(draggableBlockElem, 0, 0)\n\n setTimeout(() => {\n draggableBlockElem.style.transform = transform\n })\n}\n\nfunction hideTargetLine(\n targetLineElem: HTMLElement | null,\n lastTargetBlockElem: HTMLElement | null,\n) {\n if (targetLineElem) {\n targetLineElem.style.opacity = '0'\n }\n if (lastTargetBlockElem) {\n lastTargetBlockElem.style.opacity = ''\n // Delete marginBottom and marginTop values we set\n lastTargetBlockElem.style.marginBottom = ''\n lastTargetBlockElem.style.marginTop = ''\n //lastTargetBlock.style.border = 'none'\n }\n}\n\nfunction useDraggableBlockMenu(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLDivElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n const debugHighlightRef = useRef<HTMLDivElement>(null)\n const isDraggingBlockRef = useRef<boolean>(false)\n const [draggableBlockElem, setDraggableBlockElem] = useState<HTMLElement | null>(null)\n const [lastTargetBlock, setLastTargetBlock] = useState<{\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n }>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -44 : -8\n\n useEffect(() => {\n /**\n * Handles positioning of the drag handle\n */\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n if (distanceFromScrollerElem === -1) {\n setDraggableBlockElem(null)\n return\n }\n\n if (isOnHandleElement(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {\n return\n }\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _draggableBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n verbose: false,\n })\n\n prevIndex = foundAtIndex\n\n //if (DEBUG && _draggableBlockElem) {\n //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)\n //}\n\n if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {\n return\n }\n\n if (draggableBlockElem !== _draggableBlockElem) {\n setDraggableBlockElem(_draggableBlockElem)\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, draggableBlockElem])\n\n useEffect(() => {\n if (menuRef.current) {\n setHandlePosition(\n draggableBlockElem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, draggableBlockElem, blockHandleHorizontalOffset])\n\n useEffect(() => {\n function onDragover(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n\n const { pageY, target } = event\n if (!isHTMLElement(target)) {\n return false\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: targetBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: true,\n verbose: true,\n })\n\n prevIndex = foundAtIndex\n\n const targetLineElem = targetLineRef.current\n // targetBlockElem === null shouldn't happen\n if (targetBlockElem === null || targetLineElem === null) {\n return false\n }\n\n if (draggableBlockElem !== targetBlockElem) {\n const { isBelow, willStayInSamePosition } = setTargetLine(\n editorConfig?.admin?.hideGutter ? '0px' : '3rem',\n blockHandleHorizontalOffset +\n (editorConfig?.admin?.hideGutter\n ? menuRef?.current?.getBoundingClientRect()?.width ?? 0\n : -menuRef?.current?.getBoundingClientRect()?.width ?? 0),\n targetLineElem,\n targetBlockElem,\n lastTargetBlock,\n pageY,\n anchorElem,\n event,\n debugHighlightRef,\n isFoundNodeEmptyParagraph,\n )\n\n // Prevent default event to be able to trigger onDrop events\n // Calling preventDefault() adds the green plus icon to the cursor,\n // indicating that the drop is allowed.\n event.preventDefault()\n\n if (!willStayInSamePosition) {\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow,\n })\n }\n } else {\n hideTargetLine(targetLineElem, lastTargetBlock?.elem)\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow: false,\n })\n }\n\n return true\n }\n\n function onDrop(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n const { dataTransfer, pageY, target } = event\n const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || ''\n\n editor.update(() => {\n const draggedNode = $getNodeByKey(dragData)\n if (!draggedNode) {\n return false\n }\n if (!isHTMLElement(target)) {\n return false\n }\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n useEdgeAsDefault: true,\n })\n\n if (!targetBlockElem) {\n return false\n }\n const targetNode = $getNearestNodeFromDOMNode(targetBlockElem)\n if (!targetNode) {\n return false\n }\n if (targetNode === draggedNode) {\n return true\n }\n\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n getBoundingClientRectWithoutTransform(targetBlockElem)\n\n const mouseY = pageY\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n targetNode.insertAfter(draggedNode)\n } else {\n // above targetBlockElem\n targetNode.insertBefore(draggedNode)\n }\n } else {\n //\n targetNode.insertBefore(draggedNode)\n targetNode.remove()\n }\n\n /*\n if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {\n targetNode.insertAfter(draggedNode)\n } else {\n targetNode.insertBefore(draggedNode)\n }*/\n if (draggableBlockElem !== null) {\n setDraggableBlockElem(null)\n }\n\n // find all previous elements with lexical-block-highlighter class and remove them\n const allPrevHighlighters = document.querySelectorAll('.lexical-block-highlighter')\n allPrevHighlighters.forEach((highlighter) => {\n highlighter.remove()\n })\n\n const newInsertedElem = editor.getElementByKey(draggedNode.getKey())\n setTimeout(() => {\n // add new temp html element to newInsertedElem with the same height and width and the class block-selected\n // to highlight the new inserted element\n const newInsertedElemRect = newInsertedElem.getBoundingClientRect()\n\n const highlightElem = document.createElement('div')\n highlightElem.className = 'lexical-block-highlighter'\n\n // if html data-theme is dark, set the highlighter color to white\n if (document.documentElement.getAttribute('data-theme') === 'dark') {\n highlightElem.style.backgroundColor = 'white'\n } else {\n highlightElem.style.backgroundColor = 'black'\n }\n\n highlightElem.style.transition = 'opacity 0.1s ease-in-out'\n highlightElem.style.zIndex = '1'\n highlightElem.style.pointerEvents = 'none'\n highlightElem.style.boxSizing = 'border-box'\n highlightElem.style.borderRadius = '4px'\n highlightElem.style.position = 'absolute'\n document.body.appendChild(highlightElem)\n\n highlightElem.style.opacity = '0.1'\n\n highlightElem.style.height = `${newInsertedElemRect.height + 8}px`\n highlightElem.style.width = `${newInsertedElemRect.width + 8}px`\n highlightElem.style.top = `${newInsertedElemRect.top + window.scrollY - 4}px`\n highlightElem.style.left = `${newInsertedElemRect.left - 4}px`\n\n setTimeout(() => {\n highlightElem.style.opacity = '0'\n setTimeout(() => {\n highlightElem.remove()\n }, 1000)\n }, 3000)\n }, 120)\n })\n\n return true\n }\n\n // register onDragover event listeners:\n document.addEventListener('dragover', onDragover)\n // register onDrop event listeners:\n document.addEventListener('drop', onDrop)\n\n return () => {\n document.removeEventListener('dragover', onDragover)\n document.removeEventListener('drop', onDrop)\n }\n }, [\n scrollerElem,\n blockHandleHorizontalOffset,\n anchorElem,\n editor,\n lastTargetBlock,\n draggableBlockElem,\n editorConfig?.admin?.hideGutter,\n ])\n\n function onDragStart(event: ReactDragEvent<HTMLDivElement>): void {\n const dataTransfer = event.dataTransfer\n if (!dataTransfer || !draggableBlockElem) {\n return\n }\n setDragImage(dataTransfer, draggableBlockElem)\n let nodeKey = ''\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(draggableBlockElem)\n if (node) {\n nodeKey = node.getKey()\n }\n })\n isDraggingBlockRef.current = true\n dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey)\n }\n\n function onDragEnd(): void {\n isDraggingBlockRef.current = false\n hideTargetLine(targetLineRef.current, lastTargetBlock?.elem)\n }\n\n return createPortal(\n <React.Fragment>\n <div\n className=\"icon draggable-block-menu\"\n draggable\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n ref={menuRef}\n >\n <div className={isEditable ? 'icon' : ''} />\n </div>\n <div className=\"draggable-block-target-line\" ref={targetLineRef} />\n <div className=\"debug-highlight\" ref={debugHighlightRef} />\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function DraggableBlockPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useDraggableBlockMenu(editor, anchorElem, editor._editable)\n}\n"],"names":["useLexicalComposerContext","eventFiles","$getNearestNodeFromDOMNode","$getNodeByKey","React","useEffect","useRef","useState","createPortal","useEditorConfigContext","isHTMLElement","Point","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","getBoundingClientRectWithoutTransform","setTargetLine","DRAGGABLE_BLOCK_MENU_CLASSNAME","DRAG_DATA_FORMAT","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","setDragImage","dataTransfer","draggableBlockElem","transform","style","setTimeout","hideTargetLine","targetLineElem","lastTargetBlockElem","opacity","marginBottom","marginTop","useDraggableBlockMenu","editor","anchorElem","isEditable","scrollerElem","parentElement","menuRef","targetLineRef","debugHighlightRef","isDraggingBlockRef","setDraggableBlockElem","lastTargetBlock","setLastTargetBlock","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_draggableBlockElem","foundAtIndex","isFoundNodeEmptyParagraph","cache_threshold","horizontalOffset","point","x","y","startIndex","length","useEdgeAsDefault","verbose","document","addEventListener","removeEventListener","current","onDragover","isFileTransfer","targetBlockElem","fuzzy","isBelow","willStayInSamePosition","getBoundingClientRect","width","preventDefault","boundingBox","elem","onDrop","dragData","getData","update","draggedNode","targetNode","height","targetBlockElemHeight","top","targetBlockElemTop","mouseY","window","scrollY","insertAfter","insertBefore","remove","allPrevHighlighters","querySelectorAll","forEach","highlighter","newInsertedElem","getElementByKey","getKey","newInsertedElemRect","highlightElem","createElement","className","documentElement","getAttribute","backgroundColor","transition","zIndex","pointerEvents","boxSizing","borderRadius","position","body","appendChild","left","onDragStart","nodeKey","node","setData","onDragEnd","Fragment","div","draggable","ref","DraggableBlockPlugin","_editable"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\nimport type { DragEvent as ReactDragEvent } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { eventFiles } from '@lexical/rich-text'\nimport { $getNearestNodeFromDOMNode, $getNodeByKey } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport './index.scss'\nimport { setTargetLine } from './setTargetLine.js'\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu'\nconst DRAG_DATA_FORMAT = 'application/x-lexical-drag-block'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction setDragImage(dataTransfer: DataTransfer, draggableBlockElem: HTMLElement) {\n const { transform } = draggableBlockElem.style\n\n // Remove dragImage borders\n dataTransfer.setDragImage(draggableBlockElem, 0, 0)\n\n setTimeout(() => {\n draggableBlockElem.style.transform = transform\n })\n}\n\nfunction hideTargetLine(\n targetLineElem: HTMLElement | null,\n lastTargetBlockElem: HTMLElement | null,\n) {\n if (targetLineElem) {\n targetLineElem.style.opacity = '0'\n }\n if (lastTargetBlockElem) {\n lastTargetBlockElem.style.opacity = ''\n // Delete marginBottom and marginTop values we set\n lastTargetBlockElem.style.marginBottom = ''\n lastTargetBlockElem.style.marginTop = ''\n //lastTargetBlock.style.border = 'none'\n }\n}\n\nfunction useDraggableBlockMenu(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLDivElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n const debugHighlightRef = useRef<HTMLDivElement>(null)\n const isDraggingBlockRef = useRef<boolean>(false)\n const [draggableBlockElem, setDraggableBlockElem] = useState<HTMLElement | null>(null)\n const [lastTargetBlock, setLastTargetBlock] = useState<{\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n }>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -44 : -8\n\n useEffect(() => {\n /**\n * Handles positioning of the drag handle\n */\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n if (distanceFromScrollerElem === -1) {\n setDraggableBlockElem(null)\n return\n }\n\n if (isOnHandleElement(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {\n return\n }\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _draggableBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n verbose: false,\n })\n\n prevIndex = foundAtIndex\n\n //if (DEBUG && _draggableBlockElem) {\n //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)\n //}\n\n if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {\n return\n }\n\n if (draggableBlockElem !== _draggableBlockElem) {\n setDraggableBlockElem(_draggableBlockElem)\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, draggableBlockElem])\n\n useEffect(() => {\n if (menuRef.current) {\n setHandlePosition(\n draggableBlockElem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, draggableBlockElem, blockHandleHorizontalOffset])\n\n useEffect(() => {\n function onDragover(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n\n const { pageY, target } = event\n if (!isHTMLElement(target)) {\n return false\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: targetBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: true,\n verbose: true,\n })\n\n prevIndex = foundAtIndex\n\n const targetLineElem = targetLineRef.current\n // targetBlockElem === null shouldn't happen\n if (targetBlockElem === null || targetLineElem === null) {\n return false\n }\n\n if (draggableBlockElem !== targetBlockElem) {\n const { isBelow, willStayInSamePosition } = setTargetLine(\n editorConfig?.admin?.hideGutter ? '0px' : '3rem',\n blockHandleHorizontalOffset +\n (editorConfig?.admin?.hideGutter\n ? menuRef?.current?.getBoundingClientRect()?.width ?? 0\n : -(menuRef?.current?.getBoundingClientRect()?.width ?? 0)),\n targetLineElem,\n targetBlockElem,\n lastTargetBlock,\n pageY,\n anchorElem,\n event,\n debugHighlightRef,\n isFoundNodeEmptyParagraph,\n )\n\n // Prevent default event to be able to trigger onDrop events\n // Calling preventDefault() adds the green plus icon to the cursor,\n // indicating that the drop is allowed.\n event.preventDefault()\n\n if (!willStayInSamePosition) {\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow,\n })\n }\n } else {\n hideTargetLine(targetLineElem, lastTargetBlock?.elem)\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow: false,\n })\n }\n\n return true\n }\n\n function onDrop(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n const { dataTransfer, pageY, target } = event\n const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || ''\n\n editor.update(() => {\n const draggedNode = $getNodeByKey(dragData)\n if (!draggedNode) {\n return false\n }\n if (!isHTMLElement(target)) {\n return false\n }\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n useEdgeAsDefault: true,\n })\n\n if (!targetBlockElem) {\n return false\n }\n const targetNode = $getNearestNodeFromDOMNode(targetBlockElem)\n if (!targetNode) {\n return false\n }\n if (targetNode === draggedNode) {\n return true\n }\n\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n getBoundingClientRectWithoutTransform(targetBlockElem)\n\n const mouseY = pageY\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n targetNode.insertAfter(draggedNode)\n } else {\n // above targetBlockElem\n targetNode.insertBefore(draggedNode)\n }\n } else {\n //\n targetNode.insertBefore(draggedNode)\n targetNode.remove()\n }\n\n /*\n if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {\n targetNode.insertAfter(draggedNode)\n } else {\n targetNode.insertBefore(draggedNode)\n }*/\n if (draggableBlockElem !== null) {\n setDraggableBlockElem(null)\n }\n\n // find all previous elements with lexical-block-highlighter class and remove them\n const allPrevHighlighters = document.querySelectorAll('.lexical-block-highlighter')\n allPrevHighlighters.forEach((highlighter) => {\n highlighter.remove()\n })\n\n const newInsertedElem = editor.getElementByKey(draggedNode.getKey())\n setTimeout(() => {\n // add new temp html element to newInsertedElem with the same height and width and the class block-selected\n // to highlight the new inserted element\n const newInsertedElemRect = newInsertedElem.getBoundingClientRect()\n\n const highlightElem = document.createElement('div')\n highlightElem.className = 'lexical-block-highlighter'\n\n // if html data-theme is dark, set the highlighter color to white\n if (document.documentElement.getAttribute('data-theme') === 'dark') {\n highlightElem.style.backgroundColor = 'white'\n } else {\n highlightElem.style.backgroundColor = 'black'\n }\n\n highlightElem.style.transition = 'opacity 0.1s ease-in-out'\n highlightElem.style.zIndex = '1'\n highlightElem.style.pointerEvents = 'none'\n highlightElem.style.boxSizing = 'border-box'\n highlightElem.style.borderRadius = '4px'\n highlightElem.style.position = 'absolute'\n document.body.appendChild(highlightElem)\n\n highlightElem.style.opacity = '0.1'\n\n highlightElem.style.height = `${newInsertedElemRect.height + 8}px`\n highlightElem.style.width = `${newInsertedElemRect.width + 8}px`\n highlightElem.style.top = `${newInsertedElemRect.top + window.scrollY - 4}px`\n highlightElem.style.left = `${newInsertedElemRect.left - 4}px`\n\n setTimeout(() => {\n highlightElem.style.opacity = '0'\n setTimeout(() => {\n highlightElem.remove()\n }, 1000)\n }, 3000)\n }, 120)\n })\n\n return true\n }\n\n // register onDragover event listeners:\n document.addEventListener('dragover', onDragover)\n // register onDrop event listeners:\n document.addEventListener('drop', onDrop)\n\n return () => {\n document.removeEventListener('dragover', onDragover)\n document.removeEventListener('drop', onDrop)\n }\n }, [\n scrollerElem,\n blockHandleHorizontalOffset,\n anchorElem,\n editor,\n lastTargetBlock,\n draggableBlockElem,\n editorConfig?.admin?.hideGutter,\n ])\n\n function onDragStart(event: ReactDragEvent<HTMLDivElement>): void {\n const dataTransfer = event.dataTransfer\n if (!dataTransfer || !draggableBlockElem) {\n return\n }\n setDragImage(dataTransfer, draggableBlockElem)\n let nodeKey = ''\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(draggableBlockElem)\n if (node) {\n nodeKey = node.getKey()\n }\n })\n isDraggingBlockRef.current = true\n dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey)\n }\n\n function onDragEnd(): void {\n isDraggingBlockRef.current = false\n hideTargetLine(targetLineRef.current, lastTargetBlock?.elem)\n }\n\n return createPortal(\n <React.Fragment>\n <div\n className=\"icon draggable-block-menu\"\n draggable\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n ref={menuRef}\n >\n <div className={isEditable ? 'icon' : ''} />\n </div>\n <div className=\"draggable-block-target-line\" ref={targetLineRef} />\n <div className=\"debug-highlight\" ref={debugHighlightRef} />\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function DraggableBlockPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useDraggableBlockMenu(editor, anchorElem, editor._editable)\n}\n"],"names":["useLexicalComposerContext","eventFiles","$getNearestNodeFromDOMNode","$getNodeByKey","React","useEffect","useRef","useState","createPortal","useEditorConfigContext","isHTMLElement","Point","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","getBoundingClientRectWithoutTransform","setTargetLine","DRAGGABLE_BLOCK_MENU_CLASSNAME","DRAG_DATA_FORMAT","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","setDragImage","dataTransfer","draggableBlockElem","transform","style","setTimeout","hideTargetLine","targetLineElem","lastTargetBlockElem","opacity","marginBottom","marginTop","useDraggableBlockMenu","editor","anchorElem","isEditable","scrollerElem","parentElement","menuRef","targetLineRef","debugHighlightRef","isDraggingBlockRef","setDraggableBlockElem","lastTargetBlock","setLastTargetBlock","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_draggableBlockElem","foundAtIndex","isFoundNodeEmptyParagraph","cache_threshold","horizontalOffset","point","x","y","startIndex","length","useEdgeAsDefault","verbose","document","addEventListener","removeEventListener","current","onDragover","isFileTransfer","targetBlockElem","fuzzy","isBelow","willStayInSamePosition","getBoundingClientRect","width","preventDefault","boundingBox","elem","onDrop","dragData","getData","update","draggedNode","targetNode","height","targetBlockElemHeight","top","targetBlockElemTop","mouseY","window","scrollY","insertAfter","insertBefore","remove","allPrevHighlighters","querySelectorAll","forEach","highlighter","newInsertedElem","getElementByKey","getKey","newInsertedElemRect","highlightElem","createElement","className","documentElement","getAttribute","backgroundColor","transition","zIndex","pointerEvents","boxSizing","borderRadius","position","body","appendChild","left","onDragStart","nodeKey","node","setData","onDragEnd","Fragment","div","draggable","ref","DraggableBlockPlugin","_editable"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const InlineBlocksIcon: React.FC;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/ui/icons/InlineBlocks/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAkBpC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ export const InlineBlocksIcon = ()=>/*#__PURE__*/ _jsx("svg", {
4
+ "aria-hidden": "true",
5
+ className: "icon",
6
+ fill: "none",
7
+ focusable: "false",
8
+ height: "20",
9
+ viewBox: "0 0 20 20",
10
+ width: "20",
11
+ xmlns: "http://www.w3.org/2000/svg",
12
+ children: /*#__PURE__*/ _jsx("path", {
13
+ clipRule: "evenodd",
14
+ d: "M5.33333 6.5C5.11232 6.5 4.90036 6.5878 4.74408 6.74408C4.5878 6.90036 4.5 7.11232 4.5 7.33333V12.1667C4.5 12.3877 4.5878 12.5996 4.74408 12.7559C4.90036 12.9122 5.11232 13 5.33333 13H14.6667C14.8877 13 15.0996 12.9122 15.2559 12.7559C15.4122 12.5996 15.5 12.3877 15.5 12.1667V11.6667C15.5 11.3905 15.7239 11.1667 16 11.1667C16.2761 11.1667 16.5 11.3905 16.5 11.6667V12.1667C16.5 12.6529 16.3068 13.1192 15.963 13.463C15.6192 13.8068 15.1529 14 14.6667 14H5.33333C4.8471 14 4.38079 13.8068 4.03697 13.463C3.69315 13.1192 3.5 12.6529 3.5 12.1667V7.33333C3.5 6.8471 3.69315 6.38079 4.03697 6.03697C4.38079 5.69315 4.8471 5.5 5.33333 5.5H10.3333C10.6095 5.5 10.8333 5.72386 10.8333 6C10.8333 6.27614 10.6095 6.5 10.3333 6.5H5.33333ZM13 6.5C12.7239 6.5 12.5 6.27614 12.5 6C12.5 5.72386 12.7239 5.5 13 5.5H16C16.2761 5.5 16.5 5.72386 16.5 6V9C16.5 9.27614 16.2761 9.5 16 9.5C15.7239 9.5 15.5 9.27614 15.5 9V7.20711L13.3536 9.35355C13.1583 9.54882 12.8417 9.54882 12.6464 9.35355C12.4512 9.15829 12.4512 8.84171 12.6464 8.64645L14.7929 6.5H13ZM6.16699 8.33325C6.16699 8.05711 6.39085 7.83325 6.66699 7.83325H11.0003C11.2765 7.83325 11.5003 8.05711 11.5003 8.33325C11.5003 8.60939 11.2765 8.83325 11.0003 8.83325H6.66699C6.39085 8.83325 6.16699 8.60939 6.16699 8.33325ZM6.16699 10.9999C6.16699 10.7238 6.39085 10.4999 6.66699 10.4999H13.3337C13.6098 10.4999 13.8337 10.7238 13.8337 10.9999C13.8337 11.2761 13.6098 11.4999 13.3337 11.4999H6.66699C6.39085 11.4999 6.16699 11.2761 6.16699 10.9999Z",
15
+ fill: "currentColor",
16
+ fillRule: "evenodd"
17
+ })
18
+ });
19
+
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lexical/ui/icons/InlineBlocks/index.tsx"],"sourcesContent":["import React from 'react'\n\nexport const InlineBlocksIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M5.33333 6.5C5.11232 6.5 4.90036 6.5878 4.74408 6.74408C4.5878 6.90036 4.5 7.11232 4.5 7.33333V12.1667C4.5 12.3877 4.5878 12.5996 4.74408 12.7559C4.90036 12.9122 5.11232 13 5.33333 13H14.6667C14.8877 13 15.0996 12.9122 15.2559 12.7559C15.4122 12.5996 15.5 12.3877 15.5 12.1667V11.6667C15.5 11.3905 15.7239 11.1667 16 11.1667C16.2761 11.1667 16.5 11.3905 16.5 11.6667V12.1667C16.5 12.6529 16.3068 13.1192 15.963 13.463C15.6192 13.8068 15.1529 14 14.6667 14H5.33333C4.8471 14 4.38079 13.8068 4.03697 13.463C3.69315 13.1192 3.5 12.6529 3.5 12.1667V7.33333C3.5 6.8471 3.69315 6.38079 4.03697 6.03697C4.38079 5.69315 4.8471 5.5 5.33333 5.5H10.3333C10.6095 5.5 10.8333 5.72386 10.8333 6C10.8333 6.27614 10.6095 6.5 10.3333 6.5H5.33333ZM13 6.5C12.7239 6.5 12.5 6.27614 12.5 6C12.5 5.72386 12.7239 5.5 13 5.5H16C16.2761 5.5 16.5 5.72386 16.5 6V9C16.5 9.27614 16.2761 9.5 16 9.5C15.7239 9.5 15.5 9.27614 15.5 9V7.20711L13.3536 9.35355C13.1583 9.54882 12.8417 9.54882 12.6464 9.35355C12.4512 9.15829 12.4512 8.84171 12.6464 8.64645L14.7929 6.5H13ZM6.16699 8.33325C6.16699 8.05711 6.39085 7.83325 6.66699 7.83325H11.0003C11.2765 7.83325 11.5003 8.05711 11.5003 8.33325C11.5003 8.60939 11.2765 8.83325 11.0003 8.83325H6.66699C6.39085 8.83325 6.16699 8.60939 6.16699 8.33325ZM6.16699 10.9999C6.16699 10.7238 6.39085 10.4999 6.66699 10.4999H13.3337C13.6098 10.4999 13.8337 10.7238 13.8337 10.9999C13.8337 11.2761 13.6098 11.4999 13.3337 11.4999H6.66699C6.39085 11.4999 6.16699 11.2761 6.16699 10.9999Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </svg>\n)\n"],"names":["React","InlineBlocksIcon","svg","aria-hidden","className","fill","focusable","height","viewBox","width","xmlns","path","clipRule","d","fillRule"],"mappings":";AAAA,OAAOA,WAAW,QAAO;AAEzB,OAAO,MAAMC,mBAA6B,kBACxC,KAACC;QACCC,eAAY;QACZC,WAAU;QACVC,MAAK;QACLC,WAAU;QACVC,QAAO;QACPC,SAAQ;QACRC,OAAM;QACNC,OAAM;kBAEN,cAAA,KAACC;YACCC,UAAS;YACTC,GAAE;YACFR,MAAK;YACLS,UAAS;;OAGd"}
@@ -1 +1 @@
1
- {"version":3,"file":"populateLexicalPopulationPromises.d.ts","sourceRoot":"","sources":["../../src/populateGraphQL/populateLexicalPopulationPromises.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,MAAM,MAAM,IAAI,GAAG;IACjB,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;CAChE,GAAG,UAAU,CAAC,eAAe,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,iCAAiC,8LAe3C,IAAI,SAiCN,CAAA"}
1
+ {"version":3,"file":"populateLexicalPopulationPromises.d.ts","sourceRoot":"","sources":["../../src/populateGraphQL/populateLexicalPopulationPromises.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,MAAM,MAAM,IAAI,GAAG;IACjB,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;CAChE,GAAG,UAAU,CAAC,eAAe,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,iCAAiC,8LAe3C,IAAI,SAkCN,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/populateGraphQL/populateLexicalPopulationPromises.ts"],"sourcesContent":["import type { SerializedEditorState } from 'lexical'\nimport type { RichTextAdapter } from 'payload'\n\nimport type { PopulationPromise } from '../features/typesServer.js'\nimport type { AdapterProps } from '../types.js'\n\nimport { recurseNodes } from '../utilities/forEachNodeRecursively.js'\n\nexport type Args = {\n editorPopulationPromises: Map<string, Array<PopulationPromise>>\n} & Parameters<RichTextAdapter<SerializedEditorState, AdapterProps>['graphQLPopulationPromises']>[0]\n\n/**\n * Appends all new populationPromises to the populationPromises prop\n */\nexport const populateLexicalPopulationPromises = ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n}: Args) => {\n const shouldPopulate = depth && currentDepth <= depth\n\n if (!shouldPopulate) {\n return\n }\n\n recurseNodes({\n callback: (node) => {\n if (editorPopulationPromises?.has(node.type)) {\n for (const promise of editorPopulationPromises.get(node.type)) {\n promise({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n }\n },\n nodes: (siblingDoc[field?.name] as SerializedEditorState)?.root?.children ?? [],\n })\n}\n"],"names":["recurseNodes","populateLexicalPopulationPromises","context","currentDepth","depth","draft","editorPopulationPromises","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","shouldPopulate","callback","node","has","type","promise","get","nodes","name","root","children"],"mappings":"AAMA,SAASA,YAAY,QAAQ,yCAAwC;AAMrE;;CAEC,GACD,OAAO,MAAMC,oCAAoC,CAAC,EAChDC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACxBC,KAAK,EACLC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EAChBC,UAAU,EACL;IACL,MAAMC,iBAAiBZ,SAASD,gBAAgBC;IAEhD,IAAI,CAACY,gBAAgB;QACnB;IACF;IAEAhB,aAAa;QACXiB,UAAU,CAACC;YACT,IAAIZ,0BAA0Ba,IAAID,KAAKE,IAAI,GAAG;gBAC5C,KAAK,MAAMC,WAAWf,yBAAyBgB,GAAG,CAACJ,KAAKE,IAAI,EAAG;oBAC7DC,QAAQ;wBACNnB;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAQ;wBACAP;wBACAC;wBACAC;wBACAC;wBACAC;oBACF;gBACF;YACF;QACF;QACAQ,OAAO,AAACR,UAAU,CAACR,OAAOiB,KAAK,EAA4BC,MAAMC,YAAY,EAAE;IACjF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/populateGraphQL/populateLexicalPopulationPromises.ts"],"sourcesContent":["import type { SerializedEditorState } from 'lexical'\nimport type { RichTextAdapter } from 'payload'\n\nimport type { PopulationPromise } from '../features/typesServer.js'\nimport type { AdapterProps } from '../types.js'\n\nimport { recurseNodes } from '../utilities/forEachNodeRecursively.js'\n\nexport type Args = {\n editorPopulationPromises: Map<string, Array<PopulationPromise>>\n} & Parameters<RichTextAdapter<SerializedEditorState, AdapterProps>['graphQLPopulationPromises']>[0]\n\n/**\n * Appends all new populationPromises to the populationPromises prop\n */\nexport const populateLexicalPopulationPromises = ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n}: Args) => {\n const shouldPopulate = depth && currentDepth <= depth\n\n if (!shouldPopulate) {\n return\n }\n\n recurseNodes({\n callback: (node) => {\n if (editorPopulationPromises?.has(node.type)) {\n for (const promise of editorPopulationPromises.get(node.type)) {\n promise({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n }\n },\n\n nodes: (siblingDoc[field?.name] as SerializedEditorState)?.root?.children ?? [],\n })\n}\n"],"names":["recurseNodes","populateLexicalPopulationPromises","context","currentDepth","depth","draft","editorPopulationPromises","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","shouldPopulate","callback","node","has","type","promise","get","nodes","name","root","children"],"mappings":"AAMA,SAASA,YAAY,QAAQ,yCAAwC;AAMrE;;CAEC,GACD,OAAO,MAAMC,oCAAoC,CAAC,EAChDC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACxBC,KAAK,EACLC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EAChBC,UAAU,EACL;IACL,MAAMC,iBAAiBZ,SAASD,gBAAgBC;IAEhD,IAAI,CAACY,gBAAgB;QACnB;IACF;IAEAhB,aAAa;QACXiB,UAAU,CAACC;YACT,IAAIZ,0BAA0Ba,IAAID,KAAKE,IAAI,GAAG;gBAC5C,KAAK,MAAMC,WAAWf,yBAAyBgB,GAAG,CAACJ,KAAKE,IAAI,EAAG;oBAC7DC,QAAQ;wBACNnB;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAQ;wBACAP;wBACAC;wBACAC;wBACAC;wBACAC;oBACF;gBACF;YACF;QACF;QAEAQ,OAAO,AAACR,UAAU,CAACR,OAAOiB,KAAK,EAA4BC,MAAMC,YAAY,EAAE;IACjF;AACF,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { Field, PayloadRequest, RequestContext } from 'payload';
1
+ import type { Field, JsonObject, PayloadRequest, RequestContext } from 'payload';
2
2
  import type { PopulationPromise } from '../features/typesServer.js';
3
3
  type NestedRichTextFieldsArgs = {
4
4
  context: RequestContext;
@@ -21,7 +21,7 @@ type NestedRichTextFieldsArgs = {
21
21
  populationPromises: Promise<void>[];
22
22
  req: PayloadRequest;
23
23
  showHiddenFields: boolean;
24
- siblingDoc: Record<string, unknown>;
24
+ siblingDoc: JsonObject;
25
25
  };
26
26
  export declare const recursivelyPopulateFieldsForGraphQL: ({ context, currentDepth, data, depth, draft, fieldPromises, fields, findMany, flattenLocales, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc, }: NestedRichTextFieldsArgs) => void;
27
27
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"recursivelyPopulateFieldsForGraphQL.d.ts","sourceRoot":"","sources":["../../src/populateGraphQL/recursivelyPopulateFieldsForGraphQL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd;;OAEG;IACH,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAC/D;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,mCAAmC,2KAe7C,wBAAwB,KAAG,IAwB7B,CAAA"}
1
+ {"version":3,"file":"recursivelyPopulateFieldsForGraphQL.d.ts","sourceRoot":"","sources":["../../src/populateGraphQL/recursivelyPopulateFieldsForGraphQL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd;;OAEG;IACH,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAC/D;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,mCAAmC,2KAe7C,wBAAwB,KAAG,IAwB7B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/populateGraphQL/recursivelyPopulateFieldsForGraphQL.ts"],"sourcesContent":["import type { Field, PayloadRequest, RequestContext } from 'payload'\n\nimport { afterReadTraverseFields } from 'payload'\n\nimport type { PopulationPromise } from '../features/typesServer.js'\n\ntype NestedRichTextFieldsArgs = {\n context: RequestContext\n currentDepth?: number\n data: unknown\n depth: number\n draft: boolean\n /**\n * This maps all the population promises to the node types\n */\n editorPopulationPromises: Map<string, Array<PopulationPromise>>\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n fields: Field[]\n findMany: boolean\n flattenLocales: boolean\n overrideAccess: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: Record<string, unknown>\n}\n\nexport const recursivelyPopulateFieldsForGraphQL = ({\n context,\n currentDepth = 0,\n data,\n depth,\n draft,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n overrideAccess = false,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n}: NestedRichTextFieldsArgs): void => {\n afterReadTraverseFields({\n collection: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n context,\n currentDepth,\n depth,\n doc: data as any, // Looks like it's only needed for hooks and access control, so doesn't matter what we pass here right now\n draft,\n fallbackLocale: req.fallbackLocale,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n global: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n locale: req.locale,\n overrideAccess,\n path: [],\n populationPromises, // This is not the same as populationPromises passed into this recurseNestedFields. These are just promises resolved at the very end.\n req,\n schemaPath: [],\n showHiddenFields,\n siblingDoc,\n triggerHooks: false,\n })\n}\n"],"names":["afterReadTraverseFields","recursivelyPopulateFieldsForGraphQL","context","currentDepth","data","depth","draft","fieldPromises","fields","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","collection","doc","fallbackLocale","global","locale","path","schemaPath","triggerHooks"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ,UAAS;AA4BjD,OAAO,MAAMC,sCAAsC,CAAC,EAClDC,OAAO,EACPC,eAAe,CAAC,EAChBC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACdC,iBAAiB,KAAK,EACtBC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EAChBC,UAAU,EACe;IACzBf,wBAAwB;QACtBgB,YAAY;QACZd;QACAC;QACAE;QACAY,KAAKb;QACLE;QACAY,gBAAgBL,IAAIK,cAAc;QAClCX;QACAC;QACAC;QACAC;QACAS,QAAQ;QACRC,QAAQP,IAAIO,MAAM;QAClBT;QACAU,MAAM,EAAE;QACRT;QACAC;QACAS,YAAY,EAAE;QACdR;QACAC;QACAQ,cAAc;IAChB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/populateGraphQL/recursivelyPopulateFieldsForGraphQL.ts"],"sourcesContent":["import type { Field, JsonObject, PayloadRequest, RequestContext } from 'payload'\n\nimport { afterReadTraverseFields } from 'payload'\n\nimport type { PopulationPromise } from '../features/typesServer.js'\n\ntype NestedRichTextFieldsArgs = {\n context: RequestContext\n currentDepth?: number\n data: unknown\n depth: number\n draft: boolean\n /**\n * This maps all the population promises to the node types\n */\n editorPopulationPromises: Map<string, Array<PopulationPromise>>\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n fields: Field[]\n findMany: boolean\n flattenLocales: boolean\n overrideAccess: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: JsonObject\n}\n\nexport const recursivelyPopulateFieldsForGraphQL = ({\n context,\n currentDepth = 0,\n data,\n depth,\n draft,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n overrideAccess = false,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n}: NestedRichTextFieldsArgs): void => {\n afterReadTraverseFields({\n collection: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n context,\n currentDepth,\n depth,\n doc: data as any, // Looks like it's only needed for hooks and access control, so doesn't matter what we pass here right now\n draft,\n fallbackLocale: req.fallbackLocale,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n global: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n locale: req.locale,\n overrideAccess,\n path: [],\n populationPromises, // This is not the same as populationPromises passed into this recurseNestedFields. These are just promises resolved at the very end.\n req,\n schemaPath: [],\n showHiddenFields,\n siblingDoc,\n triggerHooks: false,\n })\n}\n"],"names":["afterReadTraverseFields","recursivelyPopulateFieldsForGraphQL","context","currentDepth","data","depth","draft","fieldPromises","fields","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","collection","doc","fallbackLocale","global","locale","path","schemaPath","triggerHooks"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ,UAAS;AA4BjD,OAAO,MAAMC,sCAAsC,CAAC,EAClDC,OAAO,EACPC,eAAe,CAAC,EAChBC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACdC,iBAAiB,KAAK,EACtBC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EAChBC,UAAU,EACe;IACzBf,wBAAwB;QACtBgB,YAAY;QACZd;QACAC;QACAE;QACAY,KAAKb;QACLE;QACAY,gBAAgBL,IAAIK,cAAc;QAClCX;QACAC;QACAC;QACAC;QACAS,QAAQ;QACRC,QAAQP,IAAIO,MAAM;QAClBT;QACAU,MAAM,EAAE;QACRT;QACAC;QACAS,YAAY,EAAE;QACdR;QACAC;QACAQ,cAAc;IAChB;AACF,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { Data, FormState } from 'payload';
1
+ import type { Data, FormState, JsonObject } from 'payload';
2
2
  import React from 'react';
3
3
  export type FieldsDrawerProps = {
4
4
  className?: string;
@@ -6,7 +6,7 @@ export type FieldsDrawerProps = {
6
6
  drawerSlug: string;
7
7
  drawerTitle?: string;
8
8
  featureKey: string;
9
- handleDrawerSubmit: (fields: FormState, data: Record<string, unknown>) => void;
9
+ handleDrawerSubmit: (fields: FormState, data: JsonObject) => void;
10
10
  schemaPathSuffix?: string;
11
11
  };
12
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/utilities/fieldsDrawer/Drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAG9C,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC9E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqBpD,CAAA"}
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/utilities/fieldsDrawer/Drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG1D,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqBpD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utilities/fieldsDrawer/Drawer.tsx"],"sourcesContent":["'use client'\nimport type { Data, FormState } from 'payload'\n\nimport { Drawer } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { DrawerContent } from './DrawerContent.js'\n\nexport type FieldsDrawerProps = {\n className?: string\n data?: Data\n drawerSlug: string\n drawerTitle?: string\n featureKey: string\n handleDrawerSubmit: (fields: FormState, data: Record<string, unknown>) => void\n schemaPathSuffix?: string\n}\n\n/**\n * This FieldsDrawer component can be used to easily create a Drawer that contains a form with fields within your feature.\n * The fields are taken directly from the schema map based on your `featureKey` and `schemaPathSuffix`. Thus, this can only\n * be used if you provide your field schema inside the `generateSchemaMap` prop of your feature.server.ts.\n */\nexport const FieldsDrawer: React.FC<FieldsDrawerProps> = ({\n className,\n data,\n drawerSlug,\n drawerTitle,\n featureKey,\n handleDrawerSubmit,\n schemaPathSuffix,\n}) => {\n // The Drawer only renders its children (and itself) if it's open. Thus, by extracting the main content\n // to DrawerContent, this should be faster\n return (\n <Drawer className={className} slug={drawerSlug} title={drawerTitle ?? ''}>\n <DrawerContent\n data={data}\n featureKey={featureKey}\n handleDrawerSubmit={handleDrawerSubmit}\n schemaPathSuffix={schemaPathSuffix}\n />\n </Drawer>\n )\n}\n"],"names":["Drawer","React","DrawerContent","FieldsDrawer","className","data","drawerSlug","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","slug","title"],"mappings":"AAAA;;AAGA,SAASA,MAAM,QAAQ,iBAAgB;AACvC,OAAOC,WAAW,QAAO;AAEzB,SAASC,aAAa,QAAQ,qBAAoB;AAYlD;;;;CAIC,GACD,OAAO,MAAMC,eAA4C,CAAC,EACxDC,SAAS,EACTC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,gBAAgB,EACjB;IACC,uGAAuG;IACvG,0CAA0C;IAC1C,qBACE,KAACV;QAAOI,WAAWA;QAAWO,MAAML;QAAYM,OAAOL,eAAe;kBACpE,cAAA,KAACL;YACCG,MAAMA;YACNG,YAAYA;YACZC,oBAAoBA;YACpBC,kBAAkBA;;;AAI1B,EAAC"}
1
+ {"version":3,"sources":["../../../src/utilities/fieldsDrawer/Drawer.tsx"],"sourcesContent":["'use client'\nimport type { Data, FormState, JsonObject } from 'payload'\n\nimport { Drawer } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { DrawerContent } from './DrawerContent.js'\n\nexport type FieldsDrawerProps = {\n className?: string\n data?: Data\n drawerSlug: string\n drawerTitle?: string\n featureKey: string\n handleDrawerSubmit: (fields: FormState, data: JsonObject) => void\n schemaPathSuffix?: string\n}\n\n/**\n * This FieldsDrawer component can be used to easily create a Drawer that contains a form with fields within your feature.\n * The fields are taken directly from the schema map based on your `featureKey` and `schemaPathSuffix`. Thus, this can only\n * be used if you provide your field schema inside the `generateSchemaMap` prop of your feature.server.ts.\n */\nexport const FieldsDrawer: React.FC<FieldsDrawerProps> = ({\n className,\n data,\n drawerSlug,\n drawerTitle,\n featureKey,\n handleDrawerSubmit,\n schemaPathSuffix,\n}) => {\n // The Drawer only renders its children (and itself) if it's open. Thus, by extracting the main content\n // to DrawerContent, this should be faster\n return (\n <Drawer className={className} slug={drawerSlug} title={drawerTitle ?? ''}>\n <DrawerContent\n data={data}\n featureKey={featureKey}\n handleDrawerSubmit={handleDrawerSubmit}\n schemaPathSuffix={schemaPathSuffix}\n />\n </Drawer>\n )\n}\n"],"names":["Drawer","React","DrawerContent","FieldsDrawer","className","data","drawerSlug","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","slug","title"],"mappings":"AAAA;;AAGA,SAASA,MAAM,QAAQ,iBAAgB;AACvC,OAAOC,WAAW,QAAO;AAEzB,SAASC,aAAa,QAAQ,qBAAoB;AAYlD;;;;CAIC,GACD,OAAO,MAAMC,eAA4C,CAAC,EACxDC,SAAS,EACTC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,gBAAgB,EACjB;IACC,uGAAuG;IACvG,0CAA0C;IAC1C,qBACE,KAACV;QAAOI,WAAWA;QAAWO,MAAML;QAAYM,OAAOL,eAAe;kBACpE,cAAA,KAACL;YACCG,MAAMA;YACNG,YAAYA;YACZC,oBAAoBA;YACpBC,kBAAkBA;;;AAI1B,EAAC"}
@@ -5,7 +5,7 @@ export declare function validateNodes({ nodeValidations, nodes, validation: vali
5
5
  nodeValidations: Map<string, Array<NodeValidation>>;
6
6
  nodes: SerializedLexicalNode[];
7
7
  validation: {
8
- options: ValidateOptions<unknown, unknown, RichTextField>;
8
+ options: ValidateOptions<unknown, unknown, RichTextField, SerializedEditorState>;
9
9
  value: SerializedEditorState;
10
10
  };
11
11
  }): Promise<string | true>;
@@ -1 +1 @@
1
- {"version":3,"file":"validateNodes.d.ts","sourceRoot":"","sources":["../../src/validate/validateNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhE,wBAAsB,aAAa,CAAC,EAClC,eAAe,EACf,KAAK,EACL,UAAU,EAAE,mBAAmB,GAChC,EAAE;IACD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;IACnD,KAAK,EAAE,qBAAqB,EAAE,CAAA;IAC9B,UAAU,EAAE;QACV,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;QACzD,KAAK,EAAE,qBAAqB,CAAA;KAC7B,CAAA;CACF,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCzB"}
1
+ {"version":3,"file":"validateNodes.d.ts","sourceRoot":"","sources":["../../src/validate/validateNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhE,wBAAsB,aAAa,CAAC,EAClC,eAAe,EACf,KAAK,EACL,UAAU,EAAE,mBAAmB,GAChC,EAAE;IACD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;IACnD,KAAK,EAAE,qBAAqB,EAAE,CAAA;IAC9B,UAAU,EAAE;QACV,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAA;QAChF,KAAK,EAAE,qBAAqB,CAAA;KAC7B,CAAA;CACF,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCzB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/validate/validateNodes.ts"],"sourcesContent":["import type { SerializedEditorState, SerializedLexicalNode } from 'lexical'\nimport type { RichTextField, ValidateOptions } from 'payload'\n\nimport type { NodeValidation } from '../features/typesServer.js'\n\nexport async function validateNodes({\n nodeValidations,\n nodes,\n validation: validationFromProps,\n}: {\n nodeValidations: Map<string, Array<NodeValidation>>\n nodes: SerializedLexicalNode[]\n validation: {\n options: ValidateOptions<unknown, unknown, RichTextField>\n value: SerializedEditorState\n }\n}): Promise<string | true> {\n for (const node of nodes) {\n // Validate node\n if (\n nodeValidations &&\n typeof nodeValidations?.has === 'function' &&\n nodeValidations?.has(node.type)\n ) {\n const validations = nodeValidations.get(node.type)\n for (const validation of validations) {\n const validationResult = await validation({\n node,\n nodeValidations,\n validation: validationFromProps,\n })\n if (validationResult !== true) {\n return `${node.type} node failed to validate: ${validationResult}`\n }\n }\n }\n\n // Validate node's children\n if ('children' in node && node?.children) {\n const childrenValidationResult = await validateNodes({\n nodeValidations,\n nodes: node.children as SerializedLexicalNode[],\n validation: validationFromProps,\n })\n if (childrenValidationResult !== true) {\n return childrenValidationResult\n }\n }\n }\n\n return true\n}\n"],"names":["validateNodes","nodeValidations","nodes","validation","validationFromProps","node","has","type","validations","get","validationResult","children","childrenValidationResult"],"mappings":"AAKA,OAAO,eAAeA,cAAc,EAClCC,eAAe,EACfC,KAAK,EACLC,YAAYC,mBAAmB,EAQhC;IACC,KAAK,MAAMC,QAAQH,MAAO;QACxB,gBAAgB;QAChB,IACED,mBACA,OAAOA,iBAAiBK,QAAQ,cAChCL,iBAAiBK,IAAID,KAAKE,IAAI,GAC9B;YACA,MAAMC,cAAcP,gBAAgBQ,GAAG,CAACJ,KAAKE,IAAI;YACjD,KAAK,MAAMJ,cAAcK,YAAa;gBACpC,MAAME,mBAAmB,MAAMP,WAAW;oBACxCE;oBACAJ;oBACAE,YAAYC;gBACd;gBACA,IAAIM,qBAAqB,MAAM;oBAC7B,OAAO,CAAC,EAAEL,KAAKE,IAAI,CAAC,0BAA0B,EAAEG,iBAAiB,CAAC;gBACpE;YACF;QACF;QAEA,2BAA2B;QAC3B,IAAI,cAAcL,QAAQA,MAAMM,UAAU;YACxC,MAAMC,2BAA2B,MAAMZ,cAAc;gBACnDC;gBACAC,OAAOG,KAAKM,QAAQ;gBACpBR,YAAYC;YACd;YACA,IAAIQ,6BAA6B,MAAM;gBACrC,OAAOA;YACT;QACF;IACF;IAEA,OAAO;AACT"}
1
+ {"version":3,"sources":["../../src/validate/validateNodes.ts"],"sourcesContent":["import type { SerializedEditorState, SerializedLexicalNode } from 'lexical'\nimport type { RichTextField, ValidateOptions } from 'payload'\n\nimport type { NodeValidation } from '../features/typesServer.js'\n\nexport async function validateNodes({\n nodeValidations,\n nodes,\n validation: validationFromProps,\n}: {\n nodeValidations: Map<string, Array<NodeValidation>>\n nodes: SerializedLexicalNode[]\n validation: {\n options: ValidateOptions<unknown, unknown, RichTextField, SerializedEditorState>\n value: SerializedEditorState\n }\n}): Promise<string | true> {\n for (const node of nodes) {\n // Validate node\n if (\n nodeValidations &&\n typeof nodeValidations?.has === 'function' &&\n nodeValidations?.has(node.type)\n ) {\n const validations = nodeValidations.get(node.type)\n for (const validation of validations) {\n const validationResult = await validation({\n node,\n nodeValidations,\n validation: validationFromProps,\n })\n if (validationResult !== true) {\n return `${node.type} node failed to validate: ${validationResult}`\n }\n }\n }\n\n // Validate node's children\n if ('children' in node && node?.children) {\n const childrenValidationResult = await validateNodes({\n nodeValidations,\n nodes: node.children as SerializedLexicalNode[],\n validation: validationFromProps,\n })\n if (childrenValidationResult !== true) {\n return childrenValidationResult\n }\n }\n }\n\n return true\n}\n"],"names":["validateNodes","nodeValidations","nodes","validation","validationFromProps","node","has","type","validations","get","validationResult","children","childrenValidationResult"],"mappings":"AAKA,OAAO,eAAeA,cAAc,EAClCC,eAAe,EACfC,KAAK,EACLC,YAAYC,mBAAmB,EAQhC;IACC,KAAK,MAAMC,QAAQH,MAAO;QACxB,gBAAgB;QAChB,IACED,mBACA,OAAOA,iBAAiBK,QAAQ,cAChCL,iBAAiBK,IAAID,KAAKE,IAAI,GAC9B;YACA,MAAMC,cAAcP,gBAAgBQ,GAAG,CAACJ,KAAKE,IAAI;YACjD,KAAK,MAAMJ,cAAcK,YAAa;gBACpC,MAAME,mBAAmB,MAAMP,WAAW;oBACxCE;oBACAJ;oBACAE,YAAYC;gBACd;gBACA,IAAIM,qBAAqB,MAAM;oBAC7B,OAAO,CAAC,EAAEL,KAAKE,IAAI,CAAC,0BAA0B,EAAEG,iBAAiB,CAAC;gBACpE;YACF;QACF;QAEA,2BAA2B;QAC3B,IAAI,cAAcL,QAAQA,MAAMM,UAAU;YACxC,MAAMC,2BAA2B,MAAMZ,cAAc;gBACnDC;gBACAC,OAAOG,KAAKM,QAAQ;gBACpBR,YAAYC;YACd;YACA,IAAIQ,6BAA6B,MAAM;gBACrC,OAAOA;YACT;QACF;IACF;IAEA,OAAO;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/richtext-lexical",
3
- "version": "3.0.0-canary.ef0a8d0",
3
+ "version": "3.0.0-canary.f1f97ff",
4
4
  "description": "The officially supported Lexical richtext adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -55,11 +55,11 @@
55
55
  "esbuild": "0.23.0",
56
56
  "esbuild-sass-plugin": "3.3.1",
57
57
  "swc-plugin-transform-remove-imports": "1.14.0",
58
- "@payloadcms/next": "3.0.0-canary.ef0a8d0",
59
58
  "@payloadcms/eslint-config": "3.0.0-beta.59",
60
- "@payloadcms/translations": "3.0.0-canary.ef0a8d0",
61
- "payload": "3.0.0-canary.ef0a8d0",
62
- "@payloadcms/ui": "3.0.0-canary.ef0a8d0"
59
+ "@payloadcms/translations": "3.0.0-canary.f1f97ff",
60
+ "@payloadcms/next": "3.0.0-canary.f1f97ff",
61
+ "payload": "3.0.0-canary.f1f97ff",
62
+ "@payloadcms/ui": "3.0.0-canary.f1f97ff"
63
63
  },
64
64
  "peerDependencies": {
65
65
  "@faceless-ui/modal": "3.0.0-beta.2",
@@ -77,10 +77,10 @@
77
77
  "lexical": "0.16.1",
78
78
  "react": "^19.0.0 || ^19.0.0-rc-6230622a1a-20240610",
79
79
  "react-dom": "^19.0.0 || ^19.0.0-rc-6230622a1a-20240610",
80
- "@payloadcms/next": "3.0.0-canary.ef0a8d0",
81
- "@payloadcms/translations": "3.0.0-canary.ef0a8d0",
82
- "payload": "3.0.0-canary.ef0a8d0",
83
- "@payloadcms/ui": "3.0.0-canary.ef0a8d0"
80
+ "@payloadcms/next": "3.0.0-canary.f1f97ff",
81
+ "@payloadcms/ui": "3.0.0-canary.f1f97ff",
82
+ "@payloadcms/translations": "3.0.0-canary.f1f97ff",
83
+ "payload": "3.0.0-canary.f1f97ff"
84
84
  },
85
85
  "engines": {
86
86
  "node": "^18.20.2 || >=20.9.0"
@@ -1,2 +0,0 @@
1
- "use client";import{a as ce,b as ue,c as de,d as fe,e as W,f as I,h as pe}from"./chunk-SVDDFJRT.js";import{a as me,b as N}from"./chunk-QZIAQPM7.js";import{FieldDescription as Ot,FieldError as _t,FieldLabel as zt,useField as $t,useFieldProps as Gt,withCondition as Kt}from"@payloadcms/ui";import{useCallback as Wt}from"react";import{ErrorBoundary as Yt}from"react-error-boundary";import{LexicalComposer as At}from"@lexical/react/LexicalComposer.js";import*as Ye from"react";import{useMemo as We}from"react";import{useLexicalComposerContext as Nt}from"@lexical/react/LexicalComposerContext.js";import{LexicalErrorBoundary as St}from"@lexical/react/LexicalErrorBoundary.js";import{HistoryPlugin as kt}from"@lexical/react/LexicalHistoryPlugin.js";import{OnChangePlugin as wt}from"@lexical/react/LexicalOnChangePlugin.js";import{RichTextPlugin as It}from"@lexical/react/LexicalRichTextPlugin.js";import{TabIndentationPlugin as Dt}from"@lexical/react/LexicalTabIndentationPlugin.js";import{useTranslation as Bt}from"@payloadcms/ui";import{BLUR_COMMAND as Ft,COMMAND_PRIORITY_LOW as ze,FOCUS_COMMAND as Ht}from"lexical";import*as q from"react";import{useEffect as $e,useState as Ge}from"react";import{jsx as ge}from"react/jsx-runtime";var O=({anchorElem:t,clientProps:e,plugin:i})=>i.position==="floatingAnchorElem"?i.Component&&ge(i.Component,{anchorElem:t,clientProps:e}):i.Component&&ge(i.Component,{clientProps:e});import{MarkdownShortcutPlugin as je}from"@lexical/react/LexicalMarkdownShortcutPlugin.js";import{jsx as Xe}from"react/jsx-runtime";var ye=()=>{let{editorConfig:t}=N();return Xe(je,{transformers:t.features.markdownTransformers})};import{useLexicalComposerContext as Ze}from"@lexical/react/LexicalComposerContext.js";import{useTranslation as be}from"@payloadcms/ui";import{useCallback as Ee,useMemo as et,useState as tt}from"react";import*as xe from"react";import*as Ce from"react-dom";import{useCallback as Qe}from"react";function he(t,{maxLength:e=75,minLength:i=1}){return Qe(({query:l})=>{let r="[^"+t+ue+"\\s]",d=new RegExp("(^|\\s|\\()(["+t+"]((?:"+r+"){0,"+e+"}))$").exec(l);if(d!==null){let c=d[1],m=d[3];if(m.length>=i)return{leadOffset:d.index+c.length,matchingString:m,replaceableString:d[2]}}return null},[e,i,t])}import{jsx as _,jsxs as Me}from"react/jsx-runtime";var k="slash-menu-popup";function ot({isSelected:t,item:e,onClick:i,onMouseEnter:l}){let{i18n:r}=be(),u=`${k}__item ${k}__item-${e.key}`;t&&(u+=` ${k}__item--selected`);let d=e.key;return e.label&&(d=typeof e.label=="function"?e.label({i18n:r}):e.label),d.length>25&&(d=d.substring(0,25)+"..."),Me("button",{"aria-selected":t,className:u,id:k+"__item-"+e.key,onClick:i,onMouseEnter:l,ref:e.ref,role:"option",tabIndex:-1,type:"button",children:[e?.Icon&&_(e.Icon,{}),_("span",{className:`${k}__item-text`,children:d})]},e.key)}function Te({anchorElem:t=document.body}){let[e]=Ze(),[i,l]=tt(null),{editorConfig:r}=N(),{i18n:u}=be(),d=he("/",{minLength:0}),c=Ee(()=>{let a=[];for(let s of r.features.slashMenu.dynamicGroups){let o=s({editor:e,queryString:i});a=a.concat(o)}return a},[e,i,r?.features]),m=et(()=>{let a=[];for(let s of r?.features.slashMenu.groups??[])a.push(s);if(i){a=a.map(o=>{let n=o.items.filter(f=>{let E=f.key;return f.label&&(E=typeof f.label=="function"?f.label({i18n:u}):f.label),new RegExp(i,"gi").exec(E)?!0:f.keywords!=null?f.keywords.some(h=>new RegExp(i,"gi").exec(h)):!1});return n.length?{...o,items:n}:null}),a=a.filter(o=>o!=null);let s=c();for(let o of s){let n=a.find(f=>f.key===o.key);n?a=a.filter(f=>f.key!==o.key):n={...o,items:[]},n?.items?.length&&(n.items=n.items.concat(n.items)),a.push(n)}}return a},[c,i,r?.features,u]),p=Ee((a,s,o,n)=>{s&&e.update(()=>{s.remove()}),a.onSelect({editor:e,queryString:n}),o()},[e]);return _(xe.Fragment,{children:_(fe,{anchorElem:t,groups:m,menuRenderFn:(a,{selectItemAndCleanUp:s,selectedItemKey:o,setSelectedItemKey:n})=>a.current&&m.length?Ce.createPortal(_("div",{className:k,children:m.map(f=>{let E=f.key;return f.label&&(E=typeof f.label=="function"?f.label({i18n:u}):f.label),Me("div",{className:`${k}__group ${k}__group-${f.key}`,children:[_("div",{className:`${k}__group-title`,children:E}),f.items.map((h,g)=>_(ot,{index:g,isSelected:o===h.key,item:h,onClick:()=>{n(h.key),s(h)},onMouseEnter:()=>{n(h.key)}},h.key))]},f.key)})}),a.current):null,onQueryChange:l,onSelectItem:p,triggerFn:d})})}import{useLexicalComposerContext as st}from"@lexical/react/LexicalComposerContext.js";import{$createParagraphNode as ct}from"lexical";import*as Pe from"react";import{useCallback as mt,useEffect as Re,useRef as ut,useState as dt}from"react";import{createPortal as ft}from"react-dom";var Y=(t,e,i,l,r=50,u=25)=>{let d=0;if(t&&!t.contains(l)){let{bottom:c,left:m,right:p,top:a}=t.getBoundingClientRect(),s=a+window.scrollY,o=c+window.scrollY;if(i<s-u||i>o+u||e<m-r||e>p+r)return-1;(e<m||e>p)&&(d=e<m?e-m:e-p)}return d};import{$getNodeByKey as Q}from"lexical";function D(t){let e=t.getBoundingClientRect(),i=getComputedStyle(t).getPropertyValue("transform");if(!i||i==="none")return e;let l=i.split(",").pop();return e.y=e.y-Number(l.replace(")","")),e}function X(t){let e=(m,p)=>m?parseFloat(window.getComputedStyle(m)[p]):0,{marginBottom:i,marginTop:l}=window.getComputedStyle(t),r=e(t.previousElementSibling,"marginBottom"),u=e(t.nextElementSibling,"marginTop"),d=Math.max(parseFloat(l),r);return{marginBottom:Math.max(parseFloat(i),u),marginTop:d}}import{$getRoot as nt}from"lexical";function z(t){return t.getEditorState().read(()=>nt().getChildrenKeys())}var rt=1,it=-1,Le=0,w={props:null,result:null};function lt(t,e,i=20){let l=t.x-e.x,r=t.y-e.y;return l*l+r*r<=i*i}function V(t){let{anchorElem:e,cache_threshold:i=20,editor:l,fuzzy:r=!1,horizontalOffset:u=0,point:{x:d,y:c},startIndex:m=0,useEdgeAsDefault:p=!1,verbose:a=!1}=t;if(i>0&&w.props&&w.result&&w.props.fuzzy===t.fuzzy&&w.props.horizontalOffset===t.horizontalOffset&&w.props.useEdgeAsDefault===t.useEdgeAsDefault&&lt(w.props.point,t.point,i))return w.result;let s=e.getBoundingClientRect(),o=z(l),n={blockElem:null,blockNode:null,distance:1/0,foundAtIndex:-1,isFoundNodeEmptyParagraph:!1};return l.getEditorState().read(()=>{if(p){let[h,g]=[l.getElementByKey(o[0]),l.getElementByKey(o[o.length-1])],[y,b]=[D(h),D(g)];if(y&&b&&(c<y.top?(n.blockElem=h,n.distance=y.top-c,n.blockNode=Q(o[0]),n.foundAtIndex=0):c>b.bottom&&(n.distance=c-b.bottom,n.blockNode=Q(o[o.length-1]),n.blockElem=g,n.foundAtIndex=o.length-1),n?.blockElem))return{blockElem:null,isFoundNodeEmptyParagraph:!1}}let f=m,E=Le;for(;f>=0&&f<o.length;){let h=o[f],g=l.getElementByKey(h);if(g===null)break;let y=new I(d+u,c),b=pe.fromDOMRect(D(g)),{marginBottom:R,marginTop:M}=X(g),L=b.generateNewRect({bottom:b.bottom+R,left:s.left,right:s.right,top:b.top-M}),{distance:v,isOnBottomSide:x,isOnTopSide:F}=L.distanceFromPoint(y);if(v===0){n.blockElem=g,n.blockNode=Q(h),n.foundAtIndex=f,n.distance=v,n.blockNode&&n.blockNode.getType()==="paragraph"&&n.blockNode.getTextContent()===""&&(!r&&!t.returnEmptyParagraphs&&(n.blockElem=null,n.blockNode=null),n.isFoundNodeEmptyParagraph=!0);break}else r&&v<n.distance&&(n.blockElem=g,n.blockNode=Q(h),n.distance=v,n.foundAtIndex=f);E===Le&&(F?E=it:x?E=rt:E=1/0),f+=E}}),w.props=t,w.result={blockElem:n.blockElem,blockNode:n.blockNode,foundAtIndex:n.foundAtIndex,isFoundNodeEmptyParagraph:n.isFoundNodeEmptyParagraph},{blockElem:n.blockElem,blockNode:n.blockNode,foundAtIndex:n.foundAtIndex,isFoundNodeEmptyParagraph:n.isFoundNodeEmptyParagraph}}function Z(t,e){return!!t.closest(`.${e}`)}var at=["IMG","INPUT","TEXTAREA","SELECT","BUTTON","VIDEO","OBJECT","EMBED","IFRAME","HR"];function ve(t){if(!t||at.includes(t.tagName)||t.offsetHeight===0||t.offsetWidth===0)return!1;let e=window.getComputedStyle(t);return!(e.display==="table-cell"||e.position==="absolute"||e.visibility==="hidden"||e.opacity==="0")}function ee(t,e,i,l=0){if(!t){e.style.opacity="0",e.style.transform="translate(-10000px, -10000px)";return}let r=t.getBoundingClientRect(),u=window.getComputedStyle(t),d=e.getBoundingClientRect(),c=i.getBoundingClientRect(),m;if(r.height<60)m=r.top-d.height/2-c.top+r.height/2-1;else{let s=ve(t)?parseInt(u.lineHeight,10):0;m=r.top+(s-d.height)/2-c.top-1}let a=l;e.style.opacity="1",e.style.transform=`translate(${a}px, ${m}px)`}import{jsx as le}from"react/jsx-runtime";var pt="add-block-menu",te=1/0;function gt(t){return t===0?1/0:te>=0&&te<t?te:Math.floor(t/2)}function yt(t,e,i){let l=e.parentElement,{editorConfig:r}=N(),u=r?.admin?.hideGutter?-24:12,d=ut(null),[c,m]=dt(null);Re(()=>{function a(s){let o=s.target;if(!W(o))return;let n=Y(l,s.pageX,s.pageY,o);if(n===-1){m(null);return}if(Z(o,pt))return;let f=z(t),{blockElem:E,blockNode:h,foundAtIndex:g}=V({anchorElem:e,cache_threshold:0,editor:t,horizontalOffset:-n,point:new I(s.x,s.y),returnEmptyParagraphs:!0,startIndex:gt(f.length),useEdgeAsDefault:!1});te=g,E&&(c?.node!==h||c?.elem!==E)&&m({elem:E,node:h})}return document?.addEventListener("mousemove",a),()=>{document?.removeEventListener("mousemove",a)}},[l,e,t,c]),Re(()=>{d.current&&c?.node&&ee(c?.elem,d.current,e,u)},[e,c,u]);let p=mt(a=>{let s=c;s?.node&&(t.update(()=>{let o=!0;if((s.node.getType()!=="paragraph"||s.node.getTextContent()!=="")&&(o=!1),!o){let n=ct();s.node.insertAfter(n),setTimeout(()=>{s={elem:t.getElementByKey(n.getKey()),node:n},m(s)},0)}}),setTimeout(()=>{t.update(()=>{t.focus(),s.node&&"select"in s.node&&typeof s.node.select=="function"&&s.node.select()})},1),setTimeout(()=>{t.dispatchCommand(de,{node:s.node})},2),a.stopPropagation(),a.preventDefault())},[t,c]);return ft(le(Pe.Fragment,{children:le("button",{className:"icon add-block-menu",onClick:a=>{p(a)},ref:d,type:"button",children:le("div",{className:i?"icon":""})})}),e)}function Ne({anchorElem:t=document.body}){let[e]=st();return yt(e,t,e._editable)}import{useLexicalComposerContext as bt}from"@lexical/react/LexicalComposerContext.js";import{eventFiles as we}from"@lexical/rich-text";import{$getNearestNodeFromDOMNode as Ie,$getNodeByKey as xt}from"lexical";import*as Ae from"react";import{useEffect as ae,useRef as oe,useState as De}from"react";import{createPortal as Ct}from"react-dom";function Se(t,e,i){if(!t.current)return;let{left:l,top:r}=i.getBoundingClientRect(),u=D(e),d=u.width,c=u.height,m=u.top-r,p=u.left-l;t.current.style.border="2px solid green",t.current.style.boxSizing="border-box",t.current.style.height=c+"px",t.current.style.pointerEvents="none",t.current.style.position="absolute",t.current.style.top=m+"px",t.current.style.left=p+"px",t.current.style.width=d+"px",t.current.style.zIndex="1000",t.current.style.opacity="0.5"}var U=25,ht=-24,Et=!1,$=0;function ke(t,e,i,l,r,u,d,c,m,p=!1){let{height:a,top:s}=l.getBoundingClientRect(),{top:o,width:n}=d.getBoundingClientRect(),{marginBottom:f,marginTop:E}=X(l),h=s,g=u>=s+a/2+window.scrollY,y=!1;if(r?.elem)if(l!==r?.elem)(g&&r?.elem&&r?.elem===l.nextElementSibling||!g&&r?.elem&&r?.elem===l.previousElementSibling)&&($++,$<200&&(y=!0));else{$++;let v=r?.boundingBox?.y,x=l.getBoundingClientRect().y;(g===r?.isBelow&&v===x||$<200)&&(y=!1)}if(y)return{isBelow:g,willStayInSamePosition:y};p?h+=a/2:g?h+=a+f/2:h-=E/2;let b=0;p||(g?b=-U:b=U);let R=h-o+b,M=ht-e;i.style.width=`calc(${n}px - ${t})`,i.style.opacity=".4";let L=12;return p?i.style.transform=`translate(${M}px, ${R-U}px)`:g?(l.style.marginBottom=U*2+L+"px",i.style.transform=`translate(${M}px, calc(${R}px - 0px))`):(l.style.marginTop=U*2+L+"px",i.style.transform=`translate(${M}px, calc(${R-U*2}px - 0px))`),Et&&Se(m,l,d),r.elem.style.opacity="",r?.elem===l?g?r.elem.style.marginTop="":r.elem.style.marginBottom="":(r.elem.style.marginBottom="",r.elem.style.marginTop=""),$=0,{isBelow:g,willStayInSamePosition:y}}import{jsx as ne,jsxs as vt}from"react/jsx-runtime";var Tt="draggable-block-menu",Be="application/x-lexical-drag-block",J=1/0;function Fe(t){return t===0?1/0:J>=0&&J<t?J:Math.floor(t/2)}function Mt(t,e){let{transform:i}=e.style;t.setDragImage(e,0,0),setTimeout(()=>{e.style.transform=i})}function He(t,e){t&&(t.style.opacity="0"),e&&(e.style.opacity="",e.style.marginBottom="",e.style.marginTop="")}function Lt(t,e,i){let l=e.parentElement,r=oe(null),u=oe(null),d=oe(null),c=oe(!1),[m,p]=De(null),[a,s]=De(null),{editorConfig:o}=N(),n=o?.admin?.hideGutter?-44:-8;ae(()=>{function h(g){let y=g.target;if(!W(y))return;let b=Y(l,g.pageX,g.pageY,y);if(b===-1){p(null);return}if(Z(y,Tt))return;let R=z(t),{blockElem:M,foundAtIndex:L,isFoundNodeEmptyParagraph:v}=V({anchorElem:e,cache_threshold:0,editor:t,horizontalOffset:-b,point:new I(g.x,g.y),startIndex:Fe(R.length),useEdgeAsDefault:!1,verbose:!1});J=L,!(!M&&!v)&&m!==M&&p(M)}return document?.addEventListener("mousemove",h),()=>{document?.removeEventListener("mousemove",h)}},[l,e,t,m]),ae(()=>{r.current&&ee(m,r.current,e,n)},[e,m,n]),ae(()=>{function h(y){if(!c.current)return!1;let[b]=we(y);if(b)return!1;let{pageY:R,target:M}=y;if(!W(M))return!1;let L=Y(l,y.pageX,y.pageY,M,100,50),v=z(t),{blockElem:x,foundAtIndex:F,isFoundNodeEmptyParagraph:H}=V({anchorElem:e,editor:t,fuzzy:!0,horizontalOffset:-L,point:new I(y.x,y.y),startIndex:Fe(v.length),useEdgeAsDefault:!0,verbose:!0});J=F;let A=u.current;if(x===null||A===null)return!1;if(m!==x){let{isBelow:P,willStayInSamePosition:S}=ke(o?.admin?.hideGutter?"0px":"3rem",n+(o?.admin?.hideGutter?r?.current?.getBoundingClientRect()?.width??0:-r?.current?.getBoundingClientRect()?.width),A,x,a,R,e,y,d,H);y.preventDefault(),S||s({boundingBox:x.getBoundingClientRect(),elem:x,isBelow:P})}else He(A,a?.elem),s({boundingBox:x.getBoundingClientRect(),elem:x,isBelow:!1});return!0}function g(y){if(!c.current)return!1;let[b]=we(y);if(b)return!1;let{dataTransfer:R,pageY:M,target:L}=y,v=R?.getData(Be)||"";return t.update(()=>{let x=xt(v);if(!x||!W(L))return!1;let F=Y(l,y.pageX,y.pageY,L,100,50),{blockElem:H,isFoundNodeEmptyParagraph:A}=V({anchorElem:e,editor:t,fuzzy:!0,horizontalOffset:-F,point:new I(y.x,y.y),useEdgeAsDefault:!0});if(!H)return!1;let P=Ie(H);if(!P)return!1;if(P===x)return!0;let{height:S,top:ie}=D(H),qe=M>=ie+S/2+window.scrollY;A?(P.insertBefore(x),P.remove()):qe?P.insertAfter(x):P.insertBefore(x),m!==null&&p(null),document.querySelectorAll(".lexical-block-highlighter").forEach(K=>{K.remove()});let Je=t.getElementByKey(x.getKey());setTimeout(()=>{let K=Je.getBoundingClientRect(),T=document.createElement("div");T.className="lexical-block-highlighter",document.documentElement.getAttribute("data-theme")==="dark"?T.style.backgroundColor="white":T.style.backgroundColor="black",T.style.transition="opacity 0.1s ease-in-out",T.style.zIndex="1",T.style.pointerEvents="none",T.style.boxSizing="border-box",T.style.borderRadius="4px",T.style.position="absolute",document.body.appendChild(T),T.style.opacity="0.1",T.style.height=`${K.height+8}px`,T.style.width=`${K.width+8}px`,T.style.top=`${K.top+window.scrollY-4}px`,T.style.left=`${K.left-4}px`,setTimeout(()=>{T.style.opacity="0",setTimeout(()=>{T.remove()},1e3)},3e3)},120)}),!0}return document.addEventListener("dragover",h),document.addEventListener("drop",g),()=>{document.removeEventListener("dragover",h),document.removeEventListener("drop",g)}},[l,n,e,t,a,m,o?.admin?.hideGutter]);function f(h){let g=h.dataTransfer;if(!g||!m)return;Mt(g,m);let y="";t.update(()=>{let b=Ie(m);b&&(y=b.getKey())}),c.current=!0,g.setData(Be,y)}function E(){c.current=!1,He(u.current,a?.elem)}return Ct(vt(Ae.Fragment,{children:[ne("div",{className:"icon draggable-block-menu",draggable:!0,onDragEnd:E,onDragStart:f,ref:r,children:ne("div",{className:i?"icon":""})}),ne("div",{className:"draggable-block-target-line",ref:u}),ne("div",{className:"debug-highlight",ref:d})]}),e)}function Oe({anchorElem:t=document.body}){let[e]=bt();return Lt(e,t,e._editable)}import{ContentEditable as Rt}from"@lexical/react/LexicalContentEditable.js";import{jsx as Pt}from"react/jsx-runtime";function _e({className:t}){return Pt(Rt,{className:t??"ContentEditable__root"})}import{jsx as C,jsxs as j}from"react/jsx-runtime";var Ke=t=>{let{editorConfig:e,editorContainerRef:i,onChange:l}=t,r=N(),[u]=Nt(),{t:d}=Bt(),[c,m]=Ge(null),p=o=>{o!==null&&m(o)};$e(()=>{if(!r?.uuid){console.error("Lexical Editor must be used within an EditorConfigProvider");return}r?.parentEditor?.uuid&&r.parentEditor?.registerChild(r.uuid,r);let o=()=>{r.focusEditor(r)},n=()=>{r.blurEditor(r)},f=u.registerCommand(Ht,()=>(o(),!0),ze),E=u.registerCommand(Ft,()=>(n(),!0),ze);return()=>{f(),E(),r.parentEditor?.unregisterChild?.(r.uuid)}},[u,r]);let[a,s]=Ge(!1);return $e(()=>{let o=()=>{let n=window.matchMedia("(max-width: 768px)").matches;n!==a&&s(n)};return o(),window.addEventListener("resize",o),()=>{window.removeEventListener("resize",o)}},[a]),j(q.Fragment,{children:[e.features.plugins.map(o=>{if(o.position==="aboveContainer")return C(O,{clientProps:o.clientProps,plugin:o},o.key)}),j("div",{className:"editor-container",ref:i,children:[e.features.plugins.map(o=>{if(o.position==="top")return C(O,{clientProps:o.clientProps,plugin:o},o.key)}),C(It,{ErrorBoundary:St,contentEditable:C("div",{className:"editor-scroller",children:C("div",{className:"editor",ref:p,children:C(_e,{})})}),placeholder:C("p",{className:"editor-placeholder",children:d("lexical:general:placeholder")})}),C(wt,{ignoreSelectionChange:!0,onChange:(o,n,f)=>{(!f.has("focus")||f.size>1)&&l?.(o,n,f)}}),c&&j(q.Fragment,{children:[!a&&u.isEditable()&&j(q.Fragment,{children:[C(Oe,{anchorElem:c}),C(Ne,{anchorElem:c})]}),e.features.plugins.map(o=>{if(o.position==="floatingAnchorElem"&&!(o.desktopOnly===!0&&a))return C(O,{anchorElem:c,clientProps:o.clientProps,plugin:o},o.key)}),u.isEditable()&&C(q.Fragment,{children:C(Te,{anchorElem:c})})]}),u.isEditable()&&j(q.Fragment,{children:[C(kt,{}),e?.features?.markdownTransformers?.length>0&&C(ye,{})]}),C(Dt,{}),e.features.plugins.map(o=>{if(o.position==="normal")return C(O,{clientProps:o.clientProps,plugin:o},o.key)}),e.features.plugins.map(o=>{if(o.position==="bottom")return C(O,{clientProps:o.clientProps,plugin:o},o.key)})]}),e.features.plugins.map(o=>{if(o.position==="belowContainer")return C(O,{clientProps:o.clientProps,plugin:o},o.key)})]})};import{jsx as B}from"react/jsx-runtime";var Ve=({children:t,providers:e})=>{if(!e?.length)return t;let i=e[0];return e.length>1?B(i,{children:B(Ve,{providers:e.slice(1),children:t})}):B(i,{children:t})},Ue=t=>{let{editorConfig:e,fieldProps:i,onChange:l,path:r,readOnly:u,value:d}=t,c=N(),m=Ye.useRef(null),p=We(()=>{let s=d;return e?.features?.hooks?.load?.length&&e.features.hooks.load.forEach(o=>{s=o({incomingEditorState:s})}),s},[e,d]),a=We(()=>{if(p&&typeof p!="object")throw new Error("The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: "+JSON.stringify(p));if(p&&Array.isArray(p)&&!("root"in p))throw new Error("You have tried to pass in data from the old, Slate editor, to the new, Lexical editor. This is not supported. There is no automatic conversion from Slate to Lexical data available yet (coming soon). Please remove the data from the field and start again.");if(p&&"jsonContent"in p)throw new Error("You have tried to pass in data from payload-plugin-lexical. This is not supported. The data structure has changed in this editor, compared to the plugin, and there is no automatic conversion available yet (coming soon). Please remove the data from the field and start again.");return{editable:u!==!0,editorState:p!=null?JSON.stringify(p):void 0,namespace:e.lexical.namespace,nodes:[...ce({editorConfig:e})],onError:s=>{throw s},theme:e.lexical.theme}},[e,p,u]);return a?B(At,{initialConfig:a,children:B(me,{editorConfig:e,editorContainerRef:m,fieldProps:i,parentContext:c,children:B(Ve,{providers:e.features.providers,children:B(Ke,{editorConfig:e,editorContainerRef:m,onChange:l})})})},r):B("p",{children:"Loading..."})};import"./bundled.css";import{jsx as G,jsxs as se}from"react/jsx-runtime";var re="rich-text-lexical",Vt=t=>{let{name:e,CustomDescription:i,CustomError:l,CustomLabel:r,className:u,descriptionProps:d,editorConfig:c,errorProps:m,label:p,labelProps:a,path:s,readOnly:o,required:n,style:f,validate:E,width:h}=t,g=Wt((P,S)=>{if(typeof E=="function")return E(P,{...S,props:t,required:n})},[E,n]),{path:y}=Gt(),b=$t({path:y??s??e,validate:g}),{errorMessage:R,initialValue:M,path:L,schemaPath:v,setValue:x,showError:F,value:H}=b,A=[re,"field-type",u,F&&"error",o&&`${re}--read-only`,c?.admin?.hideGutter!==!0?`${re}--show-gutter`:null].filter(Boolean).join(" ");return se("div",{className:A,style:{...f,width:h},children:[G(_t,{CustomError:l,path:L,...m||{},alignCaret:"left"}),G(zt,{CustomLabel:r,label:p,required:n,...a||{}}),se("div",{className:`${re}__wrap`,children:[G(Yt,{fallbackRender:Ut,onReset:()=>{},children:G(Ue,{editorConfig:c,fieldProps:t,onChange:P=>{let S=P.toJSON();c?.features?.hooks?.save?.length&&c.features.hooks.save.forEach(ie=>{S=ie({incomingEditorState:S})}),x(S)},path:L,readOnly:o,value:H},JSON.stringify({initialValue:M,path:L}))}),i!==void 0?i:G(Ot,{...d||{}})]})]},L)};function Ut({error:t}){return se("div",{className:"errorBoundary",role:"alert",children:[G("p",{children:"Something went wrong:"}),G("pre",{style:{color:"red"},children:t.message})]})}var qn=Kt(Vt);export{qn as RichText};
2
- //# sourceMappingURL=Field-5KHQLTCU.js.map