@payloadcms/richtext-lexical 3.0.0-canary.ff8c8fd → 3.0.0

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 (821) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/cell/rscEntry.d.ts +12 -0
  3. package/dist/cell/rscEntry.d.ts.map +1 -0
  4. package/dist/cell/rscEntry.js +82 -0
  5. package/dist/cell/rscEntry.js.map +1 -0
  6. package/dist/exports/client/Field-KKSJXHR7.js +2 -0
  7. package/dist/exports/client/Field-KKSJXHR7.js.map +7 -0
  8. package/dist/exports/client/RelationshipComponent-2RT3YXUT.js +2 -0
  9. package/dist/exports/client/RelationshipComponent-2RT3YXUT.js.map +7 -0
  10. package/dist/exports/client/bundled.css +1 -1
  11. package/dist/exports/client/chunk-2CYU43GM.js +2 -0
  12. package/dist/exports/client/chunk-2CYU43GM.js.map +7 -0
  13. package/dist/exports/client/chunk-5PBXL4HT.js +2 -0
  14. package/dist/exports/client/chunk-5PBXL4HT.js.map +7 -0
  15. package/dist/exports/client/chunk-C7S3V4EB.js +2 -0
  16. package/dist/exports/client/chunk-C7S3V4EB.js.map +7 -0
  17. package/dist/exports/client/chunk-CUIBIFW2.js +2 -0
  18. package/dist/exports/client/chunk-CUIBIFW2.js.map +7 -0
  19. package/dist/exports/client/{chunk-UJDWBQ2K.js → chunk-MI5HS4QX.js} +2 -2
  20. package/dist/exports/client/{chunk-UJDWBQ2K.js.map → chunk-MI5HS4QX.js.map} +2 -2
  21. package/dist/exports/client/chunk-QPPOQTHD.js +2 -0
  22. package/dist/exports/client/chunk-QPPOQTHD.js.map +7 -0
  23. package/dist/exports/client/chunk-U7O7EYCP.js +2 -0
  24. package/dist/exports/client/chunk-U7O7EYCP.js.map +7 -0
  25. package/dist/exports/client/{chunk-V2LKLT2F.js → chunk-XCEM47RI.js} +3 -3
  26. package/dist/exports/client/{chunk-V2LKLT2F.js.map → chunk-XCEM47RI.js.map} +3 -3
  27. package/dist/exports/client/component-ANB7VZLA.js +2 -0
  28. package/dist/exports/client/component-ANB7VZLA.js.map +7 -0
  29. package/dist/exports/client/component-H3EYQ5KG.js +2 -0
  30. package/dist/exports/client/component-H3EYQ5KG.js.map +7 -0
  31. package/dist/exports/client/componentInline-ZGO3K4TA.js +2 -0
  32. package/dist/exports/client/componentInline-ZGO3K4TA.js.map +7 -0
  33. package/dist/exports/client/index.d.ts +10 -4
  34. package/dist/exports/client/index.d.ts.map +1 -1
  35. package/dist/exports/client/index.js +10 -8
  36. package/dist/exports/client/index.js.map +4 -4
  37. package/dist/exports/server/ast/mdx.d.ts +7 -0
  38. package/dist/exports/server/ast/mdx.d.ts.map +1 -0
  39. package/dist/exports/server/ast/mdx.js +37 -0
  40. package/dist/exports/server/ast/mdx.js.map +1 -0
  41. package/dist/exports/server/rsc.d.ts +3 -0
  42. package/dist/exports/server/rsc.d.ts.map +1 -0
  43. package/dist/exports/server/rsc.js +3 -0
  44. package/dist/exports/server/rsc.js.map +1 -0
  45. package/dist/exports/shared.d.ts +4 -0
  46. package/dist/exports/shared.d.ts.map +1 -0
  47. package/dist/exports/shared.js +4 -0
  48. package/dist/exports/shared.js.map +1 -0
  49. package/dist/features/align/client/index.d.ts +1 -4
  50. package/dist/features/align/client/index.d.ts.map +1 -1
  51. package/dist/features/blockquote/client/index.d.ts +1 -4
  52. package/dist/features/blockquote/client/index.d.ts.map +1 -1
  53. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  54. package/dist/features/blockquote/server/index.d.ts +1 -1
  55. package/dist/features/blockquote/server/index.d.ts.map +1 -1
  56. package/dist/features/blockquote/server/index.js +5 -1
  57. package/dist/features/blockquote/server/index.js.map +1 -1
  58. package/dist/features/blocks/client/component/BlockContent.d.ts +34 -8
  59. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  60. package/dist/features/blocks/client/component/BlockContent.js +66 -170
  61. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  62. package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts +11 -0
  63. package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts.map +1 -0
  64. package/dist/features/blocks/client/component/components/BlockCollapsible.js +37 -0
  65. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -0
  66. package/dist/features/blocks/client/component/components/BlockEditButton.d.ts +3 -0
  67. package/dist/features/blocks/client/component/components/BlockEditButton.d.ts.map +1 -0
  68. package/dist/features/blocks/client/component/components/BlockEditButton.js +22 -0
  69. package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -0
  70. package/dist/features/blocks/client/component/components/BlockRemoveButton.d.ts +3 -0
  71. package/dist/features/blocks/client/component/components/BlockRemoveButton.d.ts.map +1 -0
  72. package/dist/features/blocks/client/component/components/BlockRemoveButton.js +22 -0
  73. package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -0
  74. package/dist/features/blocks/client/component/index.d.ts +1 -1
  75. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  76. package/dist/features/blocks/client/component/index.js +294 -93
  77. package/dist/features/blocks/client/component/index.js.map +1 -1
  78. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.d.ts +5 -0
  79. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.d.ts.map +1 -0
  80. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js +28 -0
  81. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -0
  82. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.d.ts +3 -0
  83. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.d.ts.map +1 -0
  84. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js +22 -0
  85. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -0
  86. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.d.ts +3 -0
  87. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.d.ts.map +1 -0
  88. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js +22 -0
  89. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -0
  90. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.d.ts +3 -0
  91. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.d.ts.map +1 -0
  92. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js +22 -0
  93. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -0
  94. package/dist/features/blocks/client/componentInline/index.d.ts +14 -2
  95. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  96. package/dist/features/blocks/client/componentInline/index.js +237 -63
  97. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  98. package/dist/features/blocks/client/index.d.ts +1 -8
  99. package/dist/features/blocks/client/index.d.ts.map +1 -1
  100. package/dist/features/blocks/client/index.js +140 -147
  101. package/dist/features/blocks/client/index.js.map +1 -1
  102. package/dist/features/blocks/client/markdownTransformer.d.ts +16 -0
  103. package/dist/features/blocks/client/markdownTransformer.d.ts.map +1 -0
  104. package/dist/features/blocks/client/markdownTransformer.js +144 -0
  105. package/dist/features/blocks/client/markdownTransformer.js.map +1 -0
  106. package/dist/features/blocks/client/nodes/BlocksNode.d.ts +2 -2
  107. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  108. package/dist/features/blocks/client/nodes/BlocksNode.js +1 -3
  109. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  110. package/dist/features/blocks/client/plugin/commands.d.ts +0 -4
  111. package/dist/features/blocks/client/plugin/commands.d.ts.map +1 -1
  112. package/dist/features/blocks/client/plugin/commands.js +0 -1
  113. package/dist/features/blocks/client/plugin/commands.js.map +1 -1
  114. package/dist/features/blocks/client/plugin/index.d.ts +3 -4
  115. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  116. package/dist/features/blocks/client/plugin/index.js +25 -129
  117. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  118. package/dist/features/blocks/server/index.d.ts +1 -2
  119. package/dist/features/blocks/server/index.d.ts.map +1 -1
  120. package/dist/features/blocks/server/index.js +72 -35
  121. package/dist/features/blocks/server/index.js.map +1 -1
  122. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.d.ts +22 -0
  123. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.d.ts.map +1 -0
  124. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js +136 -0
  125. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js.map +1 -0
  126. package/dist/features/blocks/server/markdownTransformer.d.ts +22 -0
  127. package/dist/features/blocks/server/markdownTransformer.d.ts.map +1 -0
  128. package/dist/features/blocks/server/markdownTransformer.js +400 -0
  129. package/dist/features/blocks/server/markdownTransformer.js.map +1 -0
  130. package/dist/features/blocks/server/nodes/BlocksNode.d.ts +11 -5
  131. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  132. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  133. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +3 -3
  134. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  135. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  136. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  137. package/dist/features/blocks/server/validate.js +8 -5
  138. package/dist/features/blocks/server/validate.js.map +1 -1
  139. package/dist/features/converters/html/converter/converters/paragraph.d.ts.map +1 -1
  140. package/dist/features/converters/html/converter/converters/paragraph.js +4 -0
  141. package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -1
  142. package/dist/features/converters/html/converter/converters/text.d.ts.map +1 -1
  143. package/dist/features/converters/html/converter/converters/text.js +2 -1
  144. package/dist/features/converters/html/converter/converters/text.js.map +1 -1
  145. package/dist/features/converters/html/converter/index.d.ts +11 -7
  146. package/dist/features/converters/html/converter/index.d.ts.map +1 -1
  147. package/dist/features/converters/html/converter/index.js +17 -1
  148. package/dist/features/converters/html/converter/index.js.map +1 -1
  149. package/dist/features/converters/html/converter/types.d.ts +3 -1
  150. package/dist/features/converters/html/converter/types.d.ts.map +1 -1
  151. package/dist/features/converters/html/converter/types.js.map +1 -1
  152. package/dist/features/converters/html/field/index.d.ts.map +1 -1
  153. package/dist/features/converters/html/field/index.js +7 -1
  154. package/dist/features/converters/html/field/index.js.map +1 -1
  155. package/dist/features/debug/testRecorder/client/index.d.ts +1 -4
  156. package/dist/features/debug/testRecorder/client/index.d.ts.map +1 -1
  157. package/dist/features/debug/testRecorder/client/plugin/index.js +25 -14
  158. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  159. package/dist/features/debug/treeView/client/index.d.ts +1 -4
  160. package/dist/features/debug/treeView/client/index.d.ts.map +1 -1
  161. package/dist/features/experimental_table/client/index.d.ts +1 -1
  162. package/dist/features/experimental_table/client/index.d.ts.map +1 -1
  163. package/dist/features/experimental_table/client/index.js +2 -0
  164. package/dist/features/experimental_table/client/index.js.map +1 -1
  165. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
  166. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +49 -51
  167. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  168. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
  169. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +55 -42
  170. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  171. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +1 -1
  172. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  173. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +58 -19
  174. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  175. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
  176. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +52 -50
  177. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  178. package/dist/features/experimental_table/client/utils/debounce.js +4 -4
  179. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  180. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  181. package/dist/features/experimental_table/markdownTransformer.d.ts +5 -0
  182. package/dist/features/experimental_table/markdownTransformer.d.ts.map +1 -0
  183. package/dist/features/experimental_table/markdownTransformer.js +127 -0
  184. package/dist/features/experimental_table/markdownTransformer.js.map +1 -0
  185. package/dist/features/experimental_table/server/index.d.ts.map +1 -1
  186. package/dist/features/experimental_table/server/index.js +22 -4
  187. package/dist/features/experimental_table/server/index.js.map +1 -1
  188. package/dist/features/format/bold/feature.client.d.ts +1 -4
  189. package/dist/features/format/bold/feature.client.d.ts.map +1 -1
  190. package/dist/features/format/bold/feature.client.js +2 -1
  191. package/dist/features/format/bold/feature.client.js.map +1 -1
  192. package/dist/features/format/inlineCode/feature.client.d.ts +1 -4
  193. package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -1
  194. package/dist/features/format/inlineCode/feature.client.js +2 -1
  195. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  196. package/dist/features/format/italic/feature.client.d.ts +1 -4
  197. package/dist/features/format/italic/feature.client.d.ts.map +1 -1
  198. package/dist/features/format/italic/feature.client.js +2 -1
  199. package/dist/features/format/italic/feature.client.js.map +1 -1
  200. package/dist/features/format/strikethrough/feature.client.d.ts +1 -4
  201. package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -1
  202. package/dist/features/format/strikethrough/feature.client.js +2 -1
  203. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  204. package/dist/features/format/subscript/feature.client.d.ts +1 -4
  205. package/dist/features/format/subscript/feature.client.d.ts.map +1 -1
  206. package/dist/features/format/subscript/feature.client.js +2 -1
  207. package/dist/features/format/subscript/feature.client.js.map +1 -1
  208. package/dist/features/format/superscript/feature.client.d.ts +1 -4
  209. package/dist/features/format/superscript/feature.client.d.ts.map +1 -1
  210. package/dist/features/format/superscript/feature.client.js +2 -1
  211. package/dist/features/format/superscript/feature.client.js.map +1 -1
  212. package/dist/features/format/underline/feature.client.d.ts +1 -4
  213. package/dist/features/format/underline/feature.client.d.ts.map +1 -1
  214. package/dist/features/format/underline/feature.client.js +2 -1
  215. package/dist/features/format/underline/feature.client.js.map +1 -1
  216. package/dist/features/heading/client/index.d.ts +1 -4
  217. package/dist/features/heading/client/index.d.ts.map +1 -1
  218. package/dist/features/heading/server/index.d.ts.map +1 -1
  219. package/dist/features/heading/server/index.js +4 -0
  220. package/dist/features/heading/server/index.js.map +1 -1
  221. package/dist/features/horizontalRule/client/component/index.d.ts +1 -1
  222. package/dist/features/horizontalRule/client/component/index.d.ts.map +1 -1
  223. package/dist/features/horizontalRule/client/component/index.js +12 -9
  224. package/dist/features/horizontalRule/client/component/index.js.map +1 -1
  225. package/dist/features/horizontalRule/client/index.d.ts +1 -4
  226. package/dist/features/horizontalRule/client/index.d.ts.map +1 -1
  227. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +2 -2
  228. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  229. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +1 -1
  230. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  231. package/dist/features/indent/client/index.d.ts +1 -4
  232. package/dist/features/indent/client/index.d.ts.map +1 -1
  233. package/dist/features/indent/client/index.js +2 -1
  234. package/dist/features/indent/client/index.js.map +1 -1
  235. package/dist/features/link/client/index.d.ts +1 -13
  236. package/dist/features/link/client/index.d.ts.map +1 -1
  237. package/dist/features/link/client/index.js +2 -2
  238. package/dist/features/link/client/index.js.map +1 -1
  239. package/dist/features/link/client/plugins/autoLink/index.d.ts +1 -1
  240. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  241. package/dist/features/link/client/plugins/autoLink/index.js +3 -1
  242. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  243. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  244. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +78 -40
  245. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  246. package/dist/features/link/client/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  247. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +1 -1
  248. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  249. package/dist/features/link/nodes/AutoLinkNode.js +2 -2
  250. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  251. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  252. package/dist/features/link/nodes/LinkNode.js +12 -7
  253. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  254. package/dist/features/link/nodes/types.d.ts +3 -3
  255. package/dist/features/link/nodes/types.d.ts.map +1 -1
  256. package/dist/features/link/nodes/types.js.map +1 -1
  257. package/dist/features/link/server/baseFields.d.ts +1 -1
  258. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  259. package/dist/features/link/server/baseFields.js +15 -3
  260. package/dist/features/link/server/baseFields.js.map +1 -1
  261. package/dist/features/link/server/i18n.d.ts.map +1 -1
  262. package/dist/features/link/server/i18n.js +64 -32
  263. package/dist/features/link/server/i18n.js.map +1 -1
  264. package/dist/features/link/server/index.d.ts.map +1 -1
  265. package/dist/features/link/server/index.js +17 -4
  266. package/dist/features/link/server/index.js.map +1 -1
  267. package/dist/features/link/server/transformExtraFields.d.ts +1 -1
  268. package/dist/features/link/server/transformExtraFields.d.ts.map +1 -1
  269. package/dist/features/link/server/transformExtraFields.js.map +1 -1
  270. package/dist/features/link/server/validate.d.ts.map +1 -1
  271. package/dist/features/link/server/validate.js +8 -5
  272. package/dist/features/link/server/validate.js.map +1 -1
  273. package/dist/features/lists/checklist/client/index.d.ts +1 -4
  274. package/dist/features/lists/checklist/client/index.d.ts.map +1 -1
  275. package/dist/features/lists/htmlConverter.d.ts.map +1 -1
  276. package/dist/features/lists/htmlConverter.js +8 -0
  277. package/dist/features/lists/htmlConverter.js.map +1 -1
  278. package/dist/features/lists/orderedList/client/index.d.ts +1 -4
  279. package/dist/features/lists/orderedList/client/index.d.ts.map +1 -1
  280. package/dist/features/lists/shared/markdown.js.map +1 -1
  281. package/dist/features/lists/unorderedList/client/index.d.ts +1 -4
  282. package/dist/features/lists/unorderedList/client/index.d.ts.map +1 -1
  283. package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +1 -1
  284. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +1 -0
  285. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  286. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +1 -4
  287. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
  288. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  289. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  290. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  291. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  292. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  293. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  294. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  295. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  296. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  297. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  298. package/dist/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
  299. package/dist/features/migrations/slateToLexical/converter/index.js +1 -0
  300. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  301. package/dist/features/migrations/slateToLexical/feature.client.d.ts +1 -4
  302. package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
  303. package/dist/features/migrations/slateToLexical/feature.client.js +1 -3
  304. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  305. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  306. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  307. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  308. package/dist/features/paragraph/client/index.d.ts +1 -4
  309. package/dist/features/paragraph/client/index.d.ts.map +1 -1
  310. package/dist/features/paragraph/server/index.d.ts +1 -1
  311. package/dist/features/paragraph/server/index.d.ts.map +1 -1
  312. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  313. package/dist/features/relationship/client/components/RelationshipComponent.js +34 -24
  314. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  315. package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
  316. package/dist/features/relationship/client/drawer/index.js +27 -26
  317. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  318. package/dist/features/relationship/client/index.d.ts +2 -17
  319. package/dist/features/relationship/client/index.d.ts.map +1 -1
  320. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +1 -1
  321. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  322. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  323. package/dist/features/relationship/client/plugins/index.js +1 -1
  324. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  325. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +1 -1
  326. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
  327. package/dist/features/relationship/server/index.d.ts +1 -1
  328. package/dist/features/relationship/server/index.d.ts.map +1 -1
  329. package/dist/features/relationship/server/index.js +50 -40
  330. package/dist/features/relationship/server/index.js.map +1 -1
  331. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +2 -2
  332. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  333. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  334. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  335. package/dist/features/toolbars/fixed/client/Toolbar/index.js +93 -66
  336. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  337. package/dist/features/toolbars/fixed/client/index.d.ts +1 -4
  338. package/dist/features/toolbars/fixed/client/index.d.ts.map +1 -1
  339. package/dist/features/toolbars/inline/client/Toolbar/index.js +135 -97
  340. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  341. package/dist/features/toolbars/inline/client/index.d.ts +1 -4
  342. package/dist/features/toolbars/inline/client/index.d.ts.map +1 -1
  343. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  344. package/dist/features/toolbars/shared/ToolbarButton/index.js +5 -2
  345. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  346. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +5 -4
  347. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  348. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +24 -10
  349. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  350. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +4 -5
  351. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  352. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +127 -127
  353. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  354. package/dist/features/toolbars/types.d.ts +23 -11
  355. package/dist/features/toolbars/types.d.ts.map +1 -1
  356. package/dist/features/toolbars/types.js.map +1 -1
  357. package/dist/features/typesClient.d.ts +22 -30
  358. package/dist/features/typesClient.d.ts.map +1 -1
  359. package/dist/features/typesClient.js.map +1 -1
  360. package/dist/features/typesServer.d.ts +23 -28
  361. package/dist/features/typesServer.d.ts.map +1 -1
  362. package/dist/features/typesServer.js.map +1 -1
  363. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  364. package/dist/features/upload/client/component/index.js +66 -58
  365. package/dist/features/upload/client/component/index.js.map +1 -1
  366. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  367. package/dist/features/upload/client/drawer/index.js +34 -32
  368. package/dist/features/upload/client/drawer/index.js.map +1 -1
  369. package/dist/features/upload/client/feature.client.d.ts +1 -4
  370. package/dist/features/upload/client/feature.client.d.ts.map +1 -1
  371. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  372. package/dist/features/upload/client/nodes/UploadNode.js +1 -1
  373. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  374. package/dist/features/upload/client/plugin/index.js +1 -1
  375. package/dist/features/upload/client/plugin/index.js.map +1 -1
  376. package/dist/features/upload/server/feature.server.d.ts.map +1 -1
  377. package/dist/features/upload/server/feature.server.js +17 -8
  378. package/dist/features/upload/server/feature.server.js.map +1 -1
  379. package/dist/features/upload/server/validate.d.ts.map +1 -1
  380. package/dist/features/upload/server/validate.js +7 -4
  381. package/dist/features/upload/server/validate.js.map +1 -1
  382. package/dist/field/Field.d.ts.map +1 -1
  383. package/dist/field/Field.js +39 -65
  384. package/dist/field/Field.js.map +1 -1
  385. package/dist/field/bundled.css +1 -1
  386. package/dist/field/index.d.ts.map +1 -1
  387. package/dist/field/index.js +74 -74
  388. package/dist/field/index.js.map +1 -1
  389. package/dist/field/rscEntry.d.ts +9 -0
  390. package/dist/field/rscEntry.d.ts.map +1 -0
  391. package/dist/field/rscEntry.js +56 -0
  392. package/dist/field/rscEntry.js.map +1 -0
  393. package/dist/index.d.ts +8 -4
  394. package/dist/index.d.ts.map +1 -1
  395. package/dist/index.js +101 -105
  396. package/dist/index.js.map +1 -1
  397. package/dist/lexical/EditorPlugin.d.ts.map +1 -1
  398. package/dist/lexical/EditorPlugin.js +2 -1
  399. package/dist/lexical/EditorPlugin.js.map +1 -1
  400. package/dist/lexical/LexicalEditor.d.ts +1 -1
  401. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  402. package/dist/lexical/LexicalEditor.js +10 -10
  403. package/dist/lexical/LexicalEditor.js.map +1 -1
  404. package/dist/lexical/LexicalProvider.d.ts +2 -2
  405. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  406. package/dist/lexical/LexicalProvider.js +18 -25
  407. package/dist/lexical/LexicalProvider.js.map +1 -1
  408. package/dist/lexical/config/client/EditorConfigProvider.d.ts +6 -5
  409. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  410. package/dist/lexical/config/client/EditorConfigProvider.js +14 -13
  411. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  412. package/dist/lexical/config/client/loader.d.ts +5 -2
  413. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  414. package/dist/lexical/config/client/loader.js +12 -18
  415. package/dist/lexical/config/client/loader.js.map +1 -1
  416. package/dist/lexical/config/client/sanitize.d.ts +1 -1
  417. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  418. package/dist/lexical/config/client/sanitize.js +19 -18
  419. package/dist/lexical/config/client/sanitize.js.map +1 -1
  420. package/dist/lexical/config/server/loader.d.ts +2 -1
  421. package/dist/lexical/config/server/loader.d.ts.map +1 -1
  422. package/dist/lexical/config/server/loader.js +2 -0
  423. package/dist/lexical/config/server/loader.js.map +1 -1
  424. package/dist/lexical/config/server/sanitize.d.ts +1 -1
  425. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  426. package/dist/lexical/config/server/sanitize.js +27 -13
  427. package/dist/lexical/config/server/sanitize.js.map +1 -1
  428. package/dist/lexical/config/types.d.ts +2 -2
  429. package/dist/lexical/config/types.d.ts.map +1 -1
  430. package/dist/lexical/config/types.js.map +1 -1
  431. package/dist/lexical/nodes/index.d.ts +4 -0
  432. package/dist/lexical/nodes/index.d.ts.map +1 -1
  433. package/dist/lexical/nodes/index.js +8 -1
  434. package/dist/lexical/nodes/index.js.map +1 -1
  435. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +6 -6
  436. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  437. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +19 -8
  438. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  439. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +2 -2
  440. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  441. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +7 -7
  442. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  443. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +3 -2
  444. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  445. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  446. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  447. package/dist/lexical/plugins/SlashMenu/index.js +24 -30
  448. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  449. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  450. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +11 -9
  451. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  452. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts +1 -1
  453. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  454. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +1 -1
  455. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  456. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +1 -1
  457. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  458. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  459. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +15 -8
  460. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  461. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  462. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +9 -7
  463. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  464. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -1
  465. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +3 -1
  466. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
  467. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
  468. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +3 -4
  469. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  470. package/dist/lexical/theme/EditorTheme.d.ts.map +1 -1
  471. package/dist/lexical/theme/EditorTheme.js +1 -2
  472. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  473. package/dist/lexical/utils/nodeFormat.d.ts +2 -2
  474. package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
  475. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  476. package/dist/lexical/utils/rect.d.ts +4 -4
  477. package/dist/lexical/utils/rect.d.ts.map +1 -1
  478. package/dist/lexical/utils/rect.js.map +1 -1
  479. package/dist/lexical/utils/setFloatingElemPosition.d.ts +1 -1
  480. package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  481. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  482. package/dist/lexical/utils/url.d.ts +5 -0
  483. package/dist/lexical/utils/url.d.ts.map +1 -1
  484. package/dist/lexical/utils/url.js +25 -5
  485. package/dist/lexical/utils/url.js.map +1 -1
  486. package/dist/lexical-proxy/@lexical-headless.d.ts +2 -0
  487. package/dist/lexical-proxy/@lexical-headless.d.ts.map +1 -0
  488. package/dist/lexical-proxy/@lexical-headless.js +2 -0
  489. package/dist/lexical-proxy/@lexical-headless.js.map +1 -0
  490. package/dist/lexical-proxy/@lexical-link.d.ts +2 -0
  491. package/dist/lexical-proxy/@lexical-link.d.ts.map +1 -0
  492. package/dist/lexical-proxy/@lexical-link.js +2 -0
  493. package/dist/lexical-proxy/@lexical-link.js.map +1 -0
  494. package/dist/lexical-proxy/@lexical-list.d.ts +2 -0
  495. package/dist/lexical-proxy/@lexical-list.d.ts.map +1 -0
  496. package/dist/lexical-proxy/@lexical-list.js +2 -0
  497. package/dist/lexical-proxy/@lexical-list.js.map +1 -0
  498. package/dist/lexical-proxy/@lexical-mark.d.ts +2 -0
  499. package/dist/lexical-proxy/@lexical-mark.d.ts.map +1 -0
  500. package/dist/lexical-proxy/@lexical-mark.js +2 -0
  501. package/dist/lexical-proxy/@lexical-mark.js.map +1 -0
  502. package/dist/lexical-proxy/@lexical-markdown.d.ts +2 -0
  503. package/dist/lexical-proxy/@lexical-markdown.d.ts.map +1 -0
  504. package/dist/lexical-proxy/@lexical-markdown.js +2 -0
  505. package/dist/lexical-proxy/@lexical-markdown.js.map +1 -0
  506. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.d.ts +2 -0
  507. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.d.ts.map +1 -0
  508. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js +2 -0
  509. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js.map +1 -0
  510. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.d.ts +2 -0
  511. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.d.ts.map +1 -0
  512. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js +2 -0
  513. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js.map +1 -0
  514. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.d.ts +2 -0
  515. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.d.ts.map +1 -0
  516. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js +2 -0
  517. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js.map +1 -0
  518. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.d.ts +2 -0
  519. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.d.ts.map +1 -0
  520. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js +2 -0
  521. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js.map +1 -0
  522. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.d.ts +2 -0
  523. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.d.ts.map +1 -0
  524. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js +2 -0
  525. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js.map +1 -0
  526. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.d.ts +2 -0
  527. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.d.ts.map +1 -0
  528. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js +2 -0
  529. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js.map +1 -0
  530. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.d.ts +2 -0
  531. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.d.ts.map +1 -0
  532. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js +2 -0
  533. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js.map +1 -0
  534. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.d.ts +2 -0
  535. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.d.ts.map +1 -0
  536. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js +2 -0
  537. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js.map +1 -0
  538. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.d.ts +2 -0
  539. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.d.ts.map +1 -0
  540. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js +2 -0
  541. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js.map +1 -0
  542. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.d.ts +2 -0
  543. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.d.ts.map +1 -0
  544. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js +2 -0
  545. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js.map +1 -0
  546. package/dist/lexical-proxy/@lexical-react/LexicalComposer.d.ts +2 -0
  547. package/dist/lexical-proxy/@lexical-react/LexicalComposer.d.ts.map +1 -0
  548. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js +2 -0
  549. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js.map +1 -0
  550. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.d.ts +2 -0
  551. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.d.ts.map +1 -0
  552. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js +2 -0
  553. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js.map +1 -0
  554. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.d.ts +2 -0
  555. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.d.ts.map +1 -0
  556. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js +2 -0
  557. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js.map +1 -0
  558. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts +2 -0
  559. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts.map +1 -0
  560. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +2 -0
  561. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +1 -0
  562. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.d.ts +2 -0
  563. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.d.ts.map +1 -0
  564. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js +2 -0
  565. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js.map +1 -0
  566. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.d.ts +2 -0
  567. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.d.ts.map +1 -0
  568. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js +2 -0
  569. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js.map +1 -0
  570. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.d.ts +2 -0
  571. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.d.ts.map +1 -0
  572. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js +2 -0
  573. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js.map +1 -0
  574. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.d.ts +2 -0
  575. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.d.ts.map +1 -0
  576. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js +2 -0
  577. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js.map +1 -0
  578. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.d.ts +2 -0
  579. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.d.ts.map +1 -0
  580. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js +2 -0
  581. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js.map +1 -0
  582. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.d.ts +2 -0
  583. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.d.ts.map +1 -0
  584. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js +2 -0
  585. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js.map +1 -0
  586. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.d.ts +2 -0
  587. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.d.ts.map +1 -0
  588. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js +2 -0
  589. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js.map +1 -0
  590. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.d.ts +2 -0
  591. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.d.ts.map +1 -0
  592. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js +2 -0
  593. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js.map +1 -0
  594. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.d.ts +2 -0
  595. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.d.ts.map +1 -0
  596. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js +2 -0
  597. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js.map +1 -0
  598. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.d.ts +2 -0
  599. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.d.ts.map +1 -0
  600. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js +2 -0
  601. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js.map +1 -0
  602. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.d.ts +2 -0
  603. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.d.ts.map +1 -0
  604. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js +2 -0
  605. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js.map +1 -0
  606. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.d.ts +2 -0
  607. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.d.ts.map +1 -0
  608. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js +2 -0
  609. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js.map +1 -0
  610. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.d.ts +2 -0
  611. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.d.ts.map +1 -0
  612. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js +2 -0
  613. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js.map +1 -0
  614. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.d.ts +2 -0
  615. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.d.ts.map +1 -0
  616. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js +2 -0
  617. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js.map +1 -0
  618. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.d.ts +2 -0
  619. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.d.ts.map +1 -0
  620. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js +2 -0
  621. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js.map +1 -0
  622. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.d.ts +2 -0
  623. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.d.ts.map +1 -0
  624. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js +2 -0
  625. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js.map +1 -0
  626. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.d.ts +2 -0
  627. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.d.ts.map +1 -0
  628. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js +2 -0
  629. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js.map +1 -0
  630. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.d.ts +2 -0
  631. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.d.ts.map +1 -0
  632. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js +2 -0
  633. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js.map +1 -0
  634. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.d.ts +2 -0
  635. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.d.ts.map +1 -0
  636. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.js +2 -0
  637. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.js.map +1 -0
  638. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.d.ts +2 -0
  639. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.d.ts.map +1 -0
  640. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js +2 -0
  641. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js.map +1 -0
  642. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.d.ts +2 -0
  643. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.d.ts.map +1 -0
  644. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js +2 -0
  645. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js.map +1 -0
  646. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.d.ts +2 -0
  647. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.d.ts.map +1 -0
  648. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js +2 -0
  649. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js.map +1 -0
  650. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.d.ts +2 -0
  651. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.d.ts.map +1 -0
  652. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js +2 -0
  653. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js.map +1 -0
  654. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.d.ts +2 -0
  655. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.d.ts.map +1 -0
  656. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js +2 -0
  657. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js.map +1 -0
  658. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.d.ts +2 -0
  659. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.d.ts.map +1 -0
  660. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js +2 -0
  661. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js.map +1 -0
  662. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.d.ts +2 -0
  663. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.d.ts.map +1 -0
  664. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js +2 -0
  665. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js.map +1 -0
  666. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.d.ts +2 -0
  667. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.d.ts.map +1 -0
  668. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js +2 -0
  669. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js.map +1 -0
  670. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.d.ts +2 -0
  671. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.d.ts.map +1 -0
  672. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js +2 -0
  673. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js.map +1 -0
  674. package/dist/lexical-proxy/@lexical-rich-text.d.ts +2 -0
  675. package/dist/lexical-proxy/@lexical-rich-text.d.ts.map +1 -0
  676. package/dist/lexical-proxy/@lexical-rich-text.js +2 -0
  677. package/dist/lexical-proxy/@lexical-rich-text.js.map +1 -0
  678. package/dist/lexical-proxy/@lexical-selection.d.ts +2 -0
  679. package/dist/lexical-proxy/@lexical-selection.d.ts.map +1 -0
  680. package/dist/lexical-proxy/@lexical-selection.js +2 -0
  681. package/dist/lexical-proxy/@lexical-selection.js.map +1 -0
  682. package/dist/lexical-proxy/@lexical-utils.d.ts +2 -0
  683. package/dist/lexical-proxy/@lexical-utils.d.ts.map +1 -0
  684. package/dist/lexical-proxy/@lexical-utils.js +2 -0
  685. package/dist/lexical-proxy/@lexical-utils.js.map +1 -0
  686. package/dist/lexical-proxy/lexical.d.ts +2 -0
  687. package/dist/lexical-proxy/lexical.d.ts.map +1 -0
  688. package/dist/lexical-proxy/lexical.js +2 -0
  689. package/dist/lexical-proxy/lexical.js.map +1 -0
  690. package/dist/populateGraphQL/populate.d.ts +3 -2
  691. package/dist/populateGraphQL/populate.d.ts.map +1 -1
  692. package/dist/populateGraphQL/populate.js +3 -1
  693. package/dist/populateGraphQL/populate.js.map +1 -1
  694. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +1 -1
  695. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  696. package/dist/populateGraphQL/populateLexicalPopulationPromises.js +5 -4
  697. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  698. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  699. package/dist/types.d.ts +23 -8
  700. package/dist/types.d.ts.map +1 -1
  701. package/dist/types.js.map +1 -1
  702. package/dist/utilities/buildInitialState.d.ts +27 -0
  703. package/dist/utilities/buildInitialState.d.ts.map +1 -0
  704. package/dist/utilities/buildInitialState.js +53 -0
  705. package/dist/utilities/buildInitialState.js.map +1 -0
  706. package/dist/utilities/createClientFeature.d.ts +8 -5
  707. package/dist/utilities/createClientFeature.d.ts.map +1 -1
  708. package/dist/utilities/createClientFeature.js +7 -4
  709. package/dist/utilities/createClientFeature.js.map +1 -1
  710. package/dist/utilities/createServerFeature.d.ts +1 -0
  711. package/dist/utilities/createServerFeature.d.ts.map +1 -1
  712. package/dist/utilities/createServerFeature.js +2 -0
  713. package/dist/utilities/createServerFeature.js.map +1 -1
  714. package/dist/utilities/fieldsDrawer/Drawer.d.ts +1 -0
  715. package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
  716. package/dist/utilities/fieldsDrawer/Drawer.js +68 -27
  717. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  718. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  719. package/dist/utilities/fieldsDrawer/DrawerContent.js +102 -138
  720. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  721. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts +13 -0
  722. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -0
  723. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +129 -0
  724. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -0
  725. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts +10 -0
  726. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -0
  727. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +136 -0
  728. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -0
  729. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts +16 -0
  730. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -0
  731. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +144 -0
  732. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -0
  733. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  734. package/dist/utilities/generateImportMap.js +2 -3
  735. package/dist/utilities/generateImportMap.js.map +1 -1
  736. package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
  737. package/dist/utilities/generateSchemaMap.js +13 -10
  738. package/dist/utilities/generateSchemaMap.js.map +1 -1
  739. package/dist/utilities/initLexicalFeatures.d.ts +18 -0
  740. package/dist/utilities/initLexicalFeatures.d.ts.map +1 -0
  741. package/dist/utilities/initLexicalFeatures.js +96 -0
  742. package/dist/utilities/initLexicalFeatures.js.map +1 -0
  743. package/dist/utilities/jsx/collectTopLevelJSXInLines.d.ts +52 -0
  744. package/dist/utilities/jsx/collectTopLevelJSXInLines.d.ts.map +1 -0
  745. package/dist/utilities/jsx/collectTopLevelJSXInLines.js +79 -0
  746. package/dist/utilities/jsx/collectTopLevelJSXInLines.js.map +1 -0
  747. package/dist/utilities/jsx/extractPropsFromJSXPropsString.d.ts +12 -0
  748. package/dist/utilities/jsx/extractPropsFromJSXPropsString.d.ts.map +1 -0
  749. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js +125 -0
  750. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js.map +1 -0
  751. package/dist/utilities/jsx/jsx.d.ts +26 -0
  752. package/dist/utilities/jsx/jsx.d.ts.map +1 -0
  753. package/dist/utilities/jsx/jsx.js +105 -0
  754. package/dist/utilities/jsx/jsx.js.map +1 -0
  755. package/dist/utilities/jsx/jsx.spec.d.ts +2 -0
  756. package/dist/utilities/jsx/jsx.spec.d.ts.map +1 -0
  757. package/dist/utilities/jsx/jsx.spec.js +142 -0
  758. package/dist/utilities/jsx/jsx.spec.js.map +1 -0
  759. package/dist/utilities/jsx/lexicalMarkdownCopy.d.ts +11 -0
  760. package/dist/utilities/jsx/lexicalMarkdownCopy.d.ts.map +1 -0
  761. package/dist/utilities/jsx/lexicalMarkdownCopy.js +61 -0
  762. package/dist/utilities/jsx/lexicalMarkdownCopy.js.map +1 -0
  763. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts +1 -1
  764. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts.map +1 -1
  765. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +1 -1
  766. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
  767. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts +1 -1
  768. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
  769. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +5 -1
  770. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  771. package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
  772. package/dist/utilities/useLexicalFeature.js +12 -4
  773. package/dist/utilities/useLexicalFeature.js.map +1 -1
  774. package/dist/validate/index.d.ts.map +1 -1
  775. package/dist/validate/index.js +2 -2
  776. package/dist/validate/index.js.map +1 -1
  777. package/dist/validate/validateNodes.d.ts +2 -2
  778. package/dist/validate/validateNodes.d.ts.map +1 -1
  779. package/dist/validate/validateNodes.js +4 -4
  780. package/dist/validate/validateNodes.js.map +1 -1
  781. package/package.json +332 -46
  782. package/dist/cell/index.d.ts +0 -9
  783. package/dist/cell/index.d.ts.map +0 -1
  784. package/dist/cell/index.js +0 -135
  785. package/dist/cell/index.js.map +0 -1
  786. package/dist/exports/client/Field-SUWHJ4HF.js +0 -2
  787. package/dist/exports/client/Field-SUWHJ4HF.js.map +0 -7
  788. package/dist/exports/client/RelationshipComponent-EZORSGUZ.js +0 -2
  789. package/dist/exports/client/RelationshipComponent-EZORSGUZ.js.map +0 -7
  790. package/dist/exports/client/chunk-OLSILJA6.js +0 -2
  791. package/dist/exports/client/chunk-OLSILJA6.js.map +0 -7
  792. package/dist/exports/client/chunk-TD7O23AB.js +0 -2
  793. package/dist/exports/client/chunk-TD7O23AB.js.map +0 -7
  794. package/dist/exports/client/chunk-YL453UOS.js +0 -2
  795. package/dist/exports/client/chunk-YL453UOS.js.map +0 -7
  796. package/dist/exports/client/chunk-YSI2QILQ.js +0 -2
  797. package/dist/exports/client/chunk-YSI2QILQ.js.map +0 -7
  798. package/dist/exports/client/component-2YLEVOFH.js +0 -2
  799. package/dist/exports/client/component-2YLEVOFH.js.map +0 -7
  800. package/dist/exports/client/component-7RAP75FW.js +0 -2
  801. package/dist/exports/client/component-7RAP75FW.js.map +0 -7
  802. package/dist/exports/client/component-LLWMZU6K.js +0 -2
  803. package/dist/exports/client/component-LLWMZU6K.js.map +0 -7
  804. package/dist/exports/client/componentInline-YSHGRL2J.js +0 -2
  805. package/dist/exports/client/componentInline-YSHGRL2J.js.map +0 -7
  806. package/dist/features/blocks/client/component/FormSavePlugin.d.ts +0 -11
  807. package/dist/features/blocks/client/component/FormSavePlugin.d.ts.map +0 -1
  808. package/dist/features/blocks/client/component/FormSavePlugin.js +0 -53
  809. package/dist/features/blocks/client/component/FormSavePlugin.js.map +0 -1
  810. package/dist/features/createClientComponent.d.ts +0 -7
  811. package/dist/features/createClientComponent.d.ts.map +0 -1
  812. package/dist/features/createClientComponent.js +0 -13
  813. package/dist/features/createClientComponent.js.map +0 -1
  814. package/dist/features/createFeaturePropComponent.d.ts +0 -6
  815. package/dist/features/createFeaturePropComponent.d.ts.map +0 -1
  816. package/dist/features/createFeaturePropComponent.js +0 -19
  817. package/dist/features/createFeaturePropComponent.js.map +0 -1
  818. package/dist/utilities/generateComponentMap.d.ts +0 -6
  819. package/dist/utilities/generateComponentMap.d.ts.map +0 -1
  820. package/dist/utilities/generateComponentMap.js +0 -99
  821. package/dist/utilities/generateComponentMap.js.map +0 -1
