@payloadcms/richtext-lexical 3.0.0-beta.96 → 3.0.0-beta.98

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 (235) hide show
  1. package/dist/cell/index.d.ts.map +1 -1
  2. package/dist/cell/index.js +20 -68
  3. package/dist/cell/index.js.map +1 -1
  4. package/dist/exports/client/Field-WN5O3VIW.js +2 -0
  5. package/dist/exports/client/Field-WN5O3VIW.js.map +7 -0
  6. package/dist/exports/client/{RelationshipComponent-EZORSGUZ.js → RelationshipComponent-Z5SZ5FFT.js} +2 -2
  7. package/dist/exports/client/bundled.css +1 -1
  8. package/dist/exports/client/{chunk-TD7O23AB.js → chunk-366OGJYE.js} +2 -2
  9. package/dist/exports/client/{chunk-TD7O23AB.js.map → chunk-366OGJYE.js.map} +1 -1
  10. package/dist/exports/client/{chunk-YL453UOS.js → chunk-7UTZDNYS.js} +2 -2
  11. package/dist/exports/client/{chunk-YL453UOS.js.map → chunk-7UTZDNYS.js.map} +1 -1
  12. package/dist/exports/client/chunk-GK7ZKYHL.js +2 -0
  13. package/dist/exports/client/chunk-GK7ZKYHL.js.map +7 -0
  14. package/dist/exports/client/{chunk-UJDWBQ2K.js → chunk-GTKNWSQW.js} +2 -2
  15. package/dist/exports/client/{chunk-UJDWBQ2K.js.map → chunk-GTKNWSQW.js.map} +1 -1
  16. package/dist/exports/client/{chunk-V2LKLT2F.js → chunk-PECDZEZY.js} +3 -3
  17. package/dist/exports/client/{chunk-V2LKLT2F.js.map → chunk-PECDZEZY.js.map} +3 -3
  18. package/dist/exports/client/{chunk-OLSILJA6.js → chunk-TXEIKM77.js} +2 -2
  19. package/dist/exports/client/chunk-TXEIKM77.js.map +7 -0
  20. package/dist/exports/client/{component-LLWMZU6K.js → component-GAX6BHKZ.js} +2 -2
  21. package/dist/exports/client/{component-7RAP75FW.js → component-LHFD5Z33.js} +2 -2
  22. package/dist/exports/client/{component-7RAP75FW.js.map → component-LHFD5Z33.js.map} +1 -1
  23. package/dist/exports/client/component-UJILB3MH.js +2 -0
  24. package/dist/exports/client/component-UJILB3MH.js.map +7 -0
  25. package/dist/exports/client/{componentInline-YSHGRL2J.js → componentInline-JLMSR7BP.js} +2 -2
  26. package/dist/exports/client/index.d.ts +2 -3
  27. package/dist/exports/client/index.d.ts.map +1 -1
  28. package/dist/exports/client/index.js +12 -12
  29. package/dist/exports/client/index.js.map +4 -4
  30. package/dist/features/align/client/index.d.ts +1 -4
  31. package/dist/features/align/client/index.d.ts.map +1 -1
  32. package/dist/features/blockquote/client/index.d.ts +1 -4
  33. package/dist/features/blockquote/client/index.d.ts.map +1 -1
  34. package/dist/features/blocks/client/component/index.js.map +1 -1
  35. package/dist/features/blocks/client/index.d.ts +1 -4
  36. package/dist/features/blocks/client/index.d.ts.map +1 -1
  37. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  38. package/dist/features/blocks/server/index.js +25 -25
  39. package/dist/features/blocks/server/index.js.map +1 -1
  40. package/dist/features/blocks/server/nodes/BlocksNode.d.ts +1 -1
  41. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  42. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  43. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +1 -1
  44. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  45. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  46. package/dist/features/converters/html/converter/index.d.ts +5 -5
  47. package/dist/features/converters/html/converter/index.d.ts.map +1 -1
  48. package/dist/features/converters/html/converter/index.js.map +1 -1
  49. package/dist/features/converters/html/converter/types.d.ts +1 -1
  50. package/dist/features/converters/html/converter/types.d.ts.map +1 -1
  51. package/dist/features/converters/html/converter/types.js.map +1 -1
  52. package/dist/features/debug/testRecorder/client/index.d.ts +1 -4
  53. package/dist/features/debug/testRecorder/client/index.d.ts.map +1 -1
  54. package/dist/features/debug/treeView/client/index.d.ts +1 -4
  55. package/dist/features/debug/treeView/client/index.d.ts.map +1 -1
  56. package/dist/features/experimental_table/client/index.d.ts +1 -1
  57. package/dist/features/experimental_table/client/index.d.ts.map +1 -1
  58. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +2 -2
  59. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  60. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  61. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +1 -1
  62. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  63. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  64. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  65. package/dist/features/experimental_table/client/utils/debounce.js +4 -4
  66. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  67. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  68. package/dist/features/format/bold/feature.client.d.ts +1 -4
  69. package/dist/features/format/bold/feature.client.d.ts.map +1 -1
  70. package/dist/features/format/inlineCode/feature.client.d.ts +1 -4
  71. package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -1
  72. package/dist/features/format/italic/feature.client.d.ts +1 -4
  73. package/dist/features/format/italic/feature.client.d.ts.map +1 -1
  74. package/dist/features/format/strikethrough/feature.client.d.ts +1 -4
  75. package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -1
  76. package/dist/features/format/subscript/feature.client.d.ts +1 -4
  77. package/dist/features/format/subscript/feature.client.d.ts.map +1 -1
  78. package/dist/features/format/superscript/feature.client.d.ts +1 -4
  79. package/dist/features/format/superscript/feature.client.d.ts.map +1 -1
  80. package/dist/features/format/underline/feature.client.d.ts +1 -4
  81. package/dist/features/format/underline/feature.client.d.ts.map +1 -1
  82. package/dist/features/heading/client/index.d.ts +1 -4
  83. package/dist/features/heading/client/index.d.ts.map +1 -1
  84. package/dist/features/horizontalRule/client/index.d.ts +1 -4
  85. package/dist/features/horizontalRule/client/index.d.ts.map +1 -1
  86. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  87. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +1 -1
  88. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  89. package/dist/features/indent/client/index.d.ts +1 -4
  90. package/dist/features/indent/client/index.d.ts.map +1 -1
  91. package/dist/features/link/client/index.d.ts +1 -13
  92. package/dist/features/link/client/index.d.ts.map +1 -1
  93. package/dist/features/link/client/index.js +1 -1
  94. package/dist/features/link/client/index.js.map +1 -1
  95. package/dist/features/link/client/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  96. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  97. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  98. package/dist/features/link/nodes/LinkNode.js +1 -1
  99. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  100. package/dist/features/lists/checklist/client/index.d.ts +1 -4
  101. package/dist/features/lists/checklist/client/index.d.ts.map +1 -1
  102. package/dist/features/lists/orderedList/client/index.d.ts +1 -4
  103. package/dist/features/lists/orderedList/client/index.d.ts.map +1 -1
  104. package/dist/features/lists/unorderedList/client/index.d.ts +1 -4
  105. package/dist/features/lists/unorderedList/client/index.d.ts.map +1 -1
  106. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +1 -4
  107. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
  108. package/dist/features/migrations/slateToLexical/feature.client.d.ts +1 -4
  109. package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
  110. package/dist/features/migrations/slateToLexical/feature.client.js +1 -3
  111. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  112. package/dist/features/paragraph/client/index.d.ts +1 -4
  113. package/dist/features/paragraph/client/index.d.ts.map +1 -1
  114. package/dist/features/relationship/client/index.d.ts +2 -17
  115. package/dist/features/relationship/client/index.d.ts.map +1 -1
  116. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +1 -1
  117. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  118. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  119. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +1 -1
  120. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  121. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  122. package/dist/features/toolbars/fixed/client/Toolbar/index.js +1 -1
  123. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  124. package/dist/features/toolbars/fixed/client/index.d.ts +1 -4
  125. package/dist/features/toolbars/fixed/client/index.d.ts.map +1 -1
  126. package/dist/features/toolbars/inline/client/Toolbar/index.js +1 -1
  127. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  128. package/dist/features/toolbars/inline/client/index.d.ts +1 -4
  129. package/dist/features/toolbars/inline/client/index.d.ts.map +1 -1
  130. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +2 -2
  131. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  132. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +1 -1
  133. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  134. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +2 -2
  135. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  136. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +6 -6
  137. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  138. package/dist/features/typesClient.d.ts +10 -11
  139. package/dist/features/typesClient.d.ts.map +1 -1
  140. package/dist/features/typesClient.js.map +1 -1
  141. package/dist/features/typesServer.d.ts +10 -10
  142. package/dist/features/typesServer.d.ts.map +1 -1
  143. package/dist/features/typesServer.js.map +1 -1
  144. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  145. package/dist/features/upload/client/component/index.js +17 -18
  146. package/dist/features/upload/client/component/index.js.map +1 -1
  147. package/dist/features/upload/client/feature.client.d.ts +1 -4
  148. package/dist/features/upload/client/feature.client.d.ts.map +1 -1
  149. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  150. package/dist/features/upload/client/nodes/UploadNode.js +1 -1
  151. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  152. package/dist/field/Field.js +1 -1
  153. package/dist/field/Field.js.map +1 -1
  154. package/dist/field/bundled.css +1 -1
  155. package/dist/field/index.d.ts.map +1 -1
  156. package/dist/field/index.js +63 -72
  157. package/dist/field/index.js.map +1 -1
  158. package/dist/index.d.ts +3 -3
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +3 -3
  161. package/dist/index.js.map +1 -1
  162. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  163. package/dist/lexical/LexicalEditor.js +5 -5
  164. package/dist/lexical/LexicalEditor.js.map +1 -1
  165. package/dist/lexical/LexicalProvider.js +1 -1
  166. package/dist/lexical/LexicalProvider.js.map +1 -1
  167. package/dist/lexical/config/client/EditorConfigProvider.d.ts +1 -1
  168. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  169. package/dist/lexical/config/client/EditorConfigProvider.js +1 -1
  170. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  171. package/dist/lexical/config/client/loader.d.ts +1 -3
  172. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  173. package/dist/lexical/config/client/loader.js +7 -19
  174. package/dist/lexical/config/client/loader.js.map +1 -1
  175. package/dist/lexical/config/client/sanitize.d.ts +1 -1
  176. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  177. package/dist/lexical/config/client/sanitize.js +2 -2
  178. package/dist/lexical/config/client/sanitize.js.map +1 -1
  179. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +3 -3
  180. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  181. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +2 -2
  182. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  183. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +1 -1
  184. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  185. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  186. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  187. package/dist/lexical/plugins/SlashMenu/index.js +1 -1
  188. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  189. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  190. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  191. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  192. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +9 -7
  193. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  194. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  195. package/dist/lexical/utils/nodeFormat.d.ts +2 -2
  196. package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
  197. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  198. package/dist/lexical/utils/rect.d.ts.map +1 -1
  199. package/dist/lexical/utils/rect.js.map +1 -1
  200. package/dist/types.d.ts +3 -4
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/types.js.map +1 -1
  203. package/dist/utilities/createClientFeature.d.ts +3 -5
  204. package/dist/utilities/createClientFeature.d.ts.map +1 -1
  205. package/dist/utilities/createClientFeature.js +1 -4
  206. package/dist/utilities/createClientFeature.js.map +1 -1
  207. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  208. package/dist/utilities/generateComponentMap.d.ts.map +1 -1
  209. package/dist/utilities/generateComponentMap.js +10 -17
  210. package/dist/utilities/generateComponentMap.js.map +1 -1
  211. package/dist/validate/index.js +1 -1
  212. package/dist/validate/index.js.map +1 -1
  213. package/dist/validate/validateNodes.d.ts +2 -2
  214. package/dist/validate/validateNodes.d.ts.map +1 -1
  215. package/dist/validate/validateNodes.js +2 -2
  216. package/dist/validate/validateNodes.js.map +1 -1
  217. package/package.json +7 -7
  218. package/dist/exports/client/Field-E27BVLS5.js +0 -2
  219. package/dist/exports/client/Field-E27BVLS5.js.map +0 -7
  220. package/dist/exports/client/chunk-OLSILJA6.js.map +0 -7
  221. package/dist/exports/client/chunk-ZH3MUMBJ.js +0 -2
  222. package/dist/exports/client/chunk-ZH3MUMBJ.js.map +0 -7
  223. package/dist/exports/client/component-2YLEVOFH.js +0 -2
  224. package/dist/exports/client/component-2YLEVOFH.js.map +0 -7
  225. package/dist/features/createClientComponent.d.ts +0 -7
  226. package/dist/features/createClientComponent.d.ts.map +0 -1
  227. package/dist/features/createClientComponent.js +0 -13
  228. package/dist/features/createClientComponent.js.map +0 -1
  229. package/dist/features/createFeaturePropComponent.d.ts +0 -6
  230. package/dist/features/createFeaturePropComponent.d.ts.map +0 -1
  231. package/dist/features/createFeaturePropComponent.js +0 -19
  232. package/dist/features/createFeaturePropComponent.js.map +0 -1
  233. /package/dist/exports/client/{RelationshipComponent-EZORSGUZ.js.map → RelationshipComponent-Z5SZ5FFT.js.map} +0 -0
  234. /package/dist/exports/client/{component-LLWMZU6K.js.map → component-GAX6BHKZ.js.map} +0 -0
  235. /package/dist/exports/client/{componentInline-YSHGRL2J.js.map → componentInline-JLMSR7BP.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"setTargetLine.js","names":["getCollapsedMargins","TARGET_LINE_HALF_HEIGHT","TEXT_BOX_HORIZONTAL_PADDING","DEBUG","animationTimer","setTargetLine","offsetWidth","offsetLeft","targetLineElem","targetBlockElem","lastTargetBlock","mouseY","anchorElem","event","debugHighlightRef","isFoundNodeEmptyParagraph","height","targetBlockElemHeight","top","targetBlockElemTop","getBoundingClientRect","anchorTop","width","anchorWidth","marginBottom","marginTop","lineTop","isBelow","window","scrollY","willStayInSamePosition","elem","nextElementSibling","previousElementSibling","lastBoundingBoxPosition","boundingBox","y","currentBoundingBoxPosition","targetElemTranslate2","left","style","opacity","transform"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.ts"],"sourcesContent":["'use client'\nimport { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nimport { highlightElemOriginalPosition } from './highlightElemOriginalPosition.js'\nconst TARGET_LINE_HALF_HEIGHT = 0\nconst TEXT_BOX_HORIZONTAL_PADDING = -24\nconst DEBUG = false\n\nlet animationTimer = 0\n\nexport function setTargetLine(\n offsetWidth: string,\n offsetLeft: number,\n targetLineElem: HTMLElement,\n targetBlockElem: HTMLElement,\n lastTargetBlock: {\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n },\n mouseY: number,\n anchorElem: HTMLElement,\n event: DragEvent,\n debugHighlightRef: React.RefObject<HTMLDivElement | null>,\n isFoundNodeEmptyParagraph: boolean = false,\n) {\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n targetBlockElem.getBoundingClientRect() // used to be getBoundingClientRectWithoutTransform. Not sure what's better, but the normal getBoundingClientRect seems to work fine\n const { top: anchorTop, width: anchorWidth } = anchorElem.getBoundingClientRect()\n\n const { marginBottom, marginTop } = getCollapsedMargins(targetBlockElem)\n let lineTop = targetBlockElemTop\n\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n let willStayInSamePosition = false\n\n /**\n * Do not run any transform or changes if the actual new line position would be the same (even if it's now inserted BEFORE rather than AFTER - position would still be the same)\n * This prevents unnecessary flickering.\n *\n * We still need to let it run even if the position (IGNORING the transform) would not change, as the transform animation is not finished yet. This is what animationTimer does. Otherwise, the positioning will be inaccurate\n */\n if (lastTargetBlock?.elem) {\n if (targetBlockElem !== lastTargetBlock?.elem) {\n if (\n isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.nextElementSibling\n ) {\n animationTimer++\n\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n } else if (\n !isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.previousElementSibling\n ) {\n animationTimer++\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n }\n } else {\n animationTimer++\n\n const lastBoundingBoxPosition = lastTargetBlock?.boundingBox?.y\n const currentBoundingBoxPosition = targetBlockElem.getBoundingClientRect().y\n\n if (\n (isBelow === lastTargetBlock?.isBelow &&\n lastBoundingBoxPosition === currentBoundingBoxPosition) ||\n animationTimer < 200\n ) {\n willStayInSamePosition = false\n }\n }\n }\n if (willStayInSamePosition) {\n return {\n isBelow,\n willStayInSamePosition,\n }\n }\n\n /**\n * Paragraphs need no isBelow/above handling,\n */\n if (!isFoundNodeEmptyParagraph) {\n //if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n lineTop += targetBlockElemHeight + marginBottom / 2\n } else {\n // above targetBlockElem\n lineTop -= marginTop / 2\n }\n } else {\n lineTop += targetBlockElemHeight / 2\n }\n\n let targetElemTranslate2 = 0\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n targetElemTranslate2 = -TARGET_LINE_HALF_HEIGHT\n } else {\n targetElemTranslate2 = TARGET_LINE_HALF_HEIGHT\n }\n }\n\n const top = lineTop - anchorTop + targetElemTranslate2\n\n const left = TEXT_BOX_HORIZONTAL_PADDING - offsetLeft\n\n targetLineElem.style.width = `calc(${anchorWidth}px - ${offsetWidth})`\n targetLineElem.style.opacity = '.8'\n\n // if (DEBUG) {\n // //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, targetBlockElem, anchorElem)\n // }\n\n targetLineElem.style.transform = `translate(${left}px, calc(${top}px - ${'2px'}))`\n\n /**\n * Properly reset previous targetBlockElem styles\n */\n lastTargetBlock.elem.style.opacity = ''\n\n if (lastTargetBlock?.elem === targetBlockElem) {\n if (isBelow) {\n lastTargetBlock.elem.style.marginTop = ''\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n }\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n lastTargetBlock.elem.style.marginTop = ''\n }\n animationTimer = 0\n return {\n isBelow,\n willStayInSamePosition,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"setTargetLine.js","names":["getCollapsedMargins","TARGET_LINE_HALF_HEIGHT","TEXT_BOX_HORIZONTAL_PADDING","DEBUG","animationTimer","setTargetLine","offsetWidth","offsetLeft","targetLineElem","targetBlockElem","lastTargetBlock","mouseY","anchorElem","event","debugHighlightRef","isFoundNodeEmptyParagraph","height","targetBlockElemHeight","top","targetBlockElemTop","getBoundingClientRect","anchorTop","width","anchorWidth","marginBottom","marginTop","lineTop","isBelow","window","scrollY","willStayInSamePosition","elem","nextElementSibling","previousElementSibling","lastBoundingBoxPosition","boundingBox","y","currentBoundingBoxPosition","targetElemTranslate2","left","style","opacity","transform"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.ts"],"sourcesContent":["'use client'\nimport { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nconst TARGET_LINE_HALF_HEIGHT = 0\nconst TEXT_BOX_HORIZONTAL_PADDING = -24\nconst DEBUG = false\n\nlet animationTimer = 0\n\nexport function setTargetLine(\n offsetWidth: string,\n offsetLeft: number,\n targetLineElem: HTMLElement,\n targetBlockElem: HTMLElement,\n lastTargetBlock: {\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n },\n mouseY: number,\n anchorElem: HTMLElement,\n event: DragEvent,\n debugHighlightRef: React.RefObject<HTMLDivElement | null>,\n isFoundNodeEmptyParagraph: boolean = false,\n) {\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n targetBlockElem.getBoundingClientRect() // used to be getBoundingClientRectWithoutTransform. Not sure what's better, but the normal getBoundingClientRect seems to work fine\n const { top: anchorTop, width: anchorWidth } = anchorElem.getBoundingClientRect()\n\n const { marginBottom, marginTop } = getCollapsedMargins(targetBlockElem)\n let lineTop = targetBlockElemTop\n\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n let willStayInSamePosition = false\n\n /**\n * Do not run any transform or changes if the actual new line position would be the same (even if it's now inserted BEFORE rather than AFTER - position would still be the same)\n * This prevents unnecessary flickering.\n *\n * We still need to let it run even if the position (IGNORING the transform) would not change, as the transform animation is not finished yet. This is what animationTimer does. Otherwise, the positioning will be inaccurate\n */\n if (lastTargetBlock?.elem) {\n if (targetBlockElem !== lastTargetBlock?.elem) {\n if (\n isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.nextElementSibling\n ) {\n animationTimer++\n\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n } else if (\n !isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.previousElementSibling\n ) {\n animationTimer++\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n }\n } else {\n animationTimer++\n\n const lastBoundingBoxPosition = lastTargetBlock?.boundingBox?.y\n const currentBoundingBoxPosition = targetBlockElem.getBoundingClientRect().y\n\n if (\n (isBelow === lastTargetBlock?.isBelow &&\n lastBoundingBoxPosition === currentBoundingBoxPosition) ||\n animationTimer < 200\n ) {\n willStayInSamePosition = false\n }\n }\n }\n if (willStayInSamePosition) {\n return {\n isBelow,\n willStayInSamePosition,\n }\n }\n\n /**\n * Paragraphs need no isBelow/above handling,\n */\n if (!isFoundNodeEmptyParagraph) {\n //if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n lineTop += targetBlockElemHeight + marginBottom / 2\n } else {\n // above targetBlockElem\n lineTop -= marginTop / 2\n }\n } else {\n lineTop += targetBlockElemHeight / 2\n }\n\n let targetElemTranslate2 = 0\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n targetElemTranslate2 = -TARGET_LINE_HALF_HEIGHT\n } else {\n targetElemTranslate2 = TARGET_LINE_HALF_HEIGHT\n }\n }\n\n const top = lineTop - anchorTop + targetElemTranslate2\n\n const left = TEXT_BOX_HORIZONTAL_PADDING - offsetLeft\n\n targetLineElem.style.width = `calc(${anchorWidth}px - ${offsetWidth})`\n targetLineElem.style.opacity = '.8'\n\n // if (DEBUG) {\n // //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, targetBlockElem, anchorElem)\n // }\n\n targetLineElem.style.transform = `translate(${left}px, calc(${top}px - ${'2px'}))`\n\n /**\n * Properly reset previous targetBlockElem styles\n */\n if (lastTargetBlock?.elem) {\n lastTargetBlock.elem.style.opacity = ''\n\n if (lastTargetBlock?.elem === targetBlockElem) {\n if (isBelow) {\n lastTargetBlock.elem.style.marginTop = ''\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n }\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n lastTargetBlock.elem.style.marginTop = ''\n }\n }\n\n animationTimer = 0\n return {\n isBelow,\n willStayInSamePosition,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"getNodeCloseToPoint.js","names":["$getNodeByKey","Point","Rect","getBoundingClientRectWithoutTransform","getCollapsedMargins","getTopLevelNodeKeys","Downward","Upward","Indeterminate","cache","props","result","isPointClose","previous","current","threshold","dx","x","dy","y","getNodeCloseToPoint","anchorElem","cache_threshold","editor","fuzzy","horizontalOffset","point","startIndex","useEdgeAsDefault","verbose","anchorElementRect","getBoundingClientRect","topLevelNodeKeys","closestBlockElem","blockElem","blockNode","distance","Infinity","foundAtIndex","isFoundNodeEmptyParagraph","getEditorState","read","firstNode","lastNode","getElementByKey","length","firstNodeRect","lastNodeRect","top","bottom","index","direction","key","elem","domRect","fromDOMRect","marginBottom","marginTop","rect","generateNewRect","left","right","isOnBottomSide","isOnTopSide","distanceFromPoint","getType","getTextContent","returnEmptyParagraphs"],"sources":["../../../../../src/lexical/plugins/handles/utils/getNodeCloseToPoint.ts"],"sourcesContent":["'use client'\nimport type { LexicalEditor, LexicalNode } from 'lexical'\n\nimport { $getNodeByKey } from 'lexical'\n\nimport { Point } from '../../../utils/point.js'\nimport { Rect } from '../../../utils/rect.js'\nimport { getBoundingClientRectWithoutTransform } from '../DraggableBlockPlugin/getBoundingRectWithoutTransform.js'\nimport { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\n\n// Directions\nconst Downward = 1\nconst Upward = -1\nconst Indeterminate = 0\n\ntype Props = {\n anchorElem: HTMLElement\n cache_threshold?: number\n editor: LexicalEditor\n /** fuzzy makes the search not exact. If no exact match found, find the closes node instead of returning null */\n fuzzy?: boolean\n horizontalOffset?: number\n point: Point\n /**\n * By default, empty paragraphs are not returned. Set this to true to return empty paragraphs. @default false\n */\n returnEmptyParagraphs?: boolean\n /**\n * The index to start searching from. It can be a considerable performance optimization to start searching from the index of the\n * previously found node, as the node is likely to be close to the next node.\n */\n startIndex?: number\n useEdgeAsDefault?: boolean\n verbose?: boolean\n}\n\ntype Output = {\n blockElem: HTMLElement | null\n blockNode: LexicalNode | null\n foundAtIndex: number\n isFoundNodeEmptyParagraph: boolean\n}\n\nconst cache = {\n props: null as Props | null,\n result: null as Output | null,\n}\n\nfunction isPointClose(previous: Point, current: Point, threshold: number = 20): boolean {\n const dx = previous.x - current.x\n const dy = previous.y - current.y\n return dx * dx + dy * dy <= threshold * threshold\n}\n\nexport function getNodeCloseToPoint(props: Props): Output {\n const {\n anchorElem,\n cache_threshold = 20,\n editor,\n fuzzy = false,\n horizontalOffset = 0,\n point: { x, y },\n startIndex = 0,\n useEdgeAsDefault = false,\n verbose = false,\n } = props\n\n // Use cache\n if (\n cache_threshold > 0 &&\n cache.props &&\n cache.result &&\n cache.props.fuzzy === props.fuzzy &&\n cache.props.horizontalOffset === props.horizontalOffset &&\n cache.props.useEdgeAsDefault === props.useEdgeAsDefault &&\n isPointClose(cache.props.point, props.point, cache_threshold)\n ) {\n return cache.result\n }\n\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const closestBlockElem: {\n blockElem: HTMLElement | null\n blockNode: LexicalNode | null\n distance: number\n foundAtIndex: number\n isFoundNodeEmptyParagraph: boolean\n } = {\n blockElem: null,\n blockNode: null,\n distance: Infinity,\n foundAtIndex: -1,\n isFoundNodeEmptyParagraph: false,\n }\n\n // Return null if matching block element is the first or last node\n editor.getEditorState().read(() => {\n if (useEdgeAsDefault) {\n const [firstNode, lastNode] = [\n editor.getElementByKey(topLevelNodeKeys[0]),\n editor.getElementByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1]),\n ]\n\n const [firstNodeRect, lastNodeRect] = [\n getBoundingClientRectWithoutTransform(firstNode),\n getBoundingClientRectWithoutTransform(lastNode),\n ]\n\n if (firstNodeRect && lastNodeRect) {\n if (y < firstNodeRect.top) {\n closestBlockElem.blockElem = firstNode\n closestBlockElem.distance = firstNodeRect.top - y\n closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[0])\n closestBlockElem.foundAtIndex = 0\n } else if (y > lastNodeRect.bottom) {\n closestBlockElem.distance = y - lastNodeRect.bottom\n closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1])\n closestBlockElem.blockElem = lastNode\n closestBlockElem.foundAtIndex = topLevelNodeKeys.length - 1\n }\n\n if (closestBlockElem?.blockElem) {\n return {\n blockElem: null,\n isFoundNodeEmptyParagraph: false,\n } as Output\n }\n }\n }\n\n // Find matching block element\n let index = startIndex\n let direction = Indeterminate\n\n while (index >= 0 && index < topLevelNodeKeys.length) {\n const key = topLevelNodeKeys[index]\n const elem = editor.getElementByKey(key)\n if (elem === null) {\n break\n }\n const point = new Point(x + horizontalOffset, y)\n //const domRect = Rect.fromDOM(elem)\n // Do not consider transform of blocks when calculating distance\n const domRect = Rect.fromDOMRect(getBoundingClientRectWithoutTransform(elem))\n\n const { marginBottom, marginTop } = getCollapsedMargins(elem)\n\n const rect = domRect.generateNewRect({\n bottom: domRect.bottom + marginBottom,\n left: anchorElementRect.left,\n right: anchorElementRect.right,\n top: domRect.top - marginTop,\n })\n\n const { distance, isOnBottomSide, isOnTopSide } = rect.distanceFromPoint(point)\n\n if (distance === 0) {\n closestBlockElem.blockElem = elem\n closestBlockElem.blockNode = $getNodeByKey(key)\n closestBlockElem.foundAtIndex = index\n closestBlockElem.distance = distance\n\n // Check if blockNode is an empty text node\n if (\n closestBlockElem.blockNode &&\n closestBlockElem.blockNode.getType() === 'paragraph' &&\n closestBlockElem.blockNode.getTextContent() === ''\n ) {\n if (!fuzzy && !props.returnEmptyParagraphs) {\n closestBlockElem.blockElem = null\n closestBlockElem.blockNode = null\n }\n\n closestBlockElem.isFoundNodeEmptyParagraph = true\n }\n break\n } else if (fuzzy) {\n if (distance < closestBlockElem.distance) {\n closestBlockElem.blockElem = elem\n closestBlockElem.blockNode = $getNodeByKey(key)\n closestBlockElem.distance = distance\n closestBlockElem.foundAtIndex = index\n }\n }\n\n if (direction === Indeterminate) {\n if (isOnTopSide) {\n direction = Upward\n } else if (isOnBottomSide) {\n direction = Downward\n } else {\n // stop search block element\n direction = Infinity\n }\n }\n\n index += direction\n }\n })\n\n // Store in cache before returning\n cache.props = props\n cache.result = {\n blockElem: closestBlockElem.blockElem,\n blockNode: closestBlockElem.blockNode,\n foundAtIndex: closestBlockElem.foundAtIndex,\n isFoundNodeEmptyParagraph: closestBlockElem.isFoundNodeEmptyParagraph,\n }\n\n return {\n blockElem: closestBlockElem.blockElem,\n blockNode: closestBlockElem.blockNode,\n foundAtIndex: closestBlockElem.foundAtIndex,\n isFoundNodeEmptyParagraph: closestBlockElem.isFoundNodeEmptyParagraph,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getNodeCloseToPoint.js","names":["$getNodeByKey","Point","Rect","getBoundingClientRectWithoutTransform","getCollapsedMargins","getTopLevelNodeKeys","Downward","Upward","Indeterminate","cache","props","result","isPointClose","previous","current","threshold","dx","x","dy","y","getNodeCloseToPoint","anchorElem","cache_threshold","editor","fuzzy","horizontalOffset","point","startIndex","useEdgeAsDefault","verbose","anchorElementRect","getBoundingClientRect","topLevelNodeKeys","closestBlockElem","blockElem","blockNode","distance","Infinity","foundAtIndex","isFoundNodeEmptyParagraph","getEditorState","read","firstNode","lastNode","getElementByKey","length","firstNodeRect","lastNodeRect","top","bottom","index","direction","key","elem","domRect","fromDOMRect","marginBottom","marginTop","rect","generateNewRect","left","right","isOnBottomSide","isOnTopSide","distanceFromPoint","getType","getTextContent","returnEmptyParagraphs"],"sources":["../../../../../src/lexical/plugins/handles/utils/getNodeCloseToPoint.ts"],"sourcesContent":["'use client'\nimport type { LexicalEditor, LexicalNode } from 'lexical'\n\nimport { $getNodeByKey } from 'lexical'\n\nimport { Point } from '../../../utils/point.js'\nimport { Rect } from '../../../utils/rect.js'\nimport { getBoundingClientRectWithoutTransform } from '../DraggableBlockPlugin/getBoundingRectWithoutTransform.js'\nimport { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\n\n// Directions\nconst Downward = 1\nconst Upward = -1\nconst Indeterminate = 0\n\ntype Props = {\n anchorElem: HTMLElement\n cache_threshold?: number\n editor: LexicalEditor\n /** fuzzy makes the search not exact. If no exact match found, find the closes node instead of returning null */\n fuzzy?: boolean\n horizontalOffset?: number\n point: Point\n /**\n * By default, empty paragraphs are not returned. Set this to true to return empty paragraphs. @default false\n */\n returnEmptyParagraphs?: boolean\n /**\n * The index to start searching from. It can be a considerable performance optimization to start searching from the index of the\n * previously found node, as the node is likely to be close to the next node.\n */\n startIndex?: number\n useEdgeAsDefault?: boolean\n verbose?: boolean\n}\n\ntype Output = {\n blockElem: HTMLElement | null\n blockNode: LexicalNode | null\n foundAtIndex: number\n isFoundNodeEmptyParagraph: boolean\n}\n\nconst cache = {\n props: null as null | Props,\n result: null as null | Output,\n}\n\nfunction isPointClose(previous: Point, current: Point, threshold: number = 20): boolean {\n const dx = previous.x - current.x\n const dy = previous.y - current.y\n return dx * dx + dy * dy <= threshold * threshold\n}\n\nexport function getNodeCloseToPoint(props: Props): Output {\n const {\n anchorElem,\n cache_threshold = 20,\n editor,\n fuzzy = false,\n horizontalOffset = 0,\n point: { x, y },\n startIndex = 0,\n useEdgeAsDefault = false,\n verbose = false,\n } = props\n\n // Use cache\n if (\n cache_threshold > 0 &&\n cache.props &&\n cache.result &&\n cache.props.fuzzy === props.fuzzy &&\n cache.props.horizontalOffset === props.horizontalOffset &&\n cache.props.useEdgeAsDefault === props.useEdgeAsDefault &&\n isPointClose(cache.props.point, props.point, cache_threshold)\n ) {\n return cache.result\n }\n\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const closestBlockElem: {\n blockElem: HTMLElement | null\n blockNode: LexicalNode | null\n distance: number\n foundAtIndex: number\n isFoundNodeEmptyParagraph: boolean\n } = {\n blockElem: null,\n blockNode: null,\n distance: Infinity,\n foundAtIndex: -1,\n isFoundNodeEmptyParagraph: false,\n }\n\n // Return null if matching block element is the first or last node\n editor.getEditorState().read(() => {\n if (useEdgeAsDefault) {\n const [firstNode, lastNode] = [\n editor.getElementByKey(topLevelNodeKeys[0]),\n editor.getElementByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1]),\n ]\n\n const [firstNodeRect, lastNodeRect] = [\n getBoundingClientRectWithoutTransform(firstNode),\n getBoundingClientRectWithoutTransform(lastNode),\n ]\n\n if (firstNodeRect && lastNodeRect) {\n if (y < firstNodeRect.top) {\n closestBlockElem.blockElem = firstNode\n closestBlockElem.distance = firstNodeRect.top - y\n closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[0])\n closestBlockElem.foundAtIndex = 0\n } else if (y > lastNodeRect.bottom) {\n closestBlockElem.distance = y - lastNodeRect.bottom\n closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1])\n closestBlockElem.blockElem = lastNode\n closestBlockElem.foundAtIndex = topLevelNodeKeys.length - 1\n }\n\n if (closestBlockElem?.blockElem) {\n return {\n blockElem: null,\n isFoundNodeEmptyParagraph: false,\n } as Output\n }\n }\n }\n\n // Find matching block element\n let index = startIndex\n let direction = Indeterminate\n\n while (index >= 0 && index < topLevelNodeKeys.length) {\n const key = topLevelNodeKeys[index]\n const elem = editor.getElementByKey(key)\n if (elem === null) {\n break\n }\n const point = new Point(x + horizontalOffset, y)\n //const domRect = Rect.fromDOM(elem)\n // Do not consider transform of blocks when calculating distance\n const domRect = Rect.fromDOMRect(getBoundingClientRectWithoutTransform(elem))\n\n const { marginBottom, marginTop } = getCollapsedMargins(elem)\n\n const rect = domRect.generateNewRect({\n bottom: domRect.bottom + marginBottom,\n left: anchorElementRect.left,\n right: anchorElementRect.right,\n top: domRect.top - marginTop,\n })\n\n const { distance, isOnBottomSide, isOnTopSide } = rect.distanceFromPoint(point)\n\n if (distance === 0) {\n closestBlockElem.blockElem = elem\n closestBlockElem.blockNode = $getNodeByKey(key)\n closestBlockElem.foundAtIndex = index\n closestBlockElem.distance = distance\n\n // Check if blockNode is an empty text node\n if (\n closestBlockElem.blockNode &&\n closestBlockElem.blockNode.getType() === 'paragraph' &&\n closestBlockElem.blockNode.getTextContent() === ''\n ) {\n if (!fuzzy && !props.returnEmptyParagraphs) {\n closestBlockElem.blockElem = null\n closestBlockElem.blockNode = null\n }\n\n closestBlockElem.isFoundNodeEmptyParagraph = true\n }\n break\n } else if (fuzzy) {\n if (distance < closestBlockElem.distance) {\n closestBlockElem.blockElem = elem\n closestBlockElem.blockNode = $getNodeByKey(key)\n closestBlockElem.distance = distance\n closestBlockElem.foundAtIndex = index\n }\n }\n\n if (direction === Indeterminate) {\n if (isOnTopSide) {\n direction = Upward\n } else if (isOnBottomSide) {\n direction = Downward\n } else {\n // stop search block element\n direction = Infinity\n }\n }\n\n index += direction\n }\n })\n\n // Store in cache before returning\n cache.props = props\n cache.result = {\n blockElem: closestBlockElem.blockElem,\n blockNode: closestBlockElem.blockNode,\n foundAtIndex: closestBlockElem.foundAtIndex,\n isFoundNodeEmptyParagraph: closestBlockElem.isFoundNodeEmptyParagraph,\n }\n\n return {\n blockElem: closestBlockElem.blockElem,\n blockNode: closestBlockElem.blockNode,\n foundAtIndex: closestBlockElem.foundAtIndex,\n isFoundNodeEmptyParagraph: closestBlockElem.isFoundNodeEmptyParagraph,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -32,8 +32,8 @@ export declare const NON_BREAKING_SPACE = "\u00A0";
32
32
  export declare const DOUBLE_LINE_BREAK = "\n\n";
33
33
  export declare const RTL_REGEX: RegExp;
34
34
  export declare const LTR_REGEX: RegExp;
35
- export declare const TEXT_TYPE_TO_FORMAT: Record<TextFormatType | string, number>;
36
- export declare const DETAIL_TYPE_TO_DETAIL: Record<TextDetailType | string, number>;
35
+ export declare const TEXT_TYPE_TO_FORMAT: Record<string | TextFormatType, number>;
36
+ export declare const DETAIL_TYPE_TO_DETAIL: Record<string | TextDetailType, number>;
37
37
  export declare const ELEMENT_TYPE_TO_FORMAT: Record<Exclude<ElementFormatType, ''>, number>;
38
38
  export declare const ELEMENT_FORMAT_TO_TYPE: Record<number, ElementFormatType>;
39
39
  export declare const TEXT_MODE_TO_TYPE: Record<TextModeType, 0 | 1 | 2>;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeFormat.d.ts","sourceRoot":"","sources":["../../../src/lexical/utils/nodeFormat.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9E,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,YAAY,CAAA;AAG3D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bb,CAAA;AAEV,eAAO,MAAM,iBAAiB,QAQL,CAAA;AAGzB,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAE1C,eAAO,MAAM,iBAAiB,SAAS,CAAA;AAYvC,eAAO,MAAM,SAAS,QAA8C,CAAA;AAEpE,eAAO,MAAM,SAAS,QAA8C,CAAA;AAEpE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,EAAE,MAAM,CASvE,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,EAAE,MAAM,CAGzE,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,MAAM,CAOjF,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAOpE,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAI7D,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAI1D,CAAA"}
1
+ {"version":3,"file":"nodeFormat.d.ts","sourceRoot":"","sources":["../../../src/lexical/utils/nodeFormat.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9E,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,YAAY,CAAA;AAG3D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bb,CAAA;AAEV,eAAO,MAAM,iBAAiB,QAQL,CAAA;AAGzB,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAE1C,eAAO,MAAM,iBAAiB,SAAS,CAAA;AAYvC,eAAO,MAAM,SAAS,QAA8C,CAAA;AAEpE,eAAO,MAAM,SAAS,QAA8C,CAAA;AAEpE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE,MAAM,CASvE,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE,MAAM,CAGzE,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,MAAM,CAOjF,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAOpE,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAI7D,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAI1D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"nodeFormat.js","names":["NodeFormat","DOM_ELEMENT_TYPE","DOM_TEXT_TYPE","NO_DIRTY_NODES","HAS_DIRTY_NODES","FULL_RECONCILE","IS_NORMAL","IS_TOKEN","IS_SEGMENTED","IS_INERT","IS_BOLD","IS_ITALIC","IS_STRIKETHROUGH","IS_UNDERLINE","IS_CODE","IS_SUBSCRIPT","IS_SUPERSCRIPT","IS_HIGHLIGHT","IS_DIRECTIONLESS","IS_UNMERGEABLE","IS_ALIGN_LEFT","IS_ALIGN_CENTER","IS_ALIGN_RIGHT","IS_ALIGN_JUSTIFY","IS_ALIGN_START","IS_ALIGN_END","IS_ALL_FORMATTING","NON_BREAKING_SPACE","DOUBLE_LINE_BREAK","RTL","LTR","RTL_REGEX","RegExp","LTR_REGEX","TEXT_TYPE_TO_FORMAT","bold","code","highlight","italic","strikethrough","subscript","superscript","underline","DETAIL_TYPE_TO_DETAIL","directionless","unmergeable","ELEMENT_TYPE_TO_FORMAT","center","end","justify","left","right","start","ELEMENT_FORMAT_TO_TYPE","TEXT_MODE_TO_TYPE","normal","segmented","token","TEXT_TYPE_TO_MODE"],"sources":["../../../src/lexical/utils/nodeFormat.ts"],"sourcesContent":["/* eslint-disable perfectionist/sort-objects */\n/* eslint-disable regexp/no-obscure-range */\n/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\n/* eslint-disable regexp/no-misleading-unicode-character */\n//This copy-and-pasted from lexical here: https://github.com/facebook/lexical/blob/c2ceee223f46543d12c574e62155e619f9a18a5d/packages/lexical/src/LexicalConstants.ts\n\nimport type { ElementFormatType, TextFormatType, TextModeType } from 'lexical'\nexport type TextDetailType = 'directionless' | 'unmergable'\n\n// DOM\nexport const NodeFormat = {\n DOM_ELEMENT_TYPE: 1,\n DOM_TEXT_TYPE: 3,\n // Reconciling\n NO_DIRTY_NODES: 0,\n HAS_DIRTY_NODES: 1,\n FULL_RECONCILE: 2,\n // Text node modes\n IS_NORMAL: 0,\n IS_TOKEN: 1,\n IS_SEGMENTED: 2,\n IS_INERT: 3,\n // Text node formatting\n IS_BOLD: 1,\n IS_ITALIC: 1 << 1,\n IS_STRIKETHROUGH: 1 << 2,\n IS_UNDERLINE: 1 << 3,\n IS_CODE: 1 << 4,\n IS_SUBSCRIPT: 1 << 5,\n IS_SUPERSCRIPT: 1 << 6,\n IS_HIGHLIGHT: 1 << 7,\n // Text node details\n IS_DIRECTIONLESS: 1,\n IS_UNMERGEABLE: 1 << 1,\n // Element node formatting\n IS_ALIGN_LEFT: 1,\n IS_ALIGN_CENTER: 2,\n IS_ALIGN_RIGHT: 3,\n IS_ALIGN_JUSTIFY: 4,\n IS_ALIGN_START: 5,\n IS_ALIGN_END: 6,\n} as const\n\nexport const IS_ALL_FORMATTING =\n NodeFormat.IS_BOLD |\n NodeFormat.IS_ITALIC |\n NodeFormat.IS_STRIKETHROUGH |\n NodeFormat.IS_UNDERLINE |\n NodeFormat.IS_CODE |\n NodeFormat.IS_SUBSCRIPT |\n NodeFormat.IS_SUPERSCRIPT |\n NodeFormat.IS_HIGHLIGHT\n\n// Reconciliation\nexport const NON_BREAKING_SPACE = '\\u00A0'\n\nexport const DOUBLE_LINE_BREAK = '\\n\\n'\n\n// For FF, we need to use a non-breaking space, or it gets composition\n// in a stuck state.\n\nconst RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n// eslint-disable-next-line no-misleading-character-class\nexport const RTL_REGEX = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\n// eslint-disable-next-line no-misleading-character-class\nexport const LTR_REGEX = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nexport const TEXT_TYPE_TO_FORMAT: Record<TextFormatType | string, number> = {\n bold: NodeFormat.IS_BOLD,\n code: NodeFormat.IS_CODE,\n highlight: NodeFormat.IS_HIGHLIGHT,\n italic: NodeFormat.IS_ITALIC,\n strikethrough: NodeFormat.IS_STRIKETHROUGH,\n subscript: NodeFormat.IS_SUBSCRIPT,\n superscript: NodeFormat.IS_SUPERSCRIPT,\n underline: NodeFormat.IS_UNDERLINE,\n}\n\nexport const DETAIL_TYPE_TO_DETAIL: Record<TextDetailType | string, number> = {\n directionless: NodeFormat.IS_DIRECTIONLESS,\n unmergeable: NodeFormat.IS_UNMERGEABLE,\n}\n\nexport const ELEMENT_TYPE_TO_FORMAT: Record<Exclude<ElementFormatType, ''>, number> = {\n center: NodeFormat.IS_ALIGN_CENTER,\n end: NodeFormat.IS_ALIGN_END,\n justify: NodeFormat.IS_ALIGN_JUSTIFY,\n left: NodeFormat.IS_ALIGN_LEFT,\n right: NodeFormat.IS_ALIGN_RIGHT,\n start: NodeFormat.IS_ALIGN_START,\n}\n\nexport const ELEMENT_FORMAT_TO_TYPE: Record<number, ElementFormatType> = {\n [NodeFormat.IS_ALIGN_CENTER]: 'center',\n [NodeFormat.IS_ALIGN_END]: 'end',\n [NodeFormat.IS_ALIGN_JUSTIFY]: 'justify',\n [NodeFormat.IS_ALIGN_LEFT]: 'left',\n [NodeFormat.IS_ALIGN_RIGHT]: 'right',\n [NodeFormat.IS_ALIGN_START]: 'start',\n}\n\nexport const TEXT_MODE_TO_TYPE: Record<TextModeType, 0 | 1 | 2> = {\n normal: NodeFormat.IS_NORMAL,\n segmented: NodeFormat.IS_SEGMENTED,\n token: NodeFormat.IS_TOKEN,\n}\n\nexport const TEXT_TYPE_TO_MODE: Record<number, TextModeType> = {\n [NodeFormat.IS_NORMAL]: 'normal',\n [NodeFormat.IS_SEGMENTED]: 'segmented',\n [NodeFormat.IS_TOKEN]: 'token',\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"nodeFormat.js","names":["NodeFormat","DOM_ELEMENT_TYPE","DOM_TEXT_TYPE","NO_DIRTY_NODES","HAS_DIRTY_NODES","FULL_RECONCILE","IS_NORMAL","IS_TOKEN","IS_SEGMENTED","IS_INERT","IS_BOLD","IS_ITALIC","IS_STRIKETHROUGH","IS_UNDERLINE","IS_CODE","IS_SUBSCRIPT","IS_SUPERSCRIPT","IS_HIGHLIGHT","IS_DIRECTIONLESS","IS_UNMERGEABLE","IS_ALIGN_LEFT","IS_ALIGN_CENTER","IS_ALIGN_RIGHT","IS_ALIGN_JUSTIFY","IS_ALIGN_START","IS_ALIGN_END","IS_ALL_FORMATTING","NON_BREAKING_SPACE","DOUBLE_LINE_BREAK","RTL","LTR","RTL_REGEX","RegExp","LTR_REGEX","TEXT_TYPE_TO_FORMAT","bold","code","highlight","italic","strikethrough","subscript","superscript","underline","DETAIL_TYPE_TO_DETAIL","directionless","unmergeable","ELEMENT_TYPE_TO_FORMAT","center","end","justify","left","right","start","ELEMENT_FORMAT_TO_TYPE","TEXT_MODE_TO_TYPE","normal","segmented","token","TEXT_TYPE_TO_MODE"],"sources":["../../../src/lexical/utils/nodeFormat.ts"],"sourcesContent":["/* eslint-disable perfectionist/sort-objects */\n/* eslint-disable regexp/no-obscure-range */\n/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\n/* eslint-disable regexp/no-misleading-unicode-character */\n//This copy-and-pasted from lexical here: https://github.com/facebook/lexical/blob/c2ceee223f46543d12c574e62155e619f9a18a5d/packages/lexical/src/LexicalConstants.ts\n\nimport type { ElementFormatType, TextFormatType, TextModeType } from 'lexical'\nexport type TextDetailType = 'directionless' | 'unmergable'\n\n// DOM\nexport const NodeFormat = {\n DOM_ELEMENT_TYPE: 1,\n DOM_TEXT_TYPE: 3,\n // Reconciling\n NO_DIRTY_NODES: 0,\n HAS_DIRTY_NODES: 1,\n FULL_RECONCILE: 2,\n // Text node modes\n IS_NORMAL: 0,\n IS_TOKEN: 1,\n IS_SEGMENTED: 2,\n IS_INERT: 3,\n // Text node formatting\n IS_BOLD: 1,\n IS_ITALIC: 1 << 1,\n IS_STRIKETHROUGH: 1 << 2,\n IS_UNDERLINE: 1 << 3,\n IS_CODE: 1 << 4,\n IS_SUBSCRIPT: 1 << 5,\n IS_SUPERSCRIPT: 1 << 6,\n IS_HIGHLIGHT: 1 << 7,\n // Text node details\n IS_DIRECTIONLESS: 1,\n IS_UNMERGEABLE: 1 << 1,\n // Element node formatting\n IS_ALIGN_LEFT: 1,\n IS_ALIGN_CENTER: 2,\n IS_ALIGN_RIGHT: 3,\n IS_ALIGN_JUSTIFY: 4,\n IS_ALIGN_START: 5,\n IS_ALIGN_END: 6,\n} as const\n\nexport const IS_ALL_FORMATTING =\n NodeFormat.IS_BOLD |\n NodeFormat.IS_ITALIC |\n NodeFormat.IS_STRIKETHROUGH |\n NodeFormat.IS_UNDERLINE |\n NodeFormat.IS_CODE |\n NodeFormat.IS_SUBSCRIPT |\n NodeFormat.IS_SUPERSCRIPT |\n NodeFormat.IS_HIGHLIGHT\n\n// Reconciliation\nexport const NON_BREAKING_SPACE = '\\u00A0'\n\nexport const DOUBLE_LINE_BREAK = '\\n\\n'\n\n// For FF, we need to use a non-breaking space, or it gets composition\n// in a stuck state.\n\nconst RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n// eslint-disable-next-line no-misleading-character-class\nexport const RTL_REGEX = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\n// eslint-disable-next-line no-misleading-character-class\nexport const LTR_REGEX = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nexport const TEXT_TYPE_TO_FORMAT: Record<string | TextFormatType, number> = {\n bold: NodeFormat.IS_BOLD,\n code: NodeFormat.IS_CODE,\n highlight: NodeFormat.IS_HIGHLIGHT,\n italic: NodeFormat.IS_ITALIC,\n strikethrough: NodeFormat.IS_STRIKETHROUGH,\n subscript: NodeFormat.IS_SUBSCRIPT,\n superscript: NodeFormat.IS_SUPERSCRIPT,\n underline: NodeFormat.IS_UNDERLINE,\n}\n\nexport const DETAIL_TYPE_TO_DETAIL: Record<string | TextDetailType, number> = {\n directionless: NodeFormat.IS_DIRECTIONLESS,\n unmergeable: NodeFormat.IS_UNMERGEABLE,\n}\n\nexport const ELEMENT_TYPE_TO_FORMAT: Record<Exclude<ElementFormatType, ''>, number> = {\n center: NodeFormat.IS_ALIGN_CENTER,\n end: NodeFormat.IS_ALIGN_END,\n justify: NodeFormat.IS_ALIGN_JUSTIFY,\n left: NodeFormat.IS_ALIGN_LEFT,\n right: NodeFormat.IS_ALIGN_RIGHT,\n start: NodeFormat.IS_ALIGN_START,\n}\n\nexport const ELEMENT_FORMAT_TO_TYPE: Record<number, ElementFormatType> = {\n [NodeFormat.IS_ALIGN_CENTER]: 'center',\n [NodeFormat.IS_ALIGN_END]: 'end',\n [NodeFormat.IS_ALIGN_JUSTIFY]: 'justify',\n [NodeFormat.IS_ALIGN_LEFT]: 'left',\n [NodeFormat.IS_ALIGN_RIGHT]: 'right',\n [NodeFormat.IS_ALIGN_START]: 'start',\n}\n\nexport const TEXT_MODE_TO_TYPE: Record<TextModeType, 0 | 1 | 2> = {\n normal: NodeFormat.IS_NORMAL,\n segmented: NodeFormat.IS_SEGMENTED,\n token: NodeFormat.IS_TOKEN,\n}\n\nexport const TEXT_TYPE_TO_MODE: Record<number, TextModeType> = {\n [NodeFormat.IS_NORMAL]: 'normal',\n [NodeFormat.IS_SEGMENTED]: 'segmented',\n [NodeFormat.IS_TOKEN]: 'token',\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/lexical/utils/rect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAW,MAAM,YAAY,CAAA;AAEhD,UAAU,mBAAmB;IAC3B,MAAM,EAAE;QACN,cAAc,EAAE,OAAO,CAAA;QACvB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,OAAO,CAAA;QACtB,WAAW,EAAE,OAAO,CAAA;KACrB,CAAA;IACD,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAE/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEjB,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWpE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAKtC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK1C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/E,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI;IAMpD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,mBAAmB;IAE9C,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO;IAqCrD,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG;QACtC,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,OAAO,CAAA;QACvB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,OAAO,CAAA;QACtB,WAAW,EAAE,OAAO,CAAA;KACrB;IA2CM,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO;IAMnD,eAAe,CAAC,EACrB,MAAoB,EACpB,IAAgB,EAChB,KAAkB,EAClB,GAAc,GACf;;;;;KAAA,GAAG,IAAI;IAID,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAU1C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;CACF"}
1
+ {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/lexical/utils/rect.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAEhD,UAAU,mBAAmB;IAC3B,MAAM,EAAE;QACN,cAAc,EAAE,OAAO,CAAA;QACvB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,OAAO,CAAA;QACtB,WAAW,EAAE,OAAO,CAAA;KACrB,CAAA;IACD,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAE/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEjB,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWpE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAKtC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK1C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/E,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI;IAMpD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,mBAAmB;IAE9C,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO;IAqCrD,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG;QACtC,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,OAAO,CAAA;QACvB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,OAAO,CAAA;QACtB,WAAW,EAAE,OAAO,CAAA;KACrB;IA2CM,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO;IAMnD,eAAe,CAAC,EACrB,MAAoB,EACpB,IAAgB,EAChB,KAAkB,EAClB,GAAc,GACf;;;;;KAAA,GAAG,IAAI;IAID,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAU1C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"rect.js","names":["isPoint","Rect","_bottom","_left","_right","_top","constructor","left","top","right","bottom","physicTop","physicBottom","physicLeft","physicRight","fromDOM","dom","height","width","getBoundingClientRect","fromLWTH","fromDOMRect","domRect","fromLTRB","fromPoints","startPoint","endPoint","x","y","contains","target","isOnTopSide","isOnBottomSide","isOnLeftSide","isOnRightSide","result","reason","distanceFromPoint","point","containsResult","distance","dx","dy","Math","sqrt","equals","generateNewRect","intersectsWith","rect","h1","x1","y1","w1","h2","x2","y2","w2","maxX","maxY","minX","minY","abs"],"sources":["../../../src/lexical/utils/rect.ts"],"sourcesContent":["'use client'\nimport { type Point, isPoint } from './point.js'\n\ninterface ContainsPointReturn {\n reason: {\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n }\n result: boolean\n}\n\nexport class Rect {\n private readonly _bottom: number\n\n private readonly _left: number\n\n private readonly _right: number\n\n private readonly _top: number\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top]\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left]\n\n this._top = physicTop\n this._right = physicRight\n this._left = physicLeft\n this._bottom = physicBottom\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { height, left, top, width } = dom.getBoundingClientRect()\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromDOMRect(domRect: DOMRect): Rect {\n const { height, left, top, width } = domRect\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height)\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { x: left, y: top } = startPoint\n const { x: right, y: bottom } = endPoint\n return Rect.fromLTRB(left, top, right, bottom)\n }\n\n public contains({ x, y }: Point): ContainsPointReturn\n\n public contains({ bottom, left, right, top }: Rect): boolean\n\n public contains(target: Point | Rect): ContainsPointReturn | boolean {\n if (isPoint(target)) {\n const { x, y } = target\n\n const isOnTopSide = y < this._top\n const isOnBottomSide = y > this._bottom\n const isOnLeftSide = x < this._left\n const isOnRightSide = x > this._right\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide,\n },\n result,\n }\n }\n const { bottom, left, right, top } = target\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n )\n }\n\n public distanceFromPoint(point: Point): {\n distance: number\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n } {\n const containsResult = this.contains(point)\n if (containsResult.result) {\n return {\n distance: 0,\n isOnBottomSide: containsResult.reason.isOnBottomSide,\n isOnLeftSide: containsResult.reason.isOnLeftSide,\n isOnRightSide: containsResult.reason.isOnRightSide,\n isOnTopSide: containsResult.reason.isOnTopSide,\n }\n }\n\n let dx = 0 // Horizontal distance to the closest edge\n let dy = 0 // Vertical distance to the closest edge\n\n // If the point is to the left of the rectangle\n if (point.x < this._left) {\n dx = this._left - point.x\n }\n // If the point is to the right of the rectangle\n else if (point.x > this._right) {\n dx = point.x - this._right\n }\n\n // If the point is above the rectangle\n if (point.y < this._top) {\n dy = this._top - point.y\n }\n // If the point is below the rectangle\n else if (point.y > this._bottom) {\n dy = point.y - this._bottom\n }\n\n // Use the Pythagorean theorem to calculate the distance\n return {\n distance: Math.sqrt(dx * dx + dy * dy),\n isOnBottomSide: point.y > this._bottom,\n isOnLeftSide: point.x < this._left,\n isOnRightSide: point.x > this._right,\n isOnTopSide: point.y < this._top,\n }\n }\n\n public equals({ bottom, left, right, top }: Rect): boolean {\n return (\n top === this._top && bottom === this._bottom && left === this._left && right === this._right\n )\n }\n\n public generateNewRect({\n bottom = this.bottom,\n left = this.left,\n right = this.right,\n top = this.top,\n }): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { height: h1, left: x1, top: y1, width: w1 } = rect\n const { height: h2, left: x2, top: y2, width: w2 } = this\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2\n const minX = x1 <= x2 ? x1 : x2\n const minY = y1 <= y2 ? y1 : y2\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2\n }\n\n get bottom(): number {\n return this._bottom\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top)\n }\n\n get left(): number {\n return this._left\n }\n\n get right(): number {\n return this._right\n }\n\n get top(): number {\n return this._top\n }\n\n get width(): number {\n return Math.abs(this._left - this._right)\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"rect.js","names":["isPoint","Rect","_bottom","_left","_right","_top","constructor","left","top","right","bottom","physicTop","physicBottom","physicLeft","physicRight","fromDOM","dom","height","width","getBoundingClientRect","fromLWTH","fromDOMRect","domRect","fromLTRB","fromPoints","startPoint","endPoint","x","y","contains","target","isOnTopSide","isOnBottomSide","isOnLeftSide","isOnRightSide","result","reason","distanceFromPoint","point","containsResult","distance","dx","dy","Math","sqrt","equals","generateNewRect","intersectsWith","rect","h1","x1","y1","w1","h2","x2","y2","w2","maxX","maxY","minX","minY","abs"],"sources":["../../../src/lexical/utils/rect.ts"],"sourcesContent":["'use client'\nimport { isPoint, type Point } from './point.js'\n\ninterface ContainsPointReturn {\n reason: {\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n }\n result: boolean\n}\n\nexport class Rect {\n private readonly _bottom: number\n\n private readonly _left: number\n\n private readonly _right: number\n\n private readonly _top: number\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top]\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left]\n\n this._top = physicTop\n this._right = physicRight\n this._left = physicLeft\n this._bottom = physicBottom\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { height, left, top, width } = dom.getBoundingClientRect()\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromDOMRect(domRect: DOMRect): Rect {\n const { height, left, top, width } = domRect\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height)\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { x: left, y: top } = startPoint\n const { x: right, y: bottom } = endPoint\n return Rect.fromLTRB(left, top, right, bottom)\n }\n\n public contains({ x, y }: Point): ContainsPointReturn\n\n public contains({ bottom, left, right, top }: Rect): boolean\n\n public contains(target: Point | Rect): boolean | ContainsPointReturn {\n if (isPoint(target)) {\n const { x, y } = target\n\n const isOnTopSide = y < this._top\n const isOnBottomSide = y > this._bottom\n const isOnLeftSide = x < this._left\n const isOnRightSide = x > this._right\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide,\n },\n result,\n }\n }\n const { bottom, left, right, top } = target\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n )\n }\n\n public distanceFromPoint(point: Point): {\n distance: number\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n } {\n const containsResult = this.contains(point)\n if (containsResult.result) {\n return {\n distance: 0,\n isOnBottomSide: containsResult.reason.isOnBottomSide,\n isOnLeftSide: containsResult.reason.isOnLeftSide,\n isOnRightSide: containsResult.reason.isOnRightSide,\n isOnTopSide: containsResult.reason.isOnTopSide,\n }\n }\n\n let dx = 0 // Horizontal distance to the closest edge\n let dy = 0 // Vertical distance to the closest edge\n\n // If the point is to the left of the rectangle\n if (point.x < this._left) {\n dx = this._left - point.x\n }\n // If the point is to the right of the rectangle\n else if (point.x > this._right) {\n dx = point.x - this._right\n }\n\n // If the point is above the rectangle\n if (point.y < this._top) {\n dy = this._top - point.y\n }\n // If the point is below the rectangle\n else if (point.y > this._bottom) {\n dy = point.y - this._bottom\n }\n\n // Use the Pythagorean theorem to calculate the distance\n return {\n distance: Math.sqrt(dx * dx + dy * dy),\n isOnBottomSide: point.y > this._bottom,\n isOnLeftSide: point.x < this._left,\n isOnRightSide: point.x > this._right,\n isOnTopSide: point.y < this._top,\n }\n }\n\n public equals({ bottom, left, right, top }: Rect): boolean {\n return (\n top === this._top && bottom === this._bottom && left === this._left && right === this._right\n )\n }\n\n public generateNewRect({\n bottom = this.bottom,\n left = this.left,\n right = this.right,\n top = this.top,\n }): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { height: h1, left: x1, top: y1, width: w1 } = rect\n const { height: h2, left: x2, top: y2, width: w2 } = this\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2\n const minX = x1 <= x2 ? x1 : x2\n const minY = y1 <= y2 ? y1 : y2\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2\n }\n\n get bottom(): number {\n return this._bottom\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top)\n }\n\n get left(): number {\n return this._left\n }\n\n get right(): number {\n return this._right\n }\n\n get top(): number {\n return this._top\n }\n\n get width(): number {\n return Math.abs(this._left - this._right)\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { EditorConfig as LexicalEditorConfig, SerializedEditorState } from 'lexical';
2
2
  import type { RichTextAdapter, RichTextFieldProps, SanitizedConfig } from 'payload';
3
- import type React from 'react';
3
+ import type { BaseClientFeatureProps, FeatureProviderProviderClient } from './features/typesClient.js';
4
4
  import type { FeatureProviderServer } from './features/typesServer.js';
5
5
  import type { SanitizedServerEditorConfig } from './lexical/config/types.js';
6
6
  export type LexicalFieldAdminProps = {
@@ -61,8 +61,7 @@ export type AdapterProps = {
61
61
  editorConfig: SanitizedServerEditorConfig;
62
62
  };
63
63
  export type GeneratedFeatureProviderComponent = {
64
- ClientFeature: React.ReactNode;
65
- key: string;
66
- order: number;
64
+ clientFeature: FeatureProviderProviderClient<any, any>;
65
+ clientFeatureProps: BaseClientFeatureProps<object>;
67
66
  };
68
67
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACzF,OAAO,KAAK,EAGV,eAAe,EACf,kBAAkB,EAClB,eAAe,EAChB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAE5E,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,sBAAsB,CAAA;IAC9B,QAAQ,CAAC,EACL,CAAC,CAAC,EACA,eAAe,EACf,YAAY,GACb,EAAE;QACD;;;;;;;;;;WAUG;QACH,eAAe,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;QACvD;;;;;;;;;;;WAWG;QACH,YAAY,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;KACrD,KAAK,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAC7C,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;IAC1C,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,2BAA2B,CAAA;IACzC,QAAQ,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;CACjD,GAAG,eAAe,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;AAExD,MAAM,MAAM,8BAA8B;AACxC;;GAEG;AACH,CAAC,EACC,MAAM,EACN,MAAM,EACN,iBAAiB,GAClB,EAAE;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;CAC3B,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAA;AAEvC,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,mBAAmB,EAAE,mBAAmB,CAAA;CACzC,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,2BAA2B,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEnF,OAAO,KAAK,EACV,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAE5E,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,sBAAsB,CAAA;IAC9B,QAAQ,CAAC,EACL,CAAC,CAAC,EACA,eAAe,EACf,YAAY,GACb,EAAE;QACD;;;;;;;;;;WAUG;QACH,eAAe,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;QACvD;;;;;;;;;;;WAWG;QACH,YAAY,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;KACrD,KAAK,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAC7C,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;IAC1C,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,2BAA2B,CAAA;IACzC,QAAQ,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;CACjD,GAAG,eAAe,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;AAExD,MAAM,MAAM,8BAA8B;AACxC;;GAEG;AACH,CAAC,EACC,MAAM,EACN,MAAM,EACN,iBAAiB,GAClB,EAAE;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;CAC3B,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAA;AAEvC,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,mBAAmB,EAAE,mBAAmB,CAAA;CACzC,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,2BAA2B,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,aAAa,EAAE,6BAA6B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACtD,kBAAkB,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;CACnD,CAAA"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { EditorConfig as LexicalEditorConfig, SerializedEditorState } from 'lexical'\nimport type {\n FieldPermissions,\n FieldTypes,\n RichTextAdapter,\n RichTextFieldProps,\n SanitizedConfig,\n} from 'payload'\nimport type React from 'react'\n\nimport type { FeatureProviderServer } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\n\nexport type LexicalFieldAdminProps = {\n /**\n * Controls if the gutter (padding to the left & gray vertical line) should be hidden. @default false\n */\n hideGutter?: boolean\n}\n\nexport type LexicalEditorProps = {\n admin?: LexicalFieldAdminProps\n features?:\n | (({\n defaultFeatures,\n rootFeatures,\n }: {\n /**\n * This opinionated array contains all \"recommended\" default features.\n *\n * @Example\n *\n * ```ts\n * editor: lexicalEditor({\n * features: ({ defaultFeatures }) => [...defaultFeatures, FixedToolbarFeature()],\n * })\n * ```\n */\n defaultFeatures: FeatureProviderServer<any, any, any>[]\n /**\n * This array contains all features that are enabled in the root richText editor (the one defined in the payload.config.ts).\n * If this field is the root richText editor, or if the root richText editor is not a lexical editor, this array will be empty.\n *\n * @Example\n *\n * ```ts\n * editor: lexicalEditor({\n * features: ({ rootFeatures }) => [...rootFeatures, FixedToolbarFeature()],\n * })\n * ```\n */\n rootFeatures: FeatureProviderServer<any, any, any>[]\n }) => FeatureProviderServer<any, any, any>[])\n | FeatureProviderServer<any, any, any>[]\n lexical?: LexicalEditorConfig\n}\n\nexport type LexicalRichTextAdapter = {\n editorConfig: SanitizedServerEditorConfig\n features: FeatureProviderServer<any, any, any>[]\n} & RichTextAdapter<SerializedEditorState, AdapterProps>\n\nexport type LexicalRichTextAdapterProvider =\n /**\n * This is being called during the payload sanitization process\n */\n ({\n config,\n isRoot,\n parentIsLocalized,\n }: {\n config: SanitizedConfig\n isRoot?: boolean\n parentIsLocalized: boolean\n }) => Promise<LexicalRichTextAdapter>\n\nexport type LexicalRichTextFieldProps = {\n admin: LexicalFieldAdminProps\n lexicalEditorConfig: LexicalEditorConfig\n} & RichTextFieldProps<SerializedEditorState, AdapterProps, object>\n\nexport type AdapterProps = {\n editorConfig: SanitizedServerEditorConfig\n}\n\nexport type GeneratedFeatureProviderComponent = {\n ClientFeature: React.ReactNode\n key: string\n order: number\n}\n"],"mappings":"AAqFA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { EditorConfig as LexicalEditorConfig, SerializedEditorState } from 'lexical'\nimport type { RichTextAdapter, RichTextFieldProps, SanitizedConfig } from 'payload'\n\nimport type {\n BaseClientFeatureProps,\n FeatureProviderProviderClient,\n} from './features/typesClient.js'\nimport type { FeatureProviderServer } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\n\nexport type LexicalFieldAdminProps = {\n /**\n * Controls if the gutter (padding to the left & gray vertical line) should be hidden. @default false\n */\n hideGutter?: boolean\n}\n\nexport type LexicalEditorProps = {\n admin?: LexicalFieldAdminProps\n features?:\n | (({\n defaultFeatures,\n rootFeatures,\n }: {\n /**\n * This opinionated array contains all \"recommended\" default features.\n *\n * @Example\n *\n * ```ts\n * editor: lexicalEditor({\n * features: ({ defaultFeatures }) => [...defaultFeatures, FixedToolbarFeature()],\n * })\n * ```\n */\n defaultFeatures: FeatureProviderServer<any, any, any>[]\n /**\n * This array contains all features that are enabled in the root richText editor (the one defined in the payload.config.ts).\n * If this field is the root richText editor, or if the root richText editor is not a lexical editor, this array will be empty.\n *\n * @Example\n *\n * ```ts\n * editor: lexicalEditor({\n * features: ({ rootFeatures }) => [...rootFeatures, FixedToolbarFeature()],\n * })\n * ```\n */\n rootFeatures: FeatureProviderServer<any, any, any>[]\n }) => FeatureProviderServer<any, any, any>[])\n | FeatureProviderServer<any, any, any>[]\n lexical?: LexicalEditorConfig\n}\n\nexport type LexicalRichTextAdapter = {\n editorConfig: SanitizedServerEditorConfig\n features: FeatureProviderServer<any, any, any>[]\n} & RichTextAdapter<SerializedEditorState, AdapterProps>\n\nexport type LexicalRichTextAdapterProvider =\n /**\n * This is being called during the payload sanitization process\n */\n ({\n config,\n isRoot,\n parentIsLocalized,\n }: {\n config: SanitizedConfig\n isRoot?: boolean\n parentIsLocalized: boolean\n }) => Promise<LexicalRichTextAdapter>\n\nexport type LexicalRichTextFieldProps = {\n admin: LexicalFieldAdminProps\n lexicalEditorConfig: LexicalEditorConfig\n} & RichTextFieldProps<SerializedEditorState, AdapterProps, object>\n\nexport type AdapterProps = {\n editorConfig: SanitizedServerEditorConfig\n}\n\nexport type GeneratedFeatureProviderComponent = {\n clientFeature: FeatureProviderProviderClient<any, any>\n clientFeatureProps: BaseClientFeatureProps<object>\n}\n"],"mappings":"AAkFA","ignoreList":[]}
@@ -1,13 +1,11 @@
1
- import type React from 'react';
2
- import type { ClientComponentProps, ClientFeature, ClientFeatureProviderMap, ResolvedClientFeatureMap } from '../features/typesClient.js';
1
+ import type { BaseClientFeatureProps, ClientFeature, ClientFeatureProviderMap, FeatureProviderProviderClient, ResolvedClientFeatureMap } from '../features/typesClient.js';
3
2
  import type { ClientEditorConfig } from '../lexical/config/types.js';
4
3
  export type CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps> = ((props: {
5
- clientFunctions: Record<string, any>;
6
4
  /** unSanitizedEditorConfig.features, but mapped */
7
5
  featureProviderMap: ClientFeatureProviderMap;
8
- props: ClientComponentProps<UnSanitizedClientProps>;
6
+ props: BaseClientFeatureProps<UnSanitizedClientProps>;
9
7
  resolvedFeatures: ResolvedClientFeatureMap;
10
8
  unSanitizedEditorConfig: ClientEditorConfig;
11
9
  }) => ClientFeature<ClientProps>) | Omit<ClientFeature<ClientProps>, 'sanitizedClientFeatureProps'>;
12
- export declare const createClientFeature: <UnSanitizedClientProps = undefined, ClientProps = UnSanitizedClientProps>(args: CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps>) => React.FC<ClientComponentProps<ClientProps>>;
10
+ export declare const createClientFeature: <UnSanitizedClientProps = undefined, ClientProps = UnSanitizedClientProps>(args: CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps>) => FeatureProviderProviderClient<UnSanitizedClientProps, ClientProps>;
13
11
  //# sourceMappingURL=createClientFeature.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createClientFeature.d.ts","sourceRoot":"","sources":["../../src/utilities/createClientFeature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EAGxB,wBAAwB,EACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAIpE,MAAM,MAAM,uBAAuB,CAAC,sBAAsB,EAAE,WAAW,IACnE,CAAC,CAAC,KAAK,EAAE;IACP,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,mDAAmD;IACnD,kBAAkB,EAAE,wBAAwB,CAAA;IAC5C,KAAK,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,CAAA;IAEnD,gBAAgB,EAAE,wBAAwB,CAAA;IAE1C,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC,GACjC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,6BAA6B,CAAC,CAAA;AAEnE,eAAO,MAAM,mBAAmB,EAAE,CAChC,sBAAsB,GAAG,SAAS,EAClC,WAAW,GAAG,sBAAsB,EAEpC,IAAI,EAAE,uBAAuB,CAAC,sBAAsB,EAAE,WAAW,CAAC,KAC/D,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,WAAW,CAAC,CA2C9C,CAAA"}
1
+ {"version":3,"file":"createClientFeature.d.ts","sourceRoot":"","sources":["../../src/utilities/createClientFeature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EAExB,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAEpE,MAAM,MAAM,uBAAuB,CAAC,sBAAsB,EAAE,WAAW,IACnE,CAAC,CAAC,KAAK,EAAE;IACP,mDAAmD;IACnD,kBAAkB,EAAE,wBAAwB,CAAA;IAC5C,KAAK,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAA;IAErD,gBAAgB,EAAE,wBAAwB,CAAA;IAE1C,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC,GACjC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,6BAA6B,CAAC,CAAA;AAEnE,eAAO,MAAM,mBAAmB,EAAE,CAChC,sBAAsB,GAAG,SAAS,EAClC,WAAW,GAAG,sBAAsB,EAEpC,IAAI,EAAE,uBAAuB,CAAC,sBAAsB,EAAE,WAAW,CAAC,KAC/D,6BAA6B,CAAC,sBAAsB,EAAE,WAAW,CAyCrE,CAAA"}
@@ -1,4 +1,3 @@
1
- import { createClientComponent } from '../features/createClientComponent.js';
2
1
  export const createClientFeature = feature => {
3
2
  const featureProviderProvideClient = props => {
4
3
  const featureProviderClient = {
@@ -6,13 +5,11 @@ export const createClientFeature = feature => {
6
5
  };
7
6
  if (typeof feature === 'function') {
8
7
  featureProviderClient.feature = ({
9
- clientFunctions,
10
8
  featureProviderMap,
11
9
  resolvedFeatures,
12
10
  unSanitizedEditorConfig
13
11
  }) => {
14
12
  const toReturn = feature({
15
- clientFunctions,
16
13
  featureProviderMap,
17
14
  props,
18
15
  resolvedFeatures,
@@ -39,6 +36,6 @@ export const createClientFeature = feature => {
39
36
  }
40
37
  return featureProviderClient;
41
38
  };
42
- return createClientComponent(featureProviderProvideClient);
39
+ return featureProviderProvideClient;
43
40
  };
44
41
  //# sourceMappingURL=createClientFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createClientFeature.js","names":["createClientComponent","createClientFeature","feature","featureProviderProvideClient","props","featureProviderClient","clientFeatureProps","clientFunctions","featureProviderMap","resolvedFeatures","unSanitizedEditorConfig","toReturn","sanitizedClientFeatureProps","newFeature"],"sources":["../../src/utilities/createClientFeature.ts"],"sourcesContent":["import type React from 'react'\n\nimport type {\n ClientComponentProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n ResolvedClientFeatureMap,\n} from '../features/typesClient.js'\nimport type { ClientEditorConfig } from '../lexical/config/types.js'\n\nimport { createClientComponent } from '../features/createClientComponent.js'\n\nexport type CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps> =\n | ((props: {\n clientFunctions: Record<string, any>\n /** unSanitizedEditorConfig.features, but mapped */\n featureProviderMap: ClientFeatureProviderMap\n props: ClientComponentProps<UnSanitizedClientProps>\n // other resolved features, which have been loaded before this one. All features declared in 'dependencies' should be available here\n resolvedFeatures: ResolvedClientFeatureMap\n // unSanitized EditorConfig,\n unSanitizedEditorConfig: ClientEditorConfig\n }) => ClientFeature<ClientProps>)\n | Omit<ClientFeature<ClientProps>, 'sanitizedClientFeatureProps'>\n\nexport const createClientFeature: <\n UnSanitizedClientProps = undefined,\n ClientProps = UnSanitizedClientProps,\n>(\n args: CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps>,\n) => React.FC<ClientComponentProps<ClientProps>> = (feature) => {\n const featureProviderProvideClient: FeatureProviderProviderClient<any, any> = (props) => {\n const featureProviderClient: Partial<FeatureProviderClient<any, any>> = {\n clientFeatureProps: props,\n }\n\n if (typeof feature === 'function') {\n featureProviderClient.feature = ({\n clientFunctions,\n featureProviderMap,\n resolvedFeatures,\n unSanitizedEditorConfig,\n }) => {\n const toReturn = feature({\n clientFunctions,\n featureProviderMap,\n props,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n\n if (toReturn.sanitizedClientFeatureProps === null) {\n toReturn.sanitizedClientFeatureProps = props\n }\n\n return toReturn\n }\n } else {\n // We have to spread feature here! Otherwise, if the arg of createClientFeature is not a function, and 2\n // richText editors have the same feature (even if both call it, e.g. both call UploadFeature()),\n // the second richText editor here will override sanitizedClientFeatureProps of the first feature, as both richText\n // editor features share the same reference to the feature object.\n // Example: richText editor 1 and 2 both have UploadFeature. richText editor 1 calls UploadFeature() with custom fields,\n // richText editor 2 calls UploadFeature() with NO custom fields. If we don't spread feature here, richText editor 1\n // will not have any custom fields, as richText editor 2 will override the feature object.\n const newFeature: ClientFeature<any> = { ...feature }\n newFeature.sanitizedClientFeatureProps = props\n featureProviderClient.feature = newFeature\n }\n return featureProviderClient as FeatureProviderClient<any, any>\n }\n\n return createClientComponent(featureProviderProvideClient)\n}\n"],"mappings":"AAYA,SAASA,qBAAqB,QAAQ;AAetC,OAAO,MAAMC,mBAAA,GAKuCC,OAAA;EAClD,MAAMC,4BAAA,GAAyEC,KAAA;IAC7E,MAAMC,qBAAA,GAAkE;MACtEC,kBAAA,EAAoBF;IACtB;IAEA,IAAI,OAAOF,OAAA,KAAY,YAAY;MACjCG,qBAAA,CAAsBH,OAAO,GAAG,CAAC;QAC/BK,eAAe;QACfC,kBAAkB;QAClBC,gBAAgB;QAChBC;MAAuB,CACxB;QACC,MAAMC,QAAA,GAAWT,OAAA,CAAQ;UACvBK,eAAA;UACAC,kBAAA;UACAJ,KAAA;UACAK,gBAAA;UACAC;QACF;QAEA,IAAIC,QAAA,CAASC,2BAA2B,KAAK,MAAM;UACjDD,QAAA,CAASC,2BAA2B,GAAGR,KAAA;QACzC;QAEA,OAAOO,QAAA;MACT;IACF,OAAO;MACL;MACA;MACA;MACA;MACA;MACA;MACA;MACA,MAAME,UAAA,GAAiC;QAAE,GAAGX;MAAQ;MACpDW,UAAA,CAAWD,2BAA2B,GAAGR,KAAA;MACzCC,qBAAA,CAAsBH,OAAO,GAAGW,UAAA;IAClC;IACA,OAAOR,qBAAA;EACT;EAEA,OAAOL,qBAAA,CAAsBG,4BAAA;AAC/B","ignoreList":[]}
1
+ {"version":3,"file":"createClientFeature.js","names":["createClientFeature","feature","featureProviderProvideClient","props","featureProviderClient","clientFeatureProps","featureProviderMap","resolvedFeatures","unSanitizedEditorConfig","toReturn","sanitizedClientFeatureProps","newFeature"],"sources":["../../src/utilities/createClientFeature.ts"],"sourcesContent":["import type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n ResolvedClientFeatureMap,\n} from '../features/typesClient.js'\nimport type { ClientEditorConfig } from '../lexical/config/types.js'\n\nexport type CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps> =\n | ((props: {\n /** unSanitizedEditorConfig.features, but mapped */\n featureProviderMap: ClientFeatureProviderMap\n props: BaseClientFeatureProps<UnSanitizedClientProps>\n // other resolved features, which have been loaded before this one. All features declared in 'dependencies' should be available here\n resolvedFeatures: ResolvedClientFeatureMap\n // unSanitized EditorConfig,\n unSanitizedEditorConfig: ClientEditorConfig\n }) => ClientFeature<ClientProps>)\n | Omit<ClientFeature<ClientProps>, 'sanitizedClientFeatureProps'>\n\nexport const createClientFeature: <\n UnSanitizedClientProps = undefined,\n ClientProps = UnSanitizedClientProps,\n>(\n args: CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps>,\n) => FeatureProviderProviderClient<UnSanitizedClientProps, ClientProps> = (feature) => {\n const featureProviderProvideClient: FeatureProviderProviderClient<any, any> = (props) => {\n const featureProviderClient: Partial<FeatureProviderClient<any, any>> = {\n clientFeatureProps: props,\n }\n\n if (typeof feature === 'function') {\n featureProviderClient.feature = ({\n featureProviderMap,\n resolvedFeatures,\n unSanitizedEditorConfig,\n }) => {\n const toReturn = feature({\n featureProviderMap,\n props,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n\n if (toReturn.sanitizedClientFeatureProps === null) {\n toReturn.sanitizedClientFeatureProps = props\n }\n\n return toReturn\n }\n } else {\n // We have to spread feature here! Otherwise, if the arg of createClientFeature is not a function, and 2\n // richText editors have the same feature (even if both call it, e.g. both call UploadFeature()),\n // the second richText editor here will override sanitizedClientFeatureProps of the first feature, as both richText\n // editor features share the same reference to the feature object.\n // Example: richText editor 1 and 2 both have UploadFeature. richText editor 1 calls UploadFeature() with custom fields,\n // richText editor 2 calls UploadFeature() with NO custom fields. If we don't spread feature here, richText editor 1\n // will not have any custom fields, as richText editor 2 will override the feature object.\n const newFeature: ClientFeature<any> = { ...feature }\n newFeature.sanitizedClientFeatureProps = props\n featureProviderClient.feature = newFeature\n }\n return featureProviderClient as FeatureProviderClient<any, any>\n }\n\n return featureProviderProvideClient\n}\n"],"mappings":"AAsBA,OAAO,MAAMA,mBAAA,GAK8DC,OAAA;EACzE,MAAMC,4BAAA,GAAyEC,KAAA;IAC7E,MAAMC,qBAAA,GAAkE;MACtEC,kBAAA,EAAoBF;IACtB;IAEA,IAAI,OAAOF,OAAA,KAAY,YAAY;MACjCG,qBAAA,CAAsBH,OAAO,GAAG,CAAC;QAC/BK,kBAAkB;QAClBC,gBAAgB;QAChBC;MAAuB,CACxB;QACC,MAAMC,QAAA,GAAWR,OAAA,CAAQ;UACvBK,kBAAA;UACAH,KAAA;UACAI,gBAAA;UACAC;QACF;QAEA,IAAIC,QAAA,CAASC,2BAA2B,KAAK,MAAM;UACjDD,QAAA,CAASC,2BAA2B,GAAGP,KAAA;QACzC;QAEA,OAAOM,QAAA;MACT;IACF,OAAO;MACL;MACA;MACA;MACA;MACA;MACA;MACA;MACA,MAAME,UAAA,GAAiC;QAAE,GAAGV;MAAQ;MACpDU,UAAA,CAAWD,2BAA2B,GAAGP,KAAA;MACzCC,qBAAA,CAAsBH,OAAO,GAAGU,UAAA;IAClC;IACA,OAAOP,qBAAA;EACT;EAEA,OAAOF,4BAAA;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.js","names":["c","_c","Form","FormSubmit","RenderFields","useConfig","useDocumentInfo","useFieldProps","useTranslation","getFormState","React","useCallback","useEffect","useState","v4","uuid","useEditorConfigContext","DrawerContent","t0","$","data","featureKey","fieldMapOverride","handleDrawerSubmit","schemaFieldsPathOverride","schemaPathSuffix","t","id","schemaPath","config","initialState","setInitialState","field","t1","richTextComponentMap","componentMapRenderedFieldsPath","schemaFieldsPath","t2","get","fields","t3","awaitInitialState","state","apiRoute","routes","api","body","operation","serverURL","t4","t5","t6","formState","prevFormState","onChange","t7","Array","isArray","t8","_jsxs","beforeSubmit","disableValidationOnSubmit","onSubmit","children","_jsx","forceRender","path","readOnly"],"sources":["../../../src/utilities/fieldsDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type { ClientField, FormState } from 'payload'\n\nimport {\n Form,\n FormSubmit,\n RenderFields,\n useConfig,\n useDocumentInfo,\n useFieldProps,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { FieldsDrawerProps } from './Drawer.js'\n\nimport { useEditorConfigContext } from '../../lexical/config/client/EditorConfigProvider.js'\n\nexport const DrawerContent: React.FC<Omit<FieldsDrawerProps, 'drawerSlug' | 'drawerTitle'>> = ({\n data,\n featureKey,\n fieldMapOverride,\n handleDrawerSubmit,\n schemaFieldsPathOverride,\n schemaPathSuffix,\n}) => {\n const { t } = useTranslation()\n const { id } = useDocumentInfo()\n const { schemaPath } = useFieldProps()\n const { config } = useConfig()\n const [initialState, setInitialState] = useState<FormState | false>(false)\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n const componentMapRenderedFieldsPath = `lexical_internal_feature.${featureKey}.fields${schemaPathSuffix ? `.${schemaPathSuffix}` : ''}`\n const schemaFieldsPath =\n schemaFieldsPathOverride ??\n `${schemaPath}.lexical_internal_feature.${featureKey}${schemaPathSuffix ? `.${schemaPathSuffix}` : ''}`\n\n const fields: any =\n fieldMapOverride ?? (richTextComponentMap.get(componentMapRenderedFieldsPath) as ClientField[]) // Field Schema\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n data: data ?? {},\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n }) // Form State\n\n setInitialState(state)\n }\n\n void awaitInitialState()\n }, [config.routes.api, config.serverURL, schemaFieldsPath, id, data])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, schemaFieldsPath, id],\n )\n\n if (initialState === false) {\n return null\n }\n\n return (\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n fields={Array.isArray(fields) ? fields : []}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleDrawerSubmit}\n uuid={uuid()}\n >\n <RenderFields\n fields={Array.isArray(fields) ? fields : []}\n forceRender\n path=\"\" // See Blocks feature path for details as for why this is empty\n readOnly={false}\n schemaPath={schemaFieldsPath}\n />\n\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DrawerContent.js","names":["c","_c","Form","FormSubmit","RenderFields","useConfig","useDocumentInfo","useFieldProps","useTranslation","getFormState","React","useCallback","useEffect","useState","v4","uuid","useEditorConfigContext","DrawerContent","t0","$","data","featureKey","fieldMapOverride","handleDrawerSubmit","schemaFieldsPathOverride","schemaPathSuffix","t","id","schemaPath","config","initialState","setInitialState","field","t1","richTextComponentMap","componentMapRenderedFieldsPath","schemaFieldsPath","t2","get","fields","t3","awaitInitialState","state","apiRoute","routes","api","body","operation","serverURL","t4","t5","t6","formState","prevFormState","onChange","t7","Array","isArray","t8","_jsxs","beforeSubmit","disableValidationOnSubmit","onSubmit","children","_jsx","forceRender","path","readOnly"],"sources":["../../../src/utilities/fieldsDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type { ClientField, FormState } from 'payload'\n\nimport {\n Form,\n FormSubmit,\n RenderFields,\n useConfig,\n useDocumentInfo,\n useFieldProps,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { FieldsDrawerProps } from './Drawer.js'\n\nimport { useEditorConfigContext } from '../../lexical/config/client/EditorConfigProvider.js'\n\nexport const DrawerContent: React.FC<Omit<FieldsDrawerProps, 'drawerSlug' | 'drawerTitle'>> = ({\n data,\n featureKey,\n fieldMapOverride,\n handleDrawerSubmit,\n schemaFieldsPathOverride,\n schemaPathSuffix,\n}) => {\n const { t } = useTranslation()\n const { id } = useDocumentInfo()\n const { schemaPath } = useFieldProps()\n const { config } = useConfig()\n const [initialState, setInitialState] = useState<false | FormState>(false)\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n const componentMapRenderedFieldsPath = `lexical_internal_feature.${featureKey}.fields${schemaPathSuffix ? `.${schemaPathSuffix}` : ''}`\n const schemaFieldsPath =\n schemaFieldsPathOverride ??\n `${schemaPath}.lexical_internal_feature.${featureKey}${schemaPathSuffix ? `.${schemaPathSuffix}` : ''}`\n\n const fields: any =\n fieldMapOverride ?? (richTextComponentMap.get(componentMapRenderedFieldsPath) as ClientField[]) // Field Schema\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n data: data ?? {},\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n }) // Form State\n\n setInitialState(state)\n }\n\n void awaitInitialState()\n }, [config.routes.api, config.serverURL, schemaFieldsPath, id, data])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, schemaFieldsPath, id],\n )\n\n if (initialState === false) {\n return null\n }\n\n return (\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n fields={Array.isArray(fields) ? fields : []}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleDrawerSubmit}\n uuid={uuid()}\n >\n <RenderFields\n fields={Array.isArray(fields) ? fields : []}\n forceRender\n path=\"\" // See Blocks feature path for details as for why this is empty\n readOnly={false}\n schemaPath={schemaFieldsPath}\n />\n\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"generateComponentMap.d.ts","sourceRoot":"","sources":["../../src/utilities/generateComponentMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAMzF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAG1E,eAAO,MAAM,uBAAuB,SAC3B;IAAE,kBAAkB,EAAE,wBAAwB,CAAA;CAAE,KAAG,4BAqIzD,CAAA"}
1
+ {"version":3,"file":"generateComponentMap.d.ts","sourceRoot":"","sources":["../../src/utilities/generateComponentMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAOzF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAG1E,eAAO,MAAM,uBAAuB,SAC3B;IAAE,kBAAkB,EAAE,wBAAwB,CAAA;CAAE,KAAG,4BA4HzD,CAAA"}
@@ -1,5 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createElement as _createElement } from "react";
3
1
  import { getComponent } from '@payloadcms/ui/shared';
4
2
  import { createClientFields } from '@payloadcms/ui/utilities/createClientConfig';
5
3
  import { deepCopyObjectSimple } from 'payload';
@@ -69,29 +67,24 @@ export const getGenerateComponentMap = args => ({
69
67
  }
70
68
  }
71
69
  const ClientComponent = resolvedFeature.ClientFeature;
72
- const ResolvedClientComponent = getComponent({
70
+ const resolvedClientFeature = getComponent({
73
71
  identifier: 'lexical-clientComponent',
74
72
  importMap,
75
73
  payloadComponent: ClientComponent
76
74
  });
77
- const clientComponentProps = resolvedFeature.clientFeatureProps;
75
+ const featureProviderProviderClient = resolvedClientFeature.Component;
78
76
  if (!ClientComponent) {
79
77
  return null;
80
78
  }
79
+ const clientFeatureProps = resolvedFeature.clientFeatureProps ?? {};
80
+ clientFeatureProps.featureKey = resolvedFeature.key;
81
+ clientFeatureProps.order = resolvedFeature.order;
82
+ if (resolvedClientFeature.clientProps) {
83
+ clientFeatureProps.clientProps = resolvedClientFeature.clientProps;
84
+ }
81
85
  return {
82
- ClientFeature: clientComponentProps && typeof clientComponentProps === 'object' ? /*#__PURE__*/_createElement(ResolvedClientComponent.Component, {
83
- ...clientComponentProps,
84
- featureKey: resolvedFeature.key,
85
- key: resolvedFeature.key,
86
- order: resolvedFeature.order,
87
- ...(ResolvedClientComponent?.clientProps || {})
88
- }) : /*#__PURE__*/_jsx(ResolvedClientComponent.Component, {
89
- featureKey: resolvedFeature.key,
90
- order: resolvedFeature.order,
91
- ...(ResolvedClientComponent?.clientProps || {})
92
- }, resolvedFeature.key),
93
- key: resolvedFeature.key,
94
- order: resolvedFeature.order
86
+ clientFeature: featureProviderProviderClient,
87
+ clientFeatureProps
95
88
  };
96
89
  }).filter(feature => feature !== null));
97
90
  return componentMap;
@@ -1 +1 @@
1
- {"version":3,"file":"generateComponentMap.js","names":["getComponent","createClientFields","deepCopyObjectSimple","getGenerateComponentMap","args","createMappedComponent","field","i18n","importMap","payload","schemaPath","componentMap","Map","resolvedFeatureMapArray","Array","from","resolvedFeatureMap","entries","sort","a","b","order","set","map","featureKey","resolvedFeature","components","props","sanitizedServerFeatureProps","componentKey","payloadComponent","mappedComponent","clientProps","key","undefined","generateSchemaMap","schemas","config","schemaMap","schemaKey","fields","clientFields","disableAddingID","parentPath","ClientComponent","ClientFeature","ResolvedClientComponent","identifier","clientComponentProps","clientFeatureProps","_createElement","Component","_jsx","filter","feature"],"sources":["../../src/utilities/generateComponentMap.tsx"],"sourcesContent":["import type { ClientField, MappedComponent, RichTextGenerateComponentMap } from 'payload'\n\nimport { getComponent } from '@payloadcms/ui/shared'\nimport { createClientFields } from '@payloadcms/ui/utilities/createClientConfig'\nimport { deepCopyObjectSimple } from 'payload'\n\nimport type { ResolvedServerFeatureMap } from '../features/typesServer.js'\nimport type { GeneratedFeatureProviderComponent } from '../types.js'\n\nexport const getGenerateComponentMap =\n (args: { resolvedFeatureMap: ResolvedServerFeatureMap }): RichTextGenerateComponentMap =>\n ({ createMappedComponent, field, i18n, importMap, payload, schemaPath }) => {\n const componentMap: Map<\n string,\n ClientField[] | GeneratedFeatureProviderComponent[] | MappedComponent\n > = new Map()\n\n // turn args.resolvedFeatureMap into an array of [key, value] pairs, ordered by value.order, lowest order first:\n const resolvedFeatureMapArray = Array.from(args.resolvedFeatureMap.entries()).sort(\n (a, b) => a[1].order - b[1].order,\n )\n\n componentMap.set(\n `features`,\n resolvedFeatureMapArray\n .map(([featureKey, resolvedFeature]) => {\n /**\n * Handle Feature Component Maps\n */\n if ('componentMap' in resolvedFeature) {\n const components =\n typeof resolvedFeature.componentMap === 'function'\n ? resolvedFeature.componentMap({\n i18n,\n payload,\n props: resolvedFeature.sanitizedServerFeatureProps,\n schemaPath,\n })\n : resolvedFeature.componentMap\n\n for (const componentKey in components) {\n const payloadComponent = components[componentKey]\n\n const mappedComponent: MappedComponent = createMappedComponent(\n payloadComponent,\n {\n clientProps: {\n componentKey,\n featureKey: resolvedFeature.key,\n key: `${resolvedFeature.key}-${componentKey}`,\n },\n },\n undefined,\n 'lexical-from-resolvedFeature',\n )\n\n if (mappedComponent) {\n componentMap.set(\n `lexical_internal_feature.${featureKey}.lexical_internal_components.${componentKey}`,\n mappedComponent,\n )\n }\n }\n }\n\n /**\n * Handle Feature Schema Maps (rendered fields)\n */\n if (\n 'generateSchemaMap' in resolvedFeature &&\n typeof resolvedFeature.generateSchemaMap === 'function'\n ) {\n const schemas = resolvedFeature.generateSchemaMap({\n config: payload.config,\n field,\n i18n,\n props: resolvedFeature.sanitizedServerFeatureProps,\n schemaMap: new Map(),\n schemaPath,\n })\n\n if (schemas) {\n for (const [schemaKey, fields] of schemas.entries()) {\n let clientFields: ClientField[] = deepCopyObjectSimple(\n fields,\n ) as unknown as ClientField[]\n clientFields = createClientFields({\n clientFields,\n createMappedComponent,\n disableAddingID: true,\n fields,\n i18n,\n importMap,\n parentPath: `${schemaPath}.lexical_internal_feature.${featureKey}.fields.${schemaKey}`,\n payload,\n })\n\n componentMap.set(\n `lexical_internal_feature.${featureKey}.fields.${schemaKey}`,\n clientFields,\n )\n }\n }\n }\n\n const ClientComponent = resolvedFeature.ClientFeature\n const ResolvedClientComponent = getComponent({\n identifier: 'lexical-clientComponent',\n importMap,\n payloadComponent: ClientComponent,\n })\n const clientComponentProps = resolvedFeature.clientFeatureProps\n\n if (!ClientComponent) {\n return null\n }\n\n return {\n ClientFeature:\n clientComponentProps && typeof clientComponentProps === 'object' ? (\n <ResolvedClientComponent.Component\n {...clientComponentProps}\n featureKey={resolvedFeature.key}\n key={resolvedFeature.key}\n order={resolvedFeature.order}\n {...(ResolvedClientComponent?.clientProps || {})}\n />\n ) : (\n <ResolvedClientComponent.Component\n featureKey={resolvedFeature.key}\n key={resolvedFeature.key}\n order={resolvedFeature.order}\n {...(ResolvedClientComponent?.clientProps || {})}\n />\n ),\n key: resolvedFeature.key,\n order: resolvedFeature.order,\n } as GeneratedFeatureProviderComponent\n })\n .filter((feature) => feature !== null),\n )\n\n return componentMap\n }\n"],"mappings":";;AAEA,SAASA,YAAY,QAAQ;AAC7B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,oBAAoB,QAAQ;AAKrC,OAAO,MAAMC,uBAAA,GACVC,IAAA,IACD,CAAC;EAAEC,qBAAqB;EAAEC,KAAK;EAAEC,IAAI;EAAEC,SAAS;EAAEC,OAAO;EAAEC;AAAU,CAAE;EACrE,MAAMC,YAAA,GAGF,IAAIC,GAAA;EAER;EACA,MAAMC,uBAAA,GAA0BC,KAAA,CAAMC,IAAI,CAACX,IAAA,CAAKY,kBAAkB,CAACC,OAAO,IAAIC,IAAI,CAChF,CAACC,CAAA,EAAGC,CAAA,KAAMD,CAAC,CAAC,EAAE,CAACE,KAAK,GAAGD,CAAC,CAAC,EAAE,CAACC,KAAK;EAGnCV,YAAA,CAAaW,GAAG,CACd,UAAU,EACVT,uBAAA,CACGU,GAAG,CAAC,CAAC,CAACC,UAAA,EAAYC,eAAA,CAAgB;IACjC;;;IAGA,IAAI,kBAAkBA,eAAA,EAAiB;MACrC,MAAMC,UAAA,GACJ,OAAOD,eAAA,CAAgBd,YAAY,KAAK,aACpCc,eAAA,CAAgBd,YAAY,CAAC;QAC3BJ,IAAA;QACAE,OAAA;QACAkB,KAAA,EAAOF,eAAA,CAAgBG,2BAA2B;QAClDlB;MACF,KACAe,eAAA,CAAgBd,YAAY;MAElC,KAAK,MAAMkB,YAAA,IAAgBH,UAAA,EAAY;QACrC,MAAMI,gBAAA,GAAmBJ,UAAU,CAACG,YAAA,CAAa;QAEjD,MAAME,eAAA,GAAmC1B,qBAAA,CACvCyB,gBAAA,EACA;UACEE,WAAA,EAAa;YACXH,YAAA;YACAL,UAAA,EAAYC,eAAA,CAAgBQ,GAAG;YAC/BA,GAAA,EAAK,GAAGR,eAAA,CAAgBQ,GAAG,IAAIJ,YAAA;UACjC;QACF,GACAK,SAAA,EACA;QAGF,IAAIH,eAAA,EAAiB;UACnBpB,YAAA,CAAaW,GAAG,CACd,4BAA4BE,UAAA,gCAA0CK,YAAA,EAAc,EACpFE,eAAA;QAEJ;MACF;IACF;IAEA;;;IAGA,IACE,uBAAuBN,eAAA,IACvB,OAAOA,eAAA,CAAgBU,iBAAiB,KAAK,YAC7C;MACA,MAAMC,OAAA,GAAUX,eAAA,CAAgBU,iBAAiB,CAAC;QAChDE,MAAA,EAAQ5B,OAAA,CAAQ4B,MAAM;QACtB/B,KAAA;QACAC,IAAA;QACAoB,KAAA,EAAOF,eAAA,CAAgBG,2BAA2B;QAClDU,SAAA,EAAW,IAAI1B,GAAA;QACfF;MACF;MAEA,IAAI0B,OAAA,EAAS;QACX,KAAK,MAAM,CAACG,SAAA,EAAWC,MAAA,CAAO,IAAIJ,OAAA,CAAQnB,OAAO,IAAI;UACnD,IAAIwB,YAAA,GAA8BvC,oBAAA,CAChCsC,MAAA;UAEFC,YAAA,GAAexC,kBAAA,CAAmB;YAChCwC,YAAA;YACApC,qBAAA;YACAqC,eAAA,EAAiB;YACjBF,MAAA;YACAjC,IAAA;YACAC,SAAA;YACAmC,UAAA,EAAY,GAAGjC,UAAA,6BAAuCc,UAAA,WAAqBe,SAAA,EAAW;YACtF9B;UACF;UAEAE,YAAA,CAAaW,GAAG,CACd,4BAA4BE,UAAA,WAAqBe,SAAA,EAAW,EAC5DE,YAAA;QAEJ;MACF;IACF;IAEA,MAAMG,eAAA,GAAkBnB,eAAA,CAAgBoB,aAAa;IACrD,MAAMC,uBAAA,GAA0B9C,YAAA,CAAa;MAC3C+C,UAAA,EAAY;MACZvC,SAAA;MACAsB,gBAAA,EAAkBc;IACpB;IACA,MAAMI,oBAAA,GAAuBvB,eAAA,CAAgBwB,kBAAkB;IAE/D,IAAI,CAACL,eAAA,EAAiB;MACpB,OAAO;IACT;IAEA,OAAO;MACLC,aAAA,EACEG,oBAAA,IAAwB,OAAOA,oBAAA,KAAyB,wBACtDE,cAAA,CAACJ,uBAAA,CAAwBK,SAAS;QAC/B,GAAGH,oBAAoB;QACxBxB,UAAA,EAAYC,eAAA,CAAgBQ,GAAG;QAC/BA,GAAA,EAAKR,eAAA,CAAgBQ,GAAG;QACxBZ,KAAA,EAAOI,eAAA,CAAgBJ,KAAK;QAC3B,IAAIyB,uBAAA,EAAyBd,WAAA,IAAe,CAAC,CAAC;wBAGjDoB,IAAA,CAACN,uBAAA,CAAwBK,SAAS;QAChC3B,UAAA,EAAYC,eAAA,CAAgBQ,GAAG;QAE/BZ,KAAA,EAAOI,eAAA,CAAgBJ,KAAK;QAC3B,IAAIyB,uBAAA,EAAyBd,WAAA,IAAe,CAAC,CAAC;SAF1CP,eAAA,CAAgBQ,GAAG;MAK9BA,GAAA,EAAKR,eAAA,CAAgBQ,GAAG;MACxBZ,KAAA,EAAOI,eAAA,CAAgBJ;IACzB;EACF,GACCgC,MAAM,CAAEC,OAAA,IAAYA,OAAA,KAAY;EAGrC,OAAO3C,YAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"generateComponentMap.js","names":["getComponent","createClientFields","deepCopyObjectSimple","getGenerateComponentMap","args","createMappedComponent","field","i18n","importMap","payload","schemaPath","componentMap","Map","resolvedFeatureMapArray","Array","from","resolvedFeatureMap","entries","sort","a","b","order","set","map","featureKey","resolvedFeature","components","props","sanitizedServerFeatureProps","componentKey","payloadComponent","mappedComponent","clientProps","key","undefined","generateSchemaMap","schemas","config","schemaMap","schemaKey","fields","clientFields","disableAddingID","parentPath","ClientComponent","ClientFeature","resolvedClientFeature","identifier","featureProviderProviderClient","Component","clientFeatureProps","clientFeature","filter","feature"],"sources":["../../src/utilities/generateComponentMap.tsx"],"sourcesContent":["import type { ClientField, MappedComponent, RichTextGenerateComponentMap } from 'payload'\n\nimport { getComponent } from '@payloadcms/ui/shared'\nimport { createClientFields } from '@payloadcms/ui/utilities/createClientConfig'\nimport { deepCopyObjectSimple } from 'payload'\n\nimport type { FeatureProviderProviderClient } from '../features/typesClient.js'\nimport type { ResolvedServerFeatureMap } from '../features/typesServer.js'\nimport type { GeneratedFeatureProviderComponent } from '../types.js'\n\nexport const getGenerateComponentMap =\n (args: { resolvedFeatureMap: ResolvedServerFeatureMap }): RichTextGenerateComponentMap =>\n ({ createMappedComponent, field, i18n, importMap, payload, schemaPath }) => {\n const componentMap: Map<\n string,\n ClientField[] | GeneratedFeatureProviderComponent[] | MappedComponent\n > = new Map()\n\n // turn args.resolvedFeatureMap into an array of [key, value] pairs, ordered by value.order, lowest order first:\n const resolvedFeatureMapArray = Array.from(args.resolvedFeatureMap.entries()).sort(\n (a, b) => a[1].order - b[1].order,\n )\n\n componentMap.set(\n `features`,\n resolvedFeatureMapArray\n .map(([featureKey, resolvedFeature]) => {\n /**\n * Handle Feature Component Maps\n */\n if ('componentMap' in resolvedFeature) {\n const components =\n typeof resolvedFeature.componentMap === 'function'\n ? resolvedFeature.componentMap({\n i18n,\n payload,\n props: resolvedFeature.sanitizedServerFeatureProps,\n schemaPath,\n })\n : resolvedFeature.componentMap\n\n for (const componentKey in components) {\n const payloadComponent = components[componentKey]\n\n const mappedComponent: MappedComponent = createMappedComponent(\n payloadComponent,\n {\n clientProps: {\n componentKey,\n featureKey: resolvedFeature.key,\n key: `${resolvedFeature.key}-${componentKey}`,\n },\n },\n undefined,\n 'lexical-from-resolvedFeature',\n )\n\n if (mappedComponent) {\n componentMap.set(\n `lexical_internal_feature.${featureKey}.lexical_internal_components.${componentKey}`,\n mappedComponent,\n )\n }\n }\n }\n\n /**\n * Handle Feature Schema Maps (rendered fields)\n */\n if (\n 'generateSchemaMap' in resolvedFeature &&\n typeof resolvedFeature.generateSchemaMap === 'function'\n ) {\n const schemas = resolvedFeature.generateSchemaMap({\n config: payload.config,\n field,\n i18n,\n props: resolvedFeature.sanitizedServerFeatureProps,\n schemaMap: new Map(),\n schemaPath,\n })\n\n if (schemas) {\n for (const [schemaKey, fields] of schemas.entries()) {\n let clientFields: ClientField[] = deepCopyObjectSimple(\n fields,\n ) as unknown as ClientField[]\n clientFields = createClientFields({\n clientFields,\n createMappedComponent,\n disableAddingID: true,\n fields,\n i18n,\n importMap,\n parentPath: `${schemaPath}.lexical_internal_feature.${featureKey}.fields.${schemaKey}`,\n payload,\n })\n\n componentMap.set(\n `lexical_internal_feature.${featureKey}.fields.${schemaKey}`,\n clientFields,\n )\n }\n }\n }\n\n const ClientComponent = resolvedFeature.ClientFeature\n const resolvedClientFeature = getComponent({\n identifier: 'lexical-clientComponent',\n importMap,\n payloadComponent: ClientComponent,\n })\n const featureProviderProviderClient =\n resolvedClientFeature.Component as unknown as FeatureProviderProviderClient<any, any>\n\n if (!ClientComponent) {\n return null\n }\n\n const clientFeatureProps = resolvedFeature.clientFeatureProps ?? {}\n clientFeatureProps.featureKey = resolvedFeature.key\n clientFeatureProps.order = resolvedFeature.order\n if (resolvedClientFeature.clientProps) {\n clientFeatureProps.clientProps = resolvedClientFeature.clientProps\n }\n\n return {\n clientFeature: featureProviderProviderClient,\n clientFeatureProps,\n } as GeneratedFeatureProviderComponent\n })\n .filter((feature) => feature !== null),\n )\n\n return componentMap\n }\n"],"mappings":"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","ignoreList":[]}
@@ -36,8 +36,8 @@ export const richTextValidateHOC = ({
36
36
  const rootNodes = value?.root?.children;
37
37
  if (rootNodes && Array.isArray(rootNodes) && rootNodes?.length) {
38
38
  return await validateNodes({
39
- nodeValidations: editorConfig.features.validations,
40
39
  nodes: rootNodes,
40
+ nodeValidations: editorConfig.features.validations,
41
41
  validation: {
42
42
  options,
43
43
  value
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["validateNodes","richTextValidateHOC","editorConfig","richTextValidate","value","options","req","t","required","hasChildren","root","children","length","hasOnlyEmptyParagraph","type","paragraphNode","paragraphNodeChild","rootNodes","Array","isArray","nodeValidations","features","validations","nodes","validation"],"sources":["../../src/validate/index.ts"],"sourcesContent":["import type { SerializedEditorState, SerializedParagraphNode } from 'lexical'\nimport type { RichTextField, Validate } from 'payload'\n\nimport type { SanitizedServerEditorConfig } from '../lexical/config/types.js'\n\nimport { validateNodes } from './validateNodes.js'\n\nexport const richTextValidateHOC = ({\n editorConfig,\n}: {\n editorConfig: SanitizedServerEditorConfig\n}) => {\n const richTextValidate: Validate<SerializedEditorState, unknown, unknown, RichTextField> = async (\n value,\n options,\n ) => {\n const {\n req: { t },\n required,\n } = options\n\n if (required) {\n const hasChildren = !!value?.root?.children?.length\n\n let hasOnlyEmptyParagraph = false\n if (value?.root?.children?.length === 1) {\n if (value?.root?.children[0]?.type === 'paragraph') {\n const paragraphNode = value?.root?.children[0] as SerializedParagraphNode\n if (paragraphNode?.children?.length === 0) {\n hasOnlyEmptyParagraph = true\n } else if (paragraphNode?.children?.length === 1) {\n const paragraphNodeChild = paragraphNode?.children[0]\n if (paragraphNodeChild.type === 'text') {\n if (!paragraphNodeChild?.['text']?.length) {\n hasOnlyEmptyParagraph = true\n }\n }\n }\n }\n }\n\n if (!hasChildren || hasOnlyEmptyParagraph) {\n return t('validation:required')\n }\n }\n\n // Traverse through nodes and validate them. Just like a node can hook into the population process (e.g. link or relationship nodes),\n // they can also hook into the validation process. E.g. a block node probably has fields with validation rules.\n\n const rootNodes = value?.root?.children\n if (rootNodes && Array.isArray(rootNodes) && rootNodes?.length) {\n return await validateNodes({\n nodeValidations: editorConfig.features.validations,\n nodes: rootNodes,\n validation: {\n options,\n value,\n },\n })\n }\n\n return true\n }\n\n return richTextValidate\n}\n"],"mappings":"AAKA,SAASA,aAAa,QAAQ;AAE9B,OAAO,MAAMC,mBAAA,GAAsBA,CAAC;EAClCC;AAAY,CAGb;EACC,MAAMC,gBAAA,GAAqF,MAAAA,CACzFC,KAAA,EACAC,OAAA;IAEA,MAAM;MACJC,GAAA,EAAK;QAAEC;MAAC,CAAE;MACVC;IAAQ,CACT,GAAGH,OAAA;IAEJ,IAAIG,QAAA,EAAU;MACZ,MAAMC,WAAA,GAAc,CAAC,CAACL,KAAA,EAAOM,IAAA,EAAMC,QAAA,EAAUC,MAAA;MAE7C,IAAIC,qBAAA,GAAwB;MAC5B,IAAIT,KAAA,EAAOM,IAAA,EAAMC,QAAA,EAAUC,MAAA,KAAW,GAAG;QACvC,IAAIR,KAAA,EAAOM,IAAA,EAAMC,QAAQ,CAAC,EAAE,EAAEG,IAAA,KAAS,aAAa;UAClD,MAAMC,aAAA,GAAgBX,KAAA,EAAOM,IAAA,EAAMC,QAAQ,CAAC,EAAE;UAC9C,IAAII,aAAA,EAAeJ,QAAA,EAAUC,MAAA,KAAW,GAAG;YACzCC,qBAAA,GAAwB;UAC1B,OAAO,IAAIE,aAAA,EAAeJ,QAAA,EAAUC,MAAA,KAAW,GAAG;YAChD,MAAMI,kBAAA,GAAqBD,aAAA,EAAeJ,QAAQ,CAAC,EAAE;YACrD,IAAIK,kBAAA,CAAmBF,IAAI,KAAK,QAAQ;cACtC,IAAI,CAACE,kBAAA,GAAqB,OAAO,EAAEJ,MAAA,EAAQ;gBACzCC,qBAAA,GAAwB;cAC1B;YACF;UACF;QACF;MACF;MAEA,IAAI,CAACJ,WAAA,IAAeI,qBAAA,EAAuB;QACzC,OAAON,CAAA,CAAE;MACX;IACF;IAEA;IACA;IAEA,MAAMU,SAAA,GAAYb,KAAA,EAAOM,IAAA,EAAMC,QAAA;IAC/B,IAAIM,SAAA,IAAaC,KAAA,CAAMC,OAAO,CAACF,SAAA,KAAcA,SAAA,EAAWL,MAAA,EAAQ;MAC9D,OAAO,MAAMZ,aAAA,CAAc;QACzBoB,eAAA,EAAiBlB,YAAA,CAAamB,QAAQ,CAACC,WAAW;QAClDC,KAAA,EAAON,SAAA;QACPO,UAAA,EAAY;UACVnB,OAAA;UACAD;QACF;MACF;IACF;IAEA,OAAO;EACT;EAEA,OAAOD,gBAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["validateNodes","richTextValidateHOC","editorConfig","richTextValidate","value","options","req","t","required","hasChildren","root","children","length","hasOnlyEmptyParagraph","type","paragraphNode","paragraphNodeChild","rootNodes","Array","isArray","nodes","nodeValidations","features","validations","validation"],"sources":["../../src/validate/index.ts"],"sourcesContent":["import type { SerializedEditorState, SerializedParagraphNode } from 'lexical'\nimport type { RichTextField, Validate } from 'payload'\n\nimport type { SanitizedServerEditorConfig } from '../lexical/config/types.js'\n\nimport { validateNodes } from './validateNodes.js'\n\nexport const richTextValidateHOC = ({\n editorConfig,\n}: {\n editorConfig: SanitizedServerEditorConfig\n}) => {\n const richTextValidate: Validate<SerializedEditorState, unknown, unknown, RichTextField> = async (\n value,\n options,\n ) => {\n const {\n req: { t },\n required,\n } = options\n\n if (required) {\n const hasChildren = !!value?.root?.children?.length\n\n let hasOnlyEmptyParagraph = false\n if (value?.root?.children?.length === 1) {\n if (value?.root?.children[0]?.type === 'paragraph') {\n const paragraphNode = value?.root?.children[0] as SerializedParagraphNode\n if (paragraphNode?.children?.length === 0) {\n hasOnlyEmptyParagraph = true\n } else if (paragraphNode?.children?.length === 1) {\n const paragraphNodeChild = paragraphNode?.children[0]\n if (paragraphNodeChild.type === 'text') {\n if (!paragraphNodeChild?.['text']?.length) {\n hasOnlyEmptyParagraph = true\n }\n }\n }\n }\n }\n\n if (!hasChildren || hasOnlyEmptyParagraph) {\n return t('validation:required')\n }\n }\n\n // Traverse through nodes and validate them. Just like a node can hook into the population process (e.g. link or relationship nodes),\n // they can also hook into the validation process. E.g. a block node probably has fields with validation rules.\n\n const rootNodes = value?.root?.children\n if (rootNodes && Array.isArray(rootNodes) && rootNodes?.length) {\n return await validateNodes({\n nodes: rootNodes,\n nodeValidations: editorConfig.features.validations,\n validation: {\n options,\n value,\n },\n })\n }\n\n return true\n }\n\n return richTextValidate\n}\n"],"mappings":"AAKA,SAASA,aAAa,QAAQ;AAE9B,OAAO,MAAMC,mBAAA,GAAsBA,CAAC;EAClCC;AAAY,CAGb;EACC,MAAMC,gBAAA,GAAqF,MAAAA,CACzFC,KAAA,EACAC,OAAA;IAEA,MAAM;MACJC,GAAA,EAAK;QAAEC;MAAC,CAAE;MACVC;IAAQ,CACT,GAAGH,OAAA;IAEJ,IAAIG,QAAA,EAAU;MACZ,MAAMC,WAAA,GAAc,CAAC,CAACL,KAAA,EAAOM,IAAA,EAAMC,QAAA,EAAUC,MAAA;MAE7C,IAAIC,qBAAA,GAAwB;MAC5B,IAAIT,KAAA,EAAOM,IAAA,EAAMC,QAAA,EAAUC,MAAA,KAAW,GAAG;QACvC,IAAIR,KAAA,EAAOM,IAAA,EAAMC,QAAQ,CAAC,EAAE,EAAEG,IAAA,KAAS,aAAa;UAClD,MAAMC,aAAA,GAAgBX,KAAA,EAAOM,IAAA,EAAMC,QAAQ,CAAC,EAAE;UAC9C,IAAII,aAAA,EAAeJ,QAAA,EAAUC,MAAA,KAAW,GAAG;YACzCC,qBAAA,GAAwB;UAC1B,OAAO,IAAIE,aAAA,EAAeJ,QAAA,EAAUC,MAAA,KAAW,GAAG;YAChD,MAAMI,kBAAA,GAAqBD,aAAA,EAAeJ,QAAQ,CAAC,EAAE;YACrD,IAAIK,kBAAA,CAAmBF,IAAI,KAAK,QAAQ;cACtC,IAAI,CAACE,kBAAA,GAAqB,OAAO,EAAEJ,MAAA,EAAQ;gBACzCC,qBAAA,GAAwB;cAC1B;YACF;UACF;QACF;MACF;MAEA,IAAI,CAACJ,WAAA,IAAeI,qBAAA,EAAuB;QACzC,OAAON,CAAA,CAAE;MACX;IACF;IAEA;IACA;IAEA,MAAMU,SAAA,GAAYb,KAAA,EAAOM,IAAA,EAAMC,QAAA;IAC/B,IAAIM,SAAA,IAAaC,KAAA,CAAMC,OAAO,CAACF,SAAA,KAAcA,SAAA,EAAWL,MAAA,EAAQ;MAC9D,OAAO,MAAMZ,aAAA,CAAc;QACzBoB,KAAA,EAAOH,SAAA;QACPI,eAAA,EAAiBnB,YAAA,CAAaoB,QAAQ,CAACC,WAAW;QAClDC,UAAA,EAAY;UACVnB,OAAA;UACAD;QACF;MACF;IACF;IAEA,OAAO;EACT;EAEA,OAAOD,gBAAA;AACT","ignoreList":[]}
@@ -1,9 +1,9 @@
1
1
  import type { SerializedEditorState, SerializedLexicalNode } from 'lexical';
2
2
  import type { RichTextField, ValidateOptions } from 'payload';
3
3
  import type { NodeValidation } from '../features/typesServer.js';
4
- export declare function validateNodes({ nodeValidations, nodes, validation: validationFromProps, }: {
5
- nodeValidations: Map<string, Array<NodeValidation>>;
4
+ export declare function validateNodes({ nodes, nodeValidations, validation: validationFromProps, }: {
6
5
  nodes: SerializedLexicalNode[];
6
+ nodeValidations: Map<string, Array<NodeValidation>>;
7
7
  validation: {
8
8
  options: ValidateOptions<unknown, unknown, RichTextField, SerializedEditorState>;
9
9
  value: SerializedEditorState;
@@ -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,EAAE,qBAAqB,CAAC,CAAA;QAChF,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,KAAK,EACL,eAAe,EACf,UAAU,EAAE,mBAAmB,GAChC,EAAE;IACD,KAAK,EAAE,qBAAqB,EAAE,CAAA;IAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;IACnD,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"}