@payloadcms/richtext-lexical 3.68.0-internal-debug.e9b66ee → 3.68.0-internal-debug.654e4ad

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 (313) hide show
  1. package/dist/cell/rscEntry.js +21 -2
  2. package/dist/cell/rscEntry.js.map +1 -1
  3. package/dist/exports/client/index.d.ts +1 -0
  4. package/dist/exports/client/index.d.ts.map +1 -1
  5. package/dist/exports/client/index.js +1 -0
  6. package/dist/exports/client/index.js.map +1 -1
  7. package/dist/exports/client/internal-client.d.ts +3 -0
  8. package/dist/exports/client/internal-client.d.ts.map +1 -0
  9. package/dist/exports/client/internal-client.js +4 -0
  10. package/dist/exports/client/internal-client.js.map +1 -0
  11. package/dist/exports/react/index.d.ts +1 -1
  12. package/dist/exports/react/index.d.ts.map +1 -1
  13. package/dist/exports/react/index.js.map +1 -1
  14. package/dist/features/blocks/client/component/BlockContent.js +48 -13
  15. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  16. package/dist/features/blocks/client/component/components/BlockCollapsible.js +10 -1
  17. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
  18. package/dist/features/blocks/client/component/components/BlockEditButton.js +7 -1
  19. package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -1
  20. package/dist/features/blocks/client/component/components/BlockRemoveButton.js +7 -1
  21. package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -1
  22. package/dist/features/blocks/client/component/index.js +247 -81
  23. package/dist/features/blocks/client/component/index.js.map +1 -1
  24. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js +9 -1
  25. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -1
  26. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js +7 -1
  27. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -1
  28. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js +7 -1
  29. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -1
  30. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js +7 -1
  31. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -1
  32. package/dist/features/blocks/client/componentInline/index.js +217 -68
  33. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  34. package/dist/features/blocks/client/getBlockImageComponent.js +15 -4
  35. package/dist/features/blocks/client/getBlockImageComponent.js.map +1 -1
  36. package/dist/features/blocks/client/nodes/BlocksNode.js +12 -1
  37. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  38. package/dist/features/blocks/client/nodes/InlineBlocksNode.js +12 -2
  39. package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
  40. package/dist/features/blocks/premade/CodeBlock/Component/Block.js +127 -26
  41. package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
  42. package/dist/features/blocks/premade/CodeBlock/Component/Code.js +65 -49
  43. package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -1
  44. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js +16 -3
  45. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js.map +1 -1
  46. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js +25 -4
  47. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js.map +1 -1
  48. package/dist/features/converters/lexicalToJSX/Component/index.d.ts +2 -14
  49. package/dist/features/converters/lexicalToJSX/Component/index.d.ts.map +1 -1
  50. package/dist/features/converters/lexicalToJSX/Component/index.js +16 -10
  51. package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -1
  52. package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.js +8 -1
  53. package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.js.map +1 -1
  54. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +8 -1
  55. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
  56. package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.js +6 -1
  57. package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.js.map +1 -1
  58. package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.js +6 -1
  59. package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.js.map +1 -1
  60. package/dist/features/converters/lexicalToJSX/converter/converters/link.js +19 -10
  61. package/dist/features/converters/lexicalToJSX/converter/converters/link.js.map +1 -1
  62. package/dist/features/converters/lexicalToJSX/converter/converters/list.js +63 -16
  63. package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
  64. package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.js +19 -4
  65. package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.js.map +1 -1
  66. package/dist/features/converters/lexicalToJSX/converter/converters/table.js +45 -12
  67. package/dist/features/converters/lexicalToJSX/converter/converters/table.js.map +1 -1
  68. package/dist/features/converters/lexicalToJSX/converter/converters/text.js +57 -11
  69. package/dist/features/converters/lexicalToJSX/converter/converters/text.js.map +1 -1
  70. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js +46 -7
  71. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
  72. package/dist/features/converters/lexicalToJSX/converter/index.d.ts +16 -1
  73. package/dist/features/converters/lexicalToJSX/converter/index.d.ts.map +1 -1
  74. package/dist/features/converters/lexicalToJSX/converter/index.js +98 -9
  75. package/dist/features/converters/lexicalToJSX/converter/index.js.map +1 -1
  76. package/dist/features/converters/lexicalToJSX/converter/types.d.ts +14 -10
  77. package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -1
  78. package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
  79. package/dist/features/debug/jsxConverter/client/plugin/index.js +17 -4
  80. package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -1
  81. package/dist/features/debug/testRecorder/client/plugin/index.js +113 -38
  82. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  83. package/dist/features/debug/treeView/client/plugin/index.js +15 -1
  84. package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
  85. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +357 -79
  86. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  87. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +41 -7
  88. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  89. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +39 -9
  90. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  91. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +59 -28
  92. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  93. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +1 -0
  94. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  95. package/dist/features/indent/client/IndentPlugin.js +6 -1
  96. package/dist/features/indent/client/IndentPlugin.js.map +1 -1
  97. package/dist/features/link/client/plugins/clickableLink/index.js +7 -1
  98. package/dist/features/link/client/plugins/clickableLink/index.js.map +1 -1
  99. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +151 -59
  100. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  101. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +9 -1
  102. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  103. package/dist/features/lists/checklist/client/plugin/index.js +7 -1
  104. package/dist/features/lists/checklist/client/plugin/index.js.map +1 -1
  105. package/dist/features/lists/plugin/index.js +7 -1
  106. package/dist/features/lists/plugin/index.js.map +1 -1
  107. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +18 -3
  108. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  109. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +9 -2
  110. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  111. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +18 -3
  112. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  113. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +9 -2
  114. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  115. package/dist/features/relationship/client/components/RelationshipComponent.js +100 -31
  116. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  117. package/dist/features/relationship/client/drawer/index.js +21 -4
  118. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  119. package/dist/features/relationship/client/nodes/RelationshipNode.js +12 -2
  120. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  121. package/dist/features/relationship/client/plugins/index.js +8 -1
  122. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  123. package/dist/features/textState/feature.client.js +22 -5
  124. package/dist/features/textState/feature.client.js.map +1 -1
  125. package/dist/features/toolbars/fixed/client/Toolbar/index.js +123 -27
  126. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  127. package/dist/features/toolbars/inline/client/Toolbar/index.js +111 -18
  128. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  129. package/dist/features/toolbars/shared/ToolbarButton/index.js +14 -4
  130. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  131. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +135 -56
  132. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  133. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +70 -16
  134. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  135. package/dist/features/upload/client/component/index.js +167 -43
  136. package/dist/features/upload/client/component/index.js.map +1 -1
  137. package/dist/features/upload/client/component/pending/index.js +16 -3
  138. package/dist/features/upload/client/component/pending/index.js.map +1 -1
  139. package/dist/features/upload/client/drawer/index.js +21 -4
  140. package/dist/features/upload/client/drawer/index.js.map +1 -1
  141. package/dist/features/upload/client/nodes/UploadNode.js +17 -3
  142. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  143. package/dist/features/upload/client/plugin/index.js +9 -2
  144. package/dist/features/upload/client/plugin/index.js.map +1 -1
  145. package/dist/field/Diff/converters/listitem/index.js +54 -11
  146. package/dist/field/Diff/converters/listitem/index.js.map +1 -1
  147. package/dist/field/Diff/converters/relationship/index.js +60 -18
  148. package/dist/field/Diff/converters/relationship/index.js.map +1 -1
  149. package/dist/field/Diff/converters/unknown/index.js +42 -7
  150. package/dist/field/Diff/converters/unknown/index.js.map +1 -1
  151. package/dist/field/Diff/converters/upload/index.js +91 -21
  152. package/dist/field/Diff/converters/upload/index.js.map +1 -1
  153. package/dist/field/Diff/index.js +17 -4
  154. package/dist/field/Diff/index.js.map +1 -1
  155. package/dist/field/Field.d.ts.map +1 -1
  156. package/dist/field/Field.js +141 -26
  157. package/dist/field/Field.js.map +1 -1
  158. package/dist/field/RenderLexical/index.js +47 -15
  159. package/dist/field/RenderLexical/index.js.map +1 -1
  160. package/dist/field/RichTextViewProvider.d.ts +83 -0
  161. package/dist/field/RichTextViewProvider.d.ts.map +1 -0
  162. package/dist/field/RichTextViewProvider.js +102 -0
  163. package/dist/field/RichTextViewProvider.js.map +1 -0
  164. package/dist/field/ViewSelector.d.ts +4 -0
  165. package/dist/field/ViewSelector.d.ts.map +1 -0
  166. package/dist/field/ViewSelector.js +90 -0
  167. package/dist/field/ViewSelector.js.map +1 -0
  168. package/dist/field/ViewSelector.scss +34 -0
  169. package/dist/field/index.d.ts +1 -0
  170. package/dist/field/index.d.ts.map +1 -1
  171. package/dist/field/index.js +56 -12
  172. package/dist/field/index.js.map +1 -1
  173. package/dist/field/index.scss +12 -0
  174. package/dist/field/rscEntry.d.ts +1 -1
  175. package/dist/field/rscEntry.d.ts.map +1 -1
  176. package/dist/field/rscEntry.js +21 -1
  177. package/dist/field/rscEntry.js.map +1 -1
  178. package/dist/index.d.ts +1 -1
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +3 -1
  181. package/dist/index.js.map +1 -1
  182. package/dist/lexical/EditorPlugin.js +17 -2
  183. package/dist/lexical/EditorPlugin.js.map +1 -1
  184. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  185. package/dist/lexical/LexicalEditor.js +238 -69
  186. package/dist/lexical/LexicalEditor.js.map +1 -1
  187. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  188. package/dist/lexical/LexicalProvider.js +74 -15
  189. package/dist/lexical/LexicalProvider.js.map +1 -1
  190. package/dist/lexical/config/client/EditorConfigProvider.js +11 -2
  191. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  192. package/dist/lexical/config/client/sanitize.d.ts +1 -1
  193. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  194. package/dist/lexical/config/client/sanitize.js +3 -2
  195. package/dist/lexical/config/client/sanitize.js.map +1 -1
  196. package/dist/lexical/config/types.d.ts +4 -0
  197. package/dist/lexical/config/types.d.ts.map +1 -1
  198. package/dist/lexical/config/types.js +3 -1
  199. package/dist/lexical/config/types.js.map +1 -1
  200. package/dist/lexical/nodes/index.d.ts +12 -2
  201. package/dist/lexical/nodes/index.d.ts.map +1 -1
  202. package/dist/lexical/nodes/index.js +187 -2
  203. package/dist/lexical/nodes/index.js.map +1 -1
  204. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +28 -5
  205. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
  206. package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts +2 -0
  207. package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts.map +1 -0
  208. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js +31 -0
  209. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +1 -0
  210. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +14 -1
  211. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  212. package/dist/lexical/plugins/SlashMenu/index.js +98 -31
  213. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  214. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +27 -7
  215. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  216. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +45 -7
  217. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  218. package/dist/lexical/ui/ContentEditable.js +18 -3
  219. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  220. package/dist/lexical/ui/icons/AI/index.js +58 -10
  221. package/dist/lexical/ui/icons/AI/index.js.map +1 -1
  222. package/dist/lexical/ui/icons/Add/index.js +31 -4
  223. package/dist/lexical/ui/icons/Add/index.js.map +1 -1
  224. package/dist/lexical/ui/icons/AlignCenter/index.js +45 -5
  225. package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
  226. package/dist/lexical/ui/icons/AlignJustify/index.js +45 -5
  227. package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
  228. package/dist/lexical/ui/icons/AlignLeft/index.js +45 -5
  229. package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
  230. package/dist/lexical/ui/icons/AlignRight/index.js +45 -5
  231. package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
  232. package/dist/lexical/ui/icons/Block/index.js +54 -5
  233. package/dist/lexical/ui/icons/Block/index.js.map +1 -1
  234. package/dist/lexical/ui/icons/Blockquote/index.js +24 -3
  235. package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
  236. package/dist/lexical/ui/icons/Bold/index.js +24 -3
  237. package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
  238. package/dist/lexical/ui/icons/Checklist/index.js +39 -4
  239. package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
  240. package/dist/lexical/ui/icons/Code/index.js +34 -4
  241. package/dist/lexical/ui/icons/Code/index.js.map +1 -1
  242. package/dist/lexical/ui/icons/CodeBlock/index.js +22 -3
  243. package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  244. package/dist/lexical/ui/icons/Collapse/index.js +23 -3
  245. package/dist/lexical/ui/icons/Collapse/index.js.map +1 -1
  246. package/dist/lexical/ui/icons/H1/index.js +24 -3
  247. package/dist/lexical/ui/icons/H1/index.js.map +1 -1
  248. package/dist/lexical/ui/icons/H2/index.js +24 -3
  249. package/dist/lexical/ui/icons/H2/index.js.map +1 -1
  250. package/dist/lexical/ui/icons/H3/index.js +24 -3
  251. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  252. package/dist/lexical/ui/icons/H4/index.js +24 -3
  253. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  254. package/dist/lexical/ui/icons/H5/index.js +24 -3
  255. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  256. package/dist/lexical/ui/icons/H6/index.js +24 -3
  257. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  258. package/dist/lexical/ui/icons/HorizontalRule/index.js +27 -3
  259. package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
  260. package/dist/lexical/ui/icons/IndentDecrease/index.js +53 -6
  261. package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
  262. package/dist/lexical/ui/icons/IndentIncrease/index.js +53 -6
  263. package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
  264. package/dist/lexical/ui/icons/InlineBlocks/index.js +26 -3
  265. package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -1
  266. package/dist/lexical/ui/icons/Italic/index.js +24 -3
  267. package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
  268. package/dist/lexical/ui/icons/Link/index.js +25 -3
  269. package/dist/lexical/ui/icons/Link/index.js.map +1 -1
  270. package/dist/lexical/ui/icons/Meatballs/index.js +39 -5
  271. package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -1
  272. package/dist/lexical/ui/icons/OrderedList/index.js +61 -7
  273. package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
  274. package/dist/lexical/ui/icons/Relationship/index.js +58 -10
  275. package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
  276. package/dist/lexical/ui/icons/Strikethrough/index.js +34 -4
  277. package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
  278. package/dist/lexical/ui/icons/Subscript/index.js +24 -3
  279. package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
  280. package/dist/lexical/ui/icons/Superscript/index.js +24 -3
  281. package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
  282. package/dist/lexical/ui/icons/Table/index.js +24 -3
  283. package/dist/lexical/ui/icons/Table/index.js.map +1 -1
  284. package/dist/lexical/ui/icons/Text/index.js +24 -3
  285. package/dist/lexical/ui/icons/Text/index.js.map +1 -1
  286. package/dist/lexical/ui/icons/TextState/index.js +18 -12
  287. package/dist/lexical/ui/icons/TextState/index.js.map +1 -1
  288. package/dist/lexical/ui/icons/Underline/index.js +34 -4
  289. package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
  290. package/dist/lexical/ui/icons/UnorderedList/index.js +81 -8
  291. package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
  292. package/dist/lexical/ui/icons/Upload/index.js +48 -5
  293. package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
  294. package/dist/types.d.ts +152 -2
  295. package/dist/types.d.ts.map +1 -1
  296. package/dist/types.js +55 -0
  297. package/dist/types.js.map +1 -1
  298. package/dist/utilities/fieldsDrawer/Drawer.js +41 -16
  299. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  300. package/dist/utilities/fieldsDrawer/DrawerContent.js +42 -10
  301. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  302. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +9 -1
  303. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
  304. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +11 -3
  305. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
  306. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  307. package/dist/utilities/generateImportMap.js +1 -0
  308. package/dist/utilities/generateImportMap.js.map +1 -1
  309. package/dist/validate/hasText.d.ts +6 -1
  310. package/dist/validate/hasText.d.ts.map +1 -1
  311. package/dist/validate/hasText.js +10 -4
  312. package/dist/validate/hasText.js.map +1 -1
  313. package/package.json +12 -7