@@ -1,2 +0,0 @@
1
- "use client";import{a as ue,b as pe,c as ge,d as he,e as z,f as I,h as ye}from"./chunk-YSI2QILQ.js";import{a as fe,b as T}from"./chunk-OLSILJA6.js";import{jsx as j,jsxs as me}from"react/jsx-runtime";import{FieldDescription as Yt,FieldError as Ut,FieldLabel as Vt,useField as qt,useFieldProps as Jt,withCondition as Qt}from"@payloadcms/ui";import{useCallback as Xt}from"react";import{ErrorBoundary as Zt}from"react-error-boundary";import{jsx as A}from"react/jsx-runtime";import{LexicalComposer as Wt}from"@lexical/react/LexicalComposer.js";import*as qe from"react";import{useMemo as Ve}from"react";import{c as Bt}from"react/compiler-runtime";import{jsx as P,jsxs as J}from"react/jsx-runtime";import{useLexicalComposerContext as Mt}from"@lexical/react/LexicalComposerContext.js";import{LexicalErrorBoundary as It}from"@lexical/react/LexicalErrorBoundary.js";import{HistoryPlugin as At}from"@lexical/react/LexicalHistoryPlugin.js";import{OnChangePlugin as Ft}from"@lexical/react/LexicalOnChangePlugin.js";import{RichTextPlugin as Dt}from"@lexical/react/LexicalRichTextPlugin.js";import{TabIndentationPlugin as Ot}from"@lexical/react/LexicalTabIndentationPlugin.js";import{BLUR_COMMAND as _t,COMMAND_PRIORITY_LOW as Ge,FOCUS_COMMAND as Ht}from"lexical";import*as U from"react";import{useEffect as We,useState as Ye}from"react";import{jsx as xe}from"react/jsx-runtime";import"react";var _=({anchorElem:t,clientProps:e,plugin:o})=>o.position==="floatingAnchorElem"?o.Component&&xe(o.Component,{anchorElem:t,clientProps:e}):o.Component&&xe(o.Component,{clientProps:e});import{c as Xe}from"react/compiler-runtime";import{jsx as Ze}from"react/jsx-runtime";import{MarkdownShortcutPlugin as et}from"@lexical/react/LexicalMarkdownShortcutPlugin.js";import"react";var Ee=()=>{let t=Xe(2),{editorConfig:e}=T(),o;return t[0]!==e.features.markdownTransformers?(o=Ze(et,{transformers:e.features.markdownTransformers}),t[0]=e.features.markdownTransformers,t[1]=o):o=t[1],o};import{jsx as K,jsxs as Ne}from"react/jsx-runtime";import{useLexicalComposerContext as ot}from"@lexical/react/LexicalComposerContext.js";import{useFieldProps as Pe,useTranslation as we}from"@payloadcms/ui";import{useCallback as Ce,useMemo as nt,useState as rt}from"react";import"react";import*as ke from"react-dom";import{c as tt}from"react/compiler-runtime";import"react";function be(t,e){let o=tt(4),{maxLength:l,minLength:r}=e,m=l===void 0?75:l,p=r===void 0?1:r,a;return o[0]!==t||o[1]!==m||o[2]!==p?(a=u=>{let{query:g}=u,E="[^"+t+pe+"\\s]",s=new RegExp("(^|\\s|\\()(["+t+"]((?:"+E+"){0,"+m+"}))$").exec(g);if(s!==null){let n=s[1],y=s[3];if(y.length>=p)return{leadOffset:s.index+n.length,matchingString:y,replaceableString:s[2]}}return null},o[0]=t,o[1]=m,o[2]=p,o[3]=a):a=o[3],a}var L="slash-menu-popup";function it({isSelected:t,item:e,onClick:o,onMouseEnter:l}){let{field:{richTextComponentMap:r}}=T(),{schemaPath:m}=Pe(),{i18n:p}=we(),a=`${L}__item ${L}__item-${e.key}`;t&&(a+=` ${L}__item--selected`);let u=e.key;return e.label&&(u=typeof e.label=="function"?e.label({i18n:p,richTextComponentMap:r,schemaPath:m}):e.label),u.length>25&&(u=u.substring(0,25)+"..."),Ne("button",{"aria-selected":t,className:a,id:L+"__item-"+e.key,onClick:o,onMouseEnter:l,ref:g=>{e.ref={current:g}},role:"option",tabIndex:-1,type:"button",children:[e?.Icon&&K(e.Icon,{}),K("span",{className:`${L}__item-text`,children:u})]},e.key)}function Re({anchorElem:t=document.body}){let[e]=ot(),[o,l]=rt(null),{editorConfig:r}=T(),{i18n:m}=we(),{field:{richTextComponentMap:p}}=T(),{schemaPath:a}=Pe(),u=be("/",{minLength:0}),g=Ce(()=>{let s=[];for(let n of r.features.slashMenu.dynamicGroups){let y=n({editor:e,queryString:o});s=s.concat(y)}return s},[e,o,r?.features]),E=nt(()=>{let s=[];for(let n of r?.features.slashMenu.groups??[])s.push(n);if(o){s=s.map(y=>{let h=y.items.filter(c=>{let f=c.key;return c.label&&(f=typeof c.label=="function"?c.label({i18n:m,richTextComponentMap:p,schemaPath:a}):c.label),new RegExp(o,"gi").exec(f)?!0:c.keywords!=null?c.keywords.some(i=>new RegExp(o,"gi").exec(i)):!1});return h.length?{...y,items:h}:null}),s=s.filter(y=>y!=null);let n=g();for(let y of n){let h=s.find(c=>c.key===y.key);h?s=s.filter(c=>c.key!==y.key):h={...y,items:[]},h?.items?.length&&(h.items=h.items.concat(h.items)),s.push(h)}}return s},[g,o,r?.features,m]),d=Ce((s,n,y,h)=>{n&&e.update(()=>{n.remove()}),s.onSelect({editor:e,queryString:h}),y()},[e]);return K(he,{anchorElem:t,groups:E,menuRenderFn:(s,{selectItemAndCleanUp:n,selectedItemKey:y,setSelectedItemKey:h})=>s.current&&E.length?ke.createPortal(K("div",{className:L,children:E.map(c=>{let f=c.key;return c.label&&(f=typeof c.label=="function"?c.label({i18n:m,richTextComponentMap:p,schemaPath:a}):c.label),Ne("div",{className:`${L}__group ${L}__group-${c.key}`,children:[K("div",{className:`${L}__group-title`,children:f}),c.items.map((i,x)=>K(it,{index:x,isSelected:y===i.key,item:i,onClick:()=>{h(i.key),n(i)},onMouseEnter:()=>{h(i.key)}},i.key))]},c.key)})}),s.current):null,onQueryChange:l,onSelectItem:d,triggerFn:u})}import{jsx as ce}from"react/jsx-runtime";import{useLexicalComposerContext as mt}from"@lexical/react/LexicalComposerContext.js";import{$createParagraphNode as ut}from"lexical";import*as Le from"react";import{useCallback as ft,useEffect as ve,useRef as pt,useState as gt}from"react";import{createPortal as ht}from"react-dom";var G=(t,e,o,l,r=50,m=25)=>{let p=0;if(t&&!t.contains(l)){let{bottom:a,left:u,right:g,top:E}=t.getBoundingClientRect(),d=E+window.scrollY,s=a+window.scrollY;if(o<d-m||o>s+m||e<u-r||e>g+r)return-1;(e<u||e>g)&&(p=e<u?e-u:e-g)}return p};import{$getNodeByKey as Z}from"lexical";function W(t){let e=t.getBoundingClientRect(),o=getComputedStyle(t).getPropertyValue("transform");if(!o||o==="none")return e;let l=o.split(",").pop();return e.y=e.y-Number(l.replace(")","")),e}function X(t){let e=(u,g)=>u?parseFloat(window.getComputedStyle(u)[g]):0,{marginBottom:o,marginTop:l}=window.getComputedStyle(t),r=e(t.previousElementSibling,"marginBottom"),m=e(t.nextElementSibling,"marginTop"),p=Math.max(parseFloat(l),r);return{marginBottom:Math.max(parseFloat(o),m),marginTop:p}}import{$getRoot as st}from"lexical";function H(t){return t.getEditorState().read(()=>st().getChildrenKeys())}var lt=1,at=-1,Te=0,B={props:null,result:null};function ct(t,e,o=20){let l=t.x-e.x,r=t.y-e.y;return l*l+r*r<=o*o}function Y(t){let{anchorElem:e,cache_threshold:o=20,editor:l,fuzzy:r=!1,horizontalOffset:m=0,point:{x:p,y:a},startIndex:u=0,useEdgeAsDefault:g=!1,verbose:E=!1}=t;if(o>0&&B.props&&B.result&&B.props.fuzzy===t.fuzzy&&B.props.horizontalOffset===t.horizontalOffset&&B.props.useEdgeAsDefault===t.useEdgeAsDefault&&ct(B.props.point,t.point,o))return B.result;let d=e.getBoundingClientRect(),s=H(l),n={blockElem:null,blockNode:null,distance:1/0,foundAtIndex:-1,isFoundNodeEmptyParagraph:!1};return l.getEditorState().read(()=>{if(g){let[c,f]=[l.getElementByKey(s[0]),l.getElementByKey(s[s.length-1])],[i,x]=[W(c),W(f)];if(i&&x&&(a<i.top?(n.blockElem=c,n.distance=i.top-a,n.blockNode=Z(s[0]),n.foundAtIndex=0):a>x.bottom&&(n.distance=a-x.bottom,n.blockNode=Z(s[s.length-1]),n.blockElem=f,n.foundAtIndex=s.length-1),n?.blockElem))return{blockElem:null,isFoundNodeEmptyParagraph:!1}}let y=u,h=Te;for(;y>=0&&y<s.length;){let c=s[y],f=l.getElementByKey(c);if(f===null)break;let i=new I(p+m,a),x=ye.fromDOMRect(W(f)),{marginBottom:b,marginTop:C}=X(f),w=x.generateNewRect({bottom:x.bottom+b,left:d.left,right:d.right,top:x.top-C}),{distance:R,isOnBottomSide:N,isOnTopSide:F}=w.distanceFromPoint(i);if(R===0){n.blockElem=f,n.blockNode=Z(c),n.foundAtIndex=y,n.distance=R,n.blockNode&&n.blockNode.getType()==="paragraph"&&n.blockNode.getTextContent()===""&&(!r&&!t.returnEmptyParagraphs&&(n.blockElem=null,n.blockNode=null),n.isFoundNodeEmptyParagraph=!0);break}else r&&R<n.distance&&(n.blockElem=f,n.blockNode=Z(c),n.distance=R,n.foundAtIndex=y);h===Te&&(F?h=at:N?h=lt:h=1/0),y+=h}}),B.props=t,B.result={blockElem:n.blockElem,blockNode:n.blockNode,foundAtIndex:n.foundAtIndex,isFoundNodeEmptyParagraph:n.isFoundNodeEmptyParagraph},{blockElem:n.blockElem,blockNode:n.blockNode,foundAtIndex:n.foundAtIndex,isFoundNodeEmptyParagraph:n.isFoundNodeEmptyParagraph}}function ee(t,e){return!!t.closest(`.${e}`)}var dt=["IMG","INPUT","TEXTAREA","SELECT","BUTTON","VIDEO","OBJECT","EMBED","IFRAME","HR"];function Se(t){if(!t||dt.includes(t.tagName)||t.offsetHeight===0||t.offsetWidth===0)return!1;let e=window.getComputedStyle(t);return!(e.display==="table-cell"||e.position==="absolute"||e.visibility==="hidden"||e.opacity==="0")}function te(t,e,o,l=0){if(!t){e.style.opacity="0",e.style.transform="translate(-10000px, -10000px)";return}let r=t.getBoundingClientRect(),m=window.getComputedStyle(t),p=e.getBoundingClientRect(),a=o.getBoundingClientRect(),u;if(["lexical-block","lexical-upload","lexical-relationship"].some(d=>t.firstElementChild?.classList.contains(d)))u=r.top+8-a.top;else{let d=Se(t)?parseInt(m.lineHeight,10):0;u=r.top+(d-p.height)/2-a.top}let E=l;e.style.opacity="1",e.style.transform=`translate(${E}px, ${u}px)`}var yt="add-block-menu",oe=1/0;function xt(t){return t===0?1/0:oe>=0&&oe<t?oe:Math.floor(t/2)}function Et(t,e,o){let l=e.parentElement,{editorConfig:r}=T(),m=r?.admin?.hideGutter?-24:12,p=pt(null),[a,u]=gt(null);ve(()=>{function E(d){let s=d.target;if(!z(s))return;let n=G(l,d.pageX,d.pageY,s);if(n===-1){u(null);return}if(ee(s,yt))return;let y=H(t),{blockElem:h,blockNode:c,foundAtIndex:f}=Y({anchorElem:e,cache_threshold:0,editor:t,horizontalOffset:-n,point:new I(d.x,d.y),returnEmptyParagraphs:!0,startIndex:xt(y.length),useEdgeAsDefault:!1});oe=f,h&&(a?.node!==c||a?.elem!==h)&&u({elem:h,node:c})}return document?.addEventListener("mousemove",E),()=>{document?.removeEventListener("mousemove",E)}},[l,e,t,a]),ve(()=>{p.current&&a?.node&&te(a?.elem,p.current,e,m)},[e,a,m]);let g=ft(E=>{let d=a;d?.node&&(t.update(()=>{let s=!0;if((d.node.getType()!=="paragraph"||d.node.getTextContent()!=="")&&(s=!1),!s){let n=ut();d.node.insertAfter(n),setTimeout(()=>{d={elem:t.getElementByKey(n.getKey()),node:n},u(d)},0)}}),setTimeout(()=>{t.update(()=>{t.focus(),d.node&&"select"in d.node&&typeof d.node.select=="function"&&d.node.select()})},1),setTimeout(()=>{t.dispatchCommand(ge,{node:d.node})},2),E.stopPropagation(),E.preventDefault())},[t,a]);return ht(ce(Le.Fragment,{children:ce("button",{className:"icon add-block-menu",onClick:E=>{g(E)},ref:p,type:"button",children:ce("div",{className:o?"icon":""})})}),e)}function Be({anchorElem:t=document.body}){let[e]=mt();return Et(e,t,e._editable)}import{jsx as ne,jsxs as Ct}from"react/jsx-runtime";import{useLexicalComposerContext as Nt}from"@lexical/react/LexicalComposerContext.js";import{eventFiles as Ae}from"@lexical/rich-text";import{$getNearestNodeFromDOMNode as Fe,$getNodeByKey as Pt}from"lexical";import*as $e from"react";import{useEffect as de,useRef as re,useState as De}from"react";import{createPortal as wt}from"react-dom";var Me=0,bt=-24;var $=0;function Ie(t,e,o,l,r,m,p,a,u,g=!1){let{height:E,top:d}=l.getBoundingClientRect(),{top:s,width:n}=p.getBoundingClientRect(),{marginBottom:y,marginTop:h}=X(l),c=d,f=m>=d+E/2+window.scrollY,i=!1;if(r?.elem)if(l!==r?.elem)(f&&r?.elem&&r?.elem===l.nextElementSibling||!f&&r?.elem&&r?.elem===l.previousElementSibling)&&($++,$<200&&(i=!0));else{$++;let w=r?.boundingBox?.y,R=l.getBoundingClientRect().y;(f===r?.isBelow&&w===R||$<200)&&(i=!1)}if(i)return{isBelow:f,willStayInSamePosition:i};g?c+=E/2:f?c+=E+y/2:c-=h/2;let x=0;g||(f?x=-Me:x=Me);let b=c-s+x,C=bt-e;return o.style.width=`calc(${n}px - ${t})`,o.style.opacity=".8",o.style.transform=`translate(${C}px, calc(${b}px - 2px))`,r.elem.style.opacity="",r?.elem===l?f?r.elem.style.marginTop="":r.elem.style.marginBottom="":(r.elem.style.marginBottom="",r.elem.style.marginTop=""),$=0,{isBelow:f,willStayInSamePosition:i}}var kt="draggable-block-menu",Oe="application/x-lexical-drag-block",q=1/0;function _e(t){return t===0?1/0:q>=0&&q<t?q:Math.floor(t/2)}function Rt(t,e){let{transform:o}=e.style;t.setDragImage(e,0,0),setTimeout(()=>{e.style.transform=o})}function He(t,e){t&&(t.style.opacity="0"),e&&(e.style.opacity="",e.style.marginBottom="",e.style.marginTop="")}function Tt(t,e,o){let l=e.parentElement,r=re(null),m=re(null),p=re(null),a=re(!1),[u,g]=De(null),[E,d]=De(null),{editorConfig:s}=T(),n=s?.admin?.hideGutter?-44:-8;de(()=>{function c(f){let i=f.target;if(!z(i))return;let x=G(l,f.pageX,f.pageY,i);if(x===-1){g(null);return}if(ee(i,kt))return;let b=H(t),{blockElem:C,foundAtIndex:w,isFoundNodeEmptyParagraph:R}=Y({anchorElem:e,cache_threshold:0,editor:t,horizontalOffset:-x,point:new I(f.x,f.y),startIndex:_e(b.length),useEdgeAsDefault:!1,verbose:!1});q=w,!(!C&&!R)&&u!==C&&g(C)}return document?.addEventListener("mousemove",c),()=>{document?.removeEventListener("mousemove",c)}},[l,e,t,u]),de(()=>{r.current&&te(u,r.current,e,n)},[e,u,n]),de(()=>{function c(i){if(!a.current)return!1;let[x]=Ae(i);if(x)return!1;let{pageY:b,target:C}=i;if(!z(C))return!1;let w=G(l,i.pageX,i.pageY,C,100,50),R=H(t),{blockElem:N,foundAtIndex:F,isFoundNodeEmptyParagraph:D}=Y({anchorElem:e,editor:t,fuzzy:!0,horizontalOffset:-w,point:new I(i.x,i.y),startIndex:_e(R.length),useEdgeAsDefault:!0,verbose:!0});q=F;let S=m.current;if(N===null||S===null)return!1;if(u!==N){let{isBelow:v,willStayInSamePosition:V}=Ie(s?.admin?.hideGutter?"0px":"3rem",n+(s?.admin?.hideGutter?r?.current?.getBoundingClientRect()?.width??0:-(r?.current?.getBoundingClientRect()?.width??0)),S,N,E,b,e,i,p,D);i.preventDefault(),V||d({boundingBox:N.getBoundingClientRect(),elem:N,isBelow:v})}else He(S,E?.elem),d({boundingBox:N.getBoundingClientRect(),elem:N,isBelow:!1});return!0}function f(i){if(!a.current)return!1;let[x]=Ae(i);if(x)return!1;let{dataTransfer:b,pageY:C,target:w}=i,R=b?.getData(Oe)||"";return t.update(()=>{let N=Pt(R);if(!N||!z(w))return!1;let F=G(l,i.pageX,i.pageY,w,100,50),{blockElem:D,isFoundNodeEmptyParagraph:S}=Y({anchorElem:e,editor:t,fuzzy:!0,horizontalOffset:-F,point:new I(i.x,i.y),useEdgeAsDefault:!0});if(!D)return!1;let v=Fe(D);if(!v)return!1;if(v===N)return!0;let{height:V,top:se}=W(D),ae=C>=se+V/2+window.scrollY;S?(v.insertBefore(N),v.remove()):ae?v.insertAfter(N):v.insertBefore(N),u!==null&&g(null),document.querySelectorAll(".lexical-block-highlighter").forEach(M=>{M.remove()});let O=t.getElementByKey(N.getKey());setTimeout(()=>{let M=O.getBoundingClientRect(),k=document.createElement("div");k.className="lexical-block-highlighter",k.style.backgroundColor="var(--theme-elevation-1000",k.style.transition="opacity 0.5s ease-in-out",k.style.zIndex="1",k.style.pointerEvents="none",k.style.boxSizing="border-box",k.style.borderRadius="4px",k.style.position="absolute",document.body.appendChild(k),k.style.opacity="0.1",k.style.height=`${M.height+8}px`,k.style.width=`${M.width+8}px`,k.style.top=`${M.top+window.scrollY-4}px`,k.style.left=`${M.left-4}px`,setTimeout(()=>{k.style.opacity="0",setTimeout(()=>{k.remove()},500)},1e3)},120)}),!0}return document.addEventListener("dragover",c),document.addEventListener("drop",f),()=>{document.removeEventListener("dragover",c),document.removeEventListener("drop",f)}},[l,n,e,t,E,u,s?.admin?.hideGutter]);function y(c){let f=c.dataTransfer;if(!f||!u)return;Rt(f,u);let i="";t.update(()=>{let x=Fe(u);x&&(i=x.getKey())}),a.current=!0,f.setData(Oe,i)}function h(){a.current=!1,He(m.current,E?.elem)}return wt(Ct($e.Fragment,{children:[ne("div",{className:"icon draggable-block-menu",draggable:!0,onDragEnd:h,onDragStart:y,ref:r,children:ne("div",{className:o?"icon":""})}),ne("div",{className:"draggable-block-target-line",ref:m}),ne("div",{className:"debug-highlight",ref:p})]}),e)}function je({anchorElem:t=document.body}){let[e]=Nt();return Tt(e,t,e._editable)}import{c as St}from"react/compiler-runtime";import{jsx as ze}from"react/jsx-runtime";import{ContentEditable as vt}from"@lexical/react/LexicalContentEditable.js";import{useTranslation as Lt}from"@payloadcms/ui";import"react";function Ke(t){let e=St(3),{className:o}=t,{t:l}=Lt(),r;return e[0]!==l||e[1]!==o?(r=ze(vt,{"aria-placeholder":l("lexical:general:placeholder"),className:o??"ContentEditable__root",placeholder:ze("p",{className:"editor-placeholder",children:l("lexical:general:placeholder")})}),e[0]=l,e[1]=o,e[2]=r):r=e[2],r}var Ue=t=>{let e=Bt(22),{editorConfig:o,editorContainerRef:l,onChange:r}=t,m=T(),[p]=Mt(),[a,u]=Ye(null),g;e[0]===Symbol.for("react.memo_cache_sentinel")?(g=i=>{i!==null&&u(i)},e[0]=g):g=e[0];let E=g,d,s;e[1]!==m||e[2]!==p?(d=()=>{if(!m?.uuid){console.error("Lexical Editor must be used within an EditorConfigProvider");return}m?.parentEditor?.uuid&&m.parentEditor?.registerChild(m.uuid,m);let i=()=>{m.focusEditor(m)},x=()=>{m.blurEditor(m)},b=p.registerCommand(Ht,()=>(i(),!0),Ge),C=p.registerCommand(_t,()=>(x(),!0),Ge);return()=>{b(),C(),m.parentEditor?.unregisterChild?.(m.uuid)}},s=[p,m],e[1]=m,e[2]=p,e[3]=d,e[4]=s):(d=e[3],s=e[4]),We(d,s);let[n,y]=Ye(!1),h,c;e[5]!==n?(h=()=>{let i=()=>{let x=window.matchMedia("(max-width: 768px)").matches;x!==n&&y(x)};return i(),window.addEventListener("resize",i),()=>{window.removeEventListener("resize",i)}},c=[n],e[5]=n,e[6]=h,e[7]=c):(h=e[6],c=e[7]),We(h,c);let f;if(e[8]!==o.features||e[9]!==r||e[10]!==a||e[11]!==n||e[12]!==p||e[13]!==l){let i;e[15]!==r?(i=(b,C,w)=>{(!w.has("focus")||w.size>1)&&r?.(b,C,w)},e[15]=r,e[16]=i):i=e[16];let x;e[17]!==a||e[18]!==n||e[19]!==p||e[20]!==o?(x=a&&J(U.Fragment,{children:[!n&&p.isEditable()&&J(U.Fragment,{children:[P(je,{anchorElem:a}),P(Be,{anchorElem:a})]}),o.features.plugins.map(b=>{if(b.position==="floatingAnchorElem"&&!(b.desktopOnly===!0&&n))return P(_,{anchorElem:a,clientProps:b.clientProps,plugin:b},b.key)}),p.isEditable()&&P(U.Fragment,{children:P(Re,{anchorElem:a})})]}),e[17]=a,e[18]=n,e[19]=p,e[20]=o,e[21]=x):x=e[21],f=J(U.Fragment,{children:[o.features.plugins.map($t),J("div",{className:"editor-container",ref:l,children:[o.features.plugins.map(jt),P(Dt,{ErrorBoundary:It,contentEditable:P("div",{className:"editor-scroller",children:P("div",{className:"editor",ref:E,children:P(Ke,{})})})}),P(Ft,{ignoreSelectionChange:!0,onChange:i}),x,p.isEditable()&&J(U.Fragment,{children:[P(At,{}),o?.features?.markdownTransformers?.length>0&&P(Ee,{})]}),P(Ot,{}),o.features.plugins.map(zt),o.features.plugins.map(Kt)]}),o.features.plugins.map(Gt)]}),e[8]=o.features,e[9]=r,e[10]=a,e[11]=n,e[12]=p,e[13]=l,e[14]=f}else f=e[14];return f};function $t(t){if(t.position==="aboveContainer")return P(_,{clientProps:t.clientProps,plugin:t},t.key)}function jt(t){if(t.position==="top")return P(_,{clientProps:t.clientProps,plugin:t},t.key)}function zt(t){if(t.position==="normal")return P(_,{clientProps:t.clientProps,plugin:t},t.key)}function Kt(t){if(t.position==="bottom")return P(_,{clientProps:t.clientProps,plugin:t},t.key)}function Gt(t){if(t.position==="belowContainer")return P(_,{clientProps:t.clientProps,plugin:t},t.key)}var Je=({children:t,providers:e})=>{if(!e?.length)return t;let o=e[0];return e.length>1?A(o,{children:A(Je,{providers:e.slice(1),children:t})}):A(o,{children:t})},Qe=t=>{let{editorConfig:e,field:o,onChange:l,path:r,readOnly:m,value:p}=t,a=T(),u=qe.useRef(null),g=Ve(()=>{let d=p;return e?.features?.hooks?.load?.length&&e.features.hooks.load.forEach(s=>{d=s({incomingEditorState:d})}),d},[e,p]),E=Ve(()=>{if(g&&typeof g!="object")throw new Error("The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: "+JSON.stringify(g));if(g&&Array.isArray(g)&&!("root"in g))throw new Error("You have tried to pass in data from the old Slate editor to the new Lexical editor. The data structure is different, thus you will have to migrate your data. We offer a one-line migration script which migrates all your rich text fields: https://payloadcms.com/docs/beta/lexical/migration#migration-via-migration-script-recommended");if(g&&"jsonContent"in g)throw new Error("You have tried to pass in data from payload-plugin-lexical. The data structure is different, thus you will have to migrate your data. Migration guide: https://payloadcms.com/docs/beta/lexical/migration#migrating-from-payload-plugin-lexical");return{editable:m!==!0,editorState:g!=null?JSON.stringify(g):void 0,namespace:e.lexical.namespace,nodes:[...ue({editorConfig:e})],onError:d=>{throw d},theme:e.lexical.theme}},[e,g,m]);return E?A(Wt,{initialConfig:E,children:A(fe,{editorConfig:e,editorContainerRef:u,field:o,parentContext:a,children:A(Je,{providers:e.features.providers,children:A(Ue,{editorConfig:e,editorContainerRef:u,onChange:l})})})},r):A("p",{children:"Loading..."})};import"./bundled.css";var ie="rich-text-lexical",eo=t=>{let{descriptionProps:e,editorConfig:o,errorProps:l,field:{name:r,_path:m,admin:{className:p,components:{Description:a,Error:u,Label:g},readOnly:E,style:d,width:s}={},label:n,required:y},field:h,labelProps:c,readOnly:f,validate:i}=t,x=f||E,b=Xt((Q,O)=>{if(typeof i=="function")return i(Q,{...O,props:t,required:y})},[i,y]),{path:C,readOnly:w}=Jt(),R=qt({path:C??m??r,validate:b}),{formInitializing:N,formProcessing:F,initialValue:D,path:S,setValue:v,showError:V,value:se}=R,le=x||w||F||N,ae=[ie,"field-type",p,V&&"error",le&&`${ie}--read-only`,o?.admin?.hideGutter!==!0?`${ie}--show-gutter`:null].filter(Boolean).join(" ");return me("div",{className:ae,style:{...d,width:s},children:[j(Ut,{CustomError:u,field:h,path:S,...l||{},alignCaret:"left"}),j(Vt,{Label:g,field:h,label:n,required:y,...c||{}}),me("div",{className:`${ie}__wrap`,children:[j(Zt,{fallbackRender:to,onReset:()=>{},children:j(Qe,{editorConfig:o,field:h,onChange:Q=>{let O=Q.toJSON();o?.features?.hooks?.save?.length&&o.features.hooks.save.forEach(M=>{O=M({incomingEditorState:O})}),v(O)},path:S,readOnly:le,value:se},JSON.stringify({initialValue:D,path:S}))}),j(Yt,{Description:a,field:h,...e||{}})]})]},S)};function to({error:t}){return me("div",{className:"errorBoundary",role:"alert",children:[j("p",{children:"Something went wrong:"}),j("pre",{style:{color:"red"},children:t.message})]})}var ar=Qt(eo);export{ar as RichText};
2
- //# sourceMappingURL=Field-SUWHJ4HF.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/field/Field.tsx", "../../../src/lexical/LexicalProvider.tsx", "../../../src/lexical/LexicalEditor.tsx", "../../../src/lexical/EditorPlugin.tsx", "../../../src/lexical/plugins/MarkdownShortcut/index.tsx", "../../../src/lexical/plugins/SlashMenu/index.tsx", "../../../src/lexical/plugins/SlashMenu/useMenuTriggerMatch.ts", "../../../src/lexical/plugins/handles/AddBlockHandlePlugin/index.tsx", "../../../src/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.ts", "../../../src/lexical/plugins/handles/utils/getNodeCloseToPoint.ts", "../../../src/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.ts", "../../../src/lexical/plugins/handles/utils/getCollapsedMargins.ts", "../../../src/lexical/plugins/handles/utils/getTopLevelNodeKeys.ts", "../../../src/lexical/plugins/handles/utils/isOnHandleElement.ts", "../../../src/lexical/plugins/handles/utils/doesLineHeightAffectElement.ts", "../../../src/lexical/plugins/handles/utils/setHandlePosition.ts", "../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx", "../../../src/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.ts", "../../../src/lexical/ui/ContentEditable.tsx"],
4
- "sourcesContent": ["'use client'\nimport type { SerializedEditorState } from 'lexical'\n\nimport {\n FieldDescription,\n FieldError,\n FieldLabel,\n useField,\n useFieldProps,\n withCondition,\n} from '@payloadcms/ui'\nimport React, { useCallback } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { LexicalRichTextFieldProps } from '../types.js'\n\nimport { LexicalProvider } from '../lexical/LexicalProvider.js'\nimport './bundled.css'\nimport './index.scss'\nimport '../lexical/theme/EditorTheme.scss'\n\nconst baseClass = 'rich-text-lexical'\n\nconst RichTextComponent: React.FC<\n {\n readonly editorConfig: SanitizedClientEditorConfig // With rendered features n stuff\n } & LexicalRichTextFieldProps\n> = (props) => {\n const {\n descriptionProps,\n editorConfig,\n errorProps,\n field: {\n name,\n _path: pathFromProps,\n admin: {\n className,\n components: { Description, Error, Label },\n readOnly: readOnlyFromAdmin,\n style,\n width,\n } = {},\n label,\n required,\n },\n field,\n labelProps,\n readOnly: readOnlyFromTopLevelProps,\n validate, // Users can pass in client side validation if they WANT to, but it's not required anymore\n } = props\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, props, required })\n }\n },\n // Important: do not add props to the dependencies array.\n // This would cause an infinite loop and endless re-rendering.\n // Removing props from the dependencies array fixed this issue: https://github.com/payloadcms/payload/issues/3709\n [validate, required],\n )\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n const fieldType = useField<SerializedEditorState>({\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const { formInitializing, formProcessing, initialValue, path, setValue, showError, value } =\n fieldType\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n const classes = [\n baseClass,\n 'field-type',\n className,\n showError && 'error',\n disabled && `${baseClass}--read-only`,\n editorConfig?.admin?.hideGutter !== true ? `${baseClass}--show-gutter` : null,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n className={classes}\n key={path}\n style={{\n ...style,\n width,\n }}\n >\n <FieldError\n CustomError={Error}\n field={field}\n path={path}\n {...(errorProps || {})}\n alignCaret=\"left\"\n />\n <FieldLabel\n Label={Label}\n field={field}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${baseClass}__wrap`}>\n <ErrorBoundary fallbackRender={fallbackRender} onReset={() => {}}>\n <LexicalProvider\n editorConfig={editorConfig}\n field={field}\n key={JSON.stringify({ initialValue, path })} // makes sure lexical is completely re-rendered when initialValue changes, bypassing the lexical-internal value memoization. That way, external changes to the form will update the editor. More infos in PR description (https://github.com/payloadcms/payload/pull/5010)\n onChange={(editorState) => {\n let serializedEditorState = editorState.toJSON()\n\n // Transform state through save hooks\n if (editorConfig?.features?.hooks?.save?.length) {\n editorConfig.features.hooks.save.forEach((hook) => {\n serializedEditorState = hook({ incomingEditorState: serializedEditorState })\n })\n }\n\n setValue(serializedEditorState)\n }}\n path={path}\n readOnly={disabled}\n value={value}\n />\n </ErrorBoundary>\n <FieldDescription Description={Description} field={field} {...(descriptionProps || {})} />\n </div>\n </div>\n )\n}\n\nfunction fallbackRender({ error }): React.ReactElement {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return (\n <div className=\"errorBoundary\" role=\"alert\">\n <p>Something went wrong:</p>\n <pre style={{ color: 'red' }}>{error.message}</pre>\n </div>\n )\n}\n\nexport const RichText: typeof RichTextComponent = withCondition(RichTextComponent)\n", "'use client'\nimport type { InitialConfigType } from '@lexical/react/LexicalComposer.js'\nimport type { EditorState, LexicalEditor, SerializedEditorState } from 'lexical'\n\nimport { LexicalComposer } from '@lexical/react/LexicalComposer.js'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { LexicalRichTextFieldProps } from '../types.js'\nimport type { SanitizedClientEditorConfig } from './config/types.js'\n\nimport { LexicalEditor as LexicalEditorComponent } from './LexicalEditor.js'\nimport {\n EditorConfigProvider,\n useEditorConfigContext,\n} from './config/client/EditorConfigProvider.js'\nimport { getEnabledNodes } from './nodes/index.js'\n\nexport type LexicalProviderProps = {\n editorConfig: SanitizedClientEditorConfig\n field: LexicalRichTextFieldProps['field']\n onChange: (editorState: EditorState, editor: LexicalEditor, tags: Set<string>) => void\n path: string\n readOnly: boolean\n value: SerializedEditorState\n}\n\nconst NestProviders = ({ children, providers }) => {\n if (!providers?.length) {\n return children\n }\n const Component = providers[0]\n if (providers.length > 1) {\n return (\n <Component>\n <NestProviders providers={providers.slice(1)}>{children}</NestProviders>\n </Component>\n )\n }\n return <Component>{children}</Component>\n}\n\nexport const LexicalProvider: React.FC<LexicalProviderProps> = (props) => {\n const { editorConfig, field, onChange, path, readOnly, value } = props\n\n const parentContext = useEditorConfigContext()\n\n const editorContainerRef = React.useRef<HTMLDivElement>(null)\n\n const processedValue = useMemo(() => {\n let processed = value\n if (editorConfig?.features?.hooks?.load?.length) {\n editorConfig.features.hooks.load.forEach((hook) => {\n processed = hook({ incomingEditorState: processed })\n })\n }\n return processed\n }, [editorConfig, value])\n\n // useMemo for the initialConfig that depends on readOnly and processedValue\n const initialConfig = useMemo<InitialConfigType>(() => {\n if (processedValue && typeof processedValue !== 'object') {\n throw new Error(\n 'The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: ' +\n JSON.stringify(processedValue),\n )\n }\n\n if (processedValue && Array.isArray(processedValue) && !('root' in processedValue)) {\n throw new Error(\n 'You have tried to pass in data from the old Slate editor to the new Lexical editor. The data structure is different, thus you will have to migrate your data. We offer a one-line migration script which migrates all your rich text fields: https://payloadcms.com/docs/beta/lexical/migration#migration-via-migration-script-recommended',\n )\n }\n\n if (processedValue && 'jsonContent' in processedValue) {\n throw new Error(\n 'You have tried to pass in data from payload-plugin-lexical. The data structure is different, thus you will have to migrate your data. Migration guide: https://payloadcms.com/docs/beta/lexical/migration#migrating-from-payload-plugin-lexical',\n )\n }\n\n return {\n editable: readOnly !== true,\n editorState: processedValue != null ? JSON.stringify(processedValue) : undefined,\n namespace: editorConfig.lexical.namespace,\n nodes: [...getEnabledNodes({ editorConfig })],\n onError: (error: Error) => {\n throw error\n },\n theme: editorConfig.lexical.theme,\n }\n }, [editorConfig, processedValue, readOnly])\n\n if (!initialConfig) {\n return <p>Loading...</p>\n }\n\n return (\n <LexicalComposer initialConfig={initialConfig} key={path}>\n <EditorConfigProvider\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n field={field}\n parentContext={parentContext}\n >\n <NestProviders providers={editorConfig.features.providers}>\n <LexicalEditorComponent\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n onChange={onChange}\n />\n </NestProviders>\n </EditorConfigProvider>\n </LexicalComposer>\n )\n}\n", "'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary.js'\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin.js'\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin.js'\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin.js'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin.js'\nimport { BLUR_COMMAND, COMMAND_PRIORITY_LOW, FOCUS_COMMAND } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useState } from 'react'\n\nimport type { LexicalProviderProps } from './LexicalProvider.js'\n\nimport { EditorPlugin } from './EditorPlugin.js'\nimport './LexicalEditor.scss'\nimport { useEditorConfigContext } from './config/client/EditorConfigProvider.js'\nimport { MarkdownShortcutPlugin } from './plugins/MarkdownShortcut/index.js'\nimport { SlashMenuPlugin } from './plugins/SlashMenu/index.js'\nimport { AddBlockHandlePlugin } from './plugins/handles/AddBlockHandlePlugin/index.js'\nimport { DraggableBlockPlugin } from './plugins/handles/DraggableBlockPlugin/index.js'\nimport { LexicalContentEditable } from './ui/ContentEditable.js'\n\nexport const LexicalEditor: React.FC<\n {\n editorContainerRef: React.RefObject<HTMLDivElement>\n } & Pick<LexicalProviderProps, 'editorConfig' | 'onChange'>\n> = (props) => {\n const { editorConfig, editorContainerRef, onChange } = props\n const editorConfigContext = useEditorConfigContext()\n const [editor] = useLexicalComposerContext()\n\n const [floatingAnchorElem, setFloatingAnchorElem] = useState<HTMLDivElement | null>(null)\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem)\n }\n }\n\n useEffect(() => {\n if (!editorConfigContext?.uuid) {\n console.error('Lexical Editor must be used within an EditorConfigProvider')\n return\n }\n if (editorConfigContext?.parentEditor?.uuid) {\n editorConfigContext.parentEditor?.registerChild(editorConfigContext.uuid, editorConfigContext)\n }\n\n const handleFocus = () => {\n editorConfigContext.focusEditor(editorConfigContext)\n }\n\n const handleBlur = () => {\n editorConfigContext.blurEditor(editorConfigContext)\n }\n\n const unregisterFocus = editor.registerCommand<MouseEvent>(\n FOCUS_COMMAND,\n () => {\n handleFocus()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n const unregisterBlur = editor.registerCommand<MouseEvent>(\n BLUR_COMMAND,\n () => {\n handleBlur()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n return () => {\n unregisterFocus()\n unregisterBlur()\n editorConfigContext.parentEditor?.unregisterChild?.(editorConfigContext.uuid)\n }\n }, [editor, editorConfigContext])\n\n const [isSmallWidthViewport, setIsSmallWidthViewport] = useState<boolean>(false)\n\n useEffect(() => {\n const updateViewPortWidth = () => {\n const isNextSmallWidthViewport = window.matchMedia('(max-width: 768px)').matches\n\n if (isNextSmallWidthViewport !== isSmallWidthViewport) {\n setIsSmallWidthViewport(isNextSmallWidthViewport)\n }\n }\n updateViewPortWidth()\n window.addEventListener('resize', updateViewPortWidth)\n\n return () => {\n window.removeEventListener('resize', updateViewPortWidth)\n }\n }, [isSmallWidthViewport])\n\n return (\n <React.Fragment>\n {editorConfig.features.plugins.map((plugin) => {\n if (plugin.position === 'aboveContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n <div className=\"editor-container\" ref={editorContainerRef}>\n {editorConfig.features.plugins.map((plugin) => {\n if (plugin.position === 'top') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n <RichTextPlugin\n ErrorBoundary={LexicalErrorBoundary}\n contentEditable={\n <div className=\"editor-scroller\">\n <div className=\"editor\" ref={onRef}>\n <LexicalContentEditable />\n </div>\n </div>\n }\n />\n <OnChangePlugin\n // Selection changes can be ignored here, reducing the\n // frequency that the FieldComponent and Payload receive updates.\n // Selection changes are only needed if you are saving selection state\n ignoreSelectionChange\n onChange={(editorState, editor, tags) => {\n // Ignore any onChange event triggered by focus only\n if (!tags.has('focus') || tags.size > 1) {\n if (onChange != null) onChange(editorState, editor, tags)\n }\n }}\n />\n {floatingAnchorElem && (\n <React.Fragment>\n {!isSmallWidthViewport && editor.isEditable() && (\n <React.Fragment>\n <DraggableBlockPlugin anchorElem={floatingAnchorElem} />\n <AddBlockHandlePlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n {editorConfig.features.plugins.map((plugin) => {\n if (\n plugin.position === 'floatingAnchorElem' &&\n !(plugin.desktopOnly === true && isSmallWidthViewport)\n ) {\n return (\n <EditorPlugin\n anchorElem={floatingAnchorElem}\n clientProps={plugin.clientProps}\n key={plugin.key}\n plugin={plugin}\n />\n )\n }\n })}\n {editor.isEditable() && (\n <React.Fragment>\n <SlashMenuPlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n </React.Fragment>\n )}\n {editor.isEditable() && (\n <React.Fragment>\n <HistoryPlugin />\n {editorConfig?.features?.markdownTransformers?.length > 0 && <MarkdownShortcutPlugin />}\n </React.Fragment>\n )}\n\n <TabIndentationPlugin />\n {editorConfig.features.plugins.map((plugin) => {\n if (plugin.position === 'normal') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n {editorConfig.features.plugins.map((plugin) => {\n if (plugin.position === 'bottom') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n </div>\n {editorConfig.features.plugins.map((plugin) => {\n if (plugin.position === 'belowContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n </React.Fragment>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport type { SanitizedPlugin } from '../features/typesClient.js'\n\nexport const EditorPlugin: React.FC<{\n anchorElem?: HTMLDivElement\n clientProps: unknown\n plugin: SanitizedPlugin\n}> = ({ anchorElem, clientProps, plugin }) => {\n if (plugin.position === 'floatingAnchorElem') {\n return (\n plugin.Component && <plugin.Component anchorElem={anchorElem} clientProps={clientProps} />\n )\n }\n\n return plugin.Component && <plugin.Component clientProps={clientProps} />\n}\n", "'use client'\n\nimport { MarkdownShortcutPlugin as LexicalMarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin.js'\nimport * as React from 'react'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\n\nexport const MarkdownShortcutPlugin: React.FC = () => {\n const { editorConfig } = useEditorConfigContext()\n\n return <LexicalMarkdownShortcutPlugin transformers={editorConfig.features.markdownTransformers} />\n}\n", "'use client'\nimport type { TextNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useFieldProps, useTranslation } from '@payloadcms/ui'\nimport { useCallback, useMemo, useState } from 'react'\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\n\nimport type {\n SlashMenuGroup,\n SlashMenuGroupInternal,\n SlashMenuItemInternal,\n SlashMenuItem as SlashMenuItemType,\n} from './LexicalTypeaheadMenuPlugin/types.js'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\nimport { LexicalTypeaheadMenuPlugin } from './LexicalTypeaheadMenuPlugin/index.js'\nimport './index.scss'\nimport { useMenuTriggerMatch } from './useMenuTriggerMatch.js'\n\nconst baseClass = 'slash-menu-popup'\n\nfunction SlashMenuItem({\n isSelected,\n item,\n onClick,\n onMouseEnter,\n}: {\n index: number\n isSelected: boolean\n item: SlashMenuItemInternal\n onClick: () => void\n onMouseEnter: () => void\n}) {\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n const { schemaPath } = useFieldProps()\n\n const { i18n } = useTranslation()\n\n let className = `${baseClass}__item ${baseClass}__item-${item.key}`\n if (isSelected) {\n className += ` ${baseClass}__item--selected`\n }\n\n let title = item.key\n if (item.label) {\n title =\n typeof item.label === 'function'\n ? item.label({ i18n, richTextComponentMap, schemaPath })\n : item.label\n }\n // Crop title to max. 25 characters\n if (title.length > 25) {\n title = title.substring(0, 25) + '...'\n }\n\n return (\n <button\n aria-selected={isSelected}\n className={className}\n id={baseClass + '__item-' + item.key}\n key={item.key}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n ref={(element) => {\n item.ref = { current: element }\n }}\n role=\"option\"\n tabIndex={-1}\n type=\"button\"\n >\n {item?.Icon && <item.Icon />}\n\n <span className={`${baseClass}__item-text`}>{title}</span>\n </button>\n )\n}\n\nexport function SlashMenuPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n const [queryString, setQueryString] = useState<null | string>(null)\n const { editorConfig } = useEditorConfigContext()\n const { i18n } = useTranslation()\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n const { schemaPath } = useFieldProps()\n\n const checkForTriggerMatch = useMenuTriggerMatch('/', {\n minLength: 0,\n })\n\n const getDynamicItems = useCallback(() => {\n let groupWithItems: Array<SlashMenuGroup> = []\n\n for (const dynamicItem of editorConfig.features.slashMenu.dynamicGroups) {\n const dynamicGroupWithItems = dynamicItem({\n editor,\n queryString,\n })\n groupWithItems = groupWithItems.concat(dynamicGroupWithItems)\n }\n\n return groupWithItems\n }, [editor, queryString, editorConfig?.features])\n\n const groups: SlashMenuGroup[] = useMemo(() => {\n let groupsWithItems: SlashMenuGroup[] = []\n for (const groupWithItem of editorConfig?.features.slashMenu.groups ?? []) {\n groupsWithItems.push(groupWithItem)\n }\n\n if (queryString) {\n // Filter current groups first\n groupsWithItems = groupsWithItems.map((group) => {\n const filteredItems = group.items.filter((item) => {\n let itemTitle = item.key\n if (item.label) {\n itemTitle =\n typeof item.label === 'function'\n ? item.label({ i18n, richTextComponentMap, schemaPath })\n : item.label\n }\n\n if (new RegExp(queryString, 'gi').exec(itemTitle)) {\n return true\n }\n if (item.keywords != null) {\n return item.keywords.some((keyword) => new RegExp(queryString, 'gi').exec(keyword))\n }\n return false\n })\n if (filteredItems.length) {\n return {\n ...group,\n items: filteredItems,\n }\n }\n return null\n })\n\n groupsWithItems = groupsWithItems.filter((group) => group != null)\n\n // Now add dynamic groups\n const dynamicItemGroups = getDynamicItems()\n\n // merge dynamic items into groups\n for (const dynamicGroup of dynamicItemGroups) {\n // 1. find the group with the same name or create new one\n let group = groupsWithItems.find((group) => group.key === dynamicGroup.key)\n if (!group) {\n group = {\n ...dynamicGroup,\n items: [],\n }\n } else {\n groupsWithItems = groupsWithItems.filter((group) => group.key !== dynamicGroup.key)\n }\n\n // 2. Add items to group items array and add to sanitized.slashMenu.groupsWithItems\n if (group?.items?.length) {\n group.items = group.items.concat(group.items)\n }\n groupsWithItems.push(group)\n }\n }\n\n return groupsWithItems\n }, [getDynamicItems, queryString, editorConfig?.features, i18n])\n\n const onSelectItem = useCallback(\n (\n selectedItem: SlashMenuItemType,\n nodeToRemove: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => {\n if (nodeToRemove) {\n editor.update(() => {\n nodeToRemove.remove()\n })\n }\n selectedItem.onSelect({ editor, queryString: matchingString })\n\n closeMenu()\n },\n [editor],\n )\n\n return (\n <LexicalTypeaheadMenuPlugin\n anchorElem={anchorElem}\n groups={groups as SlashMenuGroupInternal[]}\n menuRenderFn={(\n anchorElementRef,\n { selectItemAndCleanUp, selectedItemKey, setSelectedItemKey },\n ) =>\n anchorElementRef.current && groups.length\n ? ReactDOM.createPortal(\n <div className={baseClass}>\n {groups.map((group) => {\n let groupTitle = group.key\n if (group.label) {\n groupTitle =\n typeof group.label === 'function'\n ? group.label({ i18n, richTextComponentMap, schemaPath })\n : group.label\n }\n\n return (\n <div\n className={`${baseClass}__group ${baseClass}__group-${group.key}`}\n key={group.key}\n >\n <div className={`${baseClass}__group-title`}>{groupTitle}</div>\n {group.items.map((item, oi: number) => (\n <SlashMenuItem\n index={oi}\n isSelected={selectedItemKey === item.key}\n item={item as SlashMenuItemInternal}\n key={item.key}\n onClick={() => {\n setSelectedItemKey(item.key)\n selectItemAndCleanUp(item)\n }}\n onMouseEnter={() => {\n setSelectedItemKey(item.key)\n }}\n />\n ))}\n </div>\n )\n })}\n </div>,\n anchorElementRef.current,\n )\n : null\n }\n onQueryChange={setQueryString}\n onSelectItem={onSelectItem}\n triggerFn={checkForTriggerMatch}\n />\n )\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useCallback } from 'react'\n\nimport { PUNCTUATION } from './LexicalTypeaheadMenuPlugin/index.js'\n\nexport type TriggerFn = ({\n editor,\n query,\n}: {\n editor: LexicalEditor\n /** The query string is the POTENTIAL trigger AND the text after the trigger text. */\n query: string\n}) => MenuTextMatch | null\n\nexport type MenuTextMatch = {\n leadOffset: number\n matchingString: string\n replaceableString: string\n}\n\n/**\n * Returns a function which checks if the trigger (e.g. '/') is present in the query and, if so, returns the matching string (text after the trigger)\n */\nexport function useMenuTriggerMatch(\n /**\n * Text which triggers the menu. Everything after this text will be used as the query.\n */\n trigger: string,\n { maxLength = 75, minLength = 1 }: { maxLength?: number; minLength?: number },\n): TriggerFn {\n return useCallback(\n ({ query }) => {\n const validChars = '[^' + trigger + PUNCTUATION + '\\\\s]'\n const TypeaheadTriggerRegex = new RegExp(\n '(^|\\\\s|\\\\()(' +\n '[' +\n trigger +\n ']' +\n '((?:' +\n validChars +\n '){0,' +\n maxLength +\n '})' +\n ')$',\n )\n const match = TypeaheadTriggerRegex.exec(query)\n if (match !== null) {\n const maybeLeadingWhitespace = match[1]\n\n /**\n * matchingString is only the text AFTER the trigger text. (So everything after the /)\n */\n const matchingString = match[3]\n\n if (matchingString.length >= minLength) {\n return {\n leadOffset: match.index + maybeLeadingWhitespace.length,\n matchingString,\n replaceableString: match[2], // replaceableString is the trigger text + the matching string\n }\n }\n }\n return null\n },\n [maxLength, minLength, trigger],\n )\n}\n", "'use client'\nimport type { LexicalEditor, LexicalNode, ParagraphNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $createParagraphNode } from 'lexical'\nimport * as React from 'react'\nimport { type JSX, useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { ENABLE_SLASH_MENU_COMMAND } from '../../SlashMenu/LexicalTypeaheadMenuPlugin/index.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport './index.scss'\n\nconst ADD_BLOCK_MENU_CLASSNAME = 'add-block-menu'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction useAddBlockHandle(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const { editorConfig } = useEditorConfigContext()\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -24 : 12\n\n const menuRef = useRef<HTMLButtonElement>(null)\n const [hoveredElement, setHoveredElement] = useState<{\n elem: HTMLElement\n node: LexicalNode\n } | null>(null)\n\n useEffect(() => {\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n\n if (distanceFromScrollerElem === -1) {\n setHoveredElement(null)\n return\n }\n\n if (isOnHandleElement(target, ADD_BLOCK_MENU_CLASSNAME)) {\n return\n }\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _emptyBlockElem,\n blockNode,\n foundAtIndex,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n returnEmptyParagraphs: true,\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n })\n\n prevIndex = foundAtIndex\n\n if (!_emptyBlockElem) {\n return\n }\n if (hoveredElement?.node !== blockNode || hoveredElement?.elem !== _emptyBlockElem) {\n setHoveredElement({\n elem: _emptyBlockElem,\n node: blockNode,\n })\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, hoveredElement])\n\n useEffect(() => {\n if (menuRef.current && hoveredElement?.node) {\n setHandlePosition(\n hoveredElement?.elem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, hoveredElement, blockHandleHorizontalOffset])\n\n const handleAddClick = useCallback(\n (event) => {\n let hoveredElementToUse = hoveredElement\n if (!hoveredElementToUse?.node) {\n return\n }\n\n // 1. Update hoveredElement.node to a new paragraph node if the hoveredElement.node is not a paragraph node\n editor.update(() => {\n // Check if blockNode is an empty text node\n let isEmptyParagraph = true\n if (\n hoveredElementToUse.node.getType() !== 'paragraph' ||\n hoveredElementToUse.node.getTextContent() !== ''\n ) {\n isEmptyParagraph = false\n }\n\n if (!isEmptyParagraph) {\n const newParagraph = $createParagraphNode()\n hoveredElementToUse.node.insertAfter(newParagraph)\n\n setTimeout(() => {\n hoveredElementToUse = {\n elem: editor.getElementByKey(newParagraph.getKey()),\n node: newParagraph,\n }\n setHoveredElement(hoveredElementToUse)\n }, 0)\n }\n })\n\n // 2. Focus on the new paragraph node\n setTimeout(() => {\n editor.update(() => {\n editor.focus()\n\n if (\n hoveredElementToUse.node &&\n 'select' in hoveredElementToUse.node &&\n typeof hoveredElementToUse.node.select === 'function'\n ) {\n hoveredElementToUse.node.select()\n }\n })\n }, 1)\n\n // Make sure this is called AFTER the focusing has been processed by the browser\n // Otherwise, this won't work\n setTimeout(() => {\n editor.dispatchCommand(ENABLE_SLASH_MENU_COMMAND, {\n node: hoveredElementToUse.node as ParagraphNode,\n })\n }, 2)\n\n event.stopPropagation()\n event.preventDefault()\n },\n [editor, hoveredElement],\n )\n\n return createPortal(\n <React.Fragment>\n <button\n className=\"icon add-block-menu\"\n onClick={(event) => {\n handleAddClick(event)\n }}\n ref={menuRef}\n type=\"button\"\n >\n <div className={isEditable ? 'icon' : ''} />\n </button>\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function AddBlockHandlePlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useAddBlockHandle(editor, anchorElem, editor._editable)\n}\n", "'use client'\n/**\n * Calculate distance between scrollerElem and target if target is not in scrollerElem\n */\nexport const calculateDistanceFromScrollerElem = (\n scrollerElem: HTMLElement | null,\n pageX: number,\n pageY: number,\n target: HTMLElement,\n horizontalBuffer: number = 50,\n verticalBuffer: number = 25,\n): number => {\n let distanceFromScrollerElem = 0\n if (scrollerElem && !scrollerElem.contains(target)) {\n const { bottom, left, right, top } = scrollerElem.getBoundingClientRect()\n\n const adjustedTop = top + window.scrollY\n const adjustedBottom = bottom + window.scrollY\n\n if (\n pageY < adjustedTop - verticalBuffer ||\n pageY > adjustedBottom + verticalBuffer ||\n pageX < left - horizontalBuffer ||\n pageX > right + horizontalBuffer\n ) {\n return -1\n }\n\n // This is used to allow the _draggableBlockElem to be found when the mouse is in the\n // buffer zone around the scrollerElem.\n if (pageX < left || pageX > right) {\n distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right\n }\n }\n return distanceFromScrollerElem\n}\n", "'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", "'use client'\nexport function getBoundingClientRectWithoutTransform(elem: HTMLElement): DOMRect {\n const rect = elem.getBoundingClientRect()\n\n // Extract the translation value from the transform style\n const transformValue = getComputedStyle(elem).getPropertyValue('transform')\n if (!transformValue || transformValue === 'none') {\n return rect\n }\n\n const lastNumberOfTransformValue = transformValue.split(',').pop()\n rect.y = rect.y - Number(lastNumberOfTransformValue.replace(')', ''))\n\n // Return the original bounding rect if no translation is applied\n return rect\n}\n", "'use client'\nexport function getCollapsedMargins(elem: HTMLElement): {\n marginBottom: number\n marginTop: number\n} {\n const getMargin = (element: Element | null, margin: 'marginBottom' | 'marginTop'): number =>\n element ? parseFloat(window.getComputedStyle(element)[margin]) : 0\n\n const { marginBottom, marginTop } = window.getComputedStyle(elem)\n const prevElemSiblingMarginBottom = getMargin(elem.previousElementSibling, 'marginBottom')\n const nextElemSiblingMarginTop = getMargin(elem.nextElementSibling, 'marginTop')\n const collapsedTopMargin = Math.max(parseFloat(marginTop), prevElemSiblingMarginBottom)\n const collapsedBottomMargin = Math.max(parseFloat(marginBottom), nextElemSiblingMarginTop)\n\n return { marginBottom: collapsedBottomMargin, marginTop: collapsedTopMargin }\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { $getRoot } from 'lexical'\n\nexport function getTopLevelNodeKeys(editor: LexicalEditor): string[] {\n return editor.getEditorState().read(() => $getRoot().getChildrenKeys())\n}\n", "'use client'\nexport function isOnHandleElement(element: HTMLElement, handleElementClassName: string): boolean {\n return !!element.closest(`.${handleElementClassName}`)\n}\n", "'use client'\nconst replacedElements = [\n 'IMG',\n 'INPUT',\n 'TEXTAREA',\n 'SELECT',\n 'BUTTON',\n 'VIDEO',\n 'OBJECT',\n 'EMBED',\n 'IFRAME',\n 'HR',\n]\n\n/**\n * From ChatGPT, only that verified it works for HR elements.\n *\n * HTML Elements can have CSS lineHeight applied to them, but it doesn't always affect the visual layout.\n * This function checks if the line-height property has an effect on the element's layout.\n * @param htmlElem\n */\nexport function doesLineHeightAffectElement(htmlElem: HTMLElement) {\n if (!htmlElem) return false\n\n // Check for replaced elements, elements that typically don't support line-height adjustments,\n // and elements without visible content\n\n if (\n replacedElements.includes(htmlElem.tagName) ||\n htmlElem.offsetHeight === 0 ||\n htmlElem.offsetWidth === 0\n ) {\n return false\n }\n\n // Check for specific CSS properties that negate line-height's visual effects\n const style = window.getComputedStyle(htmlElem)\n if (\n style.display === 'table-cell' ||\n style.position === 'absolute' ||\n style.visibility === 'hidden' ||\n style.opacity === '0'\n ) {\n return false\n }\n\n // This is a basic check, and there can be more complex scenarios where line-height doesn't have an effect.\n return true\n}\n", "'use client'\nimport { doesLineHeightAffectElement } from './doesLineHeightAffectElement.js'\n\nexport function setHandlePosition(\n targetElem: HTMLElement | null,\n handleElem: HTMLElement,\n anchorElem: HTMLElement,\n leftOffset: number = 0, // SPACE\n) {\n if (!targetElem) {\n handleElem.style.opacity = '0'\n handleElem.style.transform = 'translate(-10000px, -10000px)'\n return\n }\n\n const targetRect = targetElem.getBoundingClientRect()\n const targetStyle = window.getComputedStyle(targetElem)\n const floatingElemRect = handleElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n\n let top: number\n\n const isBlockStyle = ['lexical-block', 'lexical-upload', 'lexical-relationship'].some((classes) =>\n targetElem.firstElementChild?.classList.contains(classes),\n )\n\n if (!isBlockStyle) {\n // No need to let line height affect the re-positioning of the floating element if line height has no\n // visual effect on the element. Otherwise, the floating element will be positioned incorrectly.\n const actualLineHeight = doesLineHeightAffectElement(targetElem)\n ? parseInt(targetStyle.lineHeight, 10)\n : 0\n\n top = targetRect.top + (actualLineHeight - floatingElemRect.height) / 2 - anchorElementRect.top\n } else {\n top = targetRect.top + 8 - anchorElementRect.top\n }\n\n const left = leftOffset\n\n handleElem.style.opacity = '1'\n handleElem.style.transform = `translate(${left}px, ${top}px)`\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\nimport type { DragEvent as ReactDragEvent } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { eventFiles } from '@lexical/rich-text'\nimport { $getNearestNodeFromDOMNode, $getNodeByKey } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport './index.scss'\nimport { setTargetLine } from './setTargetLine.js'\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu'\nconst DRAG_DATA_FORMAT = 'application/x-lexical-drag-block'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction setDragImage(dataTransfer: DataTransfer, draggableBlockElem: HTMLElement) {\n const { transform } = draggableBlockElem.style\n\n // Remove dragImage borders\n dataTransfer.setDragImage(draggableBlockElem, 0, 0)\n\n setTimeout(() => {\n draggableBlockElem.style.transform = transform\n })\n}\n\nfunction hideTargetLine(\n targetLineElem: HTMLElement | null,\n lastTargetBlockElem: HTMLElement | null,\n) {\n if (targetLineElem) {\n targetLineElem.style.opacity = '0'\n }\n if (lastTargetBlockElem) {\n lastTargetBlockElem.style.opacity = ''\n // Delete marginBottom and marginTop values we set\n lastTargetBlockElem.style.marginBottom = ''\n lastTargetBlockElem.style.marginTop = ''\n //lastTargetBlock.style.border = 'none'\n }\n}\n\nfunction useDraggableBlockMenu(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLDivElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n const debugHighlightRef = useRef<HTMLDivElement>(null)\n const isDraggingBlockRef = useRef<boolean>(false)\n const [draggableBlockElem, setDraggableBlockElem] = useState<HTMLElement | null>(null)\n const [lastTargetBlock, setLastTargetBlock] = useState<{\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n }>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -44 : -8\n\n useEffect(() => {\n /**\n * Handles positioning of the drag handle\n */\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n if (distanceFromScrollerElem === -1) {\n setDraggableBlockElem(null)\n return\n }\n\n if (isOnHandleElement(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {\n return\n }\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _draggableBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n verbose: false,\n })\n\n prevIndex = foundAtIndex\n\n //if (DEBUG && _draggableBlockElem) {\n //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)\n //}\n\n if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {\n return\n }\n\n if (draggableBlockElem !== _draggableBlockElem) {\n setDraggableBlockElem(_draggableBlockElem)\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, draggableBlockElem])\n\n useEffect(() => {\n if (menuRef.current) {\n setHandlePosition(\n draggableBlockElem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, draggableBlockElem, blockHandleHorizontalOffset])\n\n useEffect(() => {\n function onDragover(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n\n const { pageY, target } = event\n if (!isHTMLElement(target)) {\n return false\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: targetBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: true,\n verbose: true,\n })\n\n prevIndex = foundAtIndex\n\n const targetLineElem = targetLineRef.current\n // targetBlockElem === null shouldn't happen\n if (targetBlockElem === null || targetLineElem === null) {\n return false\n }\n\n if (draggableBlockElem !== targetBlockElem) {\n const { isBelow, willStayInSamePosition } = setTargetLine(\n editorConfig?.admin?.hideGutter ? '0px' : '3rem',\n blockHandleHorizontalOffset +\n (editorConfig?.admin?.hideGutter\n ? menuRef?.current?.getBoundingClientRect()?.width ?? 0\n : -(menuRef?.current?.getBoundingClientRect()?.width ?? 0)),\n targetLineElem,\n targetBlockElem,\n lastTargetBlock,\n pageY,\n anchorElem,\n event,\n debugHighlightRef,\n isFoundNodeEmptyParagraph,\n )\n\n // Prevent default event to be able to trigger onDrop events\n // Calling preventDefault() adds the green plus icon to the cursor,\n // indicating that the drop is allowed.\n event.preventDefault()\n\n if (!willStayInSamePosition) {\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow,\n })\n }\n } else {\n hideTargetLine(targetLineElem, lastTargetBlock?.elem)\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow: false,\n })\n }\n\n return true\n }\n\n function onDrop(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n const { dataTransfer, pageY, target } = event\n const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || ''\n\n editor.update(() => {\n const draggedNode = $getNodeByKey(dragData)\n if (!draggedNode) {\n return false\n }\n if (!isHTMLElement(target)) {\n return false\n }\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n useEdgeAsDefault: true,\n })\n\n if (!targetBlockElem) {\n return false\n }\n const targetNode = $getNearestNodeFromDOMNode(targetBlockElem)\n if (!targetNode) {\n return false\n }\n if (targetNode === draggedNode) {\n return true\n }\n\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n getBoundingClientRectWithoutTransform(targetBlockElem)\n\n const mouseY = pageY\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n targetNode.insertAfter(draggedNode)\n } else {\n // above targetBlockElem\n targetNode.insertBefore(draggedNode)\n }\n } else {\n //\n targetNode.insertBefore(draggedNode)\n targetNode.remove()\n }\n\n /*\n if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {\n targetNode.insertAfter(draggedNode)\n } else {\n targetNode.insertBefore(draggedNode)\n }*/\n if (draggableBlockElem !== null) {\n setDraggableBlockElem(null)\n }\n\n // find all previous elements with lexical-block-highlighter class and remove them\n const allPrevHighlighters = document.querySelectorAll('.lexical-block-highlighter')\n allPrevHighlighters.forEach((highlighter) => {\n highlighter.remove()\n })\n\n const newInsertedElem = editor.getElementByKey(draggedNode.getKey())\n setTimeout(() => {\n // add new temp html element to newInsertedElem with the same height and width and the class block-selected\n // to highlight the new inserted element\n const newInsertedElemRect = newInsertedElem.getBoundingClientRect()\n\n const highlightElem = document.createElement('div')\n highlightElem.className = 'lexical-block-highlighter'\n\n highlightElem.style.backgroundColor = 'var(--theme-elevation-1000'\n highlightElem.style.transition = 'opacity 0.5s ease-in-out'\n highlightElem.style.zIndex = '1'\n highlightElem.style.pointerEvents = 'none'\n highlightElem.style.boxSizing = 'border-box'\n highlightElem.style.borderRadius = '4px'\n highlightElem.style.position = 'absolute'\n document.body.appendChild(highlightElem)\n\n highlightElem.style.opacity = '0.1'\n\n highlightElem.style.height = `${newInsertedElemRect.height + 8}px`\n highlightElem.style.width = `${newInsertedElemRect.width + 8}px`\n highlightElem.style.top = `${newInsertedElemRect.top + window.scrollY - 4}px`\n highlightElem.style.left = `${newInsertedElemRect.left - 4}px`\n\n setTimeout(() => {\n highlightElem.style.opacity = '0'\n setTimeout(() => {\n highlightElem.remove()\n }, 500)\n }, 1000)\n }, 120)\n })\n\n return true\n }\n\n // register onDragover event listeners:\n document.addEventListener('dragover', onDragover)\n // register onDrop event listeners:\n document.addEventListener('drop', onDrop)\n\n return () => {\n document.removeEventListener('dragover', onDragover)\n document.removeEventListener('drop', onDrop)\n }\n }, [\n scrollerElem,\n blockHandleHorizontalOffset,\n anchorElem,\n editor,\n lastTargetBlock,\n draggableBlockElem,\n editorConfig?.admin?.hideGutter,\n ])\n\n function onDragStart(event: ReactDragEvent<HTMLDivElement>): void {\n const dataTransfer = event.dataTransfer\n if (!dataTransfer || !draggableBlockElem) {\n return\n }\n setDragImage(dataTransfer, draggableBlockElem)\n let nodeKey = ''\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(draggableBlockElem)\n if (node) {\n nodeKey = node.getKey()\n }\n })\n isDraggingBlockRef.current = true\n dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey)\n }\n\n function onDragEnd(): void {\n isDraggingBlockRef.current = false\n hideTargetLine(targetLineRef.current, lastTargetBlock?.elem)\n }\n\n return createPortal(\n <React.Fragment>\n <div\n className=\"icon draggable-block-menu\"\n draggable\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n ref={menuRef}\n >\n <div className={isEditable ? 'icon' : ''} />\n </div>\n <div className=\"draggable-block-target-line\" ref={targetLineRef} />\n <div className=\"debug-highlight\" ref={debugHighlightRef} />\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function DraggableBlockPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useDraggableBlockMenu(editor, anchorElem, editor._editable)\n}\n", "'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", "'use client'\nimport type { JSX } from 'react'\n\nimport { ContentEditable } from '@lexical/react/LexicalContentEditable.js'\nimport { useTranslation } from '@payloadcms/ui'\nimport * as React from 'react'\n\nimport './ContentEditable.scss'\n\nexport function LexicalContentEditable({ className }: { className?: string }): JSX.Element {\n const { t } = useTranslation<{}, string>()\n\n return (\n <ContentEditable\n aria-placeholder={t('lexical:general:placeholder')}\n className={className ?? 'ContentEditable__root'}\n placeholder={<p className=\"editor-placeholder\">{t('lexical:general:placeholder')}</p>}\n />\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["FieldDescription", "FieldError", "FieldLabel", "useField", "useFieldProps", "withCondition", "useCallback", "ErrorBoundary", "LexicalComposer", "React", "useMemo", "c", "_c", "useLexicalComposerContext", "LexicalErrorBoundary", "HistoryPlugin", "OnChangePlugin", "RichTextPlugin", "TabIndentationPlugin", "BLUR_COMMAND", "COMMAND_PRIORITY_LOW", "FOCUS_COMMAND", "React", "useEffect", "useState", "EditorPlugin", "anchorElem", "clientProps", "plugin", "position", "Component", "_jsx", "c", "_c", "MarkdownShortcutPlugin", "LexicalMarkdownShortcutPlugin", "MarkdownShortcutPlugin", "$", "_c", "editorConfig", "useEditorConfigContext", "t0", "features", "markdownTransformers", "_jsx", "LexicalMarkdownShortcutPlugin", "transformers", "useLexicalComposerContext", "useFieldProps", "useTranslation", "useCallback", "useMemo", "useState", "ReactDOM", "c", "_c", "useMenuTriggerMatch", "trigger", "t0", "$", "_c", "maxLength", "t1", "minLength", "t2", "undefined", "t3", "t4", "query", "validChars", "PUNCTUATION", "match", "RegExp", "exec", "maybeLeadingWhitespace", "matchingString", "length", "leadOffset", "index", "replaceableString", "baseClass", "SlashMenuItem", "isSelected", "item", "onClick", "onMouseEnter", "field", "richTextComponentMap", "useEditorConfigContext", "schemaPath", "useFieldProps", "i18n", "useTranslation", "className", "key", "title", "label", "length", "substring", "_jsxs", "id", "ref", "element", "current", "role", "tabIndex", "type", "Icon", "_jsx", "SlashMenuPlugin", "anchorElem", "document", "body", "editor", "useLexicalComposerContext", "queryString", "setQueryString", "useState", "editorConfig", "checkForTriggerMatch", "useMenuTriggerMatch", "minLength", "getDynamicItems", "useCallback", "groupWithItems", "dynamicItem", "features", "slashMenu", "dynamicGroups", "dynamicGroupWithItems", "concat", "groups", "useMemo", "groupsWithItems", "groupWithItem", "push", "map", "group", "filteredItems", "items", "filter", "itemTitle", "RegExp", "exec", "keywords", "some", "keyword", "dynamicItemGroups", "dynamicGroup", "find", "onSelectItem", "selectedItem", "nodeToRemove", "closeMenu", "matchingString", "update", "remove", "onSelect", "LexicalTypeaheadMenuPlugin", "menuRenderFn", "anchorElementRef", "selectItemAndCleanUp", "selectedItemKey", "setSelectedItemKey", "createPortal", "groupTitle", "oi", "index", "onQueryChange", "triggerFn", "useLexicalComposerContext", "$createParagraphNode", "React", "useCallback", "useEffect", "useRef", "useState", "createPortal", "calculateDistanceFromScrollerElem", "scrollerElem", "pageX", "pageY", "target", "horizontalBuffer", "verticalBuffer", "distanceFromScrollerElem", "contains", "bottom", "left", "right", "top", "getBoundingClientRect", "adjustedTop", "window", "scrollY", "adjustedBottom", "$getNodeByKey", "getBoundingClientRectWithoutTransform", "elem", "rect", "getBoundingClientRect", "transformValue", "getComputedStyle", "getPropertyValue", "lastNumberOfTransformValue", "split", "pop", "y", "Number", "replace", "getCollapsedMargins", "elem", "getMargin", "element", "margin", "parseFloat", "window", "getComputedStyle", "marginBottom", "marginTop", "prevElemSiblingMarginBottom", "previousElementSibling", "nextElemSiblingMarginTop", "nextElementSibling", "collapsedTopMargin", "Math", "max", "$getRoot", "getTopLevelNodeKeys", "editor", "getEditorState", "read", "getChildrenKeys", "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", "getTopLevelNodeKeys", "closestBlockElem", "blockElem", "blockNode", "distance", "Infinity", "foundAtIndex", "isFoundNodeEmptyParagraph", "getEditorState", "read", "firstNode", "lastNode", "getElementByKey", "length", "firstNodeRect", "lastNodeRect", "getBoundingClientRectWithoutTransform", "top", "$getNodeByKey", "bottom", "index", "direction", "key", "elem", "Point", "domRect", "Rect", "fromDOMRect", "marginBottom", "marginTop", "getCollapsedMargins", "rect", "generateNewRect", "left", "right", "isOnBottomSide", "isOnTopSide", "distanceFromPoint", "getType", "getTextContent", "returnEmptyParagraphs", "isOnHandleElement", "element", "handleElementClassName", "closest", "replacedElements", "doesLineHeightAffectElement", "htmlElem", "includes", "tagName", "offsetHeight", "offsetWidth", "style", "window", "getComputedStyle", "display", "position", "visibility", "opacity", "setHandlePosition", "targetElem", "handleElem", "anchorElem", "leftOffset", "style", "opacity", "transform", "targetRect", "getBoundingClientRect", "targetStyle", "window", "getComputedStyle", "floatingElemRect", "anchorElementRect", "top", "some", "classes", "firstElementChild", "classList", "contains", "actualLineHeight", "doesLineHeightAffectElement", "parseInt", "lineHeight", "height", "left", "ADD_BLOCK_MENU_CLASSNAME", "prevIndex", "Infinity", "getCurrentIndex", "keysLength", "Math", "floor", "useAddBlockHandle", "editor", "anchorElem", "isEditable", "scrollerElem", "parentElement", "editorConfig", "useEditorConfigContext", "blockHandleHorizontalOffset", "admin", "hideGutter", "menuRef", "useRef", "hoveredElement", "setHoveredElement", "useState", "useEffect", "onDocumentMouseMove", "event", "target", "isHTMLElement", "distanceFromScrollerElem", "calculateDistanceFromScrollerElem", "pageX", "pageY", "isOnHandleElement", "topLevelNodeKeys", "getTopLevelNodeKeys", "blockElem", "_emptyBlockElem", "blockNode", "foundAtIndex", "getNodeCloseToPoint", "cache_threshold", "horizontalOffset", "point", "Point", "x", "y", "returnEmptyParagraphs", "startIndex", "length", "useEdgeAsDefault", "node", "elem", "document", "addEventListener", "removeEventListener", "current", "setHandlePosition", "handleAddClick", "useCallback", "hoveredElementToUse", "update", "isEmptyParagraph", "getType", "getTextContent", "newParagraph", "$createParagraphNode", "insertAfter", "setTimeout", "getElementByKey", "getKey", "focus", "select", "dispatchCommand", "ENABLE_SLASH_MENU_COMMAND", "stopPropagation", "preventDefault", "createPortal", "_jsx", "Fragment", "className", "onClick", "ref", "type", "AddBlockHandlePlugin", "body", "useLexicalComposerContext", "_editable", "useLexicalComposerContext", "eventFiles", "$getNearestNodeFromDOMNode", "$getNodeByKey", "React", "useEffect", "useRef", "useState", "createPortal", "TARGET_LINE_HALF_HEIGHT", "TEXT_BOX_HORIZONTAL_PADDING", "animationTimer", "setTargetLine", "offsetWidth", "offsetLeft", "targetLineElem", "targetBlockElem", "lastTargetBlock", "mouseY", "anchorElem", "event", "debugHighlightRef", "isFoundNodeEmptyParagraph", "height", "targetBlockElemHeight", "top", "targetBlockElemTop", "getBoundingClientRect", "anchorTop", "width", "anchorWidth", "marginBottom", "marginTop", "getCollapsedMargins", "lineTop", "isBelow", "window", "scrollY", "willStayInSamePosition", "elem", "nextElementSibling", "previousElementSibling", "lastBoundingBoxPosition", "boundingBox", "y", "currentBoundingBoxPosition", "targetElemTranslate2", "TARGET_LINE_HALF_HEIGHT", "left", "TEXT_BOX_HORIZONTAL_PADDING", "style", "opacity", "transform", "DRAGGABLE_BLOCK_MENU_CLASSNAME", "DRAG_DATA_FORMAT", "prevIndex", "Infinity", "getCurrentIndex", "keysLength", "Math", "floor", "setDragImage", "dataTransfer", "draggableBlockElem", "transform", "style", "setTimeout", "hideTargetLine", "targetLineElem", "lastTargetBlockElem", "opacity", "marginBottom", "marginTop", "useDraggableBlockMenu", "editor", "anchorElem", "isEditable", "scrollerElem", "parentElement", "menuRef", "useRef", "targetLineRef", "debugHighlightRef", "isDraggingBlockRef", "setDraggableBlockElem", "useState", "lastTargetBlock", "setLastTargetBlock", "editorConfig", "useEditorConfigContext", "blockHandleHorizontalOffset", "admin", "hideGutter", "useEffect", "onDocumentMouseMove", "event", "target", "isHTMLElement", "distanceFromScrollerElem", "calculateDistanceFromScrollerElem", "pageX", "pageY", "isOnHandleElement", "topLevelNodeKeys", "getTopLevelNodeKeys", "blockElem", "_draggableBlockElem", "foundAtIndex", "isFoundNodeEmptyParagraph", "getNodeCloseToPoint", "cache_threshold", "horizontalOffset", "point", "Point", "x", "y", "startIndex", "length", "useEdgeAsDefault", "verbose", "document", "addEventListener", "removeEventListener", "current", "setHandlePosition", "onDragover", "isFileTransfer", "eventFiles", "targetBlockElem", "fuzzy", "isBelow", "willStayInSamePosition", "setTargetLine", "getBoundingClientRect", "width", "preventDefault", "boundingBox", "elem", "onDrop", "dragData", "getData", "update", "draggedNode", "$getNodeByKey", "targetNode", "$getNearestNodeFromDOMNode", "height", "targetBlockElemHeight", "top", "targetBlockElemTop", "getBoundingClientRectWithoutTransform", "window", "scrollY", "insertBefore", "remove", "insertAfter", "querySelectorAll", "forEach", "highlighter", "newInsertedElem", "getElementByKey", "getKey", "newInsertedElemRect", "highlightElem", "createElement", "className", "backgroundColor", "transition", "zIndex", "pointerEvents", "boxSizing", "borderRadius", "position", "body", "appendChild", "left", "onDragStart", "nodeKey", "node", "setData", "onDragEnd", "createPortal", "_jsxs", "Fragment", "_jsx", "draggable", "ref", "DraggableBlockPlugin", "useLexicalComposerContext", "_editable", "c", "_c", "ContentEditable", "useTranslation", "LexicalContentEditable", "t0", "$", "className", "t", "t1", "_jsx", "placeholder", "children", "LexicalEditor", "props", "$", "_c", "editorConfig", "editorContainerRef", "onChange", "editorConfigContext", "useEditorConfigContext", "editor", "useLexicalComposerContext", "floatingAnchorElem", "setFloatingAnchorElem", "useState", "t0", "Symbol", "for", "_floatingAnchorElem", "onRef", "t1", "t2", "uuid", "console", "error", "parentEditor", "registerChild", "handleFocus", "focusEditor", "handleBlur", "blurEditor", "unregisterFocus", "registerCommand", "FOCUS_COMMAND", "COMMAND_PRIORITY_LOW", "unregisterBlur", "BLUR_COMMAND", "unregisterChild", "useEffect", "isSmallWidthViewport", "setIsSmallWidthViewport", "t3", "t4", "updateViewPortWidth", "isNextSmallWidthViewport", "window", "matchMedia", "matches", "addEventListener", "removeEventListener", "t5", "features", "t6", "editorState", "editor_0", "tags", "has", "size", "t7", "_jsxs", "Fragment", "children", "isEditable", "_jsx", "DraggableBlockPlugin", "anchorElem", "AddBlockHandlePlugin", "plugins", "map", "plugin_1", "plugin", "position", "desktopOnly", "EditorPlugin", "clientProps", "key", "SlashMenuPlugin", "_temp", "className", "ref", "_temp2", "RichTextPlugin", "ErrorBoundary", "LexicalErrorBoundary", "contentEditable", "LexicalContentEditable", "OnChangePlugin", "ignoreSelectionChange", "HistoryPlugin", "markdownTransformers", "length", "MarkdownShortcutPlugin", "TabIndentationPlugin", "_temp3", "_temp4", "_temp5", "plugin_0", "plugin_2", "plugin_3", "plugin_4", "NestProviders", "children", "providers", "length", "Component", "_jsx", "slice", "LexicalProvider", "props", "editorConfig", "field", "onChange", "path", "readOnly", "value", "parentContext", "useEditorConfigContext", "editorContainerRef", "useRef", "processedValue", "useMemo", "processed", "features", "hooks", "load", "forEach", "hook", "incomingEditorState", "initialConfig", "Error", "JSON", "stringify", "Array", "isArray", "editable", "editorState", "undefined", "namespace", "lexical", "nodes", "getEnabledNodes", "onError", "error", "theme", "LexicalComposer", "EditorConfigProvider", "LexicalEditorComponent", "baseClass", "RichTextComponent", "props", "descriptionProps", "editorConfig", "errorProps", "field", "name", "_path", "pathFromProps", "admin", "className", "components", "Description", "Error", "Label", "readOnly", "readOnlyFromAdmin", "style", "width", "label", "required", "labelProps", "readOnlyFromTopLevelProps", "validate", "readOnlyFromProps", "memoizedValidate", "useCallback", "value", "validationOptions", "path", "pathFromContext", "readOnlyFromContext", "useFieldProps", "fieldType", "useField", "formInitializing", "formProcessing", "initialValue", "setValue", "showError", "disabled", "classes", "hideGutter", "filter", "Boolean", "join", "_jsxs", "_jsx", "FieldError", "CustomError", "alignCaret", "FieldLabel", "ErrorBoundary", "fallbackRender", "onReset", "LexicalProvider", "onChange", "editorState", "serializedEditorState", "toJSON", "features", "hooks", "save", "length", "forEach", "hook", "incomingEditorState", "JSON", "stringify", "FieldDescription", "error", "role", "color", "message", "RichText", "withCondition"]
7
- }
@@ -1,2 +0,0 @@
1
- "use client";import{a as S,d as x}from"./chunk-UJDWBQ2K.js";import{b as E}from"./chunk-OLSILJA6.js";import{jsx as i,jsxs as C}from"react/jsx-runtime";import{useLexicalComposerContext as W}from"@lexical/react/LexicalComposerContext.js";import{useLexicalNodeSelection as Y}from"@lexical/react/useLexicalNodeSelection.js";import{mergeRegister as H}from"@lexical/utils";import{getTranslation as U}from"@payloadcms/translations";import{Button as w,useConfig as q,useDocumentDrawer as z,usePayloadAPI as F,useTranslation as G}from"@payloadcms/ui";import{$getNodeByKey as A,$getSelection as J,$isNodeSelection as Q,CLICK_COMMAND as V,COMMAND_PRIORITY_LOW as h,KEY_BACKSPACE_COMMAND as X,KEY_DELETE_COMMAND as Z}from"lexical";import ee,{useCallback as _,useEffect as te,useReducer as oe,useRef as ne,useState as se}from"react";var t="lexical-relationship",T={depth:0},ie=d=>{let{data:{relationTo:y,value:l},nodeKey:n}=d;if(typeof l=="object")throw new Error("Relationship value should be a string or number. The Lexical Relationship component should not receive the populated value object.");let u=ne(null),[o]=W(),[s,r,m]=Y(n),{field:g}=E(),{config:{collections:M,routes:{api:O},serverURL:B}}=q(),[a,le]=se(()=>M.find(e=>e.slug===y)),{i18n:I,t:p}=G(),[R,L]=oe(e=>e+1,0),[{data:v},{setParams:b}]=F(`${B}${O}/${a.slug}/${l}`,{initialParams:T}),[j,K,{closeDrawer:N}]=z({id:l,collectionSlug:a.slug}),P=_(()=>{o.update(()=>{A(n).remove()})},[o,n]),k=ee.useCallback(({doc:e})=>{b({...T,cacheBust:R}),N(),L()},[R,b,N]),f=_(e=>{if(s&&Q(J())){e.preventDefault();let $=A(n);if(x($))return $.remove(),!0}return!1},[s,n]),D=_(e=>{let c=e;return c.target===u.current||u.current?.contains(c.target)?(c.shiftKey?r(!s):s||(m(),r(!0)),!0):!1},[s,r,m]);return te(()=>H(o.registerCommand(V,D,h),o.registerCommand(Z,f,h),o.registerCommand(X,f,h)),[m,o,s,n,f,r,D]),C("div",{className:[t,s&&`${t}--selected`].filter(Boolean).join(" "),contentEditable:!1,ref:u,children:[C("div",{className:`${t}__wrap`,children:[i("p",{className:`${t}__label`,children:p("fields:labelRelationship",{label:U(a.labels.singular,I)})}),i(K,{className:`${t}__doc-drawer-toggler`,children:i("p",{className:`${t}__title`,children:v?v[a?.admin?.useAsTitle||"id"]:l})})]}),o.isEditable()&&C("div",{className:`${t}__actions`,children:[i(w,{buttonStyle:"icon-label",className:`${t}__swapButton`,disabled:g?.admin?.readOnly,el:"div",icon:"swap",onClick:()=>{o.dispatchCommand(S,{replace:{nodeKey:n}})},round:!0,tooltip:p("fields:swapRelationship")}),i(w,{buttonStyle:"icon-label",className:`${t}__removeButton`,disabled:g?.admin?.readOnly,icon:"x",onClick:e=>{e.preventDefault(),P()},round:!0,tooltip:p("fields:removeRelationship")})]}),!!l&&i(j,{onSave:k})]})},ge=d=>i(ie,{...d});export{ge as RelationshipComponent};
2
- //# sourceMappingURL=RelationshipComponent-EZORSGUZ.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/features/relationship/client/components/RelationshipComponent.tsx"],
4
- "sourcesContent": ["'use client'\nimport type { ElementFormatType } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, useConfig, useDocumentDrawer, usePayloadAPI, useTranslation } from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { RelationshipData } from '../../server/nodes/RelationshipNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { $isRelationshipNode } from '../nodes/RelationshipNode.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-relationship'\n\nconst initialParams = {\n depth: 0,\n}\n\ntype Props = {\n className?: string\n data: RelationshipData\n format?: ElementFormatType\n nodeKey?: string\n}\n\nconst Component: React.FC<Props> = (props) => {\n const {\n data: { relationTo, value },\n nodeKey,\n } = props\n\n if (typeof value === 'object') {\n throw new Error(\n 'Relationship value should be a string or number. The Lexical Relationship component should not receive the populated value object.',\n )\n }\n\n const relationshipElemRef = useRef<HTMLDivElement | null>(null)\n\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n const { field } = useEditorConfigContext()\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const [relatedCollection, setRelatedCollection] = useState(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n const removeRelationship = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey).remove()\n })\n }, [editor, nodeKey])\n\n const updateRelationship = React.useCallback(\n ({ doc }) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n closeDrawer()\n dispatchCacheBust()\n },\n [cacheBust, setParams, closeDrawer],\n )\n\n const $onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload\n event.preventDefault()\n const node = $getNodeByKey(nodeKey)\n if ($isRelationshipNode(node)) {\n node.remove()\n return true\n }\n }\n return false\n },\n [isSelected, nodeKey],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if relationshipElemRef.target or anything WITHIN relationshipElemRef.target was clicked\n if (\n event.target === relationshipElemRef.current ||\n relationshipElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n ref={relationshipElemRef}\n >\n <div className={`${baseClass}__wrap`}>\n <p className={`${baseClass}__label`}>\n {t('fields:labelRelationship', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n </p>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <p className={`${baseClass}__title`}>\n {data ? data[relatedCollection?.admin?.useAsTitle || 'id'] : value}\n </p>\n </DocumentDrawerToggler>\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__swapButton`}\n disabled={field?.admin?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }}\n round\n tooltip={t('fields:swapRelationship')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeRelationship()\n }}\n round\n tooltip={t('fields:removeRelationship')}\n />\n </div>\n )}\n\n {!!value && <DocumentDrawer onSave={updateRelationship} />}\n </div>\n )\n}\n\nexport const RelationshipComponent = (props: Props): React.ReactNode => {\n return <Component {...props} />\n}\n"],
5
- "mappings": "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",
6
- "names": ["useLexicalComposerContext", "useLexicalNodeSelection", "mergeRegister", "getTranslation", "Button", "useConfig", "useDocumentDrawer", "usePayloadAPI", "useTranslation", "$getNodeByKey", "$getSelection", "$isNodeSelection", "CLICK_COMMAND", "COMMAND_PRIORITY_LOW", "KEY_BACKSPACE_COMMAND", "KEY_DELETE_COMMAND", "React", "useCallback", "useEffect", "useReducer", "useRef", "useState", "baseClass", "initialParams", "depth", "Component", "props", "data", "relationTo", "value", "nodeKey", "Error", "relationshipElemRef", "useRef", "editor", "useLexicalComposerContext", "isSelected", "setSelected", "clearSelection", "useLexicalNodeSelection", "field", "useEditorConfigContext", "config", "collections", "routes", "api", "serverURL", "useConfig", "relatedCollection", "setRelatedCollection", "useState", "find", "coll", "slug", "i18n", "t", "useTranslation", "cacheBust", "dispatchCacheBust", "useReducer", "state", "setParams", "usePayloadAPI", "DocumentDrawer", "DocumentDrawerToggler", "closeDrawer", "useDocumentDrawer", "id", "collectionSlug", "removeRelationship", "useCallback", "update", "$getNodeByKey", "remove", "updateRelationship", "React", "doc", "$onDelete", "payload", "$isNodeSelection", "$getSelection", "preventDefault", "node", "$isRelationshipNode", "onClick", "event", "target", "current", "contains", "shiftKey", "useEffect", "mergeRegister", "registerCommand", "CLICK_COMMAND", "COMMAND_PRIORITY_LOW", "KEY_DELETE_COMMAND", "KEY_BACKSPACE_COMMAND", "_jsxs", "className", "filter", "Boolean", "join", "contentEditable", "ref", "_jsx", "label", "getTranslation", "labels", "singular", "admin", "useAsTitle", "isEditable", "Button", "buttonStyle", "disabled", "readOnly", "el", "icon", "dispatchCommand", "INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND", "replace", "round", "tooltip", "e", "onSave", "RelationshipComponent"]
7
- }
@@ -1,2 +0,0 @@
1
- import{jsx as w}from"react/jsx-runtime";import{useLexicalComposerContext as x}from"@lexical/react/LexicalComposerContext.js";import"react";import{createContext as C,useContext as M,useMemo as b,useRef as E,useState as m}from"react";function v(){return Math.random().toString(36).substring(2,12)+Math.random().toString(36).substring(2,12)}var g=C({editorConfig:null,field:null,uuid:null}),F=({children:o,editorConfig:s,editorContainerRef:c,field:d,parentContext:n})=>{let[a]=x(),[f]=m(v()),t=E(new Map),[l,h]=m(null),u=E(new Set),p=b(()=>({blurEditor:r=>{u.current.clear()},childrenEditors:t,editor:a,editorConfig:s,editorContainerRef:c,field:d,focusEditor:r=>{let e=r.uuid;u.current.has(e)||(u.current.add(e),h(r),n?.uuid&&n.focusEditor(r),t.current.forEach((i,S)=>{i.focusEditor(r)}),u.current.clear())},focusedEditor:l,parentEditor:n,registerChild:(r,e)=>{if(!t.current.has(r)){let i=new Map(t.current);i.set(r,e),t.current=i}},unregisterChild:r=>{if(t.current.has(r)){let e=new Map(t.current);e.delete(r),t.current=e}},uuid:f}),[a,t,s,c,d,l,n,f]);return w(g.Provider,{value:p,children:o})},G=()=>{let o=M(g);if(o===void 0)throw new Error("useEditorConfigContext must be used within an EditorConfigProvider");return o};export{F as a,G as b};
2
- //# sourceMappingURL=chunk-OLSILJA6.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/lexical/config/client/EditorConfigProvider.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport type { LexicalEditor } from 'lexical'\nimport type { RichTextFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport * as React from 'react'\nimport { createContext, useContext, useMemo, useRef, useState } from 'react'\n\nimport type { LexicalRichTextFieldProps } from '../../../types.js'\nimport type { SanitizedClientEditorConfig } from '../types.js'\n\n// Should always produce a 20 character pseudo-random string\nfunction generateQuickGuid(): string {\n return Math.random().toString(36).substring(2, 12) + Math.random().toString(36).substring(2, 12)\n}\n\nexport interface EditorConfigContextType {\n // Editor focus handling\n blurEditor: (editorContext: EditorConfigContextType) => void\n childrenEditors: React.RefObject<Map<string, EditorConfigContextType>>\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n editorContainerRef: React.RefObject<HTMLDivElement>\n field: LexicalRichTextFieldProps['field']\n // Editor focus handling\n focusEditor: (editorContext: EditorConfigContextType) => void\n focusedEditor: EditorConfigContextType | null\n parentEditor: EditorConfigContextType\n registerChild: (uuid: string, editorContext: EditorConfigContextType) => void\n unregisterChild?: (uuid: string) => void\n uuid: string\n}\n\nconst Context: React.Context<EditorConfigContextType> = createContext({\n editorConfig: null,\n field: null,\n uuid: null,\n})\n\nexport const EditorConfigProvider = ({\n children,\n editorConfig,\n editorContainerRef,\n field,\n parentContext,\n}: {\n children: React.ReactNode\n editorConfig: SanitizedClientEditorConfig\n editorContainerRef: React.RefObject<HTMLDivElement>\n field: LexicalRichTextFieldProps['field']\n parentContext?: EditorConfigContextType\n}): React.ReactNode => {\n const [editor] = useLexicalComposerContext()\n // State to store the UUID\n const [uuid] = useState(generateQuickGuid())\n\n const childrenEditors = useRef<Map<string, EditorConfigContextType>>(new Map())\n const [focusedEditor, setFocusedEditor] = useState<EditorConfigContextType | null>(null)\n const focusHistory = useRef<Set<string>>(new Set())\n\n const editorContext = useMemo(\n () =>\n ({\n blurEditor: (editorContext: EditorConfigContextType) => {\n //setFocusedEditor(null) // Clear focused editor\n focusHistory.current.clear() // Reset focus history when focus is lost\n },\n childrenEditors,\n editor,\n editorConfig,\n editorContainerRef,\n field,\n focusEditor: (editorContext: EditorConfigContextType) => {\n const editorUUID = editorContext.uuid\n\n // Avoid recursion by checking if this editor is already focused in this cycle\n if (focusHistory.current.has(editorUUID)) {\n return\n }\n\n // Add this editor to the history to prevent future recursions in this cycle\n focusHistory.current.add(editorUUID)\n setFocusedEditor(editorContext)\n\n // Propagate focus event to parent and children, ensuring they do not refocus this editor\n if (parentContext?.uuid) {\n parentContext.focusEditor(editorContext)\n }\n childrenEditors.current.forEach((childEditor, childUUID) => {\n childEditor.focusEditor(editorContext)\n })\n\n focusHistory.current.clear()\n },\n focusedEditor,\n parentEditor: parentContext,\n registerChild: (childUUID, childEditorContext) => {\n if (!childrenEditors.current.has(childUUID)) {\n const newMap = new Map(childrenEditors.current)\n newMap.set(childUUID, childEditorContext)\n childrenEditors.current = newMap\n }\n },\n unregisterChild: (childUUID) => {\n if (childrenEditors.current.has(childUUID)) {\n const newMap = new Map(childrenEditors.current)\n newMap.delete(childUUID)\n childrenEditors.current = newMap\n }\n },\n\n uuid,\n }) as EditorConfigContextType,\n [\n editor,\n childrenEditors,\n editorConfig,\n editorContainerRef,\n field,\n focusedEditor,\n parentContext,\n uuid,\n ],\n )\n\n return <Context.Provider value={editorContext}>{children}</Context.Provider>\n}\n\nexport const useEditorConfigContext = (): EditorConfigContextType => {\n const context = useContext(Context)\n if (context === undefined) {\n throw new Error('useEditorConfigContext must be used within an EditorConfigProvider')\n }\n return context\n}\n"],
5
- "mappings": "wCAKA,OAASA,6BAAAA,MAAiC,2CAC1C,MAAuB,QACvB,OAASC,iBAAAA,EAAeC,cAAAA,EAAYC,WAAAA,EAASC,UAAAA,EAAQC,YAAAA,MAAgB,QAMrE,SAASC,GAAA,CACP,OAAOC,KAAKC,OAAM,EAAGC,SAAS,EAAA,EAAIC,UAAU,EAAG,EAAA,EAAMH,KAAKC,OAAM,EAAGC,SAAS,EAAA,EAAIC,UAAU,EAAG,EAAA,CAC/F,CAmBA,IAAMC,EAAkDV,EAAc,CACpEW,aAAc,KACdC,MAAO,KACPC,KAAM,IACR,CAAA,EAEaC,EAAuBA,CAAC,CACnCC,SAAAA,EACAJ,aAAAA,EACAK,mBAAAA,EACAJ,MAAAA,EACAK,cAAAA,CAAa,IAOd,CACC,GAAM,CAACC,CAAA,EAAUnB,EAAA,EAEX,CAACc,CAAA,EAAQT,EAASC,EAAA,CAAA,EAElBc,EAAkBhB,EAA6C,IAAIiB,GAAA,EACnE,CAACC,EAAeC,CAAA,EAAoBlB,EAAyC,IAAA,EAC7EmB,EAAepB,EAAoB,IAAIqB,GAAA,EAEvCC,EAAgBvB,EACpB,KACG,CACCwB,WAAaD,GAAA,CAEXF,EAAaI,QAAQC,MAAK,CAC5B,EACAT,gBAAAA,EACAD,OAAAA,EACAP,aAAAA,EACAK,mBAAAA,EACAJ,MAAAA,EACAiB,YAAcJ,GAAA,CACZ,IAAMK,EAAaL,EAAcZ,KAG7BU,EAAaI,QAAQI,IAAID,CAAA,IAK7BP,EAAaI,QAAQK,IAAIF,CAAA,EACzBR,EAAiBG,CAAA,EAGbR,GAAeJ,MACjBI,EAAcY,YAAYJ,CAAA,EAE5BN,EAAgBQ,QAAQM,QAAQ,CAACC,EAAaC,IAAA,CAC5CD,EAAYL,YAAYJ,CAAA,CAC1B,CAAA,EAEAF,EAAaI,QAAQC,MAAK,EAC5B,EACAP,cAAAA,EACAe,aAAcnB,EACdoB,cAAeA,CAACF,EAAWG,IAAA,CACzB,GAAI,CAACnB,EAAgBQ,QAAQI,IAAII,CAAA,EAAY,CAC3C,IAAMI,EAAS,IAAInB,IAAID,EAAgBQ,OAAO,EAC9CY,EAAOC,IAAIL,EAAWG,CAAA,EACtBnB,EAAgBQ,QAAUY,CAC5B,CACF,EACAE,gBAAkBN,GAAA,CAChB,GAAIhB,EAAgBQ,QAAQI,IAAII,CAAA,EAAY,CAC1C,IAAMI,EAAS,IAAInB,IAAID,EAAgBQ,OAAO,EAC9CY,EAAOG,OAAOP,CAAA,EACdhB,EAAgBQ,QAAUY,CAC5B,CACF,EAEA1B,KAAAA,CACF,GACF,CACEK,EACAC,EACAR,EACAK,EACAJ,EACAS,EACAJ,EACAJ,CAAA,CACD,EAGH,OAAO8B,EAACjC,EAAQkC,SAAQ,CAACC,MAAOpB,WAAgBV,GAClD,EAEa+B,EAAyBA,IAAA,CACpC,IAAMC,EAAU9C,EAAWS,CAAA,EAC3B,GAAIqC,IAAYC,OACd,MAAM,IAAIC,MAAM,oEAAA,EAElB,OAAOF,CACT",
6
- "names": ["useLexicalComposerContext", "createContext", "useContext", "useMemo", "useRef", "useState", "generateQuickGuid", "Math", "random", "toString", "substring", "Context", "editorConfig", "field", "uuid", "EditorConfigProvider", "children", "editorContainerRef", "parentContext", "editor", "childrenEditors", "Map", "focusedEditor", "setFocusedEditor", "focusHistory", "Set", "editorContext", "blurEditor", "current", "clear", "focusEditor", "editorUUID", "has", "add", "forEach", "childEditor", "childUUID", "parentEditor", "registerChild", "childEditorContext", "newMap", "set", "unregisterChild", "delete", "_jsx", "Provider", "value", "useEditorConfigContext", "context", "undefined", "Error"]
7
- }
@@ -1,2 +0,0 @@
1
- import{b as E}from"./chunk-OLSILJA6.js";import{jsx as L}from"react/jsx-runtime";import{Drawer as z}from"@payloadcms/ui";import"react";import{c as H}from"react/compiler-runtime";import{jsx as T,jsxs as J}from"react/jsx-runtime";import{Form as K,FormSubmit as B,RenderFields as G,useConfig as V,useDocumentInfo as q,useFieldProps as Q,useTranslation as X}from"@payloadcms/ui";import{getFormState as I}from"@payloadcms/ui/shared";import{useEffect as Y,useState as Z}from"react";import{v4 as N}from"uuid";var F=e=>{let t=H(27),{data:a,featureKey:r,fieldMapOverride:o,handleDrawerSubmit:c,schemaFieldsPathOverride:v,schemaPathSuffix:s}=e,{t:f}=X(),{id:i}=q(),{schemaPath:x}=Q(),{config:n}=V(),[p,m]=Z(!1),{field:O}=E(),{richTextComponentMap:w}=O,U=`lexical_internal_feature.${r}.fields${s?`.${s}`:""}`,l=v??`${x}.lexical_internal_feature.${r}${s?`.${s}`:""}`,g;t[0]!==o||t[1]!==w||t[2]!==U?(g=o??w.get(U),t[0]=o,t[1]=w,t[2]=U,t[3]=g):g=t[3];let u=g,S,b;t[4]!==n.routes.api||t[5]!==n.serverURL||t[6]!==i||t[7]!==a||t[8]!==l?(S=()=>{(async()=>{let d=await I({apiRoute:n.routes.api,body:{id:i,data:a??{},operation:"update",schemaPath:l},serverURL:n.serverURL});m(d)})()},b=[n.routes.api,n.serverURL,l,i,a],t[4]=n.routes.api,t[5]=n.serverURL,t[6]=i,t[7]=a,t[8]=l,t[9]=S,t[10]=b):(S=t[9],b=t[10]),Y(S,b);let R;t[11]!==n.routes.api||t[12]!==n.serverURL||t[13]!==i||t[14]!==l?(R=async h=>{let{formState:d}=h;return await I({apiRoute:n.routes.api,body:{id:i,formState:d,operation:"update",schemaPath:l},serverURL:n.serverURL})},t[11]=n.routes.api,t[12]=n.serverURL,t[13]=i,t[14]=l,t[15]=R):R=t[15];let y=R;if(p===!1)return null;let D;if(t[16]!==y||t[17]!==u||t[18]!==l||t[19]!==f||t[20]!==p||t[21]!==c){let h;t[23]!==u?(h=Array.isArray(u)?u:[],t[23]=u,t[24]=h):h=t[24];let d;t[25]!==u?(d=Array.isArray(u)?u:[],t[25]=u,t[26]=d):d=t[26],D=J(K,{beforeSubmit:[y],disableValidationOnSubmit:!0,fields:h,initialState:p,onChange:[y],onSubmit:c,uuid:N(),children:[T(G,{fields:d,forceRender:!0,path:"",readOnly:!1,schemaPath:l}),T(B,{children:f("fields:saveChanges")})]}),t[16]=y,t[17]=u,t[18]=l,t[19]=f,t[20]=p,t[21]=c,t[22]=D}else D=t[22];return D};var Ut=({className:e,data:t,drawerSlug:a,drawerTitle:r,featureKey:o,fieldMapOverride:c,handleDrawerSubmit:v,schemaFieldsPathOverride:s,schemaPathSuffix:f})=>L(z,{className:e,slug:a,title:r??"",children:L(F,{data:t,featureKey:o,fieldMapOverride:c,handleDrawerSubmit:v,schemaFieldsPathOverride:s,schemaPathSuffix:f})});import{c as tt}from"react/compiler-runtime";import{useAuth as et,useConfig as rt,useEntityVisibility as at}from"@payloadcms/ui";import*as A from"react";var nt=(e,t)=>e.filter(({slug:a,admin:{enableRichTextRelationship:r},upload:o})=>t.visibleEntities.collections.includes(a)?t?.uploads?r&&!!o:o?!1:r:!1),It=e=>{let t=tt(16),a,r,o;t[0]!==e?({children:o,uploads:a,...r}=e,t[0]=e,t[1]=a,t[2]=r,t[3]=o):(a=t[1],r=t[2],o=t[3]);let c=a===void 0?!1:a,{config:v}=rt(),{collections:s}=v,{user:f}=et(),{visibleEntities:i}=at(),x;t[4]!==s||t[5]!==c||t[6]!==f||t[7]!==i?(x=()=>nt(s,{uploads:c,user:f,visibleEntities:i}).map(m=>{let{slug:O}=m;return O}),t[4]=s,t[5]=c,t[6]=f,t[7]=i,t[8]=x):x=t[8];let[n]=A.useState(x);if(!n.length)return null;let p;if(t[9]!==r||t[10]!==n||t[11]!==o){let m;t[13]!==r||t[14]!==n?(m={...r,enabledCollectionSlugs:n},t[13]=r,t[14]=n,t[15]=m):m=t[15],p=A.cloneElement(o,m),t[9]=r,t[10]=n,t[11]=o,t[12]=p}else p=t[12];return p};import{createCommand as ot}from"lexical";var Pt=ot("INSERT_UPLOAD_WITH_DRAWER_COMMAND");import{jsx as ct}from"react/jsx-runtime";import M from"bson-objectid";import{$applyNodeReplacement as ft}from"lexical";import*as k from"react";import{jsx as it}from"react/jsx-runtime";import{DecoratorBlockNode as st}from"@lexical/react/LexicalDecoratorBlockNode.js";import P from"bson-objectid";import{$applyNodeReplacement as lt}from"lexical";import"react";function $(e){return e.parentElement!=null&&e.parentElement.tagName==="LI"&&e.previousSibling===null&&e.getAttribute("aria-roledescription")==="checkbox"}function ut(e){if(e.hasAttribute("data-lexical-upload-relation-to")&&e.hasAttribute("data-lexical-upload-id")){let a=e.getAttribute("data-lexical-upload-id"),r=e.getAttribute("data-lexical-upload-relation-to");if(a!=null&&r!=null)return{node:j({data:{fields:{},relationTo:r,value:a}})}}let t=e;return t.src.startsWith("file:///")||$(t),null}var _=class extends st{__data;constructor({data:t,format:a,key:r}){super(a,r),this.__data=t}static clone(t){return new this({data:t.__data,format:t.__format,key:t.__key})}static getType(){return"upload"}static importDOM(){return{img:t=>({conversion:ut,priority:0})}}static importJSON(t){t.version===1&&t?.value?.id&&(t.value=t.value.id),t.version===2&&!t?.id&&(t.id=new P.default().toHexString(),t.version=3);let a={id:t.id,fields:t.fields,relationTo:t.relationTo,value:t.value},r=j({data:a});return r.setFormat(t.format),r}static isInline(){return!1}decorate(){return it(RawUploadComponent,{data:this.__data,format:this.__format,nodeKey:this.getKey()})}exportDOM(){let t=document.createElement("img");return t.setAttribute("data-lexical-upload-id",String(this.__data?.value)),t.setAttribute("data-lexical-upload-relation-to",this.__data?.relationTo),{element:t}}exportJSON(){return{...super.exportJSON(),...this.getData(),type:"upload",version:3}}getData(){return this.getLatest().__data}setData(t){let a=this.getWritable();a.__data=t}updateDOM(){return!1}};function j({data:e}){return e?.id||(e.id=new P.default().toHexString()),lt(new _({data:e}))}var pt=k.lazy(()=>import("./component-2YLEVOFH.js").then(e=>({default:e.UploadComponent})));function mt(e){if(e.hasAttribute("data-lexical-upload-relation-to")&&e.hasAttribute("data-lexical-upload-id")){let a=e.getAttribute("data-lexical-upload-id"),r=e.getAttribute("data-lexical-upload-relation-to");if(a!=null&&r!=null)return{node:W({data:{fields:{},relationTo:r,value:a}})}}let t=e;return t.src.startsWith("file:///")||$(t),null}var C=class extends _{static clone(t){return super.clone(t)}static getType(){return super.getType()}static importDOM(){return{img:t=>({conversion:mt,priority:0})}}static importJSON(t){t.version===1&&t?.value?.id&&(t.value=t.value.id),t.version===2&&!t?.id&&(t.id=new M.default().toHexString(),t.version=3);let a={id:t.id,fields:t.fields,relationTo:t.relationTo,value:t.value},r=W({data:a});return r.setFormat(t.format),r}decorate(){return ct(pt,{data:this.__data,nodeKey:this.getKey()})}exportJSON(){return super.exportJSON()}};function W({data:e}){return e?.id||(e.id=new M.default().toHexString()),ft(new C({data:e}))}function Qt(e){return e instanceof C}export{Ut as a,It as b,Pt as c,C as d,W as e,Qt as f};
2
- //# sourceMappingURL=chunk-TD7O23AB.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/utilities/fieldsDrawer/Drawer.tsx", "../../../src/utilities/fieldsDrawer/DrawerContent.tsx", "../../../src/features/relationship/client/utils/EnabledRelationshipsCondition.tsx", "../../../src/features/upload/client/drawer/commands.ts", "../../../src/features/upload/client/nodes/UploadNode.tsx", "../../../src/features/upload/server/nodes/UploadNode.tsx"],
4
- "sourcesContent": ["'use client'\nimport type { ClientField, Data, FormState, JsonObject } from 'payload'\n\nimport { Drawer } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { DrawerContent } from './DrawerContent.js'\n\nexport type FieldsDrawerProps = {\n readonly className?: string\n readonly data?: Data\n readonly drawerSlug: string\n readonly drawerTitle?: string\n readonly featureKey: string\n readonly fieldMapOverride?: ClientField[]\n readonly handleDrawerSubmit: (fields: FormState, data: JsonObject) => void\n readonly schemaFieldsPathOverride?: string\n readonly schemaPathSuffix?: string\n}\n\n/**\n * This FieldsDrawer component can be used to easily create a Drawer that contains a form with fields within your feature.\n * The fields are taken directly from the schema map based on your `featureKey` and `schemaPathSuffix`. Thus, this can only\n * be used if you provide your field schema inside the `generateSchemaMap` prop of your feature.server.ts.\n */\nexport const FieldsDrawer: React.FC<FieldsDrawerProps> = ({\n className,\n data,\n drawerSlug,\n drawerTitle,\n featureKey,\n fieldMapOverride,\n handleDrawerSubmit,\n schemaFieldsPathOverride,\n schemaPathSuffix,\n}) => {\n // The Drawer only renders its children (and itself) if it's open. Thus, by extracting the main content\n // to DrawerContent, this should be faster\n return (\n <Drawer className={className} slug={drawerSlug} title={drawerTitle ?? ''}>\n <DrawerContent\n data={data}\n featureKey={featureKey}\n fieldMapOverride={fieldMapOverride}\n handleDrawerSubmit={handleDrawerSubmit}\n schemaFieldsPathOverride={schemaFieldsPathOverride}\n schemaPathSuffix={schemaPathSuffix}\n />\n </Drawer>\n )\n}\n", "'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", "'use client'\nimport type { ClientCollectionConfig, ClientUser, VisibleEntities } from 'payload'\n\nimport { useAuth, useConfig, useEntityVisibility } from '@payloadcms/ui'\nimport * as React from 'react'\n\ntype Options = {\n uploads: boolean\n user: ClientUser\n visibleEntities: VisibleEntities\n}\n\ntype FilteredCollectionsT = (\n collections: ClientCollectionConfig[],\n options?: Options,\n) => ClientCollectionConfig[]\n\nconst filterRichTextCollections: FilteredCollectionsT = (collections, options) => {\n return collections.filter(({ slug, admin: { enableRichTextRelationship }, upload }) => {\n if (!options.visibleEntities.collections.includes(slug)) {\n return false\n }\n\n if (options?.uploads) {\n return enableRichTextRelationship && Boolean(upload) === true\n }\n\n return upload ? false : enableRichTextRelationship\n })\n}\n\nexport const EnabledRelationshipsCondition: React.FC<any> = (props) => {\n const { children, uploads = false, ...rest } = props\n const {\n config: { collections },\n } = useConfig()\n const { user } = useAuth()\n const { visibleEntities } = useEntityVisibility()\n\n const [enabledCollectionSlugs] = React.useState(() =>\n filterRichTextCollections(collections, { uploads, user, visibleEntities }).map(\n ({ slug }) => slug,\n ),\n )\n\n if (!enabledCollectionSlugs.length) {\n return null\n }\n\n return React.cloneElement(children, { ...rest, enabledCollectionSlugs })\n}\n", "'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { createCommand } from 'lexical'\n\nexport const INSERT_UPLOAD_WITH_DRAWER_COMMAND: LexicalCommand<{\n replace: { nodeKey: string } | false\n}> = createCommand('INSERT_UPLOAD_WITH_DRAWER_COMMAND')\n", "'use client'\nimport type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport type { DOMConversionMap, DOMConversionOutput, LexicalNode, Spread } from 'lexical'\nimport type { JSX } from 'react'\n\nimport ObjectID from 'bson-objectid'\nimport { $applyNodeReplacement } from 'lexical'\nimport * as React from 'react'\n\nimport type { UploadData } from '../../server/nodes/UploadNode.js'\n\nimport { UploadServerNode, isGoogleDocCheckboxImg } from '../../server/nodes/UploadNode.js'\n\nconst RawUploadComponent = React.lazy(() =>\n import('../../client/component/index.js').then((module) => ({ default: module.UploadComponent })),\n)\n\nfunction $convertUploadElement(domNode: HTMLImageElement): DOMConversionOutput | null {\n if (\n domNode.hasAttribute('data-lexical-upload-relation-to') &&\n domNode.hasAttribute('data-lexical-upload-id')\n ) {\n const id = domNode.getAttribute('data-lexical-upload-id')\n const relationTo = domNode.getAttribute('data-lexical-upload-relation-to')\n\n if (id != null && relationTo != null) {\n const node = $createUploadNode({\n data: {\n fields: {},\n relationTo,\n value: id,\n },\n })\n return { node }\n }\n }\n const img = domNode\n if (img.src.startsWith('file:///') || isGoogleDocCheckboxImg(img)) {\n return null\n }\n // TODO: Auto-upload functionality here!\n //}\n return null\n}\n\nexport type SerializedUploadNode = {\n children?: never // required so that our typed editor state doesn't automatically add children\n type: 'upload'\n} & Spread<UploadData, SerializedDecoratorBlockNode>\n\nexport class UploadNode extends UploadServerNode {\n static clone(node: UploadServerNode): UploadServerNode {\n return super.clone(node)\n }\n\n static getType(): string {\n return super.getType()\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n img: (node: HTMLImageElement) => ({\n conversion: $convertUploadElement,\n priority: 0,\n }),\n }\n }\n\n static importJSON(serializedNode: SerializedUploadNode): UploadNode {\n if (serializedNode.version === 1 && (serializedNode?.value as unknown as { id: string })?.id) {\n serializedNode.value = (serializedNode.value as unknown as { id: string }).id\n }\n if (serializedNode.version === 2 && !serializedNode?.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n\n const importedData: UploadData = {\n id: serializedNode.id,\n fields: serializedNode.fields,\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n\n const node = $createUploadNode({ data: importedData })\n node.setFormat(serializedNode.format)\n\n return node\n }\n\n decorate(): JSX.Element {\n return <RawUploadComponent data={this.__data} nodeKey={this.getKey()} />\n }\n\n exportJSON(): SerializedUploadNode {\n return super.exportJSON()\n }\n}\n\nexport function $createUploadNode({\n data,\n}: {\n data: Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>\n}): UploadNode {\n if (!data?.id) {\n data.id = new ObjectID.default().toHexString()\n }\n return $applyNodeReplacement(new UploadNode({ data: data as UploadData }))\n}\n\nexport function $isUploadNode(node: LexicalNode | null | undefined): node is UploadNode {\n return node instanceof UploadNode\n}\n", "import type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n Spread,\n} from 'lexical'\nimport type { CollectionSlug, DataFromCollectionSlug, JsonObject } from 'payload'\nimport type { JSX } from 'react'\n\nimport { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport ObjectID from 'bson-objectid'\nimport { $applyNodeReplacement } from 'lexical'\nimport * as React from 'react'\n\nexport type UploadData<TUploadExtraFieldsData extends JsonObject = JsonObject> = {\n [TCollectionSlug in CollectionSlug]: {\n fields: TUploadExtraFieldsData\n // Every lexical node that has sub-fields needs to have a unique ID. This is the ID of this upload node, not the ID of the linked upload document\n id: string\n relationTo: TCollectionSlug\n // Value can be just the document ID, or the full, populated document\n value: DataFromCollectionSlug<TCollectionSlug> | number | string\n }\n}[CollectionSlug]\n\nexport function isGoogleDocCheckboxImg(img: HTMLImageElement): boolean {\n return (\n img.parentElement != null &&\n img.parentElement.tagName === 'LI' &&\n img.previousSibling === null &&\n img.getAttribute('aria-roledescription') === 'checkbox'\n )\n}\n\nfunction $convertUploadServerElement(domNode: HTMLImageElement): DOMConversionOutput | null {\n if (\n domNode.hasAttribute('data-lexical-upload-relation-to') &&\n domNode.hasAttribute('data-lexical-upload-id')\n ) {\n const id = domNode.getAttribute('data-lexical-upload-id')\n const relationTo = domNode.getAttribute('data-lexical-upload-relation-to')\n\n if (id != null && relationTo != null) {\n const node = $createUploadServerNode({\n data: {\n fields: {},\n relationTo,\n value: id,\n },\n })\n return { node }\n }\n }\n const img = domNode\n if (img.src.startsWith('file:///') || isGoogleDocCheckboxImg(img)) {\n return null\n }\n // TODO: Auto-upload functionality here!\n //}\n return null\n}\n\nexport type SerializedUploadNode = {\n children?: never // required so that our typed editor state doesn't automatically add children\n type: 'upload'\n} & Spread<UploadData, SerializedDecoratorBlockNode>\n\nexport class UploadServerNode extends DecoratorBlockNode {\n __data: UploadData\n\n constructor({\n data,\n format,\n key,\n }: {\n data: UploadData\n format?: ElementFormatType\n key?: NodeKey\n }) {\n super(format, key)\n this.__data = data\n }\n\n static clone(node: UploadServerNode): UploadServerNode {\n return new this({\n data: node.__data,\n format: node.__format,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'upload'\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n img: (node: HTMLImageElement) => ({\n conversion: $convertUploadServerElement,\n priority: 0,\n }),\n }\n }\n\n static importJSON(serializedNode: SerializedUploadNode): UploadServerNode {\n if (serializedNode.version === 1 && (serializedNode?.value as unknown as { id: string })?.id) {\n serializedNode.value = (serializedNode.value as unknown as { id: string }).id\n }\n if (serializedNode.version === 2 && !serializedNode?.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n\n const importedData: UploadData = {\n id: serializedNode.id,\n fields: serializedNode.fields,\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n\n const node = $createUploadServerNode({ data: importedData })\n node.setFormat(serializedNode.format)\n\n return node\n }\n\n static isInline(): false {\n return false\n }\n\n decorate(): JSX.Element {\n // @ts-expect-error\n return <RawUploadComponent data={this.__data} format={this.__format} nodeKey={this.getKey()} />\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('img')\n element.setAttribute('data-lexical-upload-id', String(this.__data?.value))\n element.setAttribute('data-lexical-upload-relation-to', this.__data?.relationTo)\n\n return { element }\n }\n\n exportJSON(): SerializedUploadNode {\n return {\n ...super.exportJSON(),\n ...this.getData(),\n type: 'upload',\n version: 3,\n }\n }\n\n getData(): UploadData {\n return this.getLatest().__data\n }\n\n setData(data: UploadData): void {\n const writable = this.getWritable()\n writable.__data = data\n }\n\n updateDOM(): false {\n return false\n }\n}\n\nexport function $createUploadServerNode({\n data,\n}: {\n data: Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>\n}): UploadServerNode {\n if (!data?.id) {\n data.id = new ObjectID.default().toHexString()\n }\n return $applyNodeReplacement(new UploadServerNode({ data: data as UploadData }))\n}\n\nexport function $isUploadServerNode(\n node: LexicalNode | null | undefined,\n): node is UploadServerNode {\n return node instanceof UploadServerNode\n}\n"],
5
- "mappings": "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",
6
- "names": ["Drawer", "c", "_c", "Form", "FormSubmit", "RenderFields", "useConfig", "useDocumentInfo", "useFieldProps", "useTranslation", "getFormState", "useEffect", "useState", "v4", "uuid", "DrawerContent", "t0", "$", "_c", "data", "featureKey", "fieldMapOverride", "handleDrawerSubmit", "schemaFieldsPathOverride", "schemaPathSuffix", "t", "useTranslation", "id", "useDocumentInfo", "schemaPath", "useFieldProps", "config", "useConfig", "initialState", "setInitialState", "useState", "field", "t1", "useEditorConfigContext", "richTextComponentMap", "componentMapRenderedFieldsPath", "schemaFieldsPath", "t2", "get", "fields", "t3", "state", "getFormState", "apiRoute", "routes", "api", "body", "operation", "serverURL", "t4", "useEffect", "t5", "t6", "formState", "prevFormState", "onChange", "t7", "Array", "isArray", "t8", "_jsxs", "Form", "beforeSubmit", "disableValidationOnSubmit", "onSubmit", "uuid", "children", "_jsx", "RenderFields", "forceRender", "path", "readOnly", "FormSubmit", "FieldsDrawer", "className", "data", "drawerSlug", "drawerTitle", "featureKey", "fieldMapOverride", "handleDrawerSubmit", "schemaFieldsPathOverride", "schemaPathSuffix", "_jsx", "Drawer", "slug", "title", "DrawerContent", "c", "_c", "useAuth", "useConfig", "useEntityVisibility", "React", "filterRichTextCollections", "collections", "options", "filter", "slug", "admin", "enableRichTextRelationship", "upload", "visibleEntities", "includes", "uploads", "Boolean", "EnabledRelationshipsCondition", "props", "$", "t0", "rest", "children", "undefined", "config", "t1", "user", "t2", "map", "t3", "enabledCollectionSlugs", "useState", "length", "t4", "cloneElement", "createCommand", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "ObjectID", "$applyNodeReplacement", "React", "DecoratorBlockNode", "ObjectID", "$applyNodeReplacement", "isGoogleDocCheckboxImg", "img", "parentElement", "tagName", "previousSibling", "getAttribute", "$convertUploadServerElement", "domNode", "hasAttribute", "id", "relationTo", "node", "$createUploadServerNode", "data", "fields", "value", "src", "startsWith", "UploadServerNode", "__data", "constructor", "format", "key", "clone", "__format", "__key", "getType", "importDOM", "conversion", "priority", "importJSON", "serializedNode", "version", "default", "toHexString", "importedData", "setFormat", "isInline", "decorate", "_jsx", "RawUploadComponent", "nodeKey", "getKey", "exportDOM", "element", "document", "createElement", "setAttribute", "String", "exportJSON", "getData", "type", "getLatest", "setData", "writable", "getWritable", "updateDOM", "RawUploadComponent", "lazy", "then", "module", "default", "UploadComponent", "$convertUploadElement", "domNode", "hasAttribute", "id", "getAttribute", "relationTo", "node", "$createUploadNode", "data", "fields", "value", "img", "src", "startsWith", "isGoogleDocCheckboxImg", "UploadNode", "UploadServerNode", "clone", "getType", "importDOM", "conversion", "priority", "importJSON", "serializedNode", "version", "ObjectID", "toHexString", "importedData", "setFormat", "format", "decorate", "_jsx", "__data", "nodeKey", "getKey", "exportJSON", "$applyNodeReplacement", "$isUploadNode"]
7
- }
@@ -1,2 +0,0 @@
1
- import{createCommand as i}from"lexical";var O=i("INSERT_BLOCK_COMMAND"),x=i("INSERT_INLINE_BLOCK_COMMAND"),I=i("OPEN_INLINE_BLOCK_DRAWER_COMMAND");import{jsx as p}from"react/jsx-runtime";import u from"bson-objectid";import m from"react";import c from"bson-objectid";import{DecoratorNode as l}from"lexical";import{deepCopyObjectSimple as d}from"payload/shared";var r=class extends l{__fields;constructor({fields:e,key:n}){super(n),this.__fields=e}static clone(e){return new this({fields:e.__fields,key:e.__key})}static getType(){return"inlineBlock"}static importDOM(){return{}}static importJSON(e){return a(e.fields)}static isInline(){return!1}canIndent(){return!0}createDOM(){let e=document.createElement("span");return e.classList.add("inline-block-container"),e}decorate(e,n){return null}exportDOM(){let e=document.createElement("span");e.classList.add("inline-block-container");let n=document.createTextNode(this.getTextContent());return e.append(n),{element:e}}exportJSON(){return{type:"inlineBlock",fields:this.getFields(),version:1}}getFields(){return this.getLatest().__fields}getTextContent(){return"Block Field"}isInline(){return!0}setFields(e){let n=d(e),s=this.getWritable();s.__fields=n}updateDOM(){return!1}};function a(t){return new r({fields:{...t,id:t?.id||new c.default().toHexString()}})}var f=m.lazy(()=>import("./componentInline-YSHGRL2J.js").then(t=>({default:t.InlineBlockComponent}))),o=class extends r{static clone(e){return super.clone(e)}static getType(){return super.getType()}static importJSON(e){return _(e.fields)}decorate(e,n){return p(f,{formData:this.getFields(),nodeKey:this.getKey()})}exportJSON(){return super.exportJSON()}};function _(t){return new o({fields:{...t,id:t?.id||new u.default().toHexString()}})}function y(t){return t instanceof o}export{O as a,x as b,I as c,o as d,_ as e,y as f};
2
- //# sourceMappingURL=chunk-YL453UOS.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/features/blocks/client/plugin/commands.ts", "../../../src/features/blocks/client/nodes/InlineBlocksNode.tsx", "../../../src/features/blocks/server/nodes/InlineBlocksNode.tsx"],
4
- "sourcesContent": ["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { createCommand } from 'lexical'\n\nimport type { InsertBlockPayload } from './index.js'\n\nexport const INSERT_BLOCK_COMMAND: LexicalCommand<InsertBlockPayload> =\n createCommand('INSERT_BLOCK_COMMAND')\n\nexport const INSERT_INLINE_BLOCK_COMMAND: LexicalCommand<Partial<InsertBlockPayload>> =\n createCommand('INSERT_INLINE_BLOCK_COMMAND')\n\nexport const OPEN_INLINE_BLOCK_DRAWER_COMMAND: LexicalCommand<{\n fields: Partial<InsertBlockPayload>\n nodeKey?: string\n}> = createCommand('OPEN_INLINE_BLOCK_DRAWER_COMMAND')\n", "'use client'\nimport type {\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n SerializedLexicalNode,\n Spread,\n} from 'lexical'\n\nimport ObjectID from 'bson-objectid'\nimport React, { type JSX } from 'react'\n\nimport type { SerializedServerInlineBlockNode } from '../../server/nodes/InlineBlocksNode.js'\n\nimport { ServerInlineBlockNode } from '../../server/nodes/InlineBlocksNode.js'\n\nexport type InlineBlockFields = {\n /** Block form data */\n [key: string]: any\n //blockName: string\n blockType: string\n id: string\n}\n\nconst InlineBlockComponent = React.lazy(() =>\n import('../componentInline/index.js').then((module) => ({\n default: module.InlineBlockComponent,\n })),\n)\n\nexport type SerializedInlineBlockNode = Spread<\n {\n children?: never // required so that our typed editor state doesn't automatically add children\n fields: InlineBlockFields\n type: 'inlineBlock'\n },\n SerializedLexicalNode\n>\n\nexport class InlineBlockNode extends ServerInlineBlockNode {\n static clone(node: ServerInlineBlockNode): ServerInlineBlockNode {\n return super.clone(node)\n }\n\n static getType(): string {\n return super.getType()\n }\n\n static importJSON(serializedNode: SerializedInlineBlockNode): InlineBlockNode {\n const node = $createInlineBlockNode(serializedNode.fields)\n return node\n }\n\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return <InlineBlockComponent formData={this.getFields()} nodeKey={this.getKey()} />\n }\n\n exportJSON(): SerializedServerInlineBlockNode {\n return super.exportJSON()\n }\n}\n\nexport function $createInlineBlockNode(fields: Exclude<InlineBlockFields, 'id'>): InlineBlockNode {\n return new InlineBlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n })\n}\n\nexport function $isInlineBlockNode(\n node: InlineBlockNode | LexicalNode | null | undefined,\n): node is InlineBlockNode {\n return node instanceof InlineBlockNode\n}\n", "import type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from 'lexical'\nimport type React from 'react'\nimport type { JSX } from 'react'\n\nimport ObjectID from 'bson-objectid'\nimport { DecoratorNode } from 'lexical'\nimport { deepCopyObjectSimple } from 'payload/shared'\n\nexport type InlineBlockFields = {\n /** Block form data */\n [key: string]: any\n //blockName: string\n blockType: string\n id: string\n}\n\nexport type SerializedServerInlineBlockNode = Spread<\n {\n children?: never // required so that our typed editor state doesn't automatically add children\n fields: InlineBlockFields\n type: 'inlineBlock'\n },\n SerializedLexicalNode\n>\n\nexport class ServerInlineBlockNode extends DecoratorNode<React.ReactElement> {\n __fields: InlineBlockFields\n\n constructor({ fields, key }: { fields: InlineBlockFields; key?: NodeKey }) {\n super(key)\n this.__fields = fields\n }\n\n static clone(node: ServerInlineBlockNode): ServerInlineBlockNode {\n return new this({\n fields: node.__fields,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'inlineBlock'\n }\n\n static importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {}\n }\n\n static importJSON(serializedNode: SerializedServerInlineBlockNode): ServerInlineBlockNode {\n const node = $createServerInlineBlockNode(serializedNode.fields)\n return node\n }\n\n static isInline(): false {\n return false\n }\n\n canIndent() {\n return true\n }\n createDOM() {\n const element = document.createElement('span')\n element.classList.add('inline-block-container')\n\n return element\n }\n\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return null\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('span')\n element.classList.add('inline-block-container')\n\n const text = document.createTextNode(this.getTextContent())\n element.append(text)\n return { element }\n }\n\n exportJSON(): SerializedServerInlineBlockNode {\n return {\n type: 'inlineBlock',\n fields: this.getFields(),\n version: 1,\n }\n }\n\n getFields(): InlineBlockFields {\n return this.getLatest().__fields\n }\n\n getTextContent(): string {\n return `Block Field`\n }\n\n isInline() {\n return true\n }\n\n setFields(fields: InlineBlockFields): void {\n const fieldsCopy = deepCopyObjectSimple(fields)\n\n const writable = this.getWritable()\n writable.__fields = fieldsCopy\n }\n\n updateDOM(): boolean {\n return false\n }\n}\n\nexport function $createServerInlineBlockNode(\n fields: Exclude<InlineBlockFields, 'id'>,\n): ServerInlineBlockNode {\n return new ServerInlineBlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n })\n}\n\nexport function $isServerInlineBlockNode(\n node: LexicalNode | ServerInlineBlockNode | null | undefined,\n): node is ServerInlineBlockNode {\n return node instanceof ServerInlineBlockNode\n}\n"],
5
- "mappings": "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",
6
- "names": ["createCommand", "INSERT_BLOCK_COMMAND", "INSERT_INLINE_BLOCK_COMMAND", "OPEN_INLINE_BLOCK_DRAWER_COMMAND", "ObjectID", "React", "ObjectID", "DecoratorNode", "deepCopyObjectSimple", "ServerInlineBlockNode", "__fields", "constructor", "fields", "key", "clone", "node", "__key", "getType", "importDOM", "importJSON", "serializedNode", "$createServerInlineBlockNode", "isInline", "canIndent", "createDOM", "element", "document", "createElement", "classList", "add", "decorate", "editor", "config", "exportDOM", "text", "createTextNode", "getTextContent", "append", "exportJSON", "type", "getFields", "version", "getLatest", "setFields", "fieldsCopy", "writable", "getWritable", "updateDOM", "id", "default", "toHexString", "InlineBlockComponent", "React", "lazy", "then", "module", "default", "InlineBlockNode", "ServerInlineBlockNode", "clone", "node", "getType", "importJSON", "serializedNode", "$createInlineBlockNode", "fields", "decorate", "editor", "config", "_jsx", "formData", "getFields", "nodeKey", "getKey", "exportJSON", "id", "ObjectID", "toHexString", "$isInlineBlockNode"]
7
- }