@payloadcms/richtext-lexical 4.0.0-internal.b8e7c89 → 4.0.0-internal.bf4bcce

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 (354) hide show
  1. package/dist/exports/client/Field-W2ABOM7M.js +2 -0
  2. package/dist/exports/client/Field-W2ABOM7M.js.map +7 -0
  3. package/dist/exports/client/chunk-3LRZDIIG.js +2 -0
  4. package/dist/exports/client/{chunk-LN6VX25I.js.map → chunk-3LRZDIIG.js.map} +2 -2
  5. package/dist/exports/client/chunk-E6LSRRP2.js +2 -0
  6. package/dist/exports/client/chunk-E6LSRRP2.js.map +7 -0
  7. package/dist/exports/client/chunk-ZQX5HXUL.js +2 -0
  8. package/dist/exports/client/{chunk-43E5QYAA.js.map → chunk-ZQX5HXUL.js.map} +3 -3
  9. package/dist/exports/client/{component-D5QLYS7W.js → component-6DQLENIE.js} +2 -2
  10. package/dist/exports/client/componentInline-HNE5G4TE.js +2 -0
  11. package/dist/exports/client/index.js +28 -28
  12. package/dist/exports/client/index.js.map +4 -4
  13. package/dist/features/blocks/client/component/BlockReordering/index.d.ts +11 -0
  14. package/dist/features/blocks/client/component/BlockReordering/index.d.ts.map +1 -0
  15. package/dist/features/blocks/client/component/BlockReordering/index.js +18 -0
  16. package/dist/features/blocks/client/component/BlockReordering/index.js.map +1 -0
  17. package/dist/features/blocks/client/component/index.d.ts +0 -6
  18. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  19. package/dist/features/blocks/client/component/index.js +169 -101
  20. package/dist/features/blocks/client/component/index.js.map +1 -1
  21. package/dist/features/blocks/client/component/useBlockReordering.d.ts +16 -0
  22. package/dist/features/blocks/client/component/useBlockReordering.d.ts.map +1 -0
  23. package/dist/features/blocks/client/component/useBlockReordering.js +178 -0
  24. package/dist/features/blocks/client/component/useBlockReordering.js.map +1 -0
  25. package/dist/features/blocks/client/componentInline/index.css +0 -1
  26. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  27. package/dist/features/blocks/client/componentInline/index.js +30 -22
  28. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  29. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts +9 -0
  30. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts.map +1 -0
  31. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js +95 -0
  32. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js.map +1 -0
  33. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  34. package/dist/features/blocks/client/nodes/BlocksNode.js +0 -10
  35. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  36. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  37. package/dist/features/blocks/server/nodes/BlocksNode.js +1 -12
  38. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  39. package/dist/features/blocks/server/nodes/InlineBlocksNode.js +2 -2
  40. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  41. package/dist/features/blocks/server/schema.d.ts +2 -0
  42. package/dist/features/blocks/server/schema.d.ts.map +1 -1
  43. package/dist/features/blocks/server/schema.js +7 -9
  44. package/dist/features/blocks/server/schema.js.map +1 -1
  45. package/dist/features/blocks/server/validate.js +1 -1
  46. package/dist/features/blocks/server/validate.js.map +1 -1
  47. package/dist/features/converters/lexicalToHtml/async/converters/heading.js +1 -1
  48. package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
  49. package/dist/features/converters/lexicalToHtml/async/converters/list.d.ts.map +1 -1
  50. package/dist/features/converters/lexicalToHtml/async/converters/list.js +4 -3
  51. package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
  52. package/dist/features/converters/lexicalToHtml/async/converters/upload.js +3 -3
  53. package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
  54. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +1 -1
  55. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
  56. package/dist/features/converters/lexicalToHtml/sync/converters/list.d.ts.map +1 -1
  57. package/dist/features/converters/lexicalToHtml/sync/converters/list.js +4 -3
  58. package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
  59. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js +3 -3
  60. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
  61. package/dist/features/converters/lexicalToJSX/converter/converters/heading.d.ts.map +1 -1
  62. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +2 -1
  63. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
  64. package/dist/features/converters/lexicalToJSX/converter/converters/list.d.ts.map +1 -1
  65. package/dist/features/converters/lexicalToJSX/converter/converters/list.js +2 -1
  66. package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
  67. package/dist/features/converters/lexicalToJSX/converter/converters/upload.d.ts.map +1 -1
  68. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js +4 -5
  69. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
  70. package/dist/features/converters/utilities/payloadPopulateFn.d.ts.map +1 -1
  71. package/dist/features/converters/utilities/payloadPopulateFn.js +4 -2
  72. package/dist/features/converters/utilities/payloadPopulateFn.js.map +1 -1
  73. package/dist/features/heading/constants.d.ts +2 -0
  74. package/dist/features/heading/constants.d.ts.map +1 -0
  75. package/dist/features/heading/constants.js +2 -0
  76. package/dist/features/heading/constants.js.map +1 -0
  77. package/dist/features/heading/server/index.d.ts.map +1 -1
  78. package/dist/features/heading/server/index.js +5 -1
  79. package/dist/features/heading/server/index.js.map +1 -1
  80. package/dist/features/heading/server/validate.d.ts +6 -0
  81. package/dist/features/heading/server/validate.d.ts.map +1 -0
  82. package/dist/features/heading/server/validate.js +15 -0
  83. package/dist/features/heading/server/validate.js.map +1 -0
  84. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +11 -1
  85. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
  86. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +17 -0
  87. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  88. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +2 -2
  89. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  90. package/dist/features/horizontalRule/server/schema.d.ts +1 -0
  91. package/dist/features/horizontalRule/server/schema.d.ts.map +1 -1
  92. package/dist/features/horizontalRule/server/schema.js +6 -5
  93. package/dist/features/horizontalRule/server/schema.js.map +1 -1
  94. package/dist/features/indent/client/IndentPlugin.d.ts.map +1 -1
  95. package/dist/features/indent/client/IndentPlugin.js +122 -1
  96. package/dist/features/indent/client/IndentPlugin.js.map +1 -1
  97. package/dist/features/indent/server/i18n.d.ts.map +1 -1
  98. package/dist/features/indent/server/i18n.js +74 -37
  99. package/dist/features/indent/server/i18n.js.map +1 -1
  100. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  101. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +8 -5
  102. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  103. package/dist/features/link/client/plugins/floatingLinkEditor/index.css +0 -1
  104. package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  105. package/dist/features/link/nodes/AutoLinkNode.js +2 -10
  106. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  107. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  108. package/dist/features/link/nodes/LinkNode.js +2 -15
  109. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  110. package/dist/features/link/server/validate.js +1 -1
  111. package/dist/features/link/server/validate.js.map +1 -1
  112. package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
  113. package/dist/features/lists/checklist/server/index.js +5 -2
  114. package/dist/features/lists/checklist/server/index.js.map +1 -1
  115. package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
  116. package/dist/features/lists/orderedList/server/index.js +5 -2
  117. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  118. package/dist/features/lists/shared/constants.d.ts +2 -0
  119. package/dist/features/lists/shared/constants.d.ts.map +1 -0
  120. package/dist/features/lists/shared/constants.js +2 -0
  121. package/dist/features/lists/shared/constants.js.map +1 -0
  122. package/dist/features/lists/shared/validate.d.ts +5 -0
  123. package/dist/features/lists/shared/validate.d.ts.map +1 -0
  124. package/dist/features/lists/shared/validate.js +15 -0
  125. package/dist/features/lists/shared/validate.js.map +1 -0
  126. package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
  127. package/dist/features/lists/unorderedList/server/index.js +5 -2
  128. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  129. package/dist/features/relationship/client/components/index.css +3 -6
  130. package/dist/features/relationship/client/index.d.ts +2 -2
  131. package/dist/features/relationship/client/index.d.ts.map +1 -1
  132. package/dist/features/relationship/client/index.js.map +1 -1
  133. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  134. package/dist/features/relationship/client/nodes/RelationshipNode.js +0 -3
  135. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  136. package/dist/features/relationship/client/plugins/index.d.ts +2 -2
  137. package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
  138. package/dist/features/relationship/client/plugins/index.js +27 -31
  139. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  140. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts +2 -4
  141. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
  142. package/dist/features/relationship/client/utils/useEnabledRelationships.js +53 -20
  143. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
  144. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +2 -2
  145. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
  146. package/dist/features/relationship/server/graphQLPopulationPromise.js +2 -2
  147. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  148. package/dist/features/relationship/server/index.d.ts +8 -1
  149. package/dist/features/relationship/server/index.d.ts.map +1 -1
  150. package/dist/features/relationship/server/index.js +28 -11
  151. package/dist/features/relationship/server/index.js.map +1 -1
  152. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  153. package/dist/features/relationship/server/nodes/RelationshipNode.js +1 -5
  154. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  155. package/dist/features/relationship/server/schema.d.ts +3 -2
  156. package/dist/features/relationship/server/schema.d.ts.map +1 -1
  157. package/dist/features/relationship/server/schema.js +9 -12
  158. package/dist/features/relationship/server/schema.js.map +1 -1
  159. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +1 -6
  160. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -1
  161. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +1 -5
  162. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -1
  163. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.css +0 -1
  164. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js +1 -1
  165. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  166. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
  167. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js +41 -18
  168. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  169. package/dist/features/table/client/plugins/TablePlugin/TableGridPopup/index.css +0 -3
  170. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  171. package/dist/features/toolbars/fixed/client/Toolbar/index.js +15 -0
  172. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  173. package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
  174. package/dist/features/toolbars/inline/client/Toolbar/index.js +17 -2
  175. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  176. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  177. package/dist/features/toolbars/shared/ToolbarButton/index.js +1 -0
  178. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  179. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  180. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +85 -32
  181. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  182. package/dist/features/toolbars/shared/ToolbarDropdown/index.css +16 -12
  183. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.d.ts +5 -0
  184. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.d.ts.map +1 -0
  185. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js +79 -0
  186. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js.map +1 -0
  187. package/dist/features/typesServer.d.ts +16 -11
  188. package/dist/features/typesServer.d.ts.map +1 -1
  189. package/dist/features/typesServer.js.map +1 -1
  190. package/dist/features/upload/client/component/index.css +0 -2
  191. package/dist/features/upload/client/index.d.ts +3 -2
  192. package/dist/features/upload/client/index.d.ts.map +1 -1
  193. package/dist/features/upload/client/index.js.map +1 -1
  194. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  195. package/dist/features/upload/client/nodes/UploadNode.js +0 -7
  196. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  197. package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
  198. package/dist/features/upload/client/plugin/index.js +50 -53
  199. package/dist/features/upload/client/plugin/index.js.map +1 -1
  200. package/dist/features/upload/server/graphQLPopulationPromise.d.ts +2 -2
  201. package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
  202. package/dist/features/upload/server/graphQLPopulationPromise.js +1 -1
  203. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  204. package/dist/features/upload/server/index.d.ts +7 -3
  205. package/dist/features/upload/server/index.d.ts.map +1 -1
  206. package/dist/features/upload/server/index.js +18 -14
  207. package/dist/features/upload/server/index.js.map +1 -1
  208. package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
  209. package/dist/features/upload/server/nodes/UploadNode.js +1 -9
  210. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  211. package/dist/features/upload/server/schema.d.ts +4 -16
  212. package/dist/features/upload/server/schema.d.ts.map +1 -1
  213. package/dist/features/upload/server/schema.js +8 -10
  214. package/dist/features/upload/server/schema.js.map +1 -1
  215. package/dist/features/upload/server/validate.d.ts +2 -2
  216. package/dist/features/upload/server/validate.d.ts.map +1 -1
  217. package/dist/features/upload/server/validate.js +4 -1
  218. package/dist/features/upload/server/validate.js.map +1 -1
  219. package/dist/field/Diff/converters/listitem/index.d.ts.map +1 -1
  220. package/dist/field/Diff/converters/listitem/index.js +2 -1
  221. package/dist/field/Diff/converters/listitem/index.js.map +1 -1
  222. package/dist/field/Diff/converters/relationship/index.css +0 -1
  223. package/dist/field/Diff/converters/unknown/index.css +0 -1
  224. package/dist/field/Diff/converters/upload/index.css +0 -1
  225. package/dist/field/Diff/converters/upload/index.js.map +1 -1
  226. package/dist/field/Diff/index.css +0 -2
  227. package/dist/field/Diff/index.d.ts +3 -2
  228. package/dist/field/Diff/index.d.ts.map +1 -1
  229. package/dist/field/Diff/index.js +3 -2
  230. package/dist/field/Diff/index.js.map +1 -1
  231. package/dist/field/Field.d.ts.map +1 -1
  232. package/dist/field/Field.js +8 -1
  233. package/dist/field/Field.js.map +1 -1
  234. package/dist/field/RenderLexical/index.d.ts +3 -1
  235. package/dist/field/RenderLexical/index.d.ts.map +1 -1
  236. package/dist/field/RenderLexical/index.js +23 -23
  237. package/dist/field/RenderLexical/index.js.map +1 -1
  238. package/dist/field/ViewSelector.d.ts.map +1 -1
  239. package/dist/field/ViewSelector.js +1 -0
  240. package/dist/field/ViewSelector.js.map +1 -1
  241. package/dist/field/bundled.css +1 -1
  242. package/dist/field/index.css +0 -1
  243. package/dist/field/rscEntry.d.ts +2 -2
  244. package/dist/field/rscEntry.d.ts.map +1 -1
  245. package/dist/field/rscEntry.js.map +1 -1
  246. package/dist/index.d.ts +4 -4
  247. package/dist/index.d.ts.map +1 -1
  248. package/dist/index.js +23 -1
  249. package/dist/index.js.map +1 -1
  250. package/dist/lexical/LexicalEditor.css +21 -10
  251. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  252. package/dist/lexical/LexicalEditor.js +61 -64
  253. package/dist/lexical/LexicalEditor.js.map +1 -1
  254. package/dist/lexical/plugins/DecoratorPlugin/index.d.ts.map +1 -1
  255. package/dist/lexical/plugins/DecoratorPlugin/index.js +24 -21
  256. package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
  257. package/dist/lexical/plugins/InsertParagraphAtEnd/index.css +2 -1
  258. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +1 -1
  259. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  260. package/dist/lexical/plugins/SlashMenu/index.css +0 -1
  261. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.css +1 -0
  262. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +2 -2
  263. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  264. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +1 -0
  265. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  266. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +16 -2
  267. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  268. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts +7 -0
  269. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts.map +1 -0
  270. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js +65 -0
  271. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js.map +1 -0
  272. package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  273. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +2 -0
  274. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  275. package/dist/lexical/theme/EditorTheme.css +0 -2
  276. package/dist/lexical/ui/ContentEditable.d.ts +2 -1
  277. package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
  278. package/dist/lexical/ui/ContentEditable.js +32 -11
  279. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  280. package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
  281. package/dist/lexical/ui/icons/H3/index.js +13 -6
  282. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  283. package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
  284. package/dist/lexical/ui/icons/H4/index.js +13 -6
  285. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  286. package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
  287. package/dist/lexical/ui/icons/H5/index.js +13 -6
  288. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  289. package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
  290. package/dist/lexical/ui/icons/H6/index.js +13 -6
  291. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  292. package/dist/presets/llmInstructions.d.ts +2 -0
  293. package/dist/presets/llmInstructions.d.ts.map +1 -0
  294. package/dist/presets/llmInstructions.js +13 -0
  295. package/dist/presets/llmInstructions.js.map +1 -0
  296. package/dist/types/builtInNodes.d.ts +1 -1
  297. package/dist/types/builtInNodes.d.ts.map +1 -1
  298. package/dist/types/builtInNodes.js +8 -3
  299. package/dist/types/builtInNodes.js.map +1 -1
  300. package/dist/types/index.d.ts +3 -6
  301. package/dist/types/index.d.ts.map +1 -1
  302. package/dist/types/index.js.map +1 -1
  303. package/dist/types/jsonSchemaHelpers.d.ts +5 -1
  304. package/dist/types/jsonSchemaHelpers.d.ts.map +1 -1
  305. package/dist/types/jsonSchemaHelpers.js +7 -2
  306. package/dist/types/jsonSchemaHelpers.js.map +1 -1
  307. package/dist/types/nodeTypes.d.ts +5 -0
  308. package/dist/types/nodeTypes.d.ts.map +1 -1
  309. package/dist/types/nodeTypes.js.map +1 -1
  310. package/dist/utilities/buildInitialState.d.ts +3 -2
  311. package/dist/utilities/buildInitialState.d.ts.map +1 -1
  312. package/dist/utilities/buildInitialState.js +1 -0
  313. package/dist/utilities/buildInitialState.js.map +1 -1
  314. package/dist/utilities/generateImportMap.d.ts +2 -2
  315. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  316. package/dist/utilities/generateImportMap.js.map +1 -1
  317. package/dist/utilities/upgradeLexicalData/index.js +6 -3
  318. package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
  319. package/dist/validate/hasText.d.ts +2 -2
  320. package/dist/validate/hasText.d.ts.map +1 -1
  321. package/dist/validate/hasText.js.map +1 -1
  322. package/dist/validate/index.d.ts +1 -1
  323. package/dist/validate/index.d.ts.map +1 -1
  324. package/package.json +25 -25
  325. package/dist/dependencyChecker.spec.js +0 -16
  326. package/dist/dependencyChecker.spec.js.map +0 -1
  327. package/dist/exports/client/Field-QKAL7KMC.js +0 -2
  328. package/dist/exports/client/Field-QKAL7KMC.js.map +0 -7
  329. package/dist/exports/client/bundled.css +0 -1
  330. package/dist/exports/client/chunk-43E5QYAA.js +0 -2
  331. package/dist/exports/client/chunk-ESITTE3C.js +0 -2
  332. package/dist/exports/client/chunk-ESITTE3C.js.map +0 -7
  333. package/dist/exports/client/chunk-LN6VX25I.js +0 -2
  334. package/dist/exports/client/componentInline-H24N7GUG.js +0 -2
  335. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts +0 -11
  336. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +0 -1
  337. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +0 -20
  338. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +0 -1
  339. package/dist/features/converters/lexicalToHtml/sync/alignment.spec.js +0 -92
  340. package/dist/features/converters/lexicalToHtml/sync/alignment.spec.js.map +0 -1
  341. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +0 -180
  342. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +0 -1
  343. package/dist/features/link/markdownTransformer.spec.js +0 -195
  344. package/dist/features/link/markdownTransformer.spec.js.map +0 -1
  345. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.spec.js +0 -65
  346. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.spec.js.map +0 -1
  347. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +0 -88
  348. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +0 -1
  349. package/dist/lexical/utils/url.spec.js +0 -114
  350. package/dist/lexical/utils/url.spec.js.map +0 -1
  351. package/dist/utilities/jsx/jsx.spec.js +0 -178
  352. package/dist/utilities/jsx/jsx.spec.js.map +0 -1
  353. /package/dist/exports/client/{component-D5QLYS7W.js.map → component-6DQLENIE.js.map} +0 -0
  354. /package/dist/exports/client/{componentInline-H24N7GUG.js.map → componentInline-HNE5G4TE.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"LinkNode.js","names":["addClassNamesToElement","isHTMLAnchorElement","ObjectID","$applyNodeReplacement","$createTextNode","$getSelection","$isElementNode","$isRangeSelection","createCommand","ElementNode","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","__fields","__id","constructor","id","fields","linkType","newTab","key","clone","node","__key","getType","importDOM","a","conversion","$convertAnchorElement","priority","importJSON","serializedNode","$createLinkNode","updateFromJSON","version","doc","value","default","toHexString","canBeEmpty","canInsertTextAfter","canInsertTextBefore","createDOM","config","element","document","createElement","href","sanitizeUrl","url","target","rel","manageRel","theme","link","exportJSON","getFields","returnObject","type","getID","extractWithChild","child","selection","destination","anchorNode","anchor","getNode","focusNode","focus","isParentOf","getTextContent","length","getLatest","insertNewAfter","restoreSelection","getParentOrThrow","linkNode","append","isInline","parsedUrl","URL","has","protocol","e","setFields","writable","getWritable","setID","updateDOM","prevNode","removeAttribute","_serializedNode","domNode","content","textContent","getAttribute","$isLinkNode","TOGGLE_LINK_COMMAND","$toggleLink","payload","selectedNodes","nodes","extract","forEach","parent","getParent","children","getChildren","insertBefore","remove","firstNode","$getLinkAncestor","text","getLastChild","prevParent","is","getPreviousSibling","insertAfter","$getAncestor","ancestor","predicate","input","action","result","mutableInput","includes","re","RegExp","replace","trim"],"sources":["../../../../src/features/link/nodes/LinkNode.ts"],"sourcesContent":["import type {\n BaseSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode as ElementNodeType,\n LexicalCommand,\n LexicalNode,\n LexicalUpdateJSON,\n NodeKey,\n RangeSelection,\n SerializedElementNode,\n} from 'lexical'\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n createCommand,\n ElementNode,\n} from 'lexical'\n\nimport type { LinkPayload } from '../client/plugins/floatingLinkEditor/types.js'\nimport type { LinkFields, SerializedLinkNode } from '../server/schema.js'\n\nconst SUPPORTED_URL_PROTOCOLS = new Set(['http:', 'https:', 'mailto:', 'sms:', 'tel:'])\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n __fields: LinkFields\n __id: string\n\n constructor({\n id,\n fields = {\n linkType: 'custom',\n newTab: false,\n },\n key,\n }: {\n fields?: LinkFields\n id: string\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n this.__id = id\n }\n\n static override clone(node: LinkNode): LinkNode {\n return new this({\n id: node.__id,\n fields: node.__fields,\n key: node.__key,\n })\n }\n\n static override getType(): string {\n return 'link'\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: (node: Node) => ({\n conversion: $convertAnchorElement,\n priority: 1,\n }),\n }\n }\n\n static override importJSON(\n serializedNode: Record<string, unknown> & SerializedLinkNode,\n ): LinkNode {\n const node = $createLinkNode({}).updateFromJSON(serializedNode)\n\n /**\n * @todo remove this in 4.0\n */\n if (\n serializedNode.version === 1 &&\n typeof serializedNode.fields?.doc?.value === 'object' &&\n serializedNode.fields?.doc?.value?.id\n ) {\n serializedNode.fields.doc.value = serializedNode.fields.doc.value.id\n serializedNode.version = 2\n }\n\n if (serializedNode.version === 2 && !serializedNode.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n return node\n }\n\n override canBeEmpty(): false {\n return false\n }\n\n override canInsertTextAfter(): false {\n return false\n }\n\n override canInsertTextBefore(): false {\n return false\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement('a')\n if (this.__fields?.linkType === 'custom') {\n element.href = this.sanitizeUrl(this.__fields.url ?? '')\n }\n if (this.__fields?.newTab ?? false) {\n element.target = '_blank'\n }\n\n if (this.__fields?.newTab === true && this.__fields?.linkType === 'custom') {\n element.rel = manageRel(element.rel, 'add', 'noopener')\n }\n\n addClassNamesToElement(element, config.theme.link)\n return element\n }\n\n override exportJSON(): SerializedLinkNode {\n const fields = this.getFields()\n\n if (fields?.linkType === 'internal') {\n delete fields.url\n } else if (fields?.linkType === 'custom') {\n delete fields.doc\n }\n\n const returnObject: SerializedLinkNode = {\n ...super.exportJSON(),\n type: 'link',\n fields,\n version: 3,\n }\n const id = this.getID()\n if (id) {\n returnObject.id = id\n }\n return returnObject\n }\n\n override extractWithChild(\n child: LexicalNode,\n selection: BaseSelection,\n destination: 'clone' | 'html',\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n selection.getTextContent().length > 0\n )\n }\n\n getFields(): LinkFields {\n return this.getLatest().__fields\n }\n\n getID(): string {\n return this.getLatest().__id\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true,\n ): ElementNodeType | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n\n override isInline(): true {\n return true\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url)\n\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return 'about:blank'\n }\n } catch (e) {\n return 'https://'\n }\n return url\n }\n\n setFields(fields: LinkFields): this {\n const writable = this.getWritable()\n writable.__fields = fields\n return writable\n }\n\n setID(id: string): this {\n const writable = this.getWritable()\n writable.__id = id\n return writable\n }\n\n override updateDOM(prevNode: this, anchor: HTMLAnchorElement, config: EditorConfig): boolean {\n const url = this.__fields?.url\n const newTab = this.__fields?.newTab\n if (url != null && url !== prevNode.__fields?.url && this.__fields?.linkType === 'custom') {\n anchor.href = url\n }\n if (this.__fields?.linkType === 'internal' && prevNode.__fields?.linkType === 'custom') {\n anchor.removeAttribute('href')\n }\n\n // TODO: not 100% sure why we're settign rel to '' - revisit\n // Start rel config here, then check newTab below\n if (anchor.rel == null) {\n anchor.rel = ''\n }\n\n if (newTab !== prevNode.__fields?.newTab) {\n if (newTab ?? false) {\n anchor.target = '_blank'\n if (this.__fields?.linkType === 'custom') {\n anchor.rel = manageRel(anchor.rel, 'add', 'noopener')\n }\n } else {\n anchor.removeAttribute('target')\n anchor.rel = manageRel(anchor.rel, 'remove', 'noopener')\n }\n }\n\n return false\n }\n\n override updateFromJSON(_serializedNode: LexicalUpdateJSON<SerializedElementNode>): this {\n const serializedNode = _serializedNode as unknown as SerializedLinkNode\n return super\n .updateFromJSON(serializedNode)\n .setFields(serializedNode.fields)\n .setID(serializedNode.id as string)\n }\n}\n\nfunction $convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node: LinkNode | null = null\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent\n if (content !== null && content !== '') {\n node = $createLinkNode({\n id: new ObjectID.default().toHexString(),\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: domNode.getAttribute('target') === '_blank',\n url: domNode.getAttribute('href') ?? '',\n },\n })\n }\n }\n return { node }\n}\n\nexport function $createLinkNode({ id, fields }: { fields?: LinkFields; id?: string }): LinkNode {\n return $applyNodeReplacement(\n new LinkNode({\n id: id ?? new ObjectID.default().toHexString(),\n fields,\n }),\n )\n}\n\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<LinkPayload | null> =\n createCommand('TOGGLE_LINK_COMMAND')\n\nexport function $toggleLink(payload: ({ fields: LinkFields } & LinkPayload) | null): void {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection) && (payload === null || !payload.selectedNodes?.length)) {\n return\n }\n const nodes = $isRangeSelection(selection)\n ? selection.extract()\n : payload === null\n ? []\n : payload.selectedNodes\n\n if (payload === null) {\n // Remove LinkNodes\n nodes?.forEach((node) => {\n const parent = node.getParent()\n\n if ($isLinkNode(parent)) {\n const children = parent.getChildren()\n\n children.forEach((child) => {\n parent.insertBefore(child)\n })\n\n parent.remove()\n }\n })\n\n return\n }\n // Add or merge LinkNodes\n if (nodes?.length === 1) {\n const firstNode = nodes[0]!\n // if the first node is a LinkNode or if its\n // parent is a LinkNode, we update the URL, target and rel.\n const linkNode: LinkNode | null = $isLinkNode(firstNode)\n ? firstNode\n : $getLinkAncestor(firstNode)\n if (linkNode !== null) {\n linkNode.setFields(payload.fields)\n\n if (payload.text != null && payload.text !== linkNode.getTextContent()) {\n // remove all children and add child with new textcontent:\n linkNode.append($createTextNode(payload.text))\n linkNode.getChildren().forEach((child) => {\n if (child !== linkNode.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n }\n\n let prevParent: ElementNodeType | LinkNode | null = null\n let linkNode: LinkNode | null = null\n\n nodes?.forEach((node) => {\n const parent = node.getParent()\n\n if (parent === linkNode || parent === null || ($isElementNode(node) && !node.isInline())) {\n return\n }\n\n if ($isLinkNode(parent)) {\n linkNode = parent\n parent.setFields(payload.fields)\n if (payload.text != null && payload.text !== parent.getTextContent()) {\n // remove all children and add child with new textcontent:\n parent.append($createTextNode(payload.text))\n parent.getChildren().forEach((child) => {\n if (child !== parent.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n\n if (!parent.is(prevParent)) {\n prevParent = parent\n linkNode = $createLinkNode({ fields: payload.fields })\n\n if ($isLinkNode(parent)) {\n if (node.getPreviousSibling() === null) {\n parent.insertBefore(linkNode)\n } else {\n parent.insertAfter(linkNode)\n }\n } else {\n node.insertBefore(linkNode)\n }\n }\n\n if ($isLinkNode(node)) {\n if (node.is(linkNode)) {\n return\n }\n if (linkNode !== null) {\n const children = node.getChildren()\n linkNode.append(...children)\n }\n\n node.remove()\n return\n }\n\n if (linkNode !== null) {\n linkNode.append(node)\n }\n })\n}\n\nfunction $getLinkAncestor(node: LexicalNode): LinkNode | null {\n return $getAncestor(node, (ancestor) => $isLinkNode(ancestor)) as LinkNode\n}\n\nfunction $getAncestor(\n node: LexicalNode,\n predicate: (ancestor: LexicalNode) => boolean,\n): LexicalNode | null {\n let parent: LexicalNode | null = node\n while (parent !== null) {\n parent = parent.getParent()\n if (parent === null || predicate(parent)) {\n break\n }\n }\n return parent\n}\n\nfunction manageRel(input: string, action: 'add' | 'remove', value: string): string {\n let result: string\n let mutableInput = `${input}`\n if (action === 'add') {\n // if we somehow got out of sync - clean up\n if (mutableInput.includes(value)) {\n const re = new RegExp(value, 'g')\n mutableInput = mutableInput.replace(re, '').trim()\n }\n mutableInput = mutableInput.trim()\n result = mutableInput.length === 0 ? `${value}` : `${mutableInput} ${value}`\n } else {\n const re = new RegExp(value, 'g')\n result = mutableInput.replace(re, '').trim()\n }\n return result\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LinkNode.js","names":["addClassNamesToElement","isHTMLAnchorElement","ObjectID","$applyNodeReplacement","$createTextNode","$getSelection","$isElementNode","$isRangeSelection","createCommand","ElementNode","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","__fields","__id","constructor","id","fields","linkType","newTab","key","clone","node","__key","getType","importDOM","a","conversion","$convertAnchorElement","priority","importJSON","serializedNode","$createLinkNode","updateFromJSON","canBeEmpty","canInsertTextAfter","canInsertTextBefore","createDOM","config","element","document","createElement","href","sanitizeUrl","url","target","rel","manageRel","theme","link","exportJSON","getFields","doc","returnObject","type","getID","extractWithChild","child","selection","destination","anchorNode","anchor","getNode","focusNode","focus","isParentOf","getTextContent","length","getLatest","insertNewAfter","restoreSelection","getParentOrThrow","linkNode","append","isInline","parsedUrl","URL","has","protocol","e","setFields","writable","getWritable","setID","updateDOM","prevNode","removeAttribute","_serializedNode","domNode","content","textContent","default","toHexString","getAttribute","$isLinkNode","TOGGLE_LINK_COMMAND","$toggleLink","payload","selectedNodes","nodes","extract","forEach","parent","getParent","children","getChildren","insertBefore","remove","firstNode","$getLinkAncestor","text","getLastChild","prevParent","is","getPreviousSibling","insertAfter","$getAncestor","ancestor","predicate","input","action","value","result","mutableInput","includes","re","RegExp","replace","trim"],"sources":["../../../../src/features/link/nodes/LinkNode.ts"],"sourcesContent":["import type {\n BaseSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode as ElementNodeType,\n LexicalCommand,\n LexicalNode,\n LexicalUpdateJSON,\n NodeKey,\n RangeSelection,\n SerializedElementNode,\n} from 'lexical'\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n createCommand,\n ElementNode,\n} from 'lexical'\n\nimport type { LinkPayload } from '../client/plugins/floatingLinkEditor/types.js'\nimport type { LinkFields, SerializedLinkNode } from '../server/schema.js'\n\nconst SUPPORTED_URL_PROTOCOLS = new Set(['http:', 'https:', 'mailto:', 'sms:', 'tel:'])\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n __fields: LinkFields\n __id: string\n\n constructor({\n id,\n fields = {\n linkType: 'custom',\n newTab: false,\n },\n key,\n }: {\n fields?: LinkFields\n id: string\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n this.__id = id\n }\n\n static override clone(node: LinkNode): LinkNode {\n return new this({\n id: node.__id,\n fields: node.__fields,\n key: node.__key,\n })\n }\n\n static override getType(): string {\n return 'link'\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: (node: Node) => ({\n conversion: $convertAnchorElement,\n priority: 1,\n }),\n }\n }\n\n static override importJSON(\n serializedNode: Record<string, unknown> & SerializedLinkNode,\n ): LinkNode {\n return $createLinkNode({}).updateFromJSON(serializedNode)\n }\n\n override canBeEmpty(): false {\n return false\n }\n\n override canInsertTextAfter(): false {\n return false\n }\n\n override canInsertTextBefore(): false {\n return false\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement('a')\n if (this.__fields?.linkType === 'custom') {\n element.href = this.sanitizeUrl(this.__fields.url ?? '')\n }\n if (this.__fields?.newTab ?? false) {\n element.target = '_blank'\n }\n\n if (this.__fields?.newTab === true && this.__fields?.linkType === 'custom') {\n element.rel = manageRel(element.rel, 'add', 'noopener')\n }\n\n addClassNamesToElement(element, config.theme.link)\n return element\n }\n\n override exportJSON(): SerializedLinkNode {\n const fields = this.getFields()\n\n if (fields?.linkType === 'internal') {\n delete fields.url\n } else if (fields?.linkType === 'custom') {\n delete fields.doc\n }\n\n const returnObject: SerializedLinkNode = {\n ...super.exportJSON(),\n type: 'link',\n fields,\n }\n const id = this.getID()\n if (id) {\n returnObject.id = id\n }\n return returnObject\n }\n\n override extractWithChild(\n child: LexicalNode,\n selection: BaseSelection,\n destination: 'clone' | 'html',\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n selection.getTextContent().length > 0\n )\n }\n\n getFields(): LinkFields {\n return this.getLatest().__fields\n }\n\n getID(): string {\n return this.getLatest().__id\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true,\n ): ElementNodeType | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n\n override isInline(): true {\n return true\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url)\n\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return 'about:blank'\n }\n } catch (e) {\n return 'https://'\n }\n return url\n }\n\n setFields(fields: LinkFields): this {\n const writable = this.getWritable()\n writable.__fields = fields\n return writable\n }\n\n setID(id: string): this {\n const writable = this.getWritable()\n writable.__id = id\n return writable\n }\n\n override updateDOM(prevNode: this, anchor: HTMLAnchorElement, config: EditorConfig): boolean {\n const url = this.__fields?.url\n const newTab = this.__fields?.newTab\n if (url != null && url !== prevNode.__fields?.url && this.__fields?.linkType === 'custom') {\n anchor.href = url\n }\n if (this.__fields?.linkType === 'internal' && prevNode.__fields?.linkType === 'custom') {\n anchor.removeAttribute('href')\n }\n\n // TODO: not 100% sure why we're settign rel to '' - revisit\n // Start rel config here, then check newTab below\n if (anchor.rel == null) {\n anchor.rel = ''\n }\n\n if (newTab !== prevNode.__fields?.newTab) {\n if (newTab ?? false) {\n anchor.target = '_blank'\n if (this.__fields?.linkType === 'custom') {\n anchor.rel = manageRel(anchor.rel, 'add', 'noopener')\n }\n } else {\n anchor.removeAttribute('target')\n anchor.rel = manageRel(anchor.rel, 'remove', 'noopener')\n }\n }\n\n return false\n }\n\n override updateFromJSON(_serializedNode: LexicalUpdateJSON<SerializedElementNode>): this {\n const serializedNode = _serializedNode as unknown as SerializedLinkNode\n return super\n .updateFromJSON(serializedNode)\n .setFields(serializedNode.fields)\n .setID(serializedNode.id as string)\n }\n}\n\nfunction $convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node: LinkNode | null = null\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent\n if (content !== null && content !== '') {\n node = $createLinkNode({\n id: new ObjectID.default().toHexString(),\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: domNode.getAttribute('target') === '_blank',\n url: domNode.getAttribute('href') ?? '',\n },\n })\n }\n }\n return { node }\n}\n\nexport function $createLinkNode({ id, fields }: { fields?: LinkFields; id?: string }): LinkNode {\n return $applyNodeReplacement(\n new LinkNode({\n id: id ?? new ObjectID.default().toHexString(),\n fields,\n }),\n )\n}\n\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<LinkPayload | null> =\n createCommand('TOGGLE_LINK_COMMAND')\n\nexport function $toggleLink(payload: ({ fields: LinkFields } & LinkPayload) | null): void {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection) && (payload === null || !payload.selectedNodes?.length)) {\n return\n }\n const nodes = $isRangeSelection(selection)\n ? selection.extract()\n : payload === null\n ? []\n : payload.selectedNodes\n\n if (payload === null) {\n // Remove LinkNodes\n nodes?.forEach((node) => {\n const parent = node.getParent()\n\n if ($isLinkNode(parent)) {\n const children = parent.getChildren()\n\n children.forEach((child) => {\n parent.insertBefore(child)\n })\n\n parent.remove()\n }\n })\n\n return\n }\n // Add or merge LinkNodes\n if (nodes?.length === 1) {\n const firstNode = nodes[0]!\n // if the first node is a LinkNode or if its\n // parent is a LinkNode, we update the URL, target and rel.\n const linkNode: LinkNode | null = $isLinkNode(firstNode)\n ? firstNode\n : $getLinkAncestor(firstNode)\n if (linkNode !== null) {\n linkNode.setFields(payload.fields)\n\n if (payload.text != null && payload.text !== linkNode.getTextContent()) {\n // remove all children and add child with new textcontent:\n linkNode.append($createTextNode(payload.text))\n linkNode.getChildren().forEach((child) => {\n if (child !== linkNode.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n }\n\n let prevParent: ElementNodeType | LinkNode | null = null\n let linkNode: LinkNode | null = null\n\n nodes?.forEach((node) => {\n const parent = node.getParent()\n\n if (parent === linkNode || parent === null || ($isElementNode(node) && !node.isInline())) {\n return\n }\n\n if ($isLinkNode(parent)) {\n linkNode = parent\n parent.setFields(payload.fields)\n if (payload.text != null && payload.text !== parent.getTextContent()) {\n // remove all children and add child with new textcontent:\n parent.append($createTextNode(payload.text))\n parent.getChildren().forEach((child) => {\n if (child !== parent.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n\n if (!parent.is(prevParent)) {\n prevParent = parent\n linkNode = $createLinkNode({ fields: payload.fields })\n\n if ($isLinkNode(parent)) {\n if (node.getPreviousSibling() === null) {\n parent.insertBefore(linkNode)\n } else {\n parent.insertAfter(linkNode)\n }\n } else {\n node.insertBefore(linkNode)\n }\n }\n\n if ($isLinkNode(node)) {\n if (node.is(linkNode)) {\n return\n }\n if (linkNode !== null) {\n const children = node.getChildren()\n linkNode.append(...children)\n }\n\n node.remove()\n return\n }\n\n if (linkNode !== null) {\n linkNode.append(node)\n }\n })\n}\n\nfunction $getLinkAncestor(node: LexicalNode): LinkNode | null {\n return $getAncestor(node, (ancestor) => $isLinkNode(ancestor)) as LinkNode\n}\n\nfunction $getAncestor(\n node: LexicalNode,\n predicate: (ancestor: LexicalNode) => boolean,\n): LexicalNode | null {\n let parent: LexicalNode | null = node\n while (parent !== null) {\n parent = parent.getParent()\n if (parent === null || predicate(parent)) {\n break\n }\n }\n return parent\n}\n\nfunction manageRel(input: string, action: 'add' | 'remove', value: string): string {\n let result: string\n let mutableInput = `${input}`\n if (action === 'add') {\n // if we somehow got out of sync - clean up\n if (mutableInput.includes(value)) {\n const re = new RegExp(value, 'g')\n mutableInput = mutableInput.replace(re, '').trim()\n }\n mutableInput = mutableInput.trim()\n result = mutableInput.length === 0 ? `${value}` : `${mutableInput} ${value}`\n } else {\n const re = new RegExp(value, 'g')\n result = mutableInput.replace(re, '').trim()\n }\n return result\n}\n"],"mappings":"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","ignoreList":[]}
@@ -24,7 +24,7 @@ export const linkValidation = (props, sanitizedFieldsWithoutText) => {
24
24
  fields: sanitizedFieldsWithoutText,
25
25
  fieldSchemaMap: undefined,
26
26
  initialBlockData: node.fields,
27
- operation: operation === 'create' || operation === 'update' ? operation : 'update',
27
+ operation,
28
28
  permissions: {},
29
29
  preferences,
30
30
  renderAllFields: false,
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","names":["fieldSchemasToFormState","linkValidation","props","sanitizedFieldsWithoutText","node","validation","options","id","collectionSlug","data","operation","preferences","req","result","fields","documentData","fieldSchemaMap","undefined","initialBlockData","permissions","renderAllFields","schemaPath","errorPathsSet","Set","fieldKey","fieldState","errorPaths","length","errorPath","add","Array","from","join"],"sources":["../../../../src/features/link/server/validate.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { fieldSchemasToFormState } from '@payloadcms/ui/forms/fieldSchemasToFormState'\n\nimport type { NodeValidation } from '../../typesServer.js'\nimport type { LinkFeatureServerProps } from './index.js'\nimport type { SerializedAutoLinkNode, SerializedLinkNode } from './schema.js'\n\nexport const linkValidation = (\n props: LinkFeatureServerProps,\n sanitizedFieldsWithoutText: Field[],\n): NodeValidation<SerializedAutoLinkNode | SerializedLinkNode> => {\n return async ({\n node,\n validation: {\n options: { id, collectionSlug, data, operation, preferences, req },\n },\n }) => {\n /**\n * Run fieldSchemasToFormState as that properly validates link fields and link sub-fields\n */\n\n const result = await fieldSchemasToFormState({\n id,\n collectionSlug,\n data: node.fields,\n documentData: data,\n fields: sanitizedFieldsWithoutText, // Sanitized in feature.server.ts\n fieldSchemaMap: undefined,\n initialBlockData: node.fields,\n operation: operation === 'create' || operation === 'update' ? operation : 'update',\n permissions: {},\n preferences,\n renderAllFields: false,\n req,\n schemaPath: '',\n })\n\n const errorPathsSet = new Set<string>()\n for (const fieldKey in result) {\n const fieldState = result[fieldKey]\n if (fieldState?.errorPaths?.length) {\n for (const errorPath of fieldState.errorPaths) {\n errorPathsSet.add(errorPath)\n }\n }\n }\n const errorPaths = Array.from(errorPathsSet)\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ;AAMxC,OAAO,MAAMC,cAAA,GAAiBA,CAC5BC,KAAA,EACAC,0BAAA;EAEA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAA,EAAY;MACVC,OAAA,EAAS;QAAEC,EAAE;QAAEC,cAAc;QAAEC,IAAI;QAAEC,SAAS;QAAEC,WAAW;QAAEC;MAAG;IAAE;EACnE,CACF;IACC;;;IAIA,MAAMC,MAAA,GAAS,MAAMb,uBAAA,CAAwB;MAC3CO,EAAA;MACAC,cAAA;MACAC,IAAA,EAAML,IAAA,CAAKU,MAAM;MACjBC,YAAA,EAAcN,IAAA;MACdK,MAAA,EAAQX,0BAAA;MACRa,cAAA,EAAgBC,SAAA;MAChBC,gBAAA,EAAkBd,IAAA,CAAKU,MAAM;MAC7BJ,SAAA,EAAWA,SAAA,KAAc,YAAYA,SAAA,KAAc,WAAWA,SAAA,GAAY;MAC1ES,WAAA,EAAa,CAAC;MACdR,WAAA;MACAS,eAAA,EAAiB;MACjBR,GAAA;MACAS,UAAA,EAAY;IACd;IAEA,MAAMC,aAAA,GAAgB,IAAIC,GAAA;IAC1B,KAAK,MAAMC,QAAA,IAAYX,MAAA,EAAQ;MAC7B,MAAMY,UAAA,GAAaZ,MAAM,CAACW,QAAA,CAAS;MACnC,IAAIC,UAAA,EAAYC,UAAA,EAAYC,MAAA,EAAQ;QAClC,KAAK,MAAMC,SAAA,IAAaH,UAAA,CAAWC,UAAU,EAAE;UAC7CJ,aAAA,CAAcO,GAAG,CAACD,SAAA;QACpB;MACF;IACF;IACA,MAAMF,UAAA,GAAaI,KAAA,CAAMC,IAAI,CAACT,aAAA;IAE9B,IAAII,UAAA,CAAWC,MAAM,EAAE;MACrB,OAAO,uCAAuCD,UAAA,CAAWM,IAAI,CAAC;IAChE;IAEA,OAAO;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"validate.js","names":["fieldSchemasToFormState","linkValidation","props","sanitizedFieldsWithoutText","node","validation","options","id","collectionSlug","data","operation","preferences","req","result","fields","documentData","fieldSchemaMap","undefined","initialBlockData","permissions","renderAllFields","schemaPath","errorPathsSet","Set","fieldKey","fieldState","errorPaths","length","errorPath","add","Array","from","join"],"sources":["../../../../src/features/link/server/validate.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { fieldSchemasToFormState } from '@payloadcms/ui/forms/fieldSchemasToFormState'\n\nimport type { NodeValidation } from '../../typesServer.js'\nimport type { LinkFeatureServerProps } from './index.js'\nimport type { SerializedAutoLinkNode, SerializedLinkNode } from './schema.js'\n\nexport const linkValidation = (\n props: LinkFeatureServerProps,\n sanitizedFieldsWithoutText: Field[],\n): NodeValidation<SerializedAutoLinkNode | SerializedLinkNode> => {\n return async ({\n node,\n validation: {\n options: { id, collectionSlug, data, operation, preferences, req },\n },\n }) => {\n /**\n * Run fieldSchemasToFormState as that properly validates link fields and link sub-fields\n */\n\n const result = await fieldSchemasToFormState({\n id,\n collectionSlug,\n data: node.fields,\n documentData: data,\n fields: sanitizedFieldsWithoutText, // Sanitized in feature.server.ts\n fieldSchemaMap: undefined,\n initialBlockData: node.fields,\n operation,\n permissions: {},\n preferences,\n renderAllFields: false,\n req,\n schemaPath: '',\n })\n\n const errorPathsSet = new Set<string>()\n for (const fieldKey in result) {\n const fieldState = result[fieldKey]\n if (fieldState?.errorPaths?.length) {\n for (const errorPath of fieldState.errorPaths) {\n errorPathsSet.add(errorPath)\n }\n }\n }\n const errorPaths = Array.from(errorPathsSet)\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ;AAMxC,OAAO,MAAMC,cAAA,GAAiBA,CAC5BC,KAAA,EACAC,0BAAA;EAEA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAA,EAAY;MACVC,OAAA,EAAS;QAAEC,EAAE;QAAEC,cAAc;QAAEC,IAAI;QAAEC,SAAS;QAAEC,WAAW;QAAEC;MAAG;IAAE;EACnE,CACF;IACC;;;IAIA,MAAMC,MAAA,GAAS,MAAMb,uBAAA,CAAwB;MAC3CO,EAAA;MACAC,cAAA;MACAC,IAAA,EAAML,IAAA,CAAKU,MAAM;MACjBC,YAAA,EAAcN,IAAA;MACdK,MAAA,EAAQX,0BAAA;MACRa,cAAA,EAAgBC,SAAA;MAChBC,gBAAA,EAAkBd,IAAA,CAAKU,MAAM;MAC7BJ,SAAA;MACAS,WAAA,EAAa,CAAC;MACdR,WAAA;MACAS,eAAA,EAAiB;MACjBR,GAAA;MACAS,UAAA,EAAY;IACd;IAEA,MAAMC,aAAA,GAAgB,IAAIC,GAAA;IAC1B,KAAK,MAAMC,QAAA,IAAYX,MAAA,EAAQ;MAC7B,MAAMY,UAAA,GAAaZ,MAAM,CAACW,QAAA,CAAS;MACnC,IAAIC,UAAA,EAAYC,UAAA,EAAYC,MAAA,EAAQ;QAClC,KAAK,MAAMC,SAAA,IAAaH,UAAA,CAAWC,UAAU,EAAE;UAC7CJ,aAAA,CAAcO,GAAG,CAACD,SAAA;QACpB;MACF;IACF;IACA,MAAMF,UAAA,GAAaI,KAAA,CAAMC,IAAI,CAACT,aAAA;IAE9B,IAAII,UAAA,CAAWC,MAAM,EAAE;MACrB,OAAO,uCAAuCD,UAAA,CAAWM,IAAI,CAAC;IAChE;IAEA,OAAO;EACT;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/lists/checklist/server/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,gBAAgB,kGAqB3B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/lists/checklist/server/index.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,gBAAgB,kGAuB3B,CAAA"}
@@ -4,6 +4,7 @@ import { createServerFeature } from '../../../../utilities/createServerFeature.j
4
4
  import { createNode } from '../../../typeUtilities.js';
5
5
  import { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js';
6
6
  import { shouldRegisterListBaseNodes } from '../../shared/shouldRegisterListBaseNodes.js';
7
+ import { listItemValidation, listValidation } from '../../shared/validate.js';
7
8
  import { i18n } from './i18n.js';
8
9
  export const ChecklistFeature = createServerFeature({
9
10
  feature: ({
@@ -15,10 +16,12 @@ export const ChecklistFeature = createServerFeature({
15
16
  markdownTransformers: [CHECK_LIST],
16
17
  nodes: shouldRegisterListBaseNodes('checklist', featureProviderMap) ? [createNode({
17
18
  jsonSchema: listNodeJSONSchema,
18
- node: ListNode
19
+ node: ListNode,
20
+ validations: [listValidation]
19
21
  }), createNode({
20
22
  jsonSchema: listItemNodeJSONSchema,
21
- node: ListItemNode
23
+ node: ListItemNode,
24
+ validations: [listItemValidation]
22
25
  })] : []
23
26
  };
24
27
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ListItemNode","ListNode","CHECK_LIST","createServerFeature","createNode","listItemNodeJSONSchema","listNodeJSONSchema","shouldRegisterListBaseNodes","i18n","ChecklistFeature","feature","featureProviderMap","ClientFeature","markdownTransformers","nodes","jsonSchema","node","key"],"sources":["../../../../../src/features/lists/checklist/server/index.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\nimport { CHECK_LIST } from '@lexical/markdown'\n\nimport { createServerFeature } from '../../../../utilities/createServerFeature.js'\nimport { createNode } from '../../../typeUtilities.js'\nimport { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js'\nimport { shouldRegisterListBaseNodes } from '../../shared/shouldRegisterListBaseNodes.js'\nimport { i18n } from './i18n.js'\n\nexport const ChecklistFeature = createServerFeature({\n feature: ({ featureProviderMap }) => {\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#ChecklistFeatureClient',\n i18n,\n markdownTransformers: [CHECK_LIST],\n nodes: shouldRegisterListBaseNodes('checklist', featureProviderMap)\n ? [\n createNode({\n jsonSchema: listNodeJSONSchema,\n node: ListNode,\n }),\n createNode({\n jsonSchema: listItemNodeJSONSchema,\n node: ListItemNode,\n }),\n ]\n : [],\n }\n },\n key: 'checklist',\n})\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ;AACvC,SAASC,UAAU,QAAQ;AAE3B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,sBAAsB,EAAEC,kBAAkB,QAAQ;AAC3D,SAASC,2BAA2B,QAAQ;AAC5C,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,gBAAA,GAAmBN,mBAAA,CAAoB;EAClDO,OAAA,EAASA,CAAC;IAAEC;EAAkB,CAAE;IAC9B,OAAO;MACLC,aAAA,EAAe;MACfJ,IAAA;MACAK,oBAAA,EAAsB,CAACX,UAAA,CAAW;MAClCY,KAAA,EAAOP,2BAAA,CAA4B,aAAaI,kBAAA,IAC5C,CACEP,UAAA,CAAW;QACTW,UAAA,EAAYT,kBAAA;QACZU,IAAA,EAAMf;MACR,IACAG,UAAA,CAAW;QACTW,UAAA,EAAYV,sBAAA;QACZW,IAAA,EAAMhB;MACR,GACD,GACD;IACN;EACF;EACAiB,GAAA,EAAK;AACP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["ListItemNode","ListNode","CHECK_LIST","createServerFeature","createNode","listItemNodeJSONSchema","listNodeJSONSchema","shouldRegisterListBaseNodes","listItemValidation","listValidation","i18n","ChecklistFeature","feature","featureProviderMap","ClientFeature","markdownTransformers","nodes","jsonSchema","node","validations","key"],"sources":["../../../../../src/features/lists/checklist/server/index.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\nimport { CHECK_LIST } from '@lexical/markdown'\n\nimport { createServerFeature } from '../../../../utilities/createServerFeature.js'\nimport { createNode } from '../../../typeUtilities.js'\nimport { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js'\nimport { shouldRegisterListBaseNodes } from '../../shared/shouldRegisterListBaseNodes.js'\nimport { listItemValidation, listValidation } from '../../shared/validate.js'\nimport { i18n } from './i18n.js'\n\nexport const ChecklistFeature = createServerFeature({\n feature: ({ featureProviderMap }) => {\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#ChecklistFeatureClient',\n i18n,\n markdownTransformers: [CHECK_LIST],\n nodes: shouldRegisterListBaseNodes('checklist', featureProviderMap)\n ? [\n createNode({\n jsonSchema: listNodeJSONSchema,\n node: ListNode,\n validations: [listValidation],\n }),\n createNode({\n jsonSchema: listItemNodeJSONSchema,\n node: ListItemNode,\n validations: [listItemValidation],\n }),\n ]\n : [],\n }\n },\n key: 'checklist',\n})\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ;AACvC,SAASC,UAAU,QAAQ;AAE3B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,sBAAsB,EAAEC,kBAAkB,QAAQ;AAC3D,SAASC,2BAA2B,QAAQ;AAC5C,SAASC,kBAAkB,EAAEC,cAAc,QAAQ;AACnD,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,gBAAA,GAAmBR,mBAAA,CAAoB;EAClDS,OAAA,EAASA,CAAC;IAAEC;EAAkB,CAAE;IAC9B,OAAO;MACLC,aAAA,EAAe;MACfJ,IAAA;MACAK,oBAAA,EAAsB,CAACb,UAAA,CAAW;MAClCc,KAAA,EAAOT,2BAAA,CAA4B,aAAaM,kBAAA,IAC5C,CACET,UAAA,CAAW;QACTa,UAAA,EAAYX,kBAAA;QACZY,IAAA,EAAMjB,QAAA;QACNkB,WAAA,EAAa,CAACV,cAAA;MAChB,IACAL,UAAA,CAAW;QACTa,UAAA,EAAYZ,sBAAA;QACZa,IAAA,EAAMlB,YAAA;QACNmB,WAAA,EAAa,CAACX,kBAAA;MAChB,GACD,GACD;IACN;EACF;EACAY,GAAA,EAAK;AACP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/lists/orderedList/server/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,kGAqB7B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/lists/orderedList/server/index.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,kBAAkB,kGAuB7B,CAAA"}
@@ -4,6 +4,7 @@ import { createServerFeature } from '../../../../utilities/createServerFeature.j
4
4
  import { createNode } from '../../../typeUtilities.js';
5
5
  import { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js';
6
6
  import { shouldRegisterListBaseNodes } from '../../shared/shouldRegisterListBaseNodes.js';
7
+ import { listItemValidation, listValidation } from '../../shared/validate.js';
7
8
  import { i18n } from './i18n.js';
8
9
  export const OrderedListFeature = createServerFeature({
9
10
  feature: ({
@@ -15,10 +16,12 @@ export const OrderedListFeature = createServerFeature({
15
16
  markdownTransformers: [ORDERED_LIST],
16
17
  nodes: shouldRegisterListBaseNodes('ordered', featureProviderMap) ? [createNode({
17
18
  jsonSchema: listNodeJSONSchema,
18
- node: ListNode
19
+ node: ListNode,
20
+ validations: [listValidation]
19
21
  }), createNode({
20
22
  jsonSchema: listItemNodeJSONSchema,
21
- node: ListItemNode
23
+ node: ListItemNode,
24
+ validations: [listItemValidation]
22
25
  })] : []
23
26
  };
24
27
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ListItemNode","ListNode","ORDERED_LIST","createServerFeature","createNode","listItemNodeJSONSchema","listNodeJSONSchema","shouldRegisterListBaseNodes","i18n","OrderedListFeature","feature","featureProviderMap","ClientFeature","markdownTransformers","nodes","jsonSchema","node","key"],"sources":["../../../../../src/features/lists/orderedList/server/index.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\nimport { ORDERED_LIST } from '@lexical/markdown'\n\nimport { createServerFeature } from '../../../../utilities/createServerFeature.js'\nimport { createNode } from '../../../typeUtilities.js'\nimport { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js'\nimport { shouldRegisterListBaseNodes } from '../../shared/shouldRegisterListBaseNodes.js'\nimport { i18n } from './i18n.js'\n\nexport const OrderedListFeature = createServerFeature({\n feature: ({ featureProviderMap }) => {\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#OrderedListFeatureClient',\n i18n,\n markdownTransformers: [ORDERED_LIST],\n nodes: shouldRegisterListBaseNodes('ordered', featureProviderMap)\n ? [\n createNode({\n jsonSchema: listNodeJSONSchema,\n node: ListNode,\n }),\n createNode({\n jsonSchema: listItemNodeJSONSchema,\n node: ListItemNode,\n }),\n ]\n : [],\n }\n },\n key: 'orderedList',\n})\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ;AACvC,SAASC,YAAY,QAAQ;AAE7B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,sBAAsB,EAAEC,kBAAkB,QAAQ;AAC3D,SAASC,2BAA2B,QAAQ;AAC5C,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,kBAAA,GAAqBN,mBAAA,CAAoB;EACpDO,OAAA,EAASA,CAAC;IAAEC;EAAkB,CAAE;IAC9B,OAAO;MACLC,aAAA,EAAe;MACfJ,IAAA;MACAK,oBAAA,EAAsB,CAACX,YAAA,CAAa;MACpCY,KAAA,EAAOP,2BAAA,CAA4B,WAAWI,kBAAA,IAC1C,CACEP,UAAA,CAAW;QACTW,UAAA,EAAYT,kBAAA;QACZU,IAAA,EAAMf;MACR,IACAG,UAAA,CAAW;QACTW,UAAA,EAAYV,sBAAA;QACZW,IAAA,EAAMhB;MACR,GACD,GACD;IACN;EACF;EACAiB,GAAA,EAAK;AACP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["ListItemNode","ListNode","ORDERED_LIST","createServerFeature","createNode","listItemNodeJSONSchema","listNodeJSONSchema","shouldRegisterListBaseNodes","listItemValidation","listValidation","i18n","OrderedListFeature","feature","featureProviderMap","ClientFeature","markdownTransformers","nodes","jsonSchema","node","validations","key"],"sources":["../../../../../src/features/lists/orderedList/server/index.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\nimport { ORDERED_LIST } from '@lexical/markdown'\n\nimport { createServerFeature } from '../../../../utilities/createServerFeature.js'\nimport { createNode } from '../../../typeUtilities.js'\nimport { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js'\nimport { shouldRegisterListBaseNodes } from '../../shared/shouldRegisterListBaseNodes.js'\nimport { listItemValidation, listValidation } from '../../shared/validate.js'\nimport { i18n } from './i18n.js'\n\nexport const OrderedListFeature = createServerFeature({\n feature: ({ featureProviderMap }) => {\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#OrderedListFeatureClient',\n i18n,\n markdownTransformers: [ORDERED_LIST],\n nodes: shouldRegisterListBaseNodes('ordered', featureProviderMap)\n ? [\n createNode({\n jsonSchema: listNodeJSONSchema,\n node: ListNode,\n validations: [listValidation],\n }),\n createNode({\n jsonSchema: listItemNodeJSONSchema,\n node: ListItemNode,\n validations: [listItemValidation],\n }),\n ]\n : [],\n }\n },\n key: 'orderedList',\n})\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ;AACvC,SAASC,YAAY,QAAQ;AAE7B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,sBAAsB,EAAEC,kBAAkB,QAAQ;AAC3D,SAASC,2BAA2B,QAAQ;AAC5C,SAASC,kBAAkB,EAAEC,cAAc,QAAQ;AACnD,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,kBAAA,GAAqBR,mBAAA,CAAoB;EACpDS,OAAA,EAASA,CAAC;IAAEC;EAAkB,CAAE;IAC9B,OAAO;MACLC,aAAA,EAAe;MACfJ,IAAA;MACAK,oBAAA,EAAsB,CAACb,YAAA,CAAa;MACpCc,KAAA,EAAOT,2BAAA,CAA4B,WAAWM,kBAAA,IAC1C,CACET,UAAA,CAAW;QACTa,UAAA,EAAYX,kBAAA;QACZY,IAAA,EAAMjB,QAAA;QACNkB,WAAA,EAAa,CAACV,cAAA;MAChB,IACAL,UAAA,CAAW;QACTa,UAAA,EAAYZ,sBAAA;QACZa,IAAA,EAAMlB,YAAA;QACNmB,WAAA,EAAa,CAACX,kBAAA;MAChB,GACD,GACD;IACN;EACF;EACAY,GAAA,EAAK;AACP","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export declare const ALLOWED_LIST_TAGS: Set<string>;
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/features/lists/shared/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,aAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export const ALLOWED_LIST_TAGS = new Set(['ol', 'ul']);
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["ALLOWED_LIST_TAGS","Set"],"sources":["../../../../src/features/lists/shared/constants.ts"],"sourcesContent":["export const ALLOWED_LIST_TAGS = new Set(['ol', 'ul'])\n"],"mappings":"AAAA,OAAO,MAAMA,iBAAA,GAAoB,IAAIC,GAAA,CAAI,CAAC,MAAM,KAAK","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import type { SerializedListItemNode, SerializedListNode } from '@lexical/list';
2
+ import type { NodeValidation } from '../../typesServer.js';
3
+ export declare const listItemValidation: NodeValidation<SerializedListItemNode>;
4
+ export declare const listValidation: NodeValidation<SerializedListNode>;
5
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/features/lists/shared/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,sBAAsB,CAMrE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,kBAAkB,CAE7D,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { ALLOWED_LIST_TAGS } from './constants.js';
2
+ export const listItemValidation = ({
3
+ node
4
+ }) => {
5
+ if (typeof node.value !== 'number' || !Number.isFinite(node.value)) {
6
+ return 'List item value must be a finite number.';
7
+ }
8
+ return true;
9
+ };
10
+ export const listValidation = ({
11
+ node
12
+ }) => {
13
+ return ALLOWED_LIST_TAGS.has(node.tag) ? true : 'List tag must be one of ol, ul.';
14
+ };
15
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","names":["ALLOWED_LIST_TAGS","listItemValidation","node","value","Number","isFinite","listValidation","has","tag"],"sources":["../../../../src/features/lists/shared/validate.ts"],"sourcesContent":["import type { SerializedListItemNode, SerializedListNode } from '@lexical/list'\n\nimport type { NodeValidation } from '../../typesServer.js'\n\nimport { ALLOWED_LIST_TAGS } from './constants.js'\n\nexport const listItemValidation: NodeValidation<SerializedListItemNode> = ({ node }) => {\n if (typeof node.value !== 'number' || !Number.isFinite(node.value)) {\n return 'List item value must be a finite number.'\n }\n\n return true\n}\n\nexport const listValidation: NodeValidation<SerializedListNode> = ({ node }) => {\n return ALLOWED_LIST_TAGS.has(node.tag) ? true : 'List tag must be one of ol, ul.'\n}\n"],"mappings":"AAIA,SAASA,iBAAiB,QAAQ;AAElC,OAAO,MAAMC,kBAAA,GAA6DA,CAAC;EAAEC;AAAI,CAAE;EACjF,IAAI,OAAOA,IAAA,CAAKC,KAAK,KAAK,YAAY,CAACC,MAAA,CAAOC,QAAQ,CAACH,IAAA,CAAKC,KAAK,GAAG;IAClE,OAAO;EACT;EAEA,OAAO;AACT;AAEA,OAAO,MAAMG,cAAA,GAAqDA,CAAC;EAAEJ;AAAI,CAAE;EACzE,OAAOF,iBAAA,CAAkBO,GAAG,CAACL,IAAA,CAAKM,GAAG,IAAI,OAAO;AAClD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/lists/unorderedList/server/index.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB,kGAiB/B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/lists/unorderedList/server/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB,kGAmB/B,CAAA"}
@@ -3,6 +3,7 @@ import { UNORDERED_LIST } from '@lexical/markdown';
3
3
  import { createServerFeature } from '../../../../utilities/createServerFeature.js';
4
4
  import { createNode } from '../../../typeUtilities.js';
5
5
  import { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js';
6
+ import { listItemValidation, listValidation } from '../../shared/validate.js';
6
7
  import { i18n } from './i18n.js';
7
8
  export const UnorderedListFeature = createServerFeature({
8
9
  feature: {
@@ -11,10 +12,12 @@ export const UnorderedListFeature = createServerFeature({
11
12
  markdownTransformers: [UNORDERED_LIST],
12
13
  nodes: [createNode({
13
14
  jsonSchema: listNodeJSONSchema,
14
- node: ListNode
15
+ node: ListNode,
16
+ validations: [listValidation]
15
17
  }), createNode({
16
18
  jsonSchema: listItemNodeJSONSchema,
17
- node: ListItemNode
19
+ node: ListItemNode,
20
+ validations: [listItemValidation]
18
21
  })]
19
22
  },
20
23
  key: 'unorderedList'
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ListItemNode","ListNode","UNORDERED_LIST","createServerFeature","createNode","listItemNodeJSONSchema","listNodeJSONSchema","i18n","UnorderedListFeature","feature","ClientFeature","markdownTransformers","nodes","jsonSchema","node","key"],"sources":["../../../../../src/features/lists/unorderedList/server/index.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\nimport { UNORDERED_LIST } from '@lexical/markdown'\n\nimport { createServerFeature } from '../../../../utilities/createServerFeature.js'\nimport { createNode } from '../../../typeUtilities.js'\nimport { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js'\nimport { i18n } from './i18n.js'\n\nexport const UnorderedListFeature = createServerFeature({\n feature: {\n ClientFeature: '@payloadcms/richtext-lexical/client#UnorderedListFeatureClient',\n i18n,\n markdownTransformers: [UNORDERED_LIST],\n nodes: [\n createNode({\n jsonSchema: listNodeJSONSchema,\n node: ListNode,\n }),\n createNode({\n jsonSchema: listItemNodeJSONSchema,\n node: ListItemNode,\n }),\n ],\n },\n key: 'unorderedList',\n})\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ;AACvC,SAASC,cAAc,QAAQ;AAE/B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,sBAAsB,EAAEC,kBAAkB,QAAQ;AAC3D,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,oBAAA,GAAuBL,mBAAA,CAAoB;EACtDM,OAAA,EAAS;IACPC,aAAA,EAAe;IACfH,IAAA;IACAI,oBAAA,EAAsB,CAACT,cAAA,CAAe;IACtCU,KAAA,EAAO,CACLR,UAAA,CAAW;MACTS,UAAA,EAAYP,kBAAA;MACZQ,IAAA,EAAMb;IACR,IACAG,UAAA,CAAW;MACTS,UAAA,EAAYR,sBAAA;MACZS,IAAA,EAAMd;IACR;EAEJ;EACAe,GAAA,EAAK;AACP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["ListItemNode","ListNode","UNORDERED_LIST","createServerFeature","createNode","listItemNodeJSONSchema","listNodeJSONSchema","listItemValidation","listValidation","i18n","UnorderedListFeature","feature","ClientFeature","markdownTransformers","nodes","jsonSchema","node","validations","key"],"sources":["../../../../../src/features/lists/unorderedList/server/index.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\nimport { UNORDERED_LIST } from '@lexical/markdown'\n\nimport { createServerFeature } from '../../../../utilities/createServerFeature.js'\nimport { createNode } from '../../../typeUtilities.js'\nimport { listItemNodeJSONSchema, listNodeJSONSchema } from '../../shared/schema.js'\nimport { listItemValidation, listValidation } from '../../shared/validate.js'\nimport { i18n } from './i18n.js'\n\nexport const UnorderedListFeature = createServerFeature({\n feature: {\n ClientFeature: '@payloadcms/richtext-lexical/client#UnorderedListFeatureClient',\n i18n,\n markdownTransformers: [UNORDERED_LIST],\n nodes: [\n createNode({\n jsonSchema: listNodeJSONSchema,\n node: ListNode,\n validations: [listValidation],\n }),\n createNode({\n jsonSchema: listItemNodeJSONSchema,\n node: ListItemNode,\n validations: [listItemValidation],\n }),\n ],\n },\n key: 'unorderedList',\n})\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ;AACvC,SAASC,cAAc,QAAQ;AAE/B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,sBAAsB,EAAEC,kBAAkB,QAAQ;AAC3D,SAASC,kBAAkB,EAAEC,cAAc,QAAQ;AACnD,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,oBAAA,GAAuBP,mBAAA,CAAoB;EACtDQ,OAAA,EAAS;IACPC,aAAA,EAAe;IACfH,IAAA;IACAI,oBAAA,EAAsB,CAACX,cAAA,CAAe;IACtCY,KAAA,EAAO,CACLV,UAAA,CAAW;MACTW,UAAA,EAAYT,kBAAA;MACZU,IAAA,EAAMf,QAAA;MACNgB,WAAA,EAAa,CAACT,cAAA;IAChB,IACAJ,UAAA,CAAW;MACTW,UAAA,EAAYV,sBAAA;MACZW,IAAA,EAAMhB,YAAA;MACNiB,WAAA,EAAa,CAACV,kBAAA;IAChB;EAEJ;EACAW,GAAA,EAAK;AACP","ignoreList":[]}
@@ -11,7 +11,6 @@
11
11
  background: var(--color-bg);
12
12
  border: var(--stroke-width-small) solid var(--color-border);
13
13
  border-radius: var(--radius-medium);
14
- font-family: var(--font-body);
15
14
  margin-block: var(--spacer-2);
16
15
  color: var(--color-text);
17
16
 
@@ -42,7 +41,6 @@
42
41
  }
43
42
 
44
43
  .LexicalEditorTheme__relationship__label {
45
- font-family: var(--text-body-small-font-family);
46
44
  font-size: var(--text-body-small-font-size);
47
45
  font-weight: var(--text-body-small-font-weight);
48
46
  line-height: var(--text-body-small-line-height);
@@ -55,10 +53,9 @@
55
53
  }
56
54
 
57
55
  .LexicalEditorTheme__relationship__title {
58
- font-family: var(--text-body-medium-strong-font-family);
59
- font-size: var(--text-body-medium-strong-font-size);
60
- font-weight: var(--text-body-medium-strong-font-weight);
61
- line-height: var(--text-body-medium-strong-line-height);
56
+ font-size: var(--text-body-medium-bold-font-size);
57
+ font-weight: var(--text-body-medium-bold-font-weight);
58
+ line-height: var(--text-body-medium-bold-line-height);
62
59
  letter-spacing: var(--text-body-medium-letter-spacing);
63
60
  color: var(--color-text);
64
61
  margin: 0;
@@ -1,3 +1,3 @@
1
- import type { RelationshipFeatureProps } from '../server/index.js';
2
- export declare const RelationshipFeatureClient: import("../../typesClient.js").FeatureProviderProviderClient<RelationshipFeatureProps, RelationshipFeatureProps>;
1
+ import type { RelationshipFeatureClientProps } from '../server/index.js';
2
+ export declare const RelationshipFeatureClient: import("../../typesClient.js").FeatureProviderProviderClient<RelationshipFeatureClientProps, RelationshipFeatureClientProps>;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/relationship/client/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAUlE,eAAO,MAAM,yBAAyB,kHAuDpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/relationship/client/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;AAUxE,eAAO,MAAM,yBAAyB,8HAuDpC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["$isNodeSelection","RelationshipIcon","createClientFeature","slashMenuBasicGroupWithItems","toolbarAddDropdownGroupWithItems","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","$isRelationshipNode","RelationshipNode","RelationshipPlugin","RelationshipFeatureClient","nodes","plugins","Component","position","slashMenu","groups","Icon","key","keywords","label","i18n","t","onSelect","editor","dispatchCommand","replace","toolbarFixed","ChildComponent","isActive","selection","getNodes","length","firstNode"],"sources":["../../../../src/features/relationship/client/index.tsx"],"sourcesContent":["'use client'\n\nimport { $isNodeSelection } from 'lexical'\n\nimport type { RelationshipFeatureProps } from '../server/index.js'\n\nimport { RelationshipIcon } from '../../../lexical/ui/icons/Relationship/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarAddDropdownGroupWithItems } from '../../shared/toolbar/addDropdownGroup.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { $isRelationshipNode, RelationshipNode } from './nodes/RelationshipNode.js'\nimport { RelationshipPlugin } from './plugins/index.js'\n\nexport const RelationshipFeatureClient = createClientFeature<RelationshipFeatureProps>({\n nodes: [RelationshipNode],\n plugins: [\n {\n Component: RelationshipPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: RelationshipIcon,\n key: 'relationship',\n keywords: ['relationship', 'relation', 'rel'],\n label: ({ i18n }) => {\n return i18n.t('lexical:relationship:label')\n },\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: RelationshipIcon,\n isActive: ({ selection }) => {\n if (!$isNodeSelection(selection) || !selection.getNodes().length) {\n return false\n }\n\n const firstNode = selection.getNodes()[0]\n return $isRelationshipNode(firstNode)\n },\n key: 'relationship',\n label: ({ i18n }) => {\n return i18n.t('lexical:relationship:label')\n },\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n})\n"],"mappings":"AAAA;;AAEA,SAASA,gBAAgB,QAAQ;AAIjC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,gCAAgC,QAAQ;AACjD,SAASC,uCAAuC,QAAQ;AACxD,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ;AACtD,SAASC,kBAAkB,QAAQ;AAEnC,OAAO,MAAMC,yBAAA,GAA4BP,mBAAA,CAA8C;EACrFQ,KAAA,EAAO,CAACH,gBAAA,CAAiB;EACzBI,OAAA,EAAS,CACP;IACEC,SAAA,EAAWJ,kBAAA;IACXK,QAAA,EAAU;EACZ,EACD;EACDC,SAAA,EAAW;IACTC,MAAA,EAAQ,CACNZ,4BAAA,CAA6B,CAC3B;MACEa,IAAA,EAAMf,gBAAA;MACNgB,GAAA,EAAK;MACLC,QAAA,EAAU,CAAC,gBAAgB,YAAY,MAAM;MAC7CC,KAAA,EAAOA,CAAC;QAAEC;MAAI,CAAE;QACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;MAChB;MACAC,QAAA,EAAUA,CAAC;QAAEC;MAAM,CAAE;QACnB;QACAA,MAAA,CAAOC,eAAe,CAACnB,uCAAA,EAAyC;UAC9DoB,OAAA,EAAS;QACX;MACF;IACF,EACD;EAEL;EACAC,YAAA,EAAc;IACZX,MAAA,EAAQ,CACNX,gCAAA,CAAiC,CAC/B;MACEuB,cAAA,EAAgB1B,gBAAA;MAChB2B,QAAA,EAAUA,CAAC;QAAEC;MAAS,CAAE;QACtB,IAAI,CAAC7B,gBAAA,CAAiB6B,SAAA,KAAc,CAACA,SAAA,CAAUC,QAAQ,GAAGC,MAAM,EAAE;UAChE,OAAO;QACT;QAEA,MAAMC,SAAA,GAAYH,SAAA,CAAUC,QAAQ,EAAE,CAAC,EAAE;QACzC,OAAOxB,mBAAA,CAAoB0B,SAAA;MAC7B;MACAf,GAAA,EAAK;MACLE,KAAA,EAAOA,CAAC;QAAEC;MAAI,CAAE;QACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;MAChB;MACAC,QAAA,EAAUA,CAAC;QAAEC;MAAM,CAAE;QACnB;QACAA,MAAA,CAAOC,eAAe,CAACnB,uCAAA,EAAyC;UAC9DoB,OAAA,EAAS;QACX;MACF;IACF,EACD;EAEL;AACF","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["$isNodeSelection","RelationshipIcon","createClientFeature","slashMenuBasicGroupWithItems","toolbarAddDropdownGroupWithItems","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","$isRelationshipNode","RelationshipNode","RelationshipPlugin","RelationshipFeatureClient","nodes","plugins","Component","position","slashMenu","groups","Icon","key","keywords","label","i18n","t","onSelect","editor","dispatchCommand","replace","toolbarFixed","ChildComponent","isActive","selection","getNodes","length","firstNode"],"sources":["../../../../src/features/relationship/client/index.tsx"],"sourcesContent":["'use client'\n\nimport { $isNodeSelection } from 'lexical'\n\nimport type { RelationshipFeatureClientProps } from '../server/index.js'\n\nimport { RelationshipIcon } from '../../../lexical/ui/icons/Relationship/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarAddDropdownGroupWithItems } from '../../shared/toolbar/addDropdownGroup.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { $isRelationshipNode, RelationshipNode } from './nodes/RelationshipNode.js'\nimport { RelationshipPlugin } from './plugins/index.js'\n\nexport const RelationshipFeatureClient = createClientFeature<RelationshipFeatureClientProps>({\n nodes: [RelationshipNode],\n plugins: [\n {\n Component: RelationshipPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: RelationshipIcon,\n key: 'relationship',\n keywords: ['relationship', 'relation', 'rel'],\n label: ({ i18n }) => {\n return i18n.t('lexical:relationship:label')\n },\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: RelationshipIcon,\n isActive: ({ selection }) => {\n if (!$isNodeSelection(selection) || !selection.getNodes().length) {\n return false\n }\n\n const firstNode = selection.getNodes()[0]\n return $isRelationshipNode(firstNode)\n },\n key: 'relationship',\n label: ({ i18n }) => {\n return i18n.t('lexical:relationship:label')\n },\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n})\n"],"mappings":"AAAA;;AAEA,SAASA,gBAAgB,QAAQ;AAIjC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,gCAAgC,QAAQ;AACjD,SAASC,uCAAuC,QAAQ;AACxD,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ;AACtD,SAASC,kBAAkB,QAAQ;AAEnC,OAAO,MAAMC,yBAAA,GAA4BP,mBAAA,CAAoD;EAC3FQ,KAAA,EAAO,CAACH,gBAAA,CAAiB;EACzBI,OAAA,EAAS,CACP;IACEC,SAAA,EAAWJ,kBAAA;IACXK,QAAA,EAAU;EACZ,EACD;EACDC,SAAA,EAAW;IACTC,MAAA,EAAQ,CACNZ,4BAAA,CAA6B,CAC3B;MACEa,IAAA,EAAMf,gBAAA;MACNgB,GAAA,EAAK;MACLC,QAAA,EAAU,CAAC,gBAAgB,YAAY,MAAM;MAC7CC,KAAA,EAAOA,CAAC;QAAEC;MAAI,CAAE;QACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;MAChB;MACAC,QAAA,EAAUA,CAAC;QAAEC;MAAM,CAAE;QACnB;QACAA,MAAA,CAAOC,eAAe,CAACnB,uCAAA,EAAyC;UAC9DoB,OAAA,EAAS;QACX;MACF;IACF,EACD;EAEL;EACAC,YAAA,EAAc;IACZX,MAAA,EAAQ,CACNX,gCAAA,CAAiC,CAC/B;MACEuB,cAAA,EAAgB1B,gBAAA;MAChB2B,QAAA,EAAUA,CAAC;QAAEC;MAAS,CAAE;QACtB,IAAI,CAAC7B,gBAAA,CAAiB6B,SAAA,KAAc,CAACA,SAAA,CAAUC,QAAQ,GAAGC,MAAM,EAAE;UAChE,OAAO;QACT;QAEA,MAAMC,SAAA,GAAYH,SAAA,CAAUC,QAAQ,EAAE,CAAC,EAAE;QACzC,OAAOxB,mBAAA,CAAoB0B,SAAA;MAC7B;MACAf,GAAA,EAAK;MACLE,KAAA,EAAOA,CAAC;QAAEC;MAAI,CAAE;QACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;MAChB;MACAC,QAAA,EAAUA,CAAC;QAAEC;MAAM,CAAE;QACnB;QACAA,MAAA,CAAOC,eAAe,CAACnB,uCAAA,EAAyC;UAC9DoB,OAAA,EAAS;QACX;MACF;IACF,EACD;EAEL;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/nodes/RelationshipNode.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAsB/E,qBAAa,gBAAiB,SAAQ,sBAAsB;IAC1D,OAAgB,KAAK,CAAC,IAAI,EAAE,sBAAsB,GAAG,sBAAsB,CAE1E;IAED,OAAgB,OAAO,IAAI,MAAM,CAEhC;IAED,OAAgB,SAAS,IAAI,gBAAgB,CAAC,cAAc,CAAC,GAAG,IAAI,CAenE;IAED,OAAgB,UAAU,CAAC,cAAc,EAAE,0BAA0B,GAAG,gBAAgB,CAYvF;IAEQ,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAS1E;IAEQ,UAAU,IAAI,0BAA0B,CAEhD;CACF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAMhF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,GACtD,IAAI,IAAI,gBAAgB,CAE1B"}
1
+ {"version":3,"file":"RelationshipNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/nodes/RelationshipNode.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAsB/E,qBAAa,gBAAiB,SAAQ,sBAAsB;IAC1D,OAAgB,KAAK,CAAC,IAAI,EAAE,sBAAsB,GAAG,sBAAsB,CAE1E;IAED,OAAgB,OAAO,IAAI,MAAM,CAEhC;IAED,OAAgB,SAAS,IAAI,gBAAgB,CAAC,cAAc,CAAC,GAAG,IAAI,CAenE;IAED,OAAgB,UAAU,CAAC,cAAc,EAAE,0BAA0B,GAAG,gBAAgB,CAQvF;IAEQ,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAS1E;IAEQ,UAAU,IAAI,0BAA0B,CAEhD;CACF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAMhF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,GACtD,IAAI,IAAI,gBAAgB,CAE1B"}
@@ -42,9 +42,6 @@ export class RelationshipNode extends RelationshipServerNode {
42
42
  };
43
43
  }
44
44
  static importJSON(serializedNode) {
45
- if (serializedNode.version === 1 && serializedNode?.value?.id) {
46
- serializedNode.value = serializedNode.value.id;
47
- }
48
45
  const importedData = {
49
46
  relationTo: serializedNode.relationTo,
50
47
  value: serializedNode.value
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipNode.js","names":["$applyNodeReplacement","React","RelationshipServerNode","RelationshipComponent","lazy","then","module","default","$relationshipElementToNode","domNode","id","getAttribute","relationTo","node","$createRelationshipNode","value","RelationshipNode","clone","getType","importDOM","div","hasAttribute","conversion","priority","importJSON","serializedNode","version","importedData","setFormat","format","decorate","editor","config","_jsx","className","theme","relationship","data","__data","__format","nodeKey","getKey","exportJSON","$isRelationshipNode"],"sources":["../../../../../src/features/relationship/client/nodes/RelationshipNode.tsx"],"sourcesContent":["'use client'\nimport type { JSX } from 'react'\n\nimport {\n $applyNodeReplacement,\n type DOMConversionMap,\n type DOMConversionOutput,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n} from 'lexical'\nimport * as React from 'react'\n\nimport type { RelationshipData, SerializedRelationshipNode } from '../../server/schema.js'\n\nimport { RelationshipServerNode } from '../../server/nodes/RelationshipNode.js'\n\nconst RelationshipComponent = React.lazy(() =>\n import('../components/RelationshipComponent.js').then((module) => ({\n default: module.RelationshipComponent,\n })),\n)\n\nfunction $relationshipElementToNode(domNode: HTMLDivElement): DOMConversionOutput | null {\n const id = domNode.getAttribute('data-lexical-relationship-id')\n const relationTo = domNode.getAttribute('data-lexical-relationship-relationTo')\n\n if (id != null && relationTo != null) {\n const node = $createRelationshipNode({\n relationTo,\n value: id,\n })\n return { node }\n }\n return null\n}\n\nexport class RelationshipNode extends RelationshipServerNode {\n static override clone(node: RelationshipServerNode): RelationshipServerNode {\n return super.clone(node)\n }\n\n static override getType(): string {\n return super.getType()\n }\n\n static override importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {\n div: (domNode: HTMLDivElement) => {\n if (\n !domNode.hasAttribute('data-lexical-relationship-relationTo') ||\n !domNode.hasAttribute('data-lexical-relationship-id')\n ) {\n return null\n }\n return {\n conversion: $relationshipElementToNode,\n priority: 2,\n }\n },\n }\n }\n\n static override importJSON(serializedNode: SerializedRelationshipNode): RelationshipNode {\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\n const importedData: RelationshipData = {\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n const node = $createRelationshipNode(importedData)\n node.setFormat(serializedNode.format)\n return node\n }\n\n override decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return (\n <RelationshipComponent\n className={config.theme.relationship ?? 'LexicalEditorTheme__relationship'}\n data={this.__data}\n format={this.__format}\n nodeKey={this.getKey()}\n />\n )\n }\n\n override exportJSON(): SerializedRelationshipNode {\n return super.exportJSON()\n }\n}\n\nexport function $createRelationshipNode(data: RelationshipData): RelationshipNode {\n return $applyNodeReplacement(\n new RelationshipNode({\n data,\n }),\n )\n}\n\nexport function $isRelationshipNode(\n node: LexicalNode | null | RelationshipNode | undefined,\n): node is RelationshipNode {\n return node instanceof RelationshipNode\n}\n"],"mappings":"AAAA;;;AAGA,SACEA,qBAAqB,QAMhB;AACP,YAAYC,KAAA,MAAW;AAIvB,SAASC,sBAAsB,QAAQ;AAEvC,MAAMC,qBAAA,gBAAwBF,KAAA,CAAMG,IAAI,CAAC,MACvC,MAAM,CAAC,0CAA0CC,IAAI,CAAEC,MAAA,KAAY;EACjEC,OAAA,EAASD,MAAA,CAAOH;AAClB;AAGF,SAASK,2BAA2BC,OAAuB;EACzD,MAAMC,EAAA,GAAKD,OAAA,CAAQE,YAAY,CAAC;EAChC,MAAMC,UAAA,GAAaH,OAAA,CAAQE,YAAY,CAAC;EAExC,IAAID,EAAA,IAAM,QAAQE,UAAA,IAAc,MAAM;IACpC,MAAMC,IAAA,GAAOC,uBAAA,CAAwB;MACnCF,UAAA;MACAG,KAAA,EAAOL;IACT;IACA,OAAO;MAAEG;IAAK;EAChB;EACA,OAAO;AACT;AAEA,OAAO,MAAMG,gBAAA,SAAyBd,sBAAA;EACpC,OAAgBe,MAAMJ,IAA4B,EAA0B;IAC1E,OAAO,KAAK,CAACI,KAAA,CAAMJ,IAAA;EACrB;EAEA,OAAgBK,QAAA,EAAkB;IAChC,OAAO,KAAK,CAACA,OAAA;EACf;EAEA,OAAgBC,UAAA,EAAqD;IACnE,OAAO;MACLC,GAAA,EAAMX,OAAA;QACJ,IACE,CAACA,OAAA,CAAQY,YAAY,CAAC,2CACtB,CAACZ,OAAA,CAAQY,YAAY,CAAC,iCACtB;UACA,OAAO;QACT;QACA,OAAO;UACLC,UAAA,EAAYd,0BAAA;UACZe,QAAA,EAAU;QACZ;MACF;IACF;EACF;EAEA,OAAgBC,WAAWC,cAA0C,EAAoB;IACvF,IAAIA,cAAA,CAAeC,OAAO,KAAK,KAAMD,cAAA,EAAgBV,KAAA,EAAqCL,EAAA,EAAI;MAC5Fe,cAAA,CAAeV,KAAK,GAAGU,cAAC,CAAeV,KAAK,CAA+BL,EAAE;IAC/E;IAEA,MAAMiB,YAAA,GAAiC;MACrCf,UAAA,EAAYa,cAAA,CAAeb,UAAU;MACrCG,KAAA,EAAOU,cAAA,CAAeV;IACxB;IACA,MAAMF,IAAA,GAAOC,uBAAA,CAAwBa,YAAA;IACrCd,IAAA,CAAKe,SAAS,CAACH,cAAA,CAAeI,MAAM;IACpC,OAAOhB,IAAA;EACT;EAESiB,SAASC,MAAqB,EAAEC,MAAoB,EAAe;IAC1E,oBACEC,IAAA,CAAC9B,qBAAA;MACC+B,SAAA,EAAWF,MAAA,CAAOG,KAAK,CAACC,YAAY,IAAI;MACxCC,IAAA,EAAM,IAAI,CAACC,MAAM;MACjBT,MAAA,EAAQ,IAAI,CAACU,QAAQ;MACrBC,OAAA,EAAS,IAAI,CAACC,MAAM;;EAG1B;EAESC,WAAA,EAAyC;IAChD,OAAO,KAAK,CAACA,UAAA;EACf;AACF;AAEA,OAAO,SAAS5B,wBAAwBuB,IAAsB;EAC5D,OAAOrC,qBAAA,CACL,IAAIgB,gBAAA,CAAiB;IACnBqB;EACF;AAEJ;AAEA,OAAO,SAASM,oBACd9B,IAAuD;EAEvD,OAAOA,IAAA,YAAgBG,gBAAA;AACzB","ignoreList":[]}
1
+ {"version":3,"file":"RelationshipNode.js","names":["$applyNodeReplacement","React","RelationshipServerNode","RelationshipComponent","lazy","then","module","default","$relationshipElementToNode","domNode","id","getAttribute","relationTo","node","$createRelationshipNode","value","RelationshipNode","clone","getType","importDOM","div","hasAttribute","conversion","priority","importJSON","serializedNode","importedData","setFormat","format","decorate","editor","config","_jsx","className","theme","relationship","data","__data","__format","nodeKey","getKey","exportJSON","$isRelationshipNode"],"sources":["../../../../../src/features/relationship/client/nodes/RelationshipNode.tsx"],"sourcesContent":["'use client'\nimport type { JSX } from 'react'\n\nimport {\n $applyNodeReplacement,\n type DOMConversionMap,\n type DOMConversionOutput,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n} from 'lexical'\nimport * as React from 'react'\n\nimport type { RelationshipData, SerializedRelationshipNode } from '../../server/schema.js'\n\nimport { RelationshipServerNode } from '../../server/nodes/RelationshipNode.js'\n\nconst RelationshipComponent = React.lazy(() =>\n import('../components/RelationshipComponent.js').then((module) => ({\n default: module.RelationshipComponent,\n })),\n)\n\nfunction $relationshipElementToNode(domNode: HTMLDivElement): DOMConversionOutput | null {\n const id = domNode.getAttribute('data-lexical-relationship-id')\n const relationTo = domNode.getAttribute('data-lexical-relationship-relationTo')\n\n if (id != null && relationTo != null) {\n const node = $createRelationshipNode({\n relationTo,\n value: id,\n })\n return { node }\n }\n return null\n}\n\nexport class RelationshipNode extends RelationshipServerNode {\n static override clone(node: RelationshipServerNode): RelationshipServerNode {\n return super.clone(node)\n }\n\n static override getType(): string {\n return super.getType()\n }\n\n static override importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {\n div: (domNode: HTMLDivElement) => {\n if (\n !domNode.hasAttribute('data-lexical-relationship-relationTo') ||\n !domNode.hasAttribute('data-lexical-relationship-id')\n ) {\n return null\n }\n return {\n conversion: $relationshipElementToNode,\n priority: 2,\n }\n },\n }\n }\n\n static override importJSON(serializedNode: SerializedRelationshipNode): RelationshipNode {\n const importedData: RelationshipData = {\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n const node = $createRelationshipNode(importedData)\n node.setFormat(serializedNode.format)\n return node\n }\n\n override decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return (\n <RelationshipComponent\n className={config.theme.relationship ?? 'LexicalEditorTheme__relationship'}\n data={this.__data}\n format={this.__format}\n nodeKey={this.getKey()}\n />\n )\n }\n\n override exportJSON(): SerializedRelationshipNode {\n return super.exportJSON()\n }\n}\n\nexport function $createRelationshipNode(data: RelationshipData): RelationshipNode {\n return $applyNodeReplacement(\n new RelationshipNode({\n data,\n }),\n )\n}\n\nexport function $isRelationshipNode(\n node: LexicalNode | null | RelationshipNode | undefined,\n): node is RelationshipNode {\n return node instanceof RelationshipNode\n}\n"],"mappings":"AAAA;;;AAGA,SACEA,qBAAqB,QAMhB;AACP,YAAYC,KAAA,MAAW;AAIvB,SAASC,sBAAsB,QAAQ;AAEvC,MAAMC,qBAAA,gBAAwBF,KAAA,CAAMG,IAAI,CAAC,MACvC,MAAM,CAAC,0CAA0CC,IAAI,CAAEC,MAAA,KAAY;EACjEC,OAAA,EAASD,MAAA,CAAOH;AAClB;AAGF,SAASK,2BAA2BC,OAAuB;EACzD,MAAMC,EAAA,GAAKD,OAAA,CAAQE,YAAY,CAAC;EAChC,MAAMC,UAAA,GAAaH,OAAA,CAAQE,YAAY,CAAC;EAExC,IAAID,EAAA,IAAM,QAAQE,UAAA,IAAc,MAAM;IACpC,MAAMC,IAAA,GAAOC,uBAAA,CAAwB;MACnCF,UAAA;MACAG,KAAA,EAAOL;IACT;IACA,OAAO;MAAEG;IAAK;EAChB;EACA,OAAO;AACT;AAEA,OAAO,MAAMG,gBAAA,SAAyBd,sBAAA;EACpC,OAAgBe,MAAMJ,IAA4B,EAA0B;IAC1E,OAAO,KAAK,CAACI,KAAA,CAAMJ,IAAA;EACrB;EAEA,OAAgBK,QAAA,EAAkB;IAChC,OAAO,KAAK,CAACA,OAAA;EACf;EAEA,OAAgBC,UAAA,EAAqD;IACnE,OAAO;MACLC,GAAA,EAAMX,OAAA;QACJ,IACE,CAACA,OAAA,CAAQY,YAAY,CAAC,2CACtB,CAACZ,OAAA,CAAQY,YAAY,CAAC,iCACtB;UACA,OAAO;QACT;QACA,OAAO;UACLC,UAAA,EAAYd,0BAAA;UACZe,QAAA,EAAU;QACZ;MACF;IACF;EACF;EAEA,OAAgBC,WAAWC,cAA0C,EAAoB;IACvF,MAAMC,YAAA,GAAiC;MACrCd,UAAA,EAAYa,cAAA,CAAeb,UAAU;MACrCG,KAAA,EAAOU,cAAA,CAAeV;IACxB;IACA,MAAMF,IAAA,GAAOC,uBAAA,CAAwBY,YAAA;IACrCb,IAAA,CAAKc,SAAS,CAACF,cAAA,CAAeG,MAAM;IACpC,OAAOf,IAAA;EACT;EAESgB,SAASC,MAAqB,EAAEC,MAAoB,EAAe;IAC1E,oBACEC,IAAA,CAAC7B,qBAAA;MACC8B,SAAA,EAAWF,MAAA,CAAOG,KAAK,CAACC,YAAY,IAAI;MACxCC,IAAA,EAAM,IAAI,CAACC,MAAM;MACjBT,MAAA,EAAQ,IAAI,CAACU,QAAQ;MACrBC,OAAA,EAAS,IAAI,CAACC,MAAM;;EAG1B;EAESC,WAAA,EAAyC;IAChD,OAAO,KAAK,CAACA,UAAA;EACf;AACF;AAEA,OAAO,SAAS3B,wBAAwBsB,IAAsB;EAC5D,OAAOpC,qBAAA,CACL,IAAIgB,gBAAA,CAAiB;IACnBoB;EACF;AAEJ;AAEA,OAAO,SAASM,oBACd7B,IAAuD;EAEvD,OAAOA,IAAA,YAAgBG,gBAAA;AACzB","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import type { LexicalCommand } from 'lexical';
2
2
  import type { PluginComponent } from '../../../typesClient.js';
3
- import type { RelationshipFeatureProps } from '../../server/index.js';
3
+ import type { RelationshipFeatureClientProps } from '../../server/index.js';
4
4
  import type { RelationshipData } from '../../server/schema.js';
5
5
  export declare const INSERT_RELATIONSHIP_COMMAND: LexicalCommand<RelationshipData>;
6
- export declare const RelationshipPlugin: PluginComponent<RelationshipFeatureProps>;
6
+ export declare const RelationshipPlugin: PluginComponent<RelationshipFeatureClientProps>;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/plugins/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAc7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,eAAO,MAAM,2BAA2B,EAAE,cAAc,CAAC,gBAAgB,CAExE,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,wBAAwB,CAuCxE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/plugins/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAc7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,eAAO,MAAM,2BAA2B,EAAE,cAAc,CAAC,gBAAgB,CAExE,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,8BAA8B,CAwC9E,CAAA"}
@@ -11,57 +11,53 @@ import { $createRelationshipNode, RelationshipNode } from '../nodes/Relationship
11
11
  import { useEnabledRelationships } from '../utils/useEnabledRelationships.js';
12
12
  export const INSERT_RELATIONSHIP_COMMAND = createCommand('INSERT_RELATIONSHIP_COMMAND');
13
13
  export const RelationshipPlugin = t0 => {
14
- const $ = _c(8);
14
+ const $ = _c(7);
15
15
  const {
16
16
  clientProps
17
17
  } = t0;
18
18
  const [editor] = useLexicalComposerContext();
19
- const t1 = clientProps?.disabledCollections;
20
- const t2 = clientProps?.enabledCollections;
21
- let t3;
22
- if ($[0] !== t1 || $[1] !== t2) {
23
- t3 = {
24
- collectionSlugsBlacklist: t1,
25
- collectionSlugsWhitelist: t2
19
+ let t1;
20
+ if ($[0] !== clientProps.enabledCollectionSlugs) {
21
+ t1 = {
22
+ enabledCollectionSlugs: clientProps.enabledCollectionSlugs
26
23
  };
27
- $[0] = t1;
28
- $[1] = t2;
29
- $[2] = t3;
24
+ $[0] = clientProps.enabledCollectionSlugs;
25
+ $[1] = t1;
30
26
  } else {
31
- t3 = $[2];
27
+ t1 = $[1];
32
28
  }
33
29
  const {
34
30
  enabledCollectionSlugs
35
- } = useEnabledRelationships(t3);
36
- let t4;
37
- let t5;
38
- if ($[3] !== editor) {
39
- t4 = () => {
31
+ } = useEnabledRelationships(t1);
32
+ let t2;
33
+ let t3;
34
+ if ($[2] !== editor) {
35
+ t2 = () => {
40
36
  if (!editor.hasNodes([RelationshipNode])) {
41
37
  throw new Error("RelationshipPlugin: RelationshipNode not registered on editor");
42
38
  }
43
39
  return editor.registerCommand(INSERT_RELATIONSHIP_COMMAND, _temp, COMMAND_PRIORITY_EDITOR);
44
40
  };
45
- t5 = [editor];
46
- $[3] = editor;
47
- $[4] = t4;
48
- $[5] = t5;
41
+ t3 = [editor];
42
+ $[2] = editor;
43
+ $[3] = t2;
44
+ $[4] = t3;
49
45
  } else {
50
- t4 = $[4];
51
- t5 = $[5];
46
+ t2 = $[3];
47
+ t3 = $[4];
52
48
  }
53
- useEffect(t4, t5);
54
- let t6;
55
- if ($[6] !== enabledCollectionSlugs) {
56
- t6 = _jsx(RelationshipDrawer, {
49
+ useEffect(t2, t3);
50
+ let t4;
51
+ if ($[5] !== enabledCollectionSlugs) {
52
+ t4 = _jsx(RelationshipDrawer, {
57
53
  enabledCollectionSlugs
58
54
  });
59
- $[6] = enabledCollectionSlugs;
60
- $[7] = t6;
55
+ $[5] = enabledCollectionSlugs;
56
+ $[6] = t4;
61
57
  } else {
62
- t6 = $[7];
58
+ t4 = $[6];
63
59
  }
64
- return t6;
60
+ return t4;
65
61
  };
66
62
  function _temp(payload) {
67
63
  const selection = $getSelection() || $getPreviousSelection();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$getPreviousSelection","$getSelection","$isParagraphNode","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","useEffect","RelationshipDrawer","$createRelationshipNode","RelationshipNode","useEnabledRelationships","INSERT_RELATIONSHIP_COMMAND","RelationshipPlugin","t0","$","clientProps","editor","t1","disabledCollections","t2","enabledCollections","t3","collectionSlugsBlacklist","collectionSlugsWhitelist","enabledCollectionSlugs","t4","t5","hasNodes","Error","registerCommand","_temp","t6","_jsx","payload","selection","relationshipNode","focus","focusNode","getNode","__first","remove"],"sources":["../../../../../src/features/relationship/client/plugins/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport {\n $getPreviousSelection,\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { RelationshipFeatureProps } from '../../server/index.js'\nimport type { RelationshipData } from '../../server/schema.js'\n\nimport { RelationshipDrawer } from '../drawer/index.js'\nimport { $createRelationshipNode, RelationshipNode } from '../nodes/RelationshipNode.js'\nimport { useEnabledRelationships } from '../utils/useEnabledRelationships.js'\n\nexport const INSERT_RELATIONSHIP_COMMAND: LexicalCommand<RelationshipData> = createCommand(\n 'INSERT_RELATIONSHIP_COMMAND',\n)\n\nexport const RelationshipPlugin: PluginComponent<RelationshipFeatureProps> = ({ clientProps }) => {\n const [editor] = useLexicalComposerContext()\n\n const { enabledCollectionSlugs } = useEnabledRelationships({\n collectionSlugsBlacklist: clientProps?.disabledCollections,\n collectionSlugsWhitelist: clientProps?.enabledCollections,\n })\n\n useEffect(() => {\n if (!editor.hasNodes([RelationshipNode])) {\n throw new Error('RelationshipPlugin: RelationshipNode not registered on editor')\n }\n\n return editor.registerCommand<RelationshipData>(\n INSERT_RELATIONSHIP_COMMAND,\n (payload) => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const relationshipNode = $createRelationshipNode(payload)\n // we need to get the focus node before inserting the block node, as $insertNodeToNearestRoot can change the focus node\n const { focus } = selection\n const focusNode = focus.getNode()\n // Insert relationship node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(relationshipNode)\n\n // Delete the node it it's an empty paragraph\n if ($isParagraphNode(focusNode) && !focusNode.__first) {\n focusNode.remove()\n }\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor])\n\n return <RelationshipDrawer enabledCollectionSlugs={enabledCollectionSlugs} />\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,wBAAwB,QAAQ;AACzC,SACEC,qBAAqB,EACrBC,aAAa,EACbC,gBAAgB,EAChBC,iBAAiB,EACjBC,uBAAuB,EACvBC,aAAa,QACR;AACP,SAASC,SAAS,QAAQ;AAM1B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,uBAAuB,EAAEC,gBAAgB,QAAQ;AAC1D,SAASC,uBAAuB,QAAQ;AAExC,OAAO,MAAMC,2BAAA,GAAgEN,aAAA,CAC3E;AAGF,OAAO,MAAMO,kBAAA,GAAgEC,EAAA;EAAA,MAAAC,CAAA,GAAAjB,EAAA;EAAC;IAAAkB;EAAA,IAAAF,EAAe;EAC3F,OAAAG,MAAA,IAAiBlB,yBAAA;EAGW,MAAAmB,EAAA,GAAAF,WAAA,EAAAG,mBAAA;EACA,MAAAC,EAAA,GAAAJ,WAAA,EAAAK,kBAAA;EAAa,IAAAC,EAAA;EAAA,IAAAP,CAAA,QAAAG,EAAA,IAAAH,CAAA,QAAAK,EAAA;IAFkBE,EAAA;MAAAC,wBAAA,EAC/BL,EAAa;MAAAM,wBAAA,EACbJ;IAAa;IACzCL,CAAA,MAAAG,EAAA;IAAAH,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAHA;IAAAU;EAAA,IAAmCd,uBAAA,CAAwBW,EAG3D;EAAA,IAAAI,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAZ,CAAA,QAAAE,MAAA;IAEUS,EAAA,GAAAA,CAAA;MAAA,KACHT,MAAA,CAAAW,QAAA,EAAAlB,gBAAA,CAAkC;QAAA,UAAAmB,KAAA,CACrB;MAAA;MAAA,OAGXZ,MAAA,CAAAa,eAAA,CAAAlB,2BAAA,EAAAmB,KAAA,EAAA1B,uBAqBL;IAAA;IAEDsB,EAAA,IAACV,MAAA;IAAOF,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAW,EAAA;IAAAX,CAAA,MAAAY,EAAA;EAAA;IAAAD,EAAA,GAAAX,CAAA;IAAAY,EAAA,GAAAZ,CAAA;EAAA;EA5BXR,SAAA,CAAUmB,EA4BV,EAAGC,EAAQ;EAAA,IAAAK,EAAA;EAAA,IAAAjB,CAAA,QAAAU,sBAAA;IAEJO,EAAA,GAAAC,IAAA,CAAAzB,kBAAA;MAAAiB;IAAA,C;;;;;;SAAAO,E;CACT;AAvC6E,SAAAD,MAAAG,OAAA;EAgBrE,MAAAC,SAAA,GAAkBjC,aAAA,MAAmBD,qBAAA;EAAA,IAEjCG,iBAAA,CAAkB+B,SAAA;IACpB,MAAAC,gBAAA,GAAyB3B,uBAAA,CAAwByB,OAAA;IAEjD;MAAAG;IAAA,IAAkBF,SAAA;IAClB,MAAAG,SAAA,GAAkBD,KAAA,CAAAE,OAAA,CAAa;IAE/BvC,wBAAA,CAAyBoC,gBAAA;IAAA,IAGrBjC,gBAAA,CAAiBmC,SAAA,MAAeA,SAAA,CAAAE,OAAiB;MACnDF,SAAA,CAAAG,MAAA,CAAgB;IAAA;EAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$getPreviousSelection","$getSelection","$isParagraphNode","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","useEffect","RelationshipDrawer","$createRelationshipNode","RelationshipNode","useEnabledRelationships","INSERT_RELATIONSHIP_COMMAND","RelationshipPlugin","t0","$","clientProps","editor","t1","enabledCollectionSlugs","t2","t3","hasNodes","Error","registerCommand","_temp","t4","_jsx","payload","selection","relationshipNode","focus","focusNode","getNode","__first","remove"],"sources":["../../../../../src/features/relationship/client/plugins/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport {\n $getPreviousSelection,\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { RelationshipFeatureClientProps } from '../../server/index.js'\nimport type { RelationshipData } from '../../server/schema.js'\n\nimport { RelationshipDrawer } from '../drawer/index.js'\nimport { $createRelationshipNode, RelationshipNode } from '../nodes/RelationshipNode.js'\nimport { useEnabledRelationships } from '../utils/useEnabledRelationships.js'\n\nexport const INSERT_RELATIONSHIP_COMMAND: LexicalCommand<RelationshipData> = createCommand(\n 'INSERT_RELATIONSHIP_COMMAND',\n)\n\nexport const RelationshipPlugin: PluginComponent<RelationshipFeatureClientProps> = ({\n clientProps,\n}) => {\n const [editor] = useLexicalComposerContext()\n\n const { enabledCollectionSlugs } = useEnabledRelationships({\n enabledCollectionSlugs: clientProps.enabledCollectionSlugs,\n })\n\n useEffect(() => {\n if (!editor.hasNodes([RelationshipNode])) {\n throw new Error('RelationshipPlugin: RelationshipNode not registered on editor')\n }\n\n return editor.registerCommand<RelationshipData>(\n INSERT_RELATIONSHIP_COMMAND,\n (payload) => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const relationshipNode = $createRelationshipNode(payload)\n // we need to get the focus node before inserting the block node, as $insertNodeToNearestRoot can change the focus node\n const { focus } = selection\n const focusNode = focus.getNode()\n // Insert relationship node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(relationshipNode)\n\n // Delete the node it it's an empty paragraph\n if ($isParagraphNode(focusNode) && !focusNode.__first) {\n focusNode.remove()\n }\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor])\n\n return <RelationshipDrawer enabledCollectionSlugs={enabledCollectionSlugs} />\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,wBAAwB,QAAQ;AACzC,SACEC,qBAAqB,EACrBC,aAAa,EACbC,gBAAgB,EAChBC,iBAAiB,EACjBC,uBAAuB,EACvBC,aAAa,QACR;AACP,SAASC,SAAS,QAAQ;AAM1B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,uBAAuB,EAAEC,gBAAgB,QAAQ;AAC1D,SAASC,uBAAuB,QAAQ;AAExC,OAAO,MAAMC,2BAAA,GAAgEN,aAAA,CAC3E;AAGF,OAAO,MAAMO,kBAAA,GAAsEC,EAAA;EAAA,MAAAC,CAAA,GAAAjB,EAAA;EAAC;IAAAkB;EAAA,IAAAF,EAEnF;EACC,OAAAG,MAAA,IAAiBlB,yBAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAH,CAAA,QAAAC,WAAA,CAAAG,sBAAA;IAE0CD,EAAA;MAAAC,sBAAA,EACjCH,WAAA,CAAAG;IAAA;IAC1BJ,CAAA,MAAAC,WAAA,CAAAG,sBAAA;IAAAJ,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAFA;IAAAI;EAAA,IAAmCR,uBAAA,CAAwBO,EAE3D;EAAA,IAAAE,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAN,CAAA,QAAAE,MAAA;IAEUG,EAAA,GAAAA,CAAA;MAAA,KACHH,MAAA,CAAAK,QAAA,EAAAZ,gBAAA,CAAkC;QAAA,UAAAa,KAAA,CACrB;MAAA;MAAA,OAGXN,MAAA,CAAAO,eAAA,CAAAZ,2BAAA,EAAAa,KAAA,EAAApB,uBAqBL;IAAA;IAEDgB,EAAA,IAACJ,MAAA;IAAOF,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAD,EAAA,GAAAL,CAAA;IAAAM,EAAA,GAAAN,CAAA;EAAA;EA5BXR,SAAA,CAAUa,EA4BV,EAAGC,EAAQ;EAAA,IAAAK,EAAA;EAAA,IAAAX,CAAA,QAAAI,sBAAA;IAEJO,EAAA,GAAAC,IAAA,CAAAnB,kBAAA;MAAAW;IAAA,C;;;;;;SAAAO,E;CACT;AAxCmF,SAAAD,MAAAG,OAAA;EAiB3E,MAAAC,SAAA,GAAkB3B,aAAA,MAAmBD,qBAAA;EAAA,IAEjCG,iBAAA,CAAkByB,SAAA;IACpB,MAAAC,gBAAA,GAAyBrB,uBAAA,CAAwBmB,OAAA;IAEjD;MAAAG;IAAA,IAAkBF,SAAA;IAClB,MAAAG,SAAA,GAAkBD,KAAA,CAAAE,OAAA,CAAa;IAE/BjC,wBAAA,CAAyB8B,gBAAA;IAAA,IAGrB3B,gBAAA,CAAiB6B,SAAA,MAAeA,SAAA,CAAAE,OAAiB;MACnDF,SAAA,CAAAG,MAAA,CAAgB;IAAA;EAAA;EAAA;AAAA","ignoreList":[]}