@@ -1,8 +1,14 @@
1
1
  'use client';
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
3
+ import React from 'react';
2
4
  import { useInlineBlockComponentContext } from '../index.js';
3
5
  export const InlineBlockRemoveButton = ()=>{
4
6
  const { RemoveButton } = useInlineBlockComponentContext();
5
- return RemoveButton ? <RemoveButton/> : null;
7
+ return RemoveButton ? /*#__PURE__*/ _jsxDEV(RemoveButton, {}, void 0, false, {
8
+ fileName: "src/features/blocks/client/componentInline/components/InlineBlockRemoveButton.tsx",
9
+ lineNumber: 9,
10
+ columnNumber: 25
11
+ }, this) : null;
6
12
  };
7
13
 
8
14
  //# sourceMappingURL=InlineBlockRemoveButton.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/features/blocks/client/componentInline/components/InlineBlockRemoveButton.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useInlineBlockComponentContext } from '../index.js'\n\nexport const InlineBlockRemoveButton = () => {\n const { RemoveButton } = useInlineBlockComponentContext()\n\n return RemoveButton ? <RemoveButton /> : null\n}\n"],"names":["useInlineBlockComponentContext","InlineBlockRemoveButton","RemoveButton"],"mappings":"AAAA;AAGA,SAASA,8BAA8B,QAAQ,cAAa;AAE5D,OAAO,MAAMC,0BAA0B;IACrC,MAAM,EAAEC,YAAY,EAAE,GAAGF;IAEzB,OAAOE,gBAAgBA,iBAAkB;AAC3C,EAAC"}
1
+ {"version":3,"sources":["../../../../../../src/features/blocks/client/componentInline/components/InlineBlockRemoveButton.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useInlineBlockComponentContext } from '../index.js'\n\nexport const InlineBlockRemoveButton = () => {\n const { RemoveButton } = useInlineBlockComponentContext()\n\n return RemoveButton ? <RemoveButton /> : null\n}\n"],"names":["React","useInlineBlockComponentContext","InlineBlockRemoveButton","RemoveButton"],"mappings":"AAAA;;AACA,OAAOA,WAAW,QAAO;AAEzB,SAASC,8BAA8B,QAAQ,cAAa;AAE5D,OAAO,MAAMC,0BAA0B;IACrC,MAAM,EAAEC,YAAY,EAAE,GAAGF;IAEzB,OAAOE,6BAAe,QAACA;;;;eAAkB;AAC3C,EAAC"}
@@ -1,4 +1,5 @@
1
1
  'use client';
2
+ import { jsxDEV as _jsxDEV, Fragment as _Fragment } from "react/jsx-dev-runtime";
2
3
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
4
  import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
4
5
  import { getTranslation } from '@payloadcms/translations';
@@ -16,7 +17,7 @@ import { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js';
16
17
  * Can be modified by the node in order to trigger the re-fetch of the initial state based on the
17
18
  * formData. This is useful when node.setFields() is explicitly called from outside of the form - in
18
19
  * this case, the new field state is likely not reflected in the form state, so we need to re-fetch
19
- */ const InlineBlockComponentContext = createContext({
20
+ */ const InlineBlockComponentContext = /*#__PURE__*/ createContext({
20
21
  initialState: false
21
22
  });
22
23
  export const useInlineBlockComponentContext = ()=>React.use(InlineBlockComponentContext);
@@ -242,36 +243,69 @@ export const InlineBlockComponent = (props)=>{
242
243
  nodeKey,
243
244
  formData
244
245
  ]);
245
- const RemoveButton = useMemo(()=>()=><Button buttonStyle="icon-label" className={`${baseClass}__removeButton`} disabled={!isEditable} icon="x" onClick={(e)=>{
246
- e.preventDefault();
247
- removeInlineBlock();
248
- }} round size="small" tooltip={t('lexical:blocks:inlineBlocks:remove', {
249
- label: blockDisplayName
250
- })}/>, [
246
+ const RemoveButton = useMemo(()=>()=>/*#__PURE__*/ _jsxDEV(Button, {
247
+ buttonStyle: "icon-label",
248
+ className: `${baseClass}__removeButton`,
249
+ disabled: !isEditable,
250
+ icon: "x",
251
+ onClick: (e)=>{
252
+ e.preventDefault();
253
+ removeInlineBlock();
254
+ },
255
+ round: true,
256
+ size: "small",
257
+ tooltip: t('lexical:blocks:inlineBlocks:remove', {
258
+ label: blockDisplayName
259
+ })
260
+ }, void 0, false, {
261
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
262
+ lineNumber: 341,
263
+ columnNumber: 7
264
+ }, this), [
251
265
  baseClass,
252
266
  blockDisplayName,
253
267
  isEditable,
254
268
  removeInlineBlock,
255
269
  t
256
270
  ]);
257
- const EditButton = useMemo(()=>()=><Button buttonStyle="icon-label" className={`${baseClass}__editButton`} disabled={!isEditable} el="button" icon="edit" onClick={()=>{
258
- toggleDrawer();
259
- }} round size="small" tooltip={t('lexical:blocks:inlineBlocks:edit', {
260
- label: blockDisplayName
261
- })}/>, [
271
+ const EditButton = useMemo(()=>()=>/*#__PURE__*/ _jsxDEV(Button, {
272
+ buttonStyle: "icon-label",
273
+ className: `${baseClass}__editButton`,
274
+ disabled: !isEditable,
275
+ el: "button",
276
+ icon: "edit",
277
+ onClick: ()=>{
278
+ toggleDrawer();
279
+ },
280
+ round: true,
281
+ size: "small",
282
+ tooltip: t('lexical:blocks:inlineBlocks:edit', {
283
+ label: blockDisplayName
284
+ })
285
+ }, void 0, false, {
286
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
287
+ lineNumber: 360,
288
+ columnNumber: 7
289
+ }, this), [
262
290
  baseClass,
263
291
  blockDisplayName,
264
292
  isEditable,
265
293
  t,
266
294
  toggleDrawer
267
295
  ]);
268
- const InlineBlockContainer = useMemo(()=>({ children, className })=><div className={[
269
- `${baseClass}__container`,
270
- baseClass + '-' + formData.blockType,
271
- className
272
- ].filter(Boolean).join(' ')} ref={inlineBlockElemElemRef}>
273
- {children}
274
- </div>, [
296
+ const InlineBlockContainer = useMemo(()=>({ children, className })=>/*#__PURE__*/ _jsxDEV("div", {
297
+ className: [
298
+ `${baseClass}__container`,
299
+ baseClass + '-' + formData.blockType,
300
+ className
301
+ ].filter(Boolean).join(' '),
302
+ ref: inlineBlockElemElemRef,
303
+ children: children
304
+ }, void 0, false, {
305
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
306
+ lineNumber: 380,
307
+ columnNumber: 9
308
+ }, this), [
275
309
  baseClass,
276
310
  formData.blockType
277
311
  ]);
@@ -279,7 +313,13 @@ export const InlineBlockComponent = (props)=>{
279
313
  if (CustomLabel) {
280
314
  return ()=>CustomLabel;
281
315
  } else {
282
- return ()=><div>{clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''}</div>;
316
+ return ()=>/*#__PURE__*/ _jsxDEV("div", {
317
+ children: clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''
318
+ }, void 0, false, {
319
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
320
+ lineNumber: 397,
321
+ columnNumber: 9
322
+ }, this);
283
323
  }
284
324
  }, [
285
325
  CustomLabel,
@@ -287,55 +327,164 @@ export const InlineBlockComponent = (props)=>{
287
327
  i18n
288
328
  ]);
289
329
  if (!clientBlock) {
290
- return <InlineBlockContainer className={`${baseClass}-not-found`}>
291
- <span>Error: Block '{formData.blockType}' not found</span>
292
- {isEditable ? <div className={`${baseClass}__actions`}>
293
- <RemoveButton/>
294
- </div> : null}
295
- </InlineBlockContainer>;
330
+ return /*#__PURE__*/ _jsxDEV(InlineBlockContainer, {
331
+ className: `${baseClass}-not-found`,
332
+ children: [
333
+ /*#__PURE__*/ _jsxDEV("span", {
334
+ children: [
335
+ "Error: Block '",
336
+ formData.blockType,
337
+ "' not found"
338
+ ]
339
+ }, void 0, true, {
340
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
341
+ lineNumber: 405,
342
+ columnNumber: 9
343
+ }, this),
344
+ isEditable ? /*#__PURE__*/ _jsxDEV("div", {
345
+ className: `${baseClass}__actions`,
346
+ children: /*#__PURE__*/ _jsxDEV(RemoveButton, {}, void 0, false, {
347
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
348
+ lineNumber: 408,
349
+ columnNumber: 13
350
+ }, this)
351
+ }, void 0, false, {
352
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
353
+ lineNumber: 407,
354
+ columnNumber: 11
355
+ }, this) : null
356
+ ]
357
+ }, void 0, true, {
358
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
359
+ lineNumber: 404,
360
+ columnNumber: 7
361
+ }, this);
296
362
  }
297
- return <Form beforeSubmit={[
298
- async ({ formState })=>{
299
- // This is only called when form is submitted from drawer
300
- return await onChange({
301
- formState,
302
- submit: true
303
- });
304
- }
305
- ]} disableValidationOnSubmit el="div" fields={clientBlock?.fields} initialState={initialState || {}} onChange={[
306
- onChange
307
- ]} onSubmit={(formState, data)=>{
308
- onFormSubmit(formState, data);
309
- toggleDrawer();
310
- }} uuid={uuid()}>
311
- <EditDepthProvider>
312
- <Drawer className={''} slug={drawerSlug} title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {
313
- label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label')
314
- })}>
315
- {initialState ? <>
316
- <RenderFields fields={clientBlock?.fields} forceRender parentIndexPath="" parentPath=// See Blocks feature path for details as for why this is empty
317
- "" parentSchemaPath={schemaFieldsPath} permissions={true} readOnly={!isEditable}/>
318
- <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>
319
- </> : null}
320
- </Drawer>
321
- </EditDepthProvider>
322
- {CustomBlock ? <InlineBlockComponentContext value={{
323
- EditButton,
324
- initialState,
325
- InlineBlockContainer,
326
- Label,
327
- nodeKey,
328
- RemoveButton
329
- }}>
330
- {CustomBlock}
331
- </InlineBlockComponentContext> : <InlineBlockContainer>
332
- {initialState ? <Label/> : <ShimmerEffect height="15px" width="40px"/>}
333
- {isEditable ? <div className={`${baseClass}__actions`}>
334
- <EditButton/>
335
- <RemoveButton/>
336
- </div> : null}
337
- </InlineBlockContainer>}
338
- </Form>;
363
+ return /*#__PURE__*/ _jsxDEV(Form, {
364
+ beforeSubmit: [
365
+ async ({ formState })=>{
366
+ // This is only called when form is submitted from drawer
367
+ return await onChange({
368
+ formState,
369
+ submit: true
370
+ });
371
+ }
372
+ ],
373
+ disableValidationOnSubmit: true,
374
+ el: "div",
375
+ fields: clientBlock?.fields,
376
+ initialState: initialState || {},
377
+ onChange: [
378
+ onChange
379
+ ],
380
+ onSubmit: (formState, data)=>{
381
+ onFormSubmit(formState, data);
382
+ toggleDrawer();
383
+ },
384
+ uuid: uuid(),
385
+ children: [
386
+ /*#__PURE__*/ _jsxDEV(EditDepthProvider, {
387
+ children: /*#__PURE__*/ _jsxDEV(Drawer, {
388
+ className: '',
389
+ slug: drawerSlug,
390
+ title: t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {
391
+ label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label')
392
+ }),
393
+ children: initialState ? /*#__PURE__*/ _jsxDEV(_Fragment, {
394
+ children: [
395
+ /*#__PURE__*/ _jsxDEV(RenderFields, {
396
+ fields: clientBlock?.fields,
397
+ forceRender: true,
398
+ parentIndexPath: "",
399
+ parentPath: // See Blocks feature path for details as for why this is empty
400
+ "",
401
+ parentSchemaPath: schemaFieldsPath,
402
+ permissions: true,
403
+ readOnly: !isEditable
404
+ }, void 0, false, {
405
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
406
+ lineNumber: 444,
407
+ columnNumber: 15
408
+ }, this),
409
+ /*#__PURE__*/ _jsxDEV(FormSubmit, {
410
+ programmaticSubmit: true,
411
+ children: t('fields:saveChanges')
412
+ }, void 0, false, {
413
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
414
+ lineNumber: 453,
415
+ columnNumber: 15
416
+ }, this)
417
+ ]
418
+ }, void 0, true) : null
419
+ }, void 0, false, {
420
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
421
+ lineNumber: 435,
422
+ columnNumber: 9
423
+ }, this)
424
+ }, void 0, false, {
425
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
426
+ lineNumber: 434,
427
+ columnNumber: 7
428
+ }, this),
429
+ CustomBlock ? /*#__PURE__*/ _jsxDEV(InlineBlockComponentContext, {
430
+ value: {
431
+ EditButton,
432
+ initialState,
433
+ InlineBlockContainer,
434
+ Label,
435
+ nodeKey,
436
+ RemoveButton
437
+ },
438
+ children: CustomBlock
439
+ }, void 0, false, {
440
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
441
+ lineNumber: 459,
442
+ columnNumber: 9
443
+ }, this) : /*#__PURE__*/ _jsxDEV(InlineBlockContainer, {
444
+ children: [
445
+ initialState ? /*#__PURE__*/ _jsxDEV(Label, {}, void 0, false, {
446
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
447
+ lineNumber: 473,
448
+ columnNumber: 27
449
+ }, this) : /*#__PURE__*/ _jsxDEV(ShimmerEffect, {
450
+ height: "15px",
451
+ width: "40px"
452
+ }, void 0, false, {
453
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
454
+ lineNumber: 473,
455
+ columnNumber: 39
456
+ }, this),
457
+ isEditable ? /*#__PURE__*/ _jsxDEV("div", {
458
+ className: `${baseClass}__actions`,
459
+ children: [
460
+ /*#__PURE__*/ _jsxDEV(EditButton, {}, void 0, false, {
461
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
462
+ lineNumber: 476,
463
+ columnNumber: 15
464
+ }, this),
465
+ /*#__PURE__*/ _jsxDEV(RemoveButton, {}, void 0, false, {
466
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
467
+ lineNumber: 477,
468
+ columnNumber: 15
469
+ }, this)
470
+ ]
471
+ }, void 0, true, {
472
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
473
+ lineNumber: 475,
474
+ columnNumber: 13
475
+ }, this) : null
476
+ ]
477
+ }, void 0, true, {
478
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
479
+ lineNumber: 472,
480
+ columnNumber: 9
481
+ }, this)
482
+ ]
483
+ }, void 0, true, {
484
+ fileName: "src/features/blocks/client/componentInline/index.tsx",
485
+ lineNumber: 416,
486
+ columnNumber: 5
487
+ }, this);
339
488
  };
340
489
 
341
490
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient, ClientBlock, Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\n\nimport './index.scss'\n\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\ntype Props = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly className: string\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\ntype InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.use(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { cacheBuster, className: baseClass, formData, nodeKey } = props\n\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n const { i18n, t } = useTranslation<object, string>()\n const {\n createdInlineBlock,\n fieldProps: { featureClientSchemaMap, initialLexicalFormState, schemaPath },\n setCreatedInlineBlock,\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { fields: parentDocumentFields } = useDocumentForm()\n\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n const firstTimeDrawer = useRef(false)\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n return Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n const { config } = useConfig()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const clientBlockFields = clientBlock?.fields ?? []\n\n // Open drawer on \"mount\"\n useEffect(() => {\n if (!firstTimeDrawer.current && createdInlineBlock?.getKey() === nodeKey) {\n // > 2 because they always have \"id\" and \"blockName\" fields\n if (clientBlockFields.length > 2) {\n toggleDrawer()\n }\n setCreatedInlineBlock?.(undefined)\n firstTimeDrawer.current = true\n }\n }, [clientBlockFields.length, createdInlineBlock, nodeKey, setCreatedInlineBlock, toggleDrawer])\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n globalSlug,\n initialBlockData: formData,\n initialBlockFormState: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n const newFormStateData: InlineBlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state),\n true,\n ) as InlineBlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n editor,\n nodeKey,\n isEditable,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n\n return state\n },\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n parentDocumentFields,\n globalSlug,\n isEditable,\n schemaFieldsPath,\n ],\n )\n // cleanup effect\n useEffect(() => {\n const isStateOutOfSync = (formData: InlineBlockFields, initialState: FormState) => {\n return Object.keys(initialState).some(\n (key) => initialState[key] && formData[key] !== initialState[key].value,\n )\n }\n\n return () => {\n // If the component is unmounted (either via removeInlineBlock or via lexical itself) and the form state got changed before,\n // we need to reset the initial state to force a re-fetch of the initial state when it gets mounted again (e.g. via lexical history undo).\n // Otherwise it would use an outdated initial state.\n if (initialState && isStateOutOfSync(formData, initialState)) {\n setInitialState(false)\n }\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [formData, initialState])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState, newData: Data) => {\n newData.blockType = formData.blockType\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData as InlineBlockFields, true)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children, className }: { children: React.ReactNode; className?: string }) => (\n <div\n className={[`${baseClass}__container`, baseClass + '-' + formData.blockType, className]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [baseClass, formData.blockType],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => (\n <div>{clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''}</div>\n )\n }\n }, [CustomLabel, clientBlock?.labels, i18n])\n\n if (!clientBlock) {\n return (\n <InlineBlockContainer className={`${baseClass}-not-found`}>\n <span>Error: Block '{formData.blockType}' not found</span>\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )\n }\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n el=\"div\"\n fields={clientBlock?.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState, data) => {\n onFormSubmit(formState, data)\n toggleDrawer()\n }}\n uuid={uuid()}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","createContext","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","use","InlineBlockComponent","props","cacheBuster","className","baseClass","formData","nodeKey","editor","isEditable","i18n","t","createdInlineBlock","fieldProps","featureClientSchemaMap","initialLexicalFormState","schemaPath","setCreatedInlineBlock","uuidFromContext","fields","parentDocumentFields","getFormState","editDepth","firstTimeDrawer","setInitialState","useState","cachedFormState","id","formState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","hasMounted","prevCacheBuster","current","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","collectionSlug","getDocPreferences","globalSlug","config","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","clientBlockFields","getKey","length","undefined","removeInlineBlock","update","remove","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","initialBlockData","initialBlockFormState","operation","readOnly","renderAllFields","signal","newFormStateData","node","newData","setFields","onChange","prevFormState","submit","controller","isStateOutOfSync","keys","some","key","onFormSubmit","RemoveButton","buttonStyle","disabled","icon","onClick","e","preventDefault","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","div","filter","Boolean","join","ref","Label","span","beforeSubmit","disableValidationOnSubmit","onSubmit","title","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","height","width"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient, ClientBlock, Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\n\nimport './index.scss'\n\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\ntype Props = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly className: string\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\ntype InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.use(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { cacheBuster, className: baseClass, formData, nodeKey } = props\n\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n const { i18n, t } = useTranslation<object, string>()\n const {\n createdInlineBlock,\n fieldProps: { featureClientSchemaMap, initialLexicalFormState, schemaPath },\n setCreatedInlineBlock,\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { fields: parentDocumentFields } = useDocumentForm()\n\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n const firstTimeDrawer = useRef(false)\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n return Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n const { config } = useConfig()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const clientBlockFields = clientBlock?.fields ?? []\n\n // Open drawer on \"mount\"\n useEffect(() => {\n if (!firstTimeDrawer.current && createdInlineBlock?.getKey() === nodeKey) {\n // > 2 because they always have \"id\" and \"blockName\" fields\n if (clientBlockFields.length > 2) {\n toggleDrawer()\n }\n setCreatedInlineBlock?.(undefined)\n firstTimeDrawer.current = true\n }\n }, [clientBlockFields.length, createdInlineBlock, nodeKey, setCreatedInlineBlock, toggleDrawer])\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n globalSlug,\n initialBlockData: formData,\n initialBlockFormState: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n const newFormStateData: InlineBlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state),\n true,\n ) as InlineBlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n editor,\n nodeKey,\n isEditable,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n\n return state\n },\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n parentDocumentFields,\n globalSlug,\n isEditable,\n schemaFieldsPath,\n ],\n )\n // cleanup effect\n useEffect(() => {\n const isStateOutOfSync = (formData: InlineBlockFields, initialState: FormState) => {\n return Object.keys(initialState).some(\n (key) => initialState[key] && formData[key] !== initialState[key].value,\n )\n }\n\n return () => {\n // If the component is unmounted (either via removeInlineBlock or via lexical itself) and the form state got changed before,\n // we need to reset the initial state to force a re-fetch of the initial state when it gets mounted again (e.g. via lexical history undo).\n // Otherwise it would use an outdated initial state.\n if (initialState && isStateOutOfSync(formData, initialState)) {\n setInitialState(false)\n }\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [formData, initialState])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState, newData: Data) => {\n newData.blockType = formData.blockType\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData as InlineBlockFields, true)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children, className }: { children: React.ReactNode; className?: string }) => (\n <div\n className={[`${baseClass}__container`, baseClass + '-' + formData.blockType, className]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [baseClass, formData.blockType],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => (\n <div>{clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''}</div>\n )\n }\n }, [CustomLabel, clientBlock?.labels, i18n])\n\n if (!clientBlock) {\n return (\n <InlineBlockContainer className={`${baseClass}-not-found`}>\n <span>Error: Block '{formData.blockType}' not found</span>\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )\n }\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n el=\"div\"\n fields={clientBlock?.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState, data) => {\n onFormSubmit(formState, data)\n toggleDrawer()\n }}\n uuid={uuid()}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","createContext","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","use","InlineBlockComponent","props","cacheBuster","className","baseClass","formData","nodeKey","editor","isEditable","i18n","t","createdInlineBlock","fieldProps","featureClientSchemaMap","initialLexicalFormState","schemaPath","setCreatedInlineBlock","uuidFromContext","fields","parentDocumentFields","getFormState","editDepth","firstTimeDrawer","setInitialState","useState","cachedFormState","id","formState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","hasMounted","prevCacheBuster","current","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","collectionSlug","getDocPreferences","globalSlug","config","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","clientBlockFields","getKey","length","undefined","removeInlineBlock","update","remove","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","initialBlockData","initialBlockFormState","operation","readOnly","renderAllFields","signal","newFormStateData","node","newData","setFields","onChange","prevFormState","submit","controller","isStateOutOfSync","keys","some","key","onFormSubmit","RemoveButton","buttonStyle","disabled","icon","onClick","e","preventDefault","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","div","filter","Boolean","join","ref","Label","span","beforeSubmit","disableValidationOnSubmit","onSubmit","title","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","height","width"],"mappings":"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"}
@@ -1,12 +1,23 @@
1
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
+ import React from 'react';
1
3
  import { BlockIcon } from '../../../lexical/ui/icons/Block/index.js';
2
4
  export function getBlockImageComponent(imageURL, imageAltText) {
3
5
  if (!imageURL) {
4
6
  return BlockIcon;
5
7
  }
6
- return ()=><img alt={imageAltText ?? 'Block Image'} className="lexical-block-custom-image" src={imageURL} style={{
7
- maxHeight: 20,
8
- maxWidth: 20
9
- }}/>;
8
+ return ()=>/*#__PURE__*/ _jsxDEV("img", {
9
+ alt: imageAltText ?? 'Block Image',
10
+ className: "lexical-block-custom-image",
11
+ src: imageURL,
12
+ style: {
13
+ maxHeight: 20,
14
+ maxWidth: 20
15
+ }
16
+ }, void 0, false, {
17
+ fileName: "src/features/blocks/client/getBlockImageComponent.tsx",
18
+ lineNumber: 11,
19
+ columnNumber: 5
20
+ }, this);
10
21
  }
11
22
 
12
23
  //# sourceMappingURL=getBlockImageComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/blocks/client/getBlockImageComponent.tsx"],"sourcesContent":["import React from 'react'\n\nimport { BlockIcon } from '../../../lexical/ui/icons/Block/index.js'\n\nexport function getBlockImageComponent(imageURL?: string, imageAltText?: string) {\n if (!imageURL) {\n return BlockIcon\n }\n\n return () => (\n <img\n alt={imageAltText ?? 'Block Image'}\n className=\"lexical-block-custom-image\"\n src={imageURL}\n style={{ maxHeight: 20, maxWidth: 20 }}\n />\n )\n}\n"],"names":["BlockIcon","getBlockImageComponent","imageURL","imageAltText","img","alt","className","src","style","maxHeight","maxWidth"],"mappings":"AAEA,SAASA,SAAS,QAAQ,2CAA0C;AAEpE,OAAO,SAASC,uBAAuBC,QAAiB,EAAEC,YAAqB;IAC7E,IAAI,CAACD,UAAU;QACb,OAAOF;IACT;IAEA,OAAO,KACJI,IACCC,KAAKF,gBAAgB,eACrBG,UAAU,6BACVC,KAAKL,UACLM,OAAO;YAAEC,WAAW;YAAIC,UAAU;QAAG;AAG3C"}
1
+ {"version":3,"sources":["../../../../src/features/blocks/client/getBlockImageComponent.tsx"],"sourcesContent":["import React from 'react'\n\nimport { BlockIcon } from '../../../lexical/ui/icons/Block/index.js'\n\nexport function getBlockImageComponent(imageURL?: string, imageAltText?: string) {\n if (!imageURL) {\n return BlockIcon\n }\n\n return () => (\n <img\n alt={imageAltText ?? 'Block Image'}\n className=\"lexical-block-custom-image\"\n src={imageURL}\n style={{ maxHeight: 20, maxWidth: 20 }}\n />\n )\n}\n"],"names":["React","BlockIcon","getBlockImageComponent","imageURL","imageAltText","img","alt","className","src","style","maxHeight","maxWidth"],"mappings":";AAAA,OAAOA,WAAW,QAAO;AAEzB,SAASC,SAAS,QAAQ,2CAA0C;AAEpE,OAAO,SAASC,uBAAuBC,QAAiB,EAAEC,YAAqB;IAC7E,IAAI,CAACD,UAAU;QACb,OAAOF;IACT;IAEA,OAAO,kBACL,QAACI;YACCC,KAAKF,gBAAgB;YACrBG,WAAU;YACVC,KAAKL;YACLM,OAAO;gBAAEC,WAAW;gBAAIC,UAAU;YAAG;;;;;;AAG3C"}
@@ -1,6 +1,8 @@
1
1
  'use client';
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
3
  import ObjectID from 'bson-objectid';
3
4
  import { $applyNodeReplacement } from 'lexical';
5
+ import React from 'react';
4
6
  import { ServerBlockNode } from '../../server/nodes/BlocksNode.js';
5
7
  import { BlockComponent } from '../component/index.js';
6
8
  export class BlockNode extends ServerBlockNode {
@@ -26,7 +28,16 @@ export class BlockNode extends ServerBlockNode {
26
28
  return node;
27
29
  }
28
30
  decorate(_editor, config) {
29
- return <BlockComponent cacheBuster={this.getCacheBuster()} className={config.theme.block ?? 'LexicalEditorTheme__block'} formData={this.getFields()} nodeKey={this.getKey()}/>;
31
+ return /*#__PURE__*/ _jsxDEV(BlockComponent, {
32
+ cacheBuster: this.getCacheBuster(),
33
+ className: config.theme.block ?? 'LexicalEditorTheme__block',
34
+ formData: this.getFields(),
35
+ nodeKey: this.getKey()
36
+ }, void 0, false, {
37
+ fileName: "src/features/blocks/client/nodes/BlocksNode.tsx",
38
+ lineNumber: 43,
39
+ columnNumber: 7
40
+ }, this);
30
41
  }
31
42
  exportJSON() {
32
43
  return super.exportJSON();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/features/blocks/client/nodes/BlocksNode.tsx"],"sourcesContent":["'use client'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n} from 'lexical'\nimport React, { type JSX } from 'react'\n\nimport type { BlockFieldsOptionalID, SerializedBlockNode } from '../../server/nodes/BlocksNode.js'\n\nimport { ServerBlockNode } from '../../server/nodes/BlocksNode.js'\nimport { BlockComponent } from '../component/index.js'\n\nexport class BlockNode extends ServerBlockNode {\n static override clone(node: ServerBlockNode): ServerBlockNode {\n return super.clone(node)\n }\n\n static override getType(): string {\n return super.getType()\n }\n\n static override importJSON(serializedNode: SerializedBlockNode): BlockNode {\n if (serializedNode.version === 1) {\n // Convert (version 1 had the fields wrapped in another, unnecessary data property)\n serializedNode = {\n ...serializedNode,\n fields: {\n ...(serializedNode as any).fields.data,\n },\n version: 2,\n }\n }\n const node = $createBlockNode(serializedNode.fields)\n node.setFormat(serializedNode.format)\n return node\n }\n\n override decorate(_editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return (\n <BlockComponent\n cacheBuster={this.getCacheBuster()}\n className={config.theme.block ?? 'LexicalEditorTheme__block'}\n formData={this.getFields()}\n nodeKey={this.getKey()}\n />\n )\n }\n\n override exportJSON(): SerializedBlockNode {\n return super.exportJSON()\n }\n}\n\nexport function $createBlockNode(fields: BlockFieldsOptionalID): BlockNode {\n return $applyNodeReplacement(\n new BlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n }),\n )\n}\n\nexport function $isBlockNode(node: BlockNode | LexicalNode | null | undefined): node is BlockNode {\n return node instanceof BlockNode\n}\n"],"names":["ObjectID","$applyNodeReplacement","ServerBlockNode","BlockComponent","BlockNode","clone","node","getType","importJSON","serializedNode","version","fields","data","$createBlockNode","setFormat","format","decorate","_editor","config","cacheBuster","getCacheBuster","className","theme","block","formData","getFields","nodeKey","getKey","exportJSON","id","default","toHexString","$isBlockNode"],"mappings":"AAAA;AACA,OAAOA,cAAc,gBAAe;AACpC,SACEC,qBAAqB,QAIhB,UAAS;AAKhB,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,cAAc,QAAQ,wBAAuB;AAEtD,OAAO,MAAMC,kBAAkBF;IAC7B,OAAgBG,MAAMC,IAAqB,EAAmB;QAC5D,OAAO,KAAK,CAACD,MAAMC;IACrB;IAEA,OAAgBC,UAAkB;QAChC,OAAO,KAAK,CAACA;IACf;IAEA,OAAgBC,WAAWC,cAAmC,EAAa;QACzE,IAAIA,eAAeC,OAAO,KAAK,GAAG;YAChC,mFAAmF;YACnFD,iBAAiB;gBACf,GAAGA,cAAc;gBACjBE,QAAQ;oBACN,GAAG,AAACF,eAAuBE,MAAM,CAACC,IAAI;gBACxC;gBACAF,SAAS;YACX;QACF;QACA,MAAMJ,OAAOO,iBAAiBJ,eAAeE,MAAM;QACnDL,KAAKQ,SAAS,CAACL,eAAeM,MAAM;QACpC,OAAOT;IACT;IAESU,SAASC,OAAsB,EAAEC,MAAoB,EAAe;QAC3E,QACGf,eACCgB,aAAa,IAAI,CAACC,cAAc,IAChCC,WAAWH,OAAOI,KAAK,CAACC,KAAK,IAAI,6BACjCC,UAAU,IAAI,CAACC,SAAS,IACxBC,SAAS,IAAI,CAACC,MAAM;IAG1B;IAESC,aAAkC;QACzC,OAAO,KAAK,CAACA;IACf;AACF;AAEA,OAAO,SAASf,iBAAiBF,MAA6B;IAC5D,OAAOV,sBACL,IAAIG,UAAU;QACZO,QAAQ;YACN,GAAGA,MAAM;YACTkB,IAAIlB,QAAQkB,MAAM,IAAI7B,SAAS8B,OAAO,GAAGC,WAAW;QACtD;IACF;AAEJ;AAEA,OAAO,SAASC,aAAa1B,IAAgD;IAC3E,OAAOA,gBAAgBF;AACzB"}
1
+ {"version":3,"sources":["../../../../../src/features/blocks/client/nodes/BlocksNode.tsx"],"sourcesContent":["'use client'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n} from 'lexical'\nimport React, { type JSX } from 'react'\n\nimport type { BlockFieldsOptionalID, SerializedBlockNode } from '../../server/nodes/BlocksNode.js'\n\nimport { ServerBlockNode } from '../../server/nodes/BlocksNode.js'\nimport { BlockComponent } from '../component/index.js'\n\nexport class BlockNode extends ServerBlockNode {\n static override clone(node: ServerBlockNode): ServerBlockNode {\n return super.clone(node)\n }\n\n static override getType(): string {\n return super.getType()\n }\n\n static override importJSON(serializedNode: SerializedBlockNode): BlockNode {\n if (serializedNode.version === 1) {\n // Convert (version 1 had the fields wrapped in another, unnecessary data property)\n serializedNode = {\n ...serializedNode,\n fields: {\n ...(serializedNode as any).fields.data,\n },\n version: 2,\n }\n }\n const node = $createBlockNode(serializedNode.fields)\n node.setFormat(serializedNode.format)\n return node\n }\n\n override decorate(_editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return (\n <BlockComponent\n cacheBuster={this.getCacheBuster()}\n className={config.theme.block ?? 'LexicalEditorTheme__block'}\n formData={this.getFields()}\n nodeKey={this.getKey()}\n />\n )\n }\n\n override exportJSON(): SerializedBlockNode {\n return super.exportJSON()\n }\n}\n\nexport function $createBlockNode(fields: BlockFieldsOptionalID): BlockNode {\n return $applyNodeReplacement(\n new BlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n }),\n )\n}\n\nexport function $isBlockNode(node: BlockNode | LexicalNode | null | undefined): node is BlockNode {\n return node instanceof BlockNode\n}\n"],"names":["ObjectID","$applyNodeReplacement","React","ServerBlockNode","BlockComponent","BlockNode","clone","node","getType","importJSON","serializedNode","version","fields","data","$createBlockNode","setFormat","format","decorate","_editor","config","cacheBuster","getCacheBuster","className","theme","block","formData","getFields","nodeKey","getKey","exportJSON","id","default","toHexString","$isBlockNode"],"mappings":"AAAA;;AACA,OAAOA,cAAc,gBAAe;AACpC,SACEC,qBAAqB,QAIhB,UAAS;AAChB,OAAOC,WAAyB,QAAO;AAIvC,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,cAAc,QAAQ,wBAAuB;AAEtD,OAAO,MAAMC,kBAAkBF;IAC7B,OAAgBG,MAAMC,IAAqB,EAAmB;QAC5D,OAAO,KAAK,CAACD,MAAMC;IACrB;IAEA,OAAgBC,UAAkB;QAChC,OAAO,KAAK,CAACA;IACf;IAEA,OAAgBC,WAAWC,cAAmC,EAAa;QACzE,IAAIA,eAAeC,OAAO,KAAK,GAAG;YAChC,mFAAmF;YACnFD,iBAAiB;gBACf,GAAGA,cAAc;gBACjBE,QAAQ;oBACN,GAAG,AAACF,eAAuBE,MAAM,CAACC,IAAI;gBACxC;gBACAF,SAAS;YACX;QACF;QACA,MAAMJ,OAAOO,iBAAiBJ,eAAeE,MAAM;QACnDL,KAAKQ,SAAS,CAACL,eAAeM,MAAM;QACpC,OAAOT;IACT;IAESU,SAASC,OAAsB,EAAEC,MAAoB,EAAe;QAC3E,qBACE,QAACf;YACCgB,aAAa,IAAI,CAACC,cAAc;YAChCC,WAAWH,OAAOI,KAAK,CAACC,KAAK,IAAI;YACjCC,UAAU,IAAI,CAACC,SAAS;YACxBC,SAAS,IAAI,CAACC,MAAM;;;;;;IAG1B;IAESC,aAAkC;QACzC,OAAO,KAAK,CAACA;IACf;AACF;AAEA,OAAO,SAASf,iBAAiBF,MAA6B;IAC5D,OAAOX,sBACL,IAAII,UAAU;QACZO,QAAQ;YACN,GAAGA,MAAM;YACTkB,IAAIlB,QAAQkB,MAAM,IAAI9B,SAAS+B,OAAO,GAAGC,WAAW;QACtD;IACF;AAEJ;AAEA,OAAO,SAASC,aAAa1B,IAAgD;IAC3E,OAAOA,gBAAgBF;AACzB"}
@@ -1,9 +1,10 @@
1
1
  'use client';
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
3
  import ObjectID from 'bson-objectid';
3
4
  import { $applyNodeReplacement } from 'lexical';
4
5
  import React from 'react';
5
6
  import { ServerInlineBlockNode } from '../../server/nodes/InlineBlocksNode.js';
6
- const InlineBlockComponent = React.lazy(()=>import('../componentInline/index.js').then((module)=>({
7
+ const InlineBlockComponent = /*#__PURE__*/ React.lazy(()=>import('../componentInline/index.js').then((module)=>({
7
8
  default: module.InlineBlockComponent
8
9
  })));
9
10
  export class InlineBlockNode extends ServerInlineBlockNode {
@@ -18,7 +19,16 @@ export class InlineBlockNode extends ServerInlineBlockNode {
18
19
  return node;
19
20
  }
20
21
  decorate(_editor, config) {
21
- return <InlineBlockComponent cacheBuster={this.getCacheBuster()} className={config.theme.inlineBlock ?? 'LexicalEditorTheme__inlineBlock'} formData={this.getFields()} nodeKey={this.getKey()}/>;
22
+ return /*#__PURE__*/ _jsxDEV(InlineBlockComponent, {
23
+ cacheBuster: this.getCacheBuster(),
24
+ className: config.theme.inlineBlock ?? 'LexicalEditorTheme__inlineBlock',
25
+ formData: this.getFields(),
26
+ nodeKey: this.getKey()
27
+ }, void 0, false, {
28
+ fileName: "src/features/blocks/client/nodes/InlineBlocksNode.tsx",
29
+ lineNumber: 40,
30
+ columnNumber: 7
31
+ }, this);
22
32
  }
23
33
  exportJSON() {
24
34
  return super.exportJSON();