@payloadcms/richtext-lexical 3.0.0-beta.3 → 3.0.0-beta.30

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 (645) hide show
  1. package/dist/cell/index.d.ts +1 -1
  2. package/dist/cell/index.d.ts.map +1 -1
  3. package/dist/cell/index.js +2 -4
  4. package/dist/cell/index.js.map +1 -1
  5. package/dist/exports/components.d.ts +8 -2
  6. package/dist/exports/components.d.ts.map +1 -1
  7. package/dist/exports/components.js +8 -2
  8. package/dist/exports/components.js.map +1 -1
  9. package/dist/field/Field.d.ts +0 -2
  10. package/dist/field/Field.d.ts.map +1 -1
  11. package/dist/field/Field.js.map +1 -1
  12. package/dist/field/features/align/feature.client.d.ts.map +1 -1
  13. package/dist/field/features/align/feature.client.js +127 -54
  14. package/dist/field/features/align/feature.client.js.map +1 -1
  15. package/dist/field/features/align/toolbarAlignGroup.d.ts +3 -0
  16. package/dist/field/features/align/toolbarAlignGroup.d.ts.map +1 -0
  17. package/dist/field/features/align/toolbarAlignGroup.js +12 -0
  18. package/dist/field/features/align/toolbarAlignGroup.js.map +1 -0
  19. package/dist/field/features/blockquote/feature.client.d.ts +1 -1
  20. package/dist/field/features/blockquote/feature.client.d.ts.map +1 -1
  21. package/dist/field/features/blockquote/feature.client.js +53 -40
  22. package/dist/field/features/blockquote/feature.client.js.map +1 -1
  23. package/dist/field/features/blockquote/feature.server.d.ts +1 -1
  24. package/dist/field/features/blockquote/feature.server.d.ts.map +1 -1
  25. package/dist/field/features/blockquote/feature.server.js +7 -7
  26. package/dist/field/features/blockquote/feature.server.js.map +1 -1
  27. package/dist/field/features/blockquote/markdownTransformer.d.ts.map +1 -1
  28. package/dist/field/features/blockquote/markdownTransformer.js +2 -4
  29. package/dist/field/features/blockquote/markdownTransformer.js.map +1 -1
  30. package/dist/field/features/blocks/component/BlockContent.d.ts.map +1 -1
  31. package/dist/field/features/blocks/component/BlockContent.js +3 -5
  32. package/dist/field/features/blocks/component/BlockContent.js.map +1 -1
  33. package/dist/field/features/blocks/component/index.d.ts.map +1 -1
  34. package/dist/field/features/blocks/component/index.js +37 -4
  35. package/dist/field/features/blocks/component/index.js.map +1 -1
  36. package/dist/field/features/blocks/drawer/index.d.ts.map +1 -1
  37. package/dist/field/features/blocks/drawer/index.js +2 -4
  38. package/dist/field/features/blocks/drawer/index.js.map +1 -1
  39. package/dist/field/features/blocks/feature.client.d.ts.map +1 -1
  40. package/dist/field/features/blocks/feature.client.js +56 -27
  41. package/dist/field/features/blocks/feature.client.js.map +1 -1
  42. package/dist/field/features/blocks/feature.server.d.ts +2 -5
  43. package/dist/field/features/blocks/feature.server.d.ts.map +1 -1
  44. package/dist/field/features/blocks/feature.server.js +109 -77
  45. package/dist/field/features/blocks/feature.server.js.map +1 -1
  46. package/dist/field/features/blocks/nodes/BlocksNode.d.ts +1 -3
  47. package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  48. package/dist/field/features/blocks/nodes/BlocksNode.js +1 -2
  49. package/dist/field/features/blocks/nodes/BlocksNode.js.map +1 -1
  50. package/dist/field/features/blocks/plugin/commands.d.ts.map +1 -1
  51. package/dist/field/features/blocks/plugin/commands.js +1 -2
  52. package/dist/field/features/blocks/plugin/commands.js.map +1 -1
  53. package/dist/field/features/blocks/plugin/index.d.ts +3 -2
  54. package/dist/field/features/blocks/plugin/index.d.ts.map +1 -1
  55. package/dist/field/features/blocks/plugin/index.js +5 -8
  56. package/dist/field/features/blocks/plugin/index.js.map +1 -1
  57. package/dist/field/features/blocks/populationPromise.d.ts.map +1 -1
  58. package/dist/field/features/blocks/populationPromise.js +4 -18
  59. package/dist/field/features/blocks/populationPromise.js.map +1 -1
  60. package/dist/field/features/blocks/validate.d.ts.map +1 -1
  61. package/dist/field/features/blocks/validate.js +22 -36
  62. package/dist/field/features/blocks/validate.js.map +1 -1
  63. package/dist/field/features/converters/html/field/index.d.ts +8 -2
  64. package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
  65. package/dist/field/features/converters/html/field/index.js +6 -3
  66. package/dist/field/features/converters/html/field/index.js.map +1 -1
  67. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.d.ts.map +1 -1
  68. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js.map +1 -1
  69. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.d.ts.map +1 -1
  70. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.js +1 -1
  71. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.js.map +1 -1
  72. package/dist/field/features/debug/testRecorder/plugin/index.d.ts +5 -0
  73. package/dist/field/features/debug/testRecorder/plugin/index.d.ts.map +1 -0
  74. package/dist/field/features/debug/{testrecorder → testRecorder}/plugin/index.js +2 -4
  75. package/dist/field/features/debug/testRecorder/plugin/index.js.map +1 -0
  76. package/dist/field/features/debug/{treeview → treeView}/feature.client.d.ts.map +1 -1
  77. package/dist/field/features/debug/{treeview → treeView}/feature.client.js.map +1 -1
  78. package/dist/field/features/debug/{treeview → treeView}/feature.server.d.ts.map +1 -1
  79. package/dist/field/features/debug/{treeview → treeView}/feature.server.js +1 -1
  80. package/dist/field/features/debug/{treeview → treeView}/feature.server.js.map +1 -1
  81. package/dist/field/features/debug/treeView/plugin/index.d.ts +4 -0
  82. package/dist/field/features/debug/treeView/plugin/index.d.ts.map +1 -0
  83. package/dist/field/features/debug/{treeview → treeView}/plugin/index.js +4 -6
  84. package/dist/field/features/debug/treeView/plugin/index.js.map +1 -0
  85. package/dist/field/features/format/bold/feature.client.d.ts.map +1 -1
  86. package/dist/field/features/format/bold/feature.client.js +26 -23
  87. package/dist/field/features/format/bold/feature.client.js.map +1 -1
  88. package/dist/field/features/format/inlineCode/feature.client.d.ts.map +1 -0
  89. package/dist/field/features/format/inlineCode/feature.client.js +46 -0
  90. package/dist/field/features/format/inlineCode/feature.client.js.map +1 -0
  91. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.d.ts.map +1 -1
  92. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.js +1 -1
  93. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.js.map +1 -1
  94. package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts.map +1 -1
  95. package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js.map +1 -1
  96. package/dist/field/features/format/italic/feature.client.d.ts.map +1 -1
  97. package/dist/field/features/format/italic/feature.client.js +27 -24
  98. package/dist/field/features/format/italic/feature.client.js.map +1 -1
  99. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts +3 -0
  100. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts.map +1 -0
  101. package/dist/field/features/format/shared/toolbarFormatGroup.js +10 -0
  102. package/dist/field/features/format/shared/toolbarFormatGroup.js.map +1 -0
  103. package/dist/field/features/format/strikethrough/feature.client.d.ts.map +1 -1
  104. package/dist/field/features/format/strikethrough/feature.client.js +27 -24
  105. package/dist/field/features/format/strikethrough/feature.client.js.map +1 -1
  106. package/dist/field/features/format/subscript/feature.client.d.ts.map +1 -1
  107. package/dist/field/features/format/subscript/feature.client.js +25 -22
  108. package/dist/field/features/format/subscript/feature.client.js.map +1 -1
  109. package/dist/field/features/format/superscript/feature.client.d.ts.map +1 -1
  110. package/dist/field/features/format/superscript/feature.client.js +25 -22
  111. package/dist/field/features/format/superscript/feature.client.js.map +1 -1
  112. package/dist/field/features/format/underline/feature.client.d.ts.map +1 -1
  113. package/dist/field/features/format/underline/feature.client.js +25 -22
  114. package/dist/field/features/format/underline/feature.client.js.map +1 -1
  115. package/dist/field/features/heading/feature.client.d.ts.map +1 -1
  116. package/dist/field/features/heading/feature.client.js +71 -54
  117. package/dist/field/features/heading/feature.client.js.map +1 -1
  118. package/dist/field/features/heading/feature.server.d.ts.map +1 -1
  119. package/dist/field/features/heading/feature.server.js +5 -5
  120. package/dist/field/features/heading/feature.server.js.map +1 -1
  121. package/dist/field/features/heading/markdownTransformer.d.ts.map +1 -1
  122. package/dist/field/features/heading/markdownTransformer.js +1 -2
  123. package/dist/field/features/heading/markdownTransformer.js.map +1 -1
  124. package/dist/field/features/horizontalRule/component/index.d.ts +10 -0
  125. package/dist/field/features/horizontalRule/component/index.d.ts.map +1 -0
  126. package/dist/field/features/horizontalRule/component/index.js +62 -0
  127. package/dist/field/features/horizontalRule/component/index.js.map +1 -0
  128. package/dist/field/features/horizontalRule/feature.client.d.ts +3 -0
  129. package/dist/field/features/horizontalRule/feature.client.d.ts.map +1 -0
  130. package/dist/field/features/horizontalRule/feature.client.js +76 -0
  131. package/dist/field/features/horizontalRule/feature.client.js.map +1 -0
  132. package/dist/field/features/horizontalRule/feature.server.d.ts +3 -0
  133. package/dist/field/features/horizontalRule/feature.server.d.ts.map +1 -0
  134. package/dist/field/features/horizontalRule/feature.server.js +37 -0
  135. package/dist/field/features/horizontalRule/feature.server.js.map +1 -0
  136. package/dist/field/features/horizontalRule/markdownTransformer.d.ts +3 -0
  137. package/dist/field/features/horizontalRule/markdownTransformer.d.ts.map +1 -0
  138. package/dist/field/features/horizontalRule/markdownTransformer.js +23 -0
  139. package/dist/field/features/horizontalRule/markdownTransformer.js.map +1 -0
  140. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.d.ts +53 -0
  141. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.d.ts.map +1 -0
  142. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js +88 -0
  143. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js.map +1 -0
  144. package/dist/field/features/horizontalRule/plugin/index.d.ts +7 -0
  145. package/dist/field/features/horizontalRule/plugin/index.d.ts.map +1 -0
  146. package/dist/field/features/horizontalRule/plugin/index.js +31 -0
  147. package/dist/field/features/horizontalRule/plugin/index.js.map +1 -0
  148. package/dist/field/features/horizontalRule/plugin/index.scss +20 -0
  149. package/dist/field/features/indent/feature.client.d.ts.map +1 -1
  150. package/dist/field/features/indent/feature.client.js +43 -42
  151. package/dist/field/features/indent/feature.client.js.map +1 -1
  152. package/dist/field/features/indent/toolbarIndentGroup.d.ts +3 -0
  153. package/dist/field/features/indent/toolbarIndentGroup.d.ts.map +1 -0
  154. package/dist/field/features/indent/toolbarIndentGroup.js +10 -0
  155. package/dist/field/features/indent/toolbarIndentGroup.js.map +1 -0
  156. package/dist/field/features/link/drawer/baseFields.d.ts +2 -2
  157. package/dist/field/features/link/drawer/baseFields.d.ts.map +1 -1
  158. package/dist/field/features/link/drawer/baseFields.js +30 -43
  159. package/dist/field/features/link/drawer/baseFields.js.map +1 -1
  160. package/dist/field/features/link/drawer/index.js +3 -2
  161. package/dist/field/features/link/drawer/index.js.map +1 -1
  162. package/dist/field/features/link/drawer/types.d.ts +4 -2
  163. package/dist/field/features/link/drawer/types.d.ts.map +1 -1
  164. package/dist/field/features/link/drawer/types.js.map +1 -1
  165. package/dist/field/features/link/feature.client.d.ts.map +1 -1
  166. package/dist/field/features/link/feature.client.js +59 -47
  167. package/dist/field/features/link/feature.client.js.map +1 -1
  168. package/dist/field/features/link/feature.server.d.ts +10 -5
  169. package/dist/field/features/link/feature.server.d.ts.map +1 -1
  170. package/dist/field/features/link/feature.server.js +48 -9
  171. package/dist/field/features/link/feature.server.js.map +1 -1
  172. package/dist/field/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  173. package/dist/field/features/link/nodes/AutoLinkNode.js +1 -2
  174. package/dist/field/features/link/nodes/AutoLinkNode.js.map +1 -1
  175. package/dist/field/features/link/nodes/LinkNode.d.ts +1 -3
  176. package/dist/field/features/link/nodes/LinkNode.d.ts.map +1 -1
  177. package/dist/field/features/link/nodes/LinkNode.js +2 -4
  178. package/dist/field/features/link/nodes/LinkNode.js.map +1 -1
  179. package/dist/field/features/link/plugins/autoLink/index.d.ts +3 -2
  180. package/dist/field/features/link/plugins/autoLink/index.d.ts.map +1 -1
  181. package/dist/field/features/link/plugins/autoLink/index.js +5 -8
  182. package/dist/field/features/link/plugins/autoLink/index.js.map +1 -1
  183. package/dist/field/features/link/plugins/clickableLink/index.d.ts +3 -2
  184. package/dist/field/features/link/plugins/clickableLink/index.d.ts.map +1 -1
  185. package/dist/field/features/link/plugins/clickableLink/index.js +2 -2
  186. package/dist/field/features/link/plugins/clickableLink/index.js.map +1 -1
  187. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
  188. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -2
  189. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  190. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  191. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +93 -69
  192. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  193. package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts +3 -4
  194. package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  195. package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -1
  196. package/dist/field/features/link/plugins/floatingLinkEditor/index.scss +11 -3
  197. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts +1 -3
  198. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
  199. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +12 -30
  200. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -1
  201. package/dist/field/features/link/plugins/link/index.d.ts +3 -1
  202. package/dist/field/features/link/plugins/link/index.d.ts.map +1 -1
  203. package/dist/field/features/link/plugins/link/index.js +5 -14
  204. package/dist/field/features/link/plugins/link/index.js.map +1 -1
  205. package/dist/field/features/link/populationPromise.d.ts.map +1 -1
  206. package/dist/field/features/link/populationPromise.js +10 -25
  207. package/dist/field/features/link/populationPromise.js.map +1 -1
  208. package/dist/field/features/link/validate.d.ts +5 -0
  209. package/dist/field/features/link/validate.d.ts.map +1 -0
  210. package/dist/field/features/link/validate.js +32 -0
  211. package/dist/field/features/link/validate.js.map +1 -0
  212. package/dist/field/features/lists/checklist/feature.client.d.ts +1 -1
  213. package/dist/field/features/lists/checklist/feature.client.d.ts.map +1 -1
  214. package/dist/field/features/lists/checklist/feature.client.js +56 -32
  215. package/dist/field/features/lists/checklist/feature.client.js.map +1 -1
  216. package/dist/field/features/lists/checklist/feature.server.d.ts +1 -1
  217. package/dist/field/features/lists/checklist/feature.server.d.ts.map +1 -1
  218. package/dist/field/features/lists/checklist/feature.server.js +10 -10
  219. package/dist/field/features/lists/checklist/feature.server.js.map +1 -1
  220. package/dist/field/features/lists/checklist/markdownTransformers.d.ts.map +1 -1
  221. package/dist/field/features/lists/checklist/markdownTransformers.js +2 -3
  222. package/dist/field/features/lists/checklist/markdownTransformers.js.map +1 -1
  223. package/dist/field/features/lists/checklist/plugin/index.d.ts +2 -2
  224. package/dist/field/features/lists/checklist/plugin/index.d.ts.map +1 -1
  225. package/dist/field/features/lists/checklist/plugin/index.js +3 -4
  226. package/dist/field/features/lists/checklist/plugin/index.js.map +1 -1
  227. package/dist/field/features/lists/htmlConverter.d.ts.map +1 -1
  228. package/dist/field/features/lists/htmlConverter.js +13 -6
  229. package/dist/field/features/lists/htmlConverter.js.map +1 -1
  230. package/dist/field/features/lists/orderedList/feature.client.d.ts.map +1 -0
  231. package/dist/field/features/lists/orderedList/feature.client.js +96 -0
  232. package/dist/field/features/lists/orderedList/feature.client.js.map +1 -0
  233. package/dist/field/features/lists/orderedList/feature.server.d.ts.map +1 -0
  234. package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.js +7 -7
  235. package/dist/field/features/lists/orderedList/feature.server.js.map +1 -0
  236. package/dist/field/features/lists/orderedList/markdownTransformer.d.ts.map +1 -0
  237. package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.js +2 -3
  238. package/dist/field/features/lists/orderedList/markdownTransformer.js.map +1 -0
  239. package/dist/field/features/lists/plugin/index.d.ts +2 -2
  240. package/dist/field/features/lists/plugin/index.d.ts.map +1 -1
  241. package/dist/field/features/lists/plugin/index.js +3 -4
  242. package/dist/field/features/lists/plugin/index.js.map +1 -1
  243. package/dist/field/features/lists/{common → shared}/markdown.d.ts.map +1 -1
  244. package/dist/field/features/lists/{common → shared}/markdown.js +1 -2
  245. package/dist/field/features/lists/shared/markdown.js.map +1 -0
  246. package/dist/field/features/lists/unorderedList/feature.client.d.ts.map +1 -0
  247. package/dist/field/features/lists/unorderedList/feature.client.js +96 -0
  248. package/dist/field/features/lists/unorderedList/feature.client.js.map +1 -0
  249. package/dist/field/features/lists/unorderedList/feature.server.d.ts.map +1 -0
  250. package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.js +7 -7
  251. package/dist/field/features/lists/unorderedList/feature.server.js.map +1 -0
  252. package/dist/field/features/lists/unorderedList/markdownTransformer.d.ts.map +1 -0
  253. package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.js +2 -3
  254. package/dist/field/features/lists/unorderedList/markdownTransformer.js.map +1 -0
  255. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  256. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -4
  257. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  258. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -3
  259. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  260. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +2 -4
  261. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  262. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts +1 -1
  263. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +1 -1
  264. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -1
  265. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +2 -2
  266. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -1
  267. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +1 -1
  268. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -4
  269. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  270. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  271. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -4
  272. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  273. package/dist/field/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
  274. package/dist/field/features/migrations/slateToLexical/converter/index.js +2 -1
  275. package/dist/field/features/migrations/slateToLexical/converter/index.js.map +1 -1
  276. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -3
  277. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  278. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +2 -4
  279. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  280. package/dist/field/features/paragraph/feature.client.d.ts.map +1 -1
  281. package/dist/field/features/paragraph/feature.client.js +45 -33
  282. package/dist/field/features/paragraph/feature.client.js.map +1 -1
  283. package/dist/field/features/relationship/drawer/commands.d.ts.map +1 -1
  284. package/dist/field/features/relationship/drawer/commands.js +1 -2
  285. package/dist/field/features/relationship/drawer/commands.js.map +1 -1
  286. package/dist/field/features/relationship/drawer/index.d.ts.map +1 -1
  287. package/dist/field/features/relationship/drawer/index.js +7 -13
  288. package/dist/field/features/relationship/drawer/index.js.map +1 -1
  289. package/dist/field/features/relationship/feature.client.d.ts.map +1 -1
  290. package/dist/field/features/relationship/feature.client.js +37 -15
  291. package/dist/field/features/relationship/feature.client.js.map +1 -1
  292. package/dist/field/features/relationship/feature.server.d.ts +10 -1
  293. package/dist/field/features/relationship/feature.server.d.ts.map +1 -1
  294. package/dist/field/features/relationship/feature.server.js +5 -4
  295. package/dist/field/features/relationship/feature.server.js.map +1 -1
  296. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts +3 -8
  297. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  298. package/dist/field/features/relationship/nodes/RelationshipNode.js +8 -8
  299. package/dist/field/features/relationship/nodes/RelationshipNode.js.map +1 -1
  300. package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  301. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +56 -7
  302. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  303. package/dist/field/features/relationship/plugins/index.d.ts +2 -2
  304. package/dist/field/features/relationship/plugins/index.d.ts.map +1 -1
  305. package/dist/field/features/relationship/plugins/index.js +9 -12
  306. package/dist/field/features/relationship/plugins/index.js.map +1 -1
  307. package/dist/field/features/relationship/populationPromise.d.ts +2 -1
  308. package/dist/field/features/relationship/populationPromise.d.ts.map +1 -1
  309. package/dist/field/features/relationship/populationPromise.js +25 -19
  310. package/dist/field/features/relationship/populationPromise.js.map +1 -1
  311. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts +3 -0
  312. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -0
  313. package/dist/field/features/shared/toolbar/addDropdownGroup.js +12 -0
  314. package/dist/field/features/shared/toolbar/addDropdownGroup.js.map +1 -0
  315. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts +3 -0
  316. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -0
  317. package/dist/field/features/shared/toolbar/featureButtonsGroup.js +10 -0
  318. package/dist/field/features/shared/toolbar/featureButtonsGroup.js.map +1 -0
  319. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts +3 -0
  320. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -0
  321. package/dist/field/features/shared/toolbar/textDropdownGroup.js +12 -0
  322. package/dist/field/features/shared/toolbar/textDropdownGroup.js.map +1 -0
  323. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts +4 -0
  324. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -0
  325. package/dist/field/features/toolbars/fixed/Toolbar/index.js +152 -0
  326. package/dist/field/features/toolbars/fixed/Toolbar/index.js.map +1 -0
  327. package/dist/field/features/toolbars/fixed/Toolbar/index.scss +81 -0
  328. package/dist/field/features/toolbars/fixed/feature.client.d.ts +3 -0
  329. package/dist/field/features/toolbars/fixed/feature.client.d.ts.map +1 -0
  330. package/dist/field/features/toolbars/fixed/feature.client.js +20 -0
  331. package/dist/field/features/toolbars/fixed/feature.client.js.map +1 -0
  332. package/dist/field/features/toolbars/fixed/feature.server.d.ts +3 -0
  333. package/dist/field/features/toolbars/fixed/feature.server.d.ts.map +1 -0
  334. package/dist/field/features/toolbars/fixed/feature.server.js +16 -0
  335. package/dist/field/features/toolbars/fixed/feature.server.js.map +1 -0
  336. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts +4 -0
  337. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts.map +1 -0
  338. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/inline/Toolbar}/index.js +112 -70
  339. package/dist/field/features/toolbars/inline/Toolbar/index.js.map +1 -0
  340. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/inline/Toolbar}/index.scss +7 -11
  341. package/dist/field/features/toolbars/inline/feature.client.d.ts +3 -0
  342. package/dist/field/features/toolbars/inline/feature.client.d.ts.map +1 -0
  343. package/dist/field/features/toolbars/inline/feature.client.js +20 -0
  344. package/dist/field/features/toolbars/inline/feature.client.js.map +1 -0
  345. package/dist/field/features/toolbars/inline/feature.server.d.ts +3 -0
  346. package/dist/field/features/toolbars/inline/feature.server.d.ts.map +1 -0
  347. package/dist/field/features/toolbars/inline/feature.server.js +16 -0
  348. package/dist/field/features/toolbars/inline/feature.server.js.map +1 -0
  349. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts +10 -0
  350. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -0
  351. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarButton/index.js +29 -19
  352. package/dist/field/features/toolbars/shared/ToolbarButton/index.js.map +1 -0
  353. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarButton/index.scss +3 -1
  354. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +23 -0
  355. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -0
  356. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarDropdown/DropDown.js +27 -72
  357. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -0
  358. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts +23 -0
  359. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -0
  360. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js +139 -0
  361. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -0
  362. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarDropdown/index.scss +25 -13
  363. package/dist/field/features/toolbars/types.d.ts +48 -0
  364. package/dist/field/features/toolbars/types.d.ts.map +1 -0
  365. package/dist/field/features/toolbars/types.js.map +1 -0
  366. package/dist/field/features/typeUtilities.d.ts +8 -0
  367. package/dist/field/features/typeUtilities.d.ts.map +1 -0
  368. package/dist/field/features/typeUtilities.js +8 -0
  369. package/dist/field/features/typeUtilities.js.map +1 -0
  370. package/dist/field/features/types.d.ts +128 -57
  371. package/dist/field/features/types.d.ts.map +1 -1
  372. package/dist/field/features/types.js.map +1 -1
  373. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
  374. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +5 -6
  375. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -1
  376. package/dist/field/features/upload/component/index.d.ts.map +1 -1
  377. package/dist/field/features/upload/component/index.js +59 -9
  378. package/dist/field/features/upload/component/index.js.map +1 -1
  379. package/dist/field/features/upload/drawer/commands.d.ts.map +1 -1
  380. package/dist/field/features/upload/drawer/commands.js +1 -2
  381. package/dist/field/features/upload/drawer/commands.js.map +1 -1
  382. package/dist/field/features/upload/drawer/index.d.ts.map +1 -1
  383. package/dist/field/features/upload/drawer/index.js +8 -12
  384. package/dist/field/features/upload/drawer/index.js.map +1 -1
  385. package/dist/field/features/upload/feature.client.d.ts.map +1 -1
  386. package/dist/field/features/upload/feature.client.js +35 -10
  387. package/dist/field/features/upload/feature.client.js.map +1 -1
  388. package/dist/field/features/upload/feature.server.d.ts +10 -3
  389. package/dist/field/features/upload/feature.server.d.ts.map +1 -1
  390. package/dist/field/features/upload/feature.server.js +39 -11
  391. package/dist/field/features/upload/feature.server.js.map +1 -1
  392. package/dist/field/features/upload/nodes/UploadNode.d.ts +2 -14
  393. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  394. package/dist/field/features/upload/nodes/UploadNode.js +24 -11
  395. package/dist/field/features/upload/nodes/UploadNode.js.map +1 -1
  396. package/dist/field/features/upload/plugin/index.d.ts +5 -4
  397. package/dist/field/features/upload/plugin/index.d.ts.map +1 -1
  398. package/dist/field/features/upload/plugin/index.js +6 -11
  399. package/dist/field/features/upload/plugin/index.js.map +1 -1
  400. package/dist/field/features/upload/populationPromise.d.ts.map +1 -1
  401. package/dist/field/features/upload/populationPromise.js +15 -9
  402. package/dist/field/features/upload/populationPromise.js.map +1 -1
  403. package/dist/field/features/upload/validate.d.ts +2 -1
  404. package/dist/field/features/upload/validate.d.ts.map +1 -1
  405. package/dist/field/features/upload/validate.js +37 -12
  406. package/dist/field/features/upload/validate.js.map +1 -1
  407. package/dist/field/index.d.ts +1 -1
  408. package/dist/field/index.d.ts.map +1 -1
  409. package/dist/field/index.js.map +1 -1
  410. package/dist/field/lexical/EditorFocusProvider.d.ts +20 -0
  411. package/dist/field/lexical/EditorFocusProvider.d.ts.map +1 -0
  412. package/dist/field/lexical/EditorFocusProvider.js +78 -0
  413. package/dist/field/lexical/EditorFocusProvider.js.map +1 -0
  414. package/dist/field/lexical/EditorPlugin.d.ts +1 -0
  415. package/dist/field/lexical/EditorPlugin.d.ts.map +1 -1
  416. package/dist/field/lexical/EditorPlugin.js +6 -3
  417. package/dist/field/lexical/EditorPlugin.js.map +1 -1
  418. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  419. package/dist/field/lexical/LexicalEditor.js +31 -15
  420. package/dist/field/lexical/LexicalEditor.js.map +1 -1
  421. package/dist/field/lexical/LexicalEditor.scss +3 -19
  422. package/dist/field/lexical/LexicalProvider.d.ts +1 -1
  423. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  424. package/dist/field/lexical/LexicalProvider.js +4 -4
  425. package/dist/field/lexical/LexicalProvider.js.map +1 -1
  426. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts +2 -3
  427. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  428. package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -1
  429. package/dist/field/lexical/config/client/default.d.ts +1 -1
  430. package/dist/field/lexical/config/client/default.d.ts.map +1 -1
  431. package/dist/field/lexical/config/client/default.js.map +1 -1
  432. package/dist/field/lexical/config/client/sanitize.d.ts +1 -1
  433. package/dist/field/lexical/config/client/sanitize.d.ts.map +1 -1
  434. package/dist/field/lexical/config/client/sanitize.js +81 -32
  435. package/dist/field/lexical/config/client/sanitize.js.map +1 -1
  436. package/dist/field/lexical/config/server/default.d.ts +2 -3
  437. package/dist/field/lexical/config/server/default.d.ts.map +1 -1
  438. package/dist/field/lexical/config/server/default.js +12 -10
  439. package/dist/field/lexical/config/server/default.js.map +1 -1
  440. package/dist/field/lexical/config/server/loader.d.ts +5 -2
  441. package/dist/field/lexical/config/server/loader.d.ts.map +1 -1
  442. package/dist/field/lexical/config/server/loader.js +4 -2
  443. package/dist/field/lexical/config/server/loader.js.map +1 -1
  444. package/dist/field/lexical/config/server/sanitize.d.ts +2 -1
  445. package/dist/field/lexical/config/server/sanitize.d.ts.map +1 -1
  446. package/dist/field/lexical/config/server/sanitize.js +23 -8
  447. package/dist/field/lexical/config/server/sanitize.js.map +1 -1
  448. package/dist/field/lexical/config/types.d.ts +1 -1
  449. package/dist/field/lexical/config/types.d.ts.map +1 -1
  450. package/dist/field/lexical/config/types.js.map +1 -1
  451. package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
  452. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +1 -2
  453. package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  454. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +9 -9
  455. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  456. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +74 -77
  457. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  458. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +4 -4
  459. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  460. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +6 -9
  461. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  462. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +17 -25
  463. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  464. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -37
  465. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  466. package/dist/field/lexical/plugins/SlashMenu/index.d.ts +2 -2
  467. package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  468. package/dist/field/lexical/plugins/SlashMenu/index.js +72 -67
  469. package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -1
  470. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  471. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +13 -10
  472. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  473. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts +1 -1
  474. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +1 -1
  475. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +3 -4
  476. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +1 -1
  477. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  478. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +16 -10
  479. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  480. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +8 -0
  481. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  482. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +25 -6
  483. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  484. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts +9 -0
  485. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -0
  486. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +35 -0
  487. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -0
  488. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -1
  489. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +1 -2
  490. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  491. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts +1 -1
  492. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  493. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +17 -7
  494. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  495. package/dist/field/lexical/theme/EditorTheme.scss +13 -14
  496. package/dist/field/lexical/ui/ContentEditable.d.ts.map +1 -1
  497. package/dist/field/lexical/ui/ContentEditable.js +1 -2
  498. package/dist/field/lexical/ui/ContentEditable.js.map +1 -1
  499. package/dist/field/lexical/ui/icons/Add/index.d.ts +3 -0
  500. package/dist/field/lexical/ui/icons/Add/index.d.ts.map +1 -0
  501. package/dist/field/lexical/ui/icons/Add/index.js +16 -0
  502. package/dist/field/lexical/ui/icons/Add/index.js.map +1 -0
  503. package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts +3 -0
  504. package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -0
  505. package/dist/field/lexical/ui/icons/HorizontalRule/index.js +19 -0
  506. package/dist/field/lexical/ui/icons/HorizontalRule/index.js.map +1 -0
  507. package/dist/field/lexical/utils/getSelectedNode.d.ts.map +1 -1
  508. package/dist/field/lexical/utils/getSelectedNode.js +1 -2
  509. package/dist/field/lexical/utils/getSelectedNode.js.map +1 -1
  510. package/dist/field/lexical/utils/nodeFormat.d.ts +2 -1
  511. package/dist/field/lexical/utils/nodeFormat.d.ts.map +1 -1
  512. package/dist/field/lexical/utils/nodeFormat.js.map +1 -1
  513. package/dist/field/lexical/utils/setFloatingElemPosition.d.ts +11 -1
  514. package/dist/field/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  515. package/dist/field/lexical/utils/setFloatingElemPosition.js +16 -13
  516. package/dist/field/lexical/utils/setFloatingElemPosition.js.map +1 -1
  517. package/dist/field/lexical/utils/url.d.ts.map +1 -1
  518. package/dist/field/lexical/utils/url.js +3 -0
  519. package/dist/field/lexical/utils/url.js.map +1 -1
  520. package/dist/forEachNodeRecursively.d.ts +10 -0
  521. package/dist/forEachNodeRecursively.d.ts.map +1 -0
  522. package/dist/forEachNodeRecursively.js +24 -0
  523. package/dist/forEachNodeRecursively.js.map +1 -0
  524. package/dist/generateComponentMap.d.ts.map +1 -1
  525. package/dist/generateComponentMap.js +16 -22
  526. package/dist/generateComponentMap.js.map +1 -1
  527. package/dist/generateSchemaMap.d.ts.map +1 -1
  528. package/dist/generateSchemaMap.js +4 -12
  529. package/dist/generateSchemaMap.js.map +1 -1
  530. package/dist/index.d.ts +24 -20
  531. package/dist/index.d.ts.map +1 -1
  532. package/dist/index.js +275 -184
  533. package/dist/index.js.map +1 -1
  534. package/dist/populate/defaultValue.d.ts.map +1 -1
  535. package/dist/populate/defaultValue.js +1 -0
  536. package/dist/populate/defaultValue.js.map +1 -1
  537. package/dist/populate/populate.d.ts +5 -4
  538. package/dist/populate/populate.d.ts.map +1 -1
  539. package/dist/populate/populate.js +13 -11
  540. package/dist/populate/populate.js.map +1 -1
  541. package/dist/populate/populateLexicalPopulationPromises.d.ts +12 -0
  542. package/dist/populate/populateLexicalPopulationPromises.d.ts.map +1 -0
  543. package/dist/populate/populateLexicalPopulationPromises.js +36 -0
  544. package/dist/populate/populateLexicalPopulationPromises.js.map +1 -0
  545. package/dist/populate/recurseNestedFields.d.ts +8 -4
  546. package/dist/populate/recurseNestedFields.d.ts.map +1 -1
  547. package/dist/populate/recurseNestedFields.js +4 -5
  548. package/dist/populate/recurseNestedFields.js.map +1 -1
  549. package/dist/scss/app.scss +2 -3
  550. package/dist/scss/vars.scss +0 -7
  551. package/dist/types.d.ts +12 -5
  552. package/dist/types.d.ts.map +1 -1
  553. package/dist/types.js.map +1 -1
  554. package/dist/validate/index.d.ts +1 -1
  555. package/dist/validate/index.d.ts.map +1 -1
  556. package/package.json +48 -47
  557. package/components.d.ts +0 -6
  558. package/components.js +0 -7
  559. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts +0 -3
  560. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts.map +0 -1
  561. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +0 -12
  562. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js.map +0 -1
  563. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts +0 -3
  564. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts.map +0 -1
  565. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +0 -10
  566. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js.map +0 -1
  567. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts +0 -3
  568. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts.map +0 -1
  569. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +0 -12
  570. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js.map +0 -1
  571. package/dist/field/features/debug/testrecorder/plugin/index.d.ts +0 -5
  572. package/dist/field/features/debug/testrecorder/plugin/index.d.ts.map +0 -1
  573. package/dist/field/features/debug/testrecorder/plugin/index.js.map +0 -1
  574. package/dist/field/features/debug/treeview/plugin/index.d.ts +0 -4
  575. package/dist/field/features/debug/treeview/plugin/index.d.ts.map +0 -1
  576. package/dist/field/features/debug/treeview/plugin/index.js.map +0 -1
  577. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts +0 -3
  578. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts.map +0 -1
  579. package/dist/field/features/format/common/floatingSelectToolbarSection.js +0 -10
  580. package/dist/field/features/format/common/floatingSelectToolbarSection.js.map +0 -1
  581. package/dist/field/features/format/inlinecode/feature.client.d.ts.map +0 -1
  582. package/dist/field/features/format/inlinecode/feature.client.js +0 -43
  583. package/dist/field/features/format/inlinecode/feature.client.js.map +0 -1
  584. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts +0 -3
  585. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts.map +0 -1
  586. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +0 -10
  587. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js.map +0 -1
  588. package/dist/field/features/indent/index.scss +0 -4
  589. package/dist/field/features/lists/common/markdown.js.map +0 -1
  590. package/dist/field/features/lists/orderedlist/feature.client.d.ts.map +0 -1
  591. package/dist/field/features/lists/orderedlist/feature.client.js +0 -72
  592. package/dist/field/features/lists/orderedlist/feature.client.js.map +0 -1
  593. package/dist/field/features/lists/orderedlist/feature.server.d.ts.map +0 -1
  594. package/dist/field/features/lists/orderedlist/feature.server.js.map +0 -1
  595. package/dist/field/features/lists/orderedlist/markdownTransformer.d.ts.map +0 -1
  596. package/dist/field/features/lists/orderedlist/markdownTransformer.js.map +0 -1
  597. package/dist/field/features/lists/unorderedlist/feature.client.d.ts.map +0 -1
  598. package/dist/field/features/lists/unorderedlist/feature.client.js +0 -72
  599. package/dist/field/features/lists/unorderedlist/feature.client.js.map +0 -1
  600. package/dist/field/features/lists/unorderedlist/feature.server.d.ts.map +0 -1
  601. package/dist/field/features/lists/unorderedlist/feature.server.js.map +0 -1
  602. package/dist/field/features/lists/unorderedlist/markdownTransformer.d.ts.map +0 -1
  603. package/dist/field/features/lists/unorderedlist/markdownTransformer.js.map +0 -1
  604. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts +0 -8
  605. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +0 -1
  606. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js.map +0 -1
  607. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts +0 -17
  608. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +0 -1
  609. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js.map +0 -1
  610. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts +0 -18
  611. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +0 -1
  612. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +0 -42
  613. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js.map +0 -1
  614. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts +0 -6
  615. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +0 -1
  616. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js.map +0 -1
  617. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts +0 -40
  618. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts.map +0 -1
  619. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js.map +0 -1
  620. package/dist/populate/richTextRelationshipPromise.d.ts +0 -23
  621. package/dist/populate/richTextRelationshipPromise.d.ts.map +0 -1
  622. package/dist/populate/richTextRelationshipPromise.js +0 -68
  623. package/dist/populate/richTextRelationshipPromise.js.map +0 -1
  624. package/dist/scss/fonts.scss +0 -75
  625. package/src/index.ts +0 -423
  626. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.d.ts +0 -0
  627. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js +0 -0
  628. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.d.ts +0 -0
  629. /package/dist/field/features/debug/{testrecorder → testRecorder}/plugin/index.scss +0 -0
  630. /package/dist/field/features/debug/{treeview → treeView}/feature.client.d.ts +0 -0
  631. /package/dist/field/features/debug/{treeview → treeView}/feature.client.js +0 -0
  632. /package/dist/field/features/debug/{treeview → treeView}/feature.server.d.ts +0 -0
  633. /package/dist/field/features/debug/{treeview → treeView}/plugin/index.scss +0 -0
  634. /package/dist/field/features/format/{inlinecode → inlineCode}/feature.client.d.ts +0 -0
  635. /package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.d.ts +0 -0
  636. /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts +0 -0
  637. /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js +0 -0
  638. /package/dist/field/features/lists/{orderedlist → orderedList}/feature.client.d.ts +0 -0
  639. /package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.d.ts +0 -0
  640. /package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.d.ts +0 -0
  641. /package/dist/field/features/lists/{common → shared}/markdown.d.ts +0 -0
  642. /package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.client.d.ts +0 -0
  643. /package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.d.ts +0 -0
  644. /package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.d.ts +0 -0
  645. /package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars}/types.js +0 -0
@@ -1,10 +1,8 @@
1
1
  'use client';
2
- import lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js';
3
- const { useLexicalComposerContext } = lexicalComposerContextImport;
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
4
3
  import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js';
4
+ import { mergeRegister } from '@lexical/utils';
5
5
  import { getTranslation } from '@payloadcms/translations';
6
- import lexicalImport from 'lexical';
7
- const { $getNodeByKey } = lexicalImport;
8
6
  import { Button } from '@payloadcms/ui/elements/Button';
9
7
  import { useDocumentDrawer } from '@payloadcms/ui/elements/DocumentDrawer';
10
8
  import { DrawerToggler } from '@payloadcms/ui/elements/Drawer';
@@ -13,10 +11,12 @@ import { File } from '@payloadcms/ui/graphics/File';
13
11
  import usePayloadAPI from '@payloadcms/ui/hooks/usePayloadAPI';
14
12
  import { useConfig } from '@payloadcms/ui/providers/Config';
15
13
  import { useTranslation } from '@payloadcms/ui/providers/Translation';
16
- import React, { useCallback, useReducer, useState } from 'react';
14
+ import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
15
+ import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
17
16
  import { useEditorConfigContext } from '../../../lexical/config/client/EditorConfigProvider.js';
18
17
  import { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledRelationshipsCondition.js';
19
18
  import { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js';
19
+ import { $isUploadNode } from '../nodes/UploadNode.js';
20
20
  import { ExtraFieldsUploadDrawer } from './ExtraFieldsDrawer/index.js';
21
21
  import './index.scss';
22
22
  const baseClass = 'lexical-upload';
@@ -26,6 +26,7 @@ const initialParams = {
26
26
  const Component = (props)=>{
27
27
  const { data: { fields, relationTo, value }, nodeKey } = props;
28
28
  const { collections, routes: { api }, serverURL } = useConfig();
29
+ const uploadRef = useRef(null);
29
30
  const [editor] = useLexicalComposerContext();
30
31
  const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
31
32
  const { editorConfig, field } = useEditorConfigContext();
@@ -34,11 +35,11 @@ const Component = (props)=>{
34
35
  const [relatedCollection, setRelatedCollection] = useState(()=>collections.find((coll)=>coll.slug === relationTo));
35
36
  const drawerSlug = useDrawerSlug('upload-drawer');
36
37
  const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({
37
- id: value?.id,
38
+ id: value,
38
39
  collectionSlug: relatedCollection.slug
39
40
  });
40
41
  // Get the referenced document
41
- const [{ data }, { setParams }] = usePayloadAPI(`${serverURL}${api}/${relatedCollection.slug}/${value?.id}`, {
42
+ const [{ data }, { setParams }] = usePayloadAPI(`${serverURL}${api}/${relatedCollection.slug}/${value}`, {
42
43
  initialParams
43
44
  });
44
45
  const thumbnailSRC = data?.thumbnailURL || data?.url;
@@ -62,13 +63,60 @@ const Component = (props)=>{
62
63
  cacheBust,
63
64
  closeDrawer
64
65
  ]);
66
+ const onDelete = useCallback((payload)=>{
67
+ if (isSelected && $isNodeSelection($getSelection())) {
68
+ const event = payload;
69
+ event.preventDefault();
70
+ const node = $getNodeByKey(nodeKey);
71
+ if ($isUploadNode(node)) {
72
+ node.remove();
73
+ return true;
74
+ }
75
+ }
76
+ return false;
77
+ }, [
78
+ isSelected,
79
+ nodeKey
80
+ ]);
81
+ const onClick = useCallback((payload)=>{
82
+ const event = payload;
83
+ // Check if uploadRef.target or anything WITHIN uploadRef.target was clicked
84
+ if (event.target === uploadRef.current || uploadRef.current?.contains(event.target)) {
85
+ if (event.shiftKey) {
86
+ setSelected(!isSelected);
87
+ } else {
88
+ if (!isSelected) {
89
+ clearSelection();
90
+ setSelected(true);
91
+ }
92
+ }
93
+ return true;
94
+ }
95
+ return false;
96
+ }, [
97
+ isSelected,
98
+ setSelected,
99
+ clearSelection
100
+ ]);
101
+ useEffect(()=>{
102
+ return mergeRegister(editor.registerCommand(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, onDelete, COMMAND_PRIORITY_LOW));
103
+ }, [
104
+ clearSelection,
105
+ editor,
106
+ isSelected,
107
+ nodeKey,
108
+ onDelete,
109
+ setSelected,
110
+ onClick
111
+ ]);
65
112
  const hasExtraFields = editorConfig?.resolvedFeatureMap?.get('upload')?.clientFeatureProps.collections?.[relatedCollection.slug]?.hasExtraFields;
66
113
  return /*#__PURE__*/ React.createElement("div", {
67
114
  className: [
68
115
  baseClass,
69
116
  isSelected && `${baseClass}--selected`
70
117
  ].filter(Boolean).join(' '),
71
- contentEditable: false
118
+ contentEditable: false,
119
+ ref: uploadRef
72
120
  }, /*#__PURE__*/ React.createElement("div", {
73
121
  className: `${baseClass}__card`
74
122
  }, /*#__PURE__*/ React.createElement("div", {
@@ -77,6 +125,8 @@ const Component = (props)=>{
77
125
  className: `${baseClass}__thumbnail`
78
126
  }, thumbnailSRC ? /*#__PURE__*/ React.createElement("img", {
79
127
  alt: data?.filename,
128
+ "data-lexical-upload-id": value,
129
+ "data-lexical-upload-relation-to": relationTo,
80
130
  src: thumbnailSRC
81
131
  }) : /*#__PURE__*/ React.createElement(File, null)), /*#__PURE__*/ React.createElement("div", {
82
132
  className: `${baseClass}__topRowRightPanel`
@@ -126,7 +176,7 @@ const Component = (props)=>{
126
176
  className: `${baseClass}__bottomRow`
127
177
  }, /*#__PURE__*/ React.createElement(DocumentDrawerToggler, {
128
178
  className: `${baseClass}__doc-drawer-toggler`
129
- }, /*#__PURE__*/ React.createElement("strong", null, data?.filename)))), value?.id && /*#__PURE__*/ React.createElement(DocumentDrawer, {
179
+ }, /*#__PURE__*/ React.createElement("strong", null, data?.filename)))), value && /*#__PURE__*/ React.createElement(DocumentDrawer, {
130
180
  onSave: updateUpload
131
181
  }), hasExtraFields ? /*#__PURE__*/ React.createElement(ExtraFieldsUploadDrawer, {
132
182
  drawerSlug: drawerSlug,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/upload/component/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { getTranslation } from '@payloadcms/translations'\nimport lexicalImport from 'lexical'\nconst { $getNodeByKey } = lexicalImport\n\nimport { Button } from '@payloadcms/ui/elements/Button'\nimport { useDocumentDrawer } from '@payloadcms/ui/elements/DocumentDrawer'\nimport { DrawerToggler } from '@payloadcms/ui/elements/Drawer'\nimport { useDrawerSlug } from '@payloadcms/ui/elements/Drawer'\nimport { File } from '@payloadcms/ui/graphics/File'\nimport usePayloadAPI from '@payloadcms/ui/hooks/usePayloadAPI'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport React, { useCallback, useReducer, useState } from 'react'\n\nimport type { ClientComponentProps } from '../../types.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadData } from '../nodes/UploadNode.js'\n\nimport { useEditorConfigContext } from '../../../lexical/config/client/EditorConfigProvider.js'\nimport { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledRelationshipsCondition.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { ExtraFieldsUploadDrawer } from './ExtraFieldsDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\nexport type ElementProps = {\n data: UploadData\n nodeKey: string\n //uploadProps: UploadFeatureProps\n}\n\nconst Component: React.FC<ElementProps> = (props) => {\n const {\n data: { fields, relationTo, value },\n nodeKey,\n } = props\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n const { editorConfig, field } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection, setRelatedCollection] = useState<ClientCollectionConfig>(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const drawerSlug = useDrawerSlug('upload-drawer')\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value?.id,\n collectionSlug: relatedCollection.slug,\n })\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value?.id}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey).remove()\n })\n }, [editor, nodeKey])\n\n const updateUpload = useCallback(\n (json) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDrawer()\n },\n [setParams, cacheBust, closeDrawer],\n )\n\n const hasExtraFields = (\n editorConfig?.resolvedFeatureMap?.get('upload')\n ?.clientFeatureProps as ClientComponentProps<UploadFeaturePropsClient>\n ).collections?.[relatedCollection.slug]?.hasExtraFields\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__topRow`}>\n {/* TODO: migrate to use @payloadcms/ui/elements/Thumbnail component */}\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC ? <img alt={data?.filename} src={thumbnailSRC} /> : <File />}\n </div>\n <div className={`${baseClass}__topRowRightPanel`}>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n {hasExtraFields ? (\n <DrawerToggler\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={field?.readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n el=\"div\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n }}\n round\n tooltip={t('fields:editRelationship')}\n />\n </DrawerToggler>\n ) : null}\n\n <Button\n buttonStyle=\"icon-label\"\n disabled={field?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }}\n round\n tooltip={t('fields:swapUpload')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n tooltip={t('fields:removeUpload')}\n />\n </div>\n )}\n </div>\n </div>\n <div className={`${baseClass}__bottomRow`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong>{data?.filename}</strong>\n </DocumentDrawerToggler>\n </div>\n </div>\n {value?.id && <DocumentDrawer onSave={updateUpload} />}\n {hasExtraFields ? (\n <ExtraFieldsUploadDrawer\n drawerSlug={drawerSlug}\n relatedCollection={relatedCollection}\n {...props}\n />\n ) : null}\n </div>\n )\n}\n\nexport const UploadComponent = (props: ElementProps): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <Component {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","useLexicalNodeSelection","getTranslation","lexicalImport","$getNodeByKey","Button","useDocumentDrawer","DrawerToggler","useDrawerSlug","File","usePayloadAPI","useConfig","useTranslation","React","useCallback","useReducer","useState","useEditorConfigContext","EnabledRelationshipsCondition","INSERT_UPLOAD_WITH_DRAWER_COMMAND","ExtraFieldsUploadDrawer","baseClass","initialParams","depth","Component","props","data","fields","relationTo","value","nodeKey","collections","routes","api","serverURL","editor","isSelected","setSelected","clearSelection","editorConfig","field","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","setRelatedCollection","find","coll","slug","drawerSlug","DocumentDrawer","DocumentDrawerToggler","closeDrawer","id","collectionSlug","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","update","remove","updateUpload","json","hasExtraFields","resolvedFeatureMap","get","clientFeatureProps","div","className","filter","Boolean","join","contentEditable","img","alt","filename","src","labels","singular","isEditable","disabled","readOnly","buttonStyle","el","icon","onClick","e","preventDefault","round","tooltip","dispatchCommand","replace","strong","onSave","UploadComponent","uploads"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/field/features/upload/component/index.tsx"],"sourcesContent":["'use client'\nimport type { BaseSelection } from 'lexical'\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button } from '@payloadcms/ui/elements/Button'\nimport { useDocumentDrawer } from '@payloadcms/ui/elements/DocumentDrawer'\nimport { DrawerToggler } from '@payloadcms/ui/elements/Drawer'\nimport { useDrawerSlug } from '@payloadcms/ui/elements/Drawer'\nimport { File } from '@payloadcms/ui/graphics/File'\nimport usePayloadAPI from '@payloadcms/ui/hooks/usePayloadAPI'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { ClientComponentProps } from '../../types.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadData } from '../nodes/UploadNode.js'\n\nimport { useEditorConfigContext } from '../../../lexical/config/client/EditorConfigProvider.js'\nimport { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledRelationshipsCondition.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { $isUploadNode } from '../nodes/UploadNode.js'\nimport { ExtraFieldsUploadDrawer } from './ExtraFieldsDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\nexport type ElementProps = {\n data: UploadData\n nodeKey: string\n}\n\nconst Component: React.FC<ElementProps> = (props) => {\n const {\n data: { fields, relationTo, value },\n nodeKey,\n } = props\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n const uploadRef = useRef<HTMLDivElement | null>(null)\n\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const { editorConfig, field } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection, setRelatedCollection] = useState<ClientCollectionConfig>(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const drawerSlug = useDrawerSlug('upload-drawer')\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey).remove()\n })\n }, [editor, nodeKey])\n\n const updateUpload = useCallback(\n (json) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDrawer()\n },\n [setParams, cacheBust, closeDrawer],\n )\n\n const onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload\n event.preventDefault()\n const node = $getNodeByKey(nodeKey)\n if ($isUploadNode(node)) {\n node.remove()\n return true\n }\n }\n return false\n },\n [isSelected, nodeKey],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if uploadRef.target or anything WITHIN uploadRef.target was clicked\n if (event.target === uploadRef.current || uploadRef.current?.contains(event.target as Node)) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, onDelete, setSelected, onClick])\n\n const hasExtraFields = (\n editorConfig?.resolvedFeatureMap?.get('upload')\n ?.clientFeatureProps as ClientComponentProps<UploadFeaturePropsClient>\n ).collections?.[relatedCollection.slug]?.hasExtraFields\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n ref={uploadRef}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__topRow`}>\n {/* TODO: migrate to use @payloadcms/ui/elements/Thumbnail component */}\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC ? (\n <img\n alt={data?.filename}\n data-lexical-upload-id={value}\n data-lexical-upload-relation-to={relationTo}\n src={thumbnailSRC}\n />\n ) : (\n <File />\n )}\n </div>\n <div className={`${baseClass}__topRowRightPanel`}>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n {hasExtraFields ? (\n <DrawerToggler\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={field?.readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n el=\"div\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n }}\n round\n tooltip={t('fields:editRelationship')}\n />\n </DrawerToggler>\n ) : null}\n\n <Button\n buttonStyle=\"icon-label\"\n disabled={field?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }}\n round\n tooltip={t('fields:swapUpload')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n tooltip={t('fields:removeUpload')}\n />\n </div>\n )}\n </div>\n </div>\n <div className={`${baseClass}__bottomRow`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong>{data?.filename}</strong>\n </DocumentDrawerToggler>\n </div>\n </div>\n {value && <DocumentDrawer onSave={updateUpload} />}\n {hasExtraFields ? (\n <ExtraFieldsUploadDrawer\n drawerSlug={drawerSlug}\n relatedCollection={relatedCollection}\n {...props}\n />\n ) : null}\n </div>\n )\n}\n\nexport const UploadComponent = (props: ElementProps): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <Component {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","useDocumentDrawer","DrawerToggler","useDrawerSlug","File","usePayloadAPI","useConfig","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","React","useCallback","useEffect","useReducer","useRef","useState","useEditorConfigContext","EnabledRelationshipsCondition","INSERT_UPLOAD_WITH_DRAWER_COMMAND","$isUploadNode","ExtraFieldsUploadDrawer","baseClass","initialParams","depth","Component","props","data","fields","relationTo","value","nodeKey","collections","routes","api","serverURL","uploadRef","editor","isSelected","setSelected","clearSelection","editorConfig","field","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","setRelatedCollection","find","coll","slug","drawerSlug","DocumentDrawer","DocumentDrawerToggler","closeDrawer","id","collectionSlug","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","update","remove","updateUpload","json","onDelete","payload","event","preventDefault","node","onClick","target","current","contains","shiftKey","registerCommand","hasExtraFields","resolvedFeatureMap","get","clientFeatureProps","div","className","filter","Boolean","join","contentEditable","ref","img","alt","filename","data-lexical-upload-id","data-lexical-upload-relation-to","src","labels","singular","isEditable","disabled","readOnly","buttonStyle","el","icon","e","round","tooltip","dispatchCommand","replace","strong","onSave","UploadComponent","uploads"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/drawer/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAK7C,eAAO,MAAM,iCAAiC,EAAE,cAAc,CAAC;IAC7D,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAA;CACrC,CAAsD,CAAA"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/drawer/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,eAAO,MAAM,iCAAiC,EAAE,cAAc,CAAC;IAC7D,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAA;CACrC,CAAsD,CAAA"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
- import lexicalImport from 'lexical';
3
- const { createCommand } = lexicalImport;
2
+ import { createCommand } from 'lexical';
4
3
  export const INSERT_UPLOAD_WITH_DRAWER_COMMAND = createCommand('INSERT_UPLOAD_WITH_DRAWER_COMMAND');
5
4
 
6
5
  //# sourceMappingURL=commands.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/upload/drawer/commands.ts"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport lexicalImport from 'lexical'\nconst { createCommand } = lexicalImport\n\nexport const INSERT_UPLOAD_WITH_DRAWER_COMMAND: LexicalCommand<{\n replace: { nodeKey: string } | false\n}> = createCommand('INSERT_UPLOAD_WITH_DRAWER_COMMAND')\n"],"names":["lexicalImport","createCommand","INSERT_UPLOAD_WITH_DRAWER_COMMAND"],"rangeMappings":";;;","mappings":"AAAA;AAGA,OAAOA,mBAAmB,UAAS;AACnC,MAAM,EAAEC,aAAa,EAAE,GAAGD;AAE1B,OAAO,MAAME,oCAERD,cAAc,qCAAoC"}
1
+ {"version":3,"sources":["../../../../../src/field/features/upload/drawer/commands.ts"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { createCommand } from 'lexical'\n\nexport const INSERT_UPLOAD_WITH_DRAWER_COMMAND: LexicalCommand<{\n replace: { nodeKey: string } | false\n}> = createCommand('INSERT_UPLOAD_WITH_DRAWER_COMMAND')\n"],"names":["createCommand","INSERT_UPLOAD_WITH_DRAWER_COMMAND"],"rangeMappings":";;","mappings":"AAAA;AAGA,SAASA,aAAa,QAAQ,UAAS;AAEvC,OAAO,MAAMC,oCAERD,cAAc,qCAAoC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/drawer/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA8C/D,KAAK,KAAK,GAAG;IACX,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACjC,CAAA;AA0CD,eAAO,MAAM,YAAY,UAAW,KAAK,KAAG,MAAM,SAMjD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/drawer/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA4C/D,KAAK,KAAK,GAAG;IACX,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACjC,CAAA;AA0CD,eAAO,MAAM,YAAY,UAAW,KAAK,KAAG,MAAM,SAMjD,CAAA"}
@@ -1,21 +1,19 @@
1
1
  'use client';
2
- import lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js';
3
- const { useLexicalComposerContext } = lexicalComposerContextImport;
4
- import lexicalImport from 'lexical';
5
- const { $getNodeByKey, COMMAND_PRIORITY_EDITOR } = lexicalImport;
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
6
3
  import { useListDrawer } from '@payloadcms/ui/elements/ListDrawer';
4
+ import { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical';
7
5
  import React, { useCallback, useEffect, useState } from 'react';
8
6
  import { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledRelationshipsCondition.js';
9
7
  import { $createUploadNode } from '../nodes/UploadNode.js';
10
8
  import { INSERT_UPLOAD_COMMAND } from '../plugin/index.js';
11
9
  import { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './commands.js';
12
10
  const baseClass = 'lexical-upload-drawer';
13
- const insertUpload = ({ id, editor, relationTo, replaceNodeKey })=>{
11
+ const insertUpload = ({ editor, relationTo, replaceNodeKey, value })=>{
14
12
  if (!replaceNodeKey) {
15
13
  editor.dispatchCommand(INSERT_UPLOAD_COMMAND, {
16
- id,
17
14
  fields: null,
18
- relationTo
15
+ relationTo,
16
+ value
19
17
  });
20
18
  } else {
21
19
  editor.update(()=>{
@@ -25,9 +23,7 @@ const insertUpload = ({ id, editor, relationTo, replaceNodeKey })=>{
25
23
  data: {
26
24
  fields: null,
27
25
  relationTo,
28
- value: {
29
- id
30
- }
26
+ value
31
27
  }
32
28
  }));
33
29
  }
@@ -53,10 +49,10 @@ const UploadDrawerComponent = ({ enabledCollectionSlugs })=>{
53
49
  ]);
54
50
  const onSelect = useCallback(({ collectionSlug, docID })=>{
55
51
  insertUpload({
56
- id: docID,
57
52
  editor,
58
53
  relationTo: collectionSlug,
59
- replaceNodeKey
54
+ replaceNodeKey,
55
+ value: docID
60
56
  });
61
57
  closeDrawer();
62
58
  }, [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/upload/drawer/index.tsx"],"sourcesContent":["'use client'\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\nimport lexicalImport from 'lexical'\nconst { $getNodeByKey, COMMAND_PRIORITY_EDITOR } = lexicalImport\n\nimport type { LexicalEditor } from 'lexical'\n\nimport { useListDrawer } from '@payloadcms/ui/elements/ListDrawer'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledRelationshipsCondition.js'\nimport { $createUploadNode } from '../nodes/UploadNode.js'\nimport { INSERT_UPLOAD_COMMAND } from '../plugin/index.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './commands.js'\n\nconst baseClass = 'lexical-upload-drawer'\n\nconst insertUpload = ({\n id,\n editor,\n relationTo,\n replaceNodeKey,\n}: {\n editor: LexicalEditor\n id: string\n relationTo: string\n replaceNodeKey: null | string\n}) => {\n if (!replaceNodeKey) {\n editor.dispatchCommand(INSERT_UPLOAD_COMMAND, {\n id,\n fields: null,\n relationTo,\n })\n } else {\n editor.update(() => {\n const node = $getNodeByKey(replaceNodeKey)\n if (node) {\n node.replace(\n $createUploadNode({\n data: {\n fields: null,\n relationTo,\n value: {\n id,\n },\n },\n }),\n )\n }\n })\n }\n}\n\ntype Props = {\n enabledCollectionSlugs: string[]\n}\n\nconst UploadDrawerComponent: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const [editor] = useLexicalComposerContext()\n\n const [replaceNodeKey, setReplaceNodeKey] = useState<null | string>(null)\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer, openDrawer }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n uploads: true,\n })\n\n useEffect(() => {\n return editor.registerCommand<{\n replace: { nodeKey: string } | false\n }>(\n INSERT_UPLOAD_WITH_DRAWER_COMMAND,\n (payload) => {\n setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null)\n openDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertUpload({\n id: docID,\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n })\n closeDrawer()\n },\n [editor, closeDrawer, replaceNodeKey],\n )\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const UploadDrawer = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <UploadDrawerComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalImport","$getNodeByKey","COMMAND_PRIORITY_EDITOR","useListDrawer","React","useCallback","useEffect","useState","EnabledRelationshipsCondition","$createUploadNode","INSERT_UPLOAD_COMMAND","INSERT_UPLOAD_WITH_DRAWER_COMMAND","baseClass","insertUpload","id","editor","relationTo","replaceNodeKey","dispatchCommand","fields","update","node","replace","data","value","UploadDrawerComponent","enabledCollectionSlugs","setReplaceNodeKey","ListDrawer","ListDrawerToggler","closeDrawer","openDrawer","collectionSlugs","uploads","registerCommand","payload","nodeKey","onSelect","collectionSlug","docID","UploadDrawer","props"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,OAAOA,kCAAkC,2CAA0C;AACnF,MAAM,EAAEC,yBAAyB,EAAE,GAAGD;AACtC,OAAOE,mBAAmB,UAAS;AACnC,MAAM,EAAEC,aAAa,EAAEC,uBAAuB,EAAE,GAAGF;AAInD,SAASG,aAAa,QAAQ,qCAAoC;AAClE,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAE/D,SAASC,6BAA6B,QAAQ,4DAA2D;AACzG,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,qBAAqB,QAAQ,qBAAoB;AAC1D,SAASC,iCAAiC,QAAQ,gBAAe;AAEjE,MAAMC,YAAY;AAElB,MAAMC,eAAe,CAAC,EACpBC,EAAE,EACFC,MAAM,EACNC,UAAU,EACVC,cAAc,EAMf;IACC,IAAI,CAACA,gBAAgB;QACnBF,OAAOG,eAAe,CAACR,uBAAuB;YAC5CI;YACAK,QAAQ;YACRH;QACF;IACF,OAAO;QACLD,OAAOK,MAAM,CAAC;YACZ,MAAMC,OAAOpB,cAAcgB;YAC3B,IAAII,MAAM;gBACRA,KAAKC,OAAO,CACVb,kBAAkB;oBAChBc,MAAM;wBACJJ,QAAQ;wBACRH;wBACAQ,OAAO;4BACLV;wBACF;oBACF;gBACF;YAEJ;QACF;IACF;AACF;AAMA,MAAMW,wBAAyC,CAAC,EAAEC,sBAAsB,EAAE;IACxE,MAAM,CAACX,OAAO,GAAGhB;IAEjB,MAAM,CAACkB,gBAAgBU,kBAAkB,GAAGpB,SAAwB;IAEpE,MAAM,CAACqB,YAAYC,mBAAmB,EAAEC,WAAW,EAAEC,UAAU,EAAE,CAAC,GAAG5B,cAAc;QACjF6B,iBAAiBN;QACjBO,SAAS;IACX;IAEA3B,UAAU;QACR,OAAOS,OAAOmB,eAAe,CAG3BvB,mCACA,CAACwB;YACCR,kBAAkBQ,SAASb,UAAUa,SAASb,QAAQc,UAAU;YAChEL;YACA,OAAO;QACT,GACA7B;IAEJ,GAAG;QAACa;QAAQgB;KAAW;IAEvB,MAAMM,WAAWhC,YACf,CAAC,EAAEiC,cAAc,EAAEC,KAAK,EAAE;QACxB1B,aAAa;YACXC,IAAIyB;YACJxB;YACAC,YAAYsB;YACZrB;QACF;QACAa;IACF,GACA;QAACf;QAAQe;QAAab;KAAe;IAGvC,qBAAO,oBAACW;QAAWS,UAAUA;;AAC/B;AAEA,OAAO,MAAMG,eAAe,CAACC;IAC3B,qBACE,oBAACjC;QAA+B,GAAGiC,KAAK;QAAER,SAAAA;qBACxC,oBAACR,uBAA0BgB;AAGjC,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/field/features/upload/drawer/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useListDrawer } from '@payloadcms/ui/elements/ListDrawer'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledRelationshipsCondition.js'\nimport { $createUploadNode } from '../nodes/UploadNode.js'\nimport { INSERT_UPLOAD_COMMAND } from '../plugin/index.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './commands.js'\n\nconst baseClass = 'lexical-upload-drawer'\n\nconst insertUpload = ({\n editor,\n relationTo,\n replaceNodeKey,\n value,\n}: {\n editor: LexicalEditor\n relationTo: string\n replaceNodeKey: null | string\n value: number | string\n}) => {\n if (!replaceNodeKey) {\n editor.dispatchCommand(INSERT_UPLOAD_COMMAND, {\n fields: null,\n relationTo,\n value,\n })\n } else {\n editor.update(() => {\n const node = $getNodeByKey(replaceNodeKey)\n if (node) {\n node.replace(\n $createUploadNode({\n data: {\n fields: null,\n relationTo,\n value,\n },\n }),\n )\n }\n })\n }\n}\n\ntype Props = {\n enabledCollectionSlugs: string[]\n}\n\nconst UploadDrawerComponent: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const [editor] = useLexicalComposerContext()\n\n const [replaceNodeKey, setReplaceNodeKey] = useState<null | string>(null)\n\n const [ListDrawer, ListDrawerToggler, { closeDrawer, openDrawer }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n uploads: true,\n })\n\n useEffect(() => {\n return editor.registerCommand<{\n replace: { nodeKey: string } | false\n }>(\n INSERT_UPLOAD_WITH_DRAWER_COMMAND,\n (payload) => {\n setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null)\n openDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertUpload({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n closeDrawer()\n },\n [editor, closeDrawer, replaceNodeKey],\n )\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const UploadDrawer = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <UploadDrawerComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"names":["useLexicalComposerContext","useListDrawer","$getNodeByKey","COMMAND_PRIORITY_EDITOR","React","useCallback","useEffect","useState","EnabledRelationshipsCondition","$createUploadNode","INSERT_UPLOAD_COMMAND","INSERT_UPLOAD_WITH_DRAWER_COMMAND","baseClass","insertUpload","editor","relationTo","replaceNodeKey","value","dispatchCommand","fields","update","node","replace","data","UploadDrawerComponent","enabledCollectionSlugs","setReplaceNodeKey","ListDrawer","ListDrawerToggler","closeDrawer","openDrawer","collectionSlugs","uploads","registerCommand","payload","nodeKey","onSelect","collectionSlug","docID","UploadDrawer","props"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,aAAa,EAAEC,uBAAuB,QAAQ,UAAS;AAChE,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAE/D,SAASC,6BAA6B,QAAQ,4DAA2D;AACzG,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,qBAAqB,QAAQ,qBAAoB;AAC1D,SAASC,iCAAiC,QAAQ,gBAAe;AAEjE,MAAMC,YAAY;AAElB,MAAMC,eAAe,CAAC,EACpBC,MAAM,EACNC,UAAU,EACVC,cAAc,EACdC,KAAK,EAMN;IACC,IAAI,CAACD,gBAAgB;QACnBF,OAAOI,eAAe,CAACR,uBAAuB;YAC5CS,QAAQ;YACRJ;YACAE;QACF;IACF,OAAO;QACLH,OAAOM,MAAM,CAAC;YACZ,MAAMC,OAAOnB,cAAcc;YAC3B,IAAIK,MAAM;gBACRA,KAAKC,OAAO,CACVb,kBAAkB;oBAChBc,MAAM;wBACJJ,QAAQ;wBACRJ;wBACAE;oBACF;gBACF;YAEJ;QACF;IACF;AACF;AAMA,MAAMO,wBAAyC,CAAC,EAAEC,sBAAsB,EAAE;IACxE,MAAM,CAACX,OAAO,GAAGd;IAEjB,MAAM,CAACgB,gBAAgBU,kBAAkB,GAAGnB,SAAwB;IAEpE,MAAM,CAACoB,YAAYC,mBAAmB,EAAEC,WAAW,EAAEC,UAAU,EAAE,CAAC,GAAG7B,cAAc;QACjF8B,iBAAiBN;QACjBO,SAAS;IACX;IAEA1B,UAAU;QACR,OAAOQ,OAAOmB,eAAe,CAG3BtB,mCACA,CAACuB;YACCR,kBAAkBQ,SAASZ,UAAUY,SAASZ,QAAQa,UAAU;YAChEL;YACA,OAAO;QACT,GACA3B;IAEJ,GAAG;QAACW;QAAQgB;KAAW;IAEvB,MAAMM,WAAW/B,YACf,CAAC,EAAEgC,cAAc,EAAEC,KAAK,EAAE;QACxBzB,aAAa;YACXC;YACAC,YAAYsB;YACZrB;YACAC,OAAOqB;QACT;QACAT;IACF,GACA;QAACf;QAAQe;QAAab;KAAe;IAGvC,qBAAO,oBAACW;QAAWS,UAAUA;;AAC/B;AAEA,OAAO,MAAMG,eAAe,CAACC;IAC3B,qBACE,oBAAChC;QAA+B,GAAGgC,KAAK;QAAER,SAAAA;qBACxC,oBAACR,uBAA0BgB;AAGjC,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature.client.d.ts","sourceRoot":"","sources":["../../../../src/field/features/upload/feature.client.tsx"],"names":[],"mappings":";AAWA,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE;QACX,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,cAAc,EAAE,OAAO,CAAA;SACxB,CAAA;KACF,CAAA;CACF,CAAA;AAsCD,eAAO,MAAM,4BAA4B,0FAA6C,CAAA"}
1
+ {"version":3,"file":"feature.client.d.ts","sourceRoot":"","sources":["../../../../src/field/features/upload/feature.client.tsx"],"names":[],"mappings":";AAaA,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE;QACX,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,cAAc,EAAE,OAAO,CAAA;SACxB,CAAA;KACF,CAAA;CACF,CAAA;AA+DD,eAAO,MAAM,4BAA4B,0FAA6C,CAAA"}
@@ -1,9 +1,10 @@
1
1
  'use client';
2
- import { SlashMenuOption } from '../../lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js';
2
+ import { $isNodeSelection } from 'lexical';
3
3
  import { UploadIcon } from '../../lexical/ui/icons/Upload/index.js';
4
4
  import { createClientComponent } from '../createClientComponent.js';
5
+ import { toolbarAddDropdownGroupWithItems } from '../shared/toolbar/addDropdownGroup.js';
5
6
  import { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './drawer/commands.js';
6
- import { UploadNode } from './nodes/UploadNode.js';
7
+ import { $isUploadNode, UploadNode } from './nodes/UploadNode.js';
7
8
  import { UploadPlugin } from './plugin/index.js';
8
9
  const UploadFeatureClient = (props)=>{
9
10
  return {
@@ -20,14 +21,12 @@ const UploadFeatureClient = (props)=>{
20
21
  }
21
22
  ],
22
23
  slashMenu: {
23
- options: [
24
+ groups: [
24
25
  {
25
- displayName: 'Basic',
26
- key: 'basic',
27
- options: [
28
- new SlashMenuOption('upload', {
26
+ items: [
27
+ {
29
28
  Icon: UploadIcon,
30
- displayName: 'Upload',
29
+ key: 'upload',
31
30
  keywords: [
32
31
  'upload',
33
32
  'image',
@@ -37,15 +36,41 @@ const UploadFeatureClient = (props)=>{
37
36
  'photo',
38
37
  'media'
39
38
  ],
39
+ label: 'Upload',
40
40
  onSelect: ({ editor })=>{
41
41
  editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {
42
42
  replace: false
43
43
  });
44
44
  }
45
- })
46
- ]
45
+ }
46
+ ],
47
+ key: 'basic',
48
+ label: 'Basic'
47
49
  }
48
50
  ]
51
+ },
52
+ toolbarFixed: {
53
+ groups: [
54
+ toolbarAddDropdownGroupWithItems([
55
+ {
56
+ ChildComponent: UploadIcon,
57
+ isActive: ({ selection })=>{
58
+ if (!$isNodeSelection(selection) || !selection.getNodes().length) {
59
+ return false;
60
+ }
61
+ const firstNode = selection.getNodes()[0];
62
+ return $isUploadNode(firstNode);
63
+ },
64
+ key: 'upload',
65
+ label: 'Upload',
66
+ onSelect: ({ editor })=>{
67
+ editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {
68
+ replace: false
69
+ });
70
+ }
71
+ }
72
+ ])
73
+ ]
49
74
  }
50
75
  })
51
76
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/upload/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport type { FeatureProviderProviderClient } from '../types.js'\n\nimport { SlashMenuOption } from '../../lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nimport { UploadIcon } from '../../lexical/ui/icons/Upload/index.js'\nimport { createClientComponent } from '../createClientComponent.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { UploadNode } from './nodes/UploadNode.js'\nimport { UploadPlugin } from './plugin/index.js'\n\nexport type UploadFeaturePropsClient = {\n collections: {\n [collection: string]: {\n hasExtraFields: boolean\n }\n }\n}\n\nconst UploadFeatureClient: FeatureProviderProviderClient<UploadFeaturePropsClient> = (props) => {\n return {\n clientFeatureProps: props,\n feature: () => ({\n clientFeatureProps: props,\n nodes: [UploadNode],\n plugins: [\n {\n Component: UploadPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n options: [\n {\n displayName: 'Basic',\n key: 'basic',\n options: [\n new SlashMenuOption('upload', {\n Icon: UploadIcon,\n displayName: 'Upload',\n keywords: ['upload', 'image', 'file', 'img', 'picture', 'photo', 'media'],\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n }),\n ],\n },\n ],\n },\n }),\n }\n}\n\nexport const UploadFeatureClientComponent = createClientComponent(UploadFeatureClient)\n"],"names":["SlashMenuOption","UploadIcon","createClientComponent","INSERT_UPLOAD_WITH_DRAWER_COMMAND","UploadNode","UploadPlugin","UploadFeatureClient","props","clientFeatureProps","feature","nodes","plugins","Component","position","slashMenu","options","displayName","key","Icon","keywords","onSelect","editor","dispatchCommand","replace","UploadFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAIA,SAASA,eAAe,QAAQ,sEAAqE;AACrG,SAASC,UAAU,QAAQ,yCAAwC;AACnE,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,iCAAiC,QAAQ,uBAAsB;AACxE,SAASC,UAAU,QAAQ,wBAAuB;AAClD,SAASC,YAAY,QAAQ,oBAAmB;AAUhD,MAAMC,sBAA+E,CAACC;IACpF,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,IAAO,CAAA;gBACdD,oBAAoBD;gBACpBG,OAAO;oBAACN;iBAAW;gBACnBO,SAAS;oBACP;wBACEC,WAAWP;wBACXQ,UAAU;oBACZ;iBACD;gBACDC,WAAW;oBACTC,SAAS;wBACP;4BACEC,aAAa;4BACbC,KAAK;4BACLF,SAAS;gCACP,IAAIf,gBAAgB,UAAU;oCAC5BkB,MAAMjB;oCACNe,aAAa;oCACbG,UAAU;wCAAC;wCAAU;wCAAS;wCAAQ;wCAAO;wCAAW;wCAAS;qCAAQ;oCACzEC,UAAU,CAAC,EAAEC,MAAM,EAAE;wCACnBA,OAAOC,eAAe,CAACnB,mCAAmC;4CACxDoB,SAAS;wCACX;oCACF;gCACF;6BACD;wBACH;qBACD;gBACH;YACF,CAAA;IACF;AACF;AAEA,OAAO,MAAMC,+BAA+BtB,sBAAsBI,qBAAoB"}
1
+ {"version":3,"sources":["../../../../src/field/features/upload/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport { $isNodeSelection } from 'lexical'\n\nimport type { FeatureProviderProviderClient } from '../types.js'\n\nimport { UploadIcon } from '../../lexical/ui/icons/Upload/index.js'\nimport { createClientComponent } from '../createClientComponent.js'\nimport { toolbarAddDropdownGroupWithItems } from '../shared/toolbar/addDropdownGroup.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { $isUploadNode, UploadNode } from './nodes/UploadNode.js'\nimport { UploadPlugin } from './plugin/index.js'\n\nexport type UploadFeaturePropsClient = {\n collections: {\n [collection: string]: {\n hasExtraFields: boolean\n }\n }\n}\n\nconst UploadFeatureClient: FeatureProviderProviderClient<UploadFeaturePropsClient> = (props) => {\n return {\n clientFeatureProps: props,\n feature: () => ({\n clientFeatureProps: props,\n nodes: [UploadNode],\n plugins: [\n {\n Component: UploadPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n {\n items: [\n {\n Icon: UploadIcon,\n key: 'upload',\n keywords: ['upload', 'image', 'file', 'img', 'picture', 'photo', 'media'],\n label: 'Upload',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ],\n key: 'basic',\n label: 'Basic',\n },\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: UploadIcon,\n isActive: ({ selection }) => {\n if (!$isNodeSelection(selection) || !selection.getNodes().length) {\n return false\n }\n\n const firstNode = selection.getNodes()[0]\n return $isUploadNode(firstNode)\n },\n key: 'upload',\n label: 'Upload',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n }),\n }\n}\n\nexport const UploadFeatureClientComponent = createClientComponent(UploadFeatureClient)\n"],"names":["$isNodeSelection","UploadIcon","createClientComponent","toolbarAddDropdownGroupWithItems","INSERT_UPLOAD_WITH_DRAWER_COMMAND","$isUploadNode","UploadNode","UploadPlugin","UploadFeatureClient","props","clientFeatureProps","feature","nodes","plugins","Component","position","slashMenu","groups","items","Icon","key","keywords","label","onSelect","editor","dispatchCommand","replace","toolbarFixed","ChildComponent","isActive","selection","getNodes","length","firstNode","UploadFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAEA,SAASA,gBAAgB,QAAQ,UAAS;AAI1C,SAASC,UAAU,QAAQ,yCAAwC;AACnE,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,gCAAgC,QAAQ,wCAAuC;AACxF,SAASC,iCAAiC,QAAQ,uBAAsB;AACxE,SAASC,aAAa,EAAEC,UAAU,QAAQ,wBAAuB;AACjE,SAASC,YAAY,QAAQ,oBAAmB;AAUhD,MAAMC,sBAA+E,CAACC;IACpF,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,IAAO,CAAA;gBACdD,oBAAoBD;gBACpBG,OAAO;oBAACN;iBAAW;gBACnBO,SAAS;oBACP;wBACEC,WAAWP;wBACXQ,UAAU;oBACZ;iBACD;gBACDC,WAAW;oBACTC,QAAQ;wBACN;4BACEC,OAAO;gCACL;oCACEC,MAAMlB;oCACNmB,KAAK;oCACLC,UAAU;wCAAC;wCAAU;wCAAS;wCAAQ;wCAAO;wCAAW;wCAAS;qCAAQ;oCACzEC,OAAO;oCACPC,UAAU,CAAC,EAAEC,MAAM,EAAE;wCACnBA,OAAOC,eAAe,CAACrB,mCAAmC;4CACxDsB,SAAS;wCACX;oCACF;gCACF;6BACD;4BACDN,KAAK;4BACLE,OAAO;wBACT;qBACD;gBACH;gBACAK,cAAc;oBACZV,QAAQ;wBACNd,iCAAiC;4BAC/B;gCACEyB,gBAAgB3B;gCAChB4B,UAAU,CAAC,EAAEC,SAAS,EAAE;oCACtB,IAAI,CAAC9B,iBAAiB8B,cAAc,CAACA,UAAUC,QAAQ,GAAGC,MAAM,EAAE;wCAChE,OAAO;oCACT;oCAEA,MAAMC,YAAYH,UAAUC,QAAQ,EAAE,CAAC,EAAE;oCACzC,OAAO1B,cAAc4B;gCACvB;gCACAb,KAAK;gCACLE,OAAO;gCACPC,UAAU,CAAC,EAAEC,MAAM,EAAE;oCACnBA,OAAOC,eAAe,CAACrB,mCAAmC;wCACxDsB,SAAS;oCACX;gCACF;4BACF;yBACD;qBACF;gBACH;YACF,CAAA;IACF;AACF;AAEA,OAAO,MAAMQ,+BAA+BhC,sBAAsBM,qBAAoB"}
@@ -1,12 +1,19 @@
1
- import type { FieldWithRichTextRequiredEditor } from 'payload/types';
1
+ import type { Field } from 'payload/types';
2
2
  import type { FeatureProviderProviderServer } from '../types.js';
3
3
  import type { UploadFeaturePropsClient } from './feature.client.js';
4
4
  export type UploadFeatureProps = {
5
- collections: {
5
+ collections?: {
6
6
  [collection: string]: {
7
- fields: FieldWithRichTextRequiredEditor[];
7
+ fields: Field[];
8
8
  };
9
9
  };
10
+ /**
11
+ * Sets a maximum population depth for this upload (not the fields for this upload), regardless of the remaining depth when the respective field is reached.
12
+ * This behaves exactly like the maxDepth properties of relationship and upload fields.
13
+ *
14
+ * {@link https://payloadcms.com/docs/getting-started/concepts#field-level-max-depth}
15
+ */
16
+ maxDepth?: number;
10
17
  };
11
18
  export declare const UploadFeature: FeatureProviderProviderServer<UploadFeatureProps, UploadFeaturePropsClient>;
12
19
  //# sourceMappingURL=feature.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../src/field/features/upload/feature.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,+BAA+B,EAAW,MAAM,eAAe,CAAA;AAGpF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAOnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE;QACX,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,MAAM,EAAE,+BAA+B,EAAE,CAAA;SAC1C,CAAA;KACF,CAAA;CACF,CAAA;AASD,eAAO,MAAM,aAAa,EAAE,6BAA6B,CACvD,kBAAkB,EAClB,wBAAwB,CAuHzB,CAAA"}
1
+ {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../src/field/features/upload/feature.server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAA2C,MAAM,eAAe,CAAA;AAKnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAQnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE;QACZ,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,MAAM,EAAE,KAAK,EAAE,CAAA;SAChB,CAAA;KACF,CAAA;IACD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AASD,eAAO,MAAM,aAAa,EAAE,6BAA6B,CACvD,kBAAkB,EAClB,wBAAwB,CAqJzB,CAAA"}
@@ -1,3 +1,6 @@
1
+ import { traverseFields } from '@payloadcms/next/utilities';
2
+ import { sanitizeFields } from 'payload/config';
3
+ import { createNode } from '../typeUtilities.js';
1
4
  import { UploadFeatureClientComponent } from './feature.client.js';
2
5
  import { UploadNode } from './nodes/UploadNode.js';
3
6
  import { uploadPopulationPromiseHOC } from './populationPromise.js';
@@ -24,28 +27,53 @@ export const UploadFeature = (props)=>{
24
27
  }
25
28
  }
26
29
  return {
27
- feature: ()=>{
30
+ feature: async ({ config: _config, isRoot })=>{
31
+ const validRelationships = _config.collections.map((c)=>c.slug) || [];
32
+ for(const collection in props.collections){
33
+ if (props.collections[collection].fields?.length) {
34
+ props.collections[collection].fields = await sanitizeFields({
35
+ config: _config,
36
+ fields: props.collections[collection].fields,
37
+ requireFieldLevelRichTextEditor: isRoot,
38
+ validRelationships
39
+ });
40
+ }
41
+ }
28
42
  return {
29
43
  ClientComponent: UploadFeatureClientComponent,
30
44
  clientFeatureProps: clientProps,
31
- generateSchemaMap: ({ props })=>{
32
- if (!props?.collections) return {};
33
- const map = {};
45
+ generateSchemaMap: ({ config, i18n, props })=>{
46
+ if (!props?.collections) return null;
47
+ const schemaMap = new Map();
48
+ const validRelationships = config.collections.map((c)=>c.slug) || [];
34
49
  for(const collection in props.collections){
35
- map[collection] = props.collections[collection].fields;
50
+ if (props.collections[collection].fields?.length) {
51
+ schemaMap.set(collection, props.collections[collection].fields);
52
+ traverseFields({
53
+ config,
54
+ fields: props.collections[collection].fields,
55
+ i18n,
56
+ schemaMap,
57
+ schemaPath: collection,
58
+ validRelationships
59
+ });
60
+ }
36
61
  }
37
- return map;
62
+ return schemaMap;
38
63
  },
39
64
  nodes: [
40
- {
65
+ createNode({
41
66
  converters: {
42
67
  html: {
43
68
  converter: async ({ node, payload })=>{
69
+ // @ts-expect-error
70
+ const id = node?.value?.id || node?.value // for backwards-compatibility
71
+ ;
44
72
  if (payload) {
45
73
  let uploadDocument;
46
74
  try {
47
75
  uploadDocument = await payload.findByID({
48
- id: node.value.id,
76
+ id,
49
77
  collection: node.relationTo
50
78
  });
51
79
  } catch (ignored) {
@@ -82,7 +110,7 @@ export const UploadFeature = (props)=>{
82
110
  pictureHTML += '</picture>';
83
111
  return pictureHTML;
84
112
  } else {
85
- return `<img src="${node.value.id}" />`;
113
+ return `<img src="${id}" />`;
86
114
  }
87
115
  },
88
116
  nodeTypes: [
@@ -95,9 +123,9 @@ export const UploadFeature = (props)=>{
95
123
  uploadPopulationPromiseHOC(props)
96
124
  ],
97
125
  validations: [
98
- uploadValidation()
126
+ uploadValidation(props)
99
127
  ]
100
- }
128
+ })
101
129
  ],
102
130
  serverFeatureProps: props
103
131
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/upload/feature.server.ts"],"sourcesContent":["import type { Field, FieldWithRichTextRequiredEditor, Payload } from 'payload/types'\n\nimport type { HTMLConverter } from '../converters/html/converter/types.js'\nimport type { FeatureProviderProviderServer } from '../types.js'\nimport type { UploadFeaturePropsClient } from './feature.client.js'\n\nimport { UploadFeatureClientComponent } from './feature.client.js'\nimport { type SerializedUploadNode, UploadNode } from './nodes/UploadNode.js'\nimport { uploadPopulationPromiseHOC } from './populationPromise.js'\nimport { uploadValidation } from './validate.js'\n\nexport type UploadFeatureProps = {\n collections: {\n [collection: string]: {\n fields: FieldWithRichTextRequiredEditor[]\n }\n }\n}\n\n/**\n * Get the absolute URL for an upload URL by potentially prepending the serverURL\n */\nfunction getAbsoluteURL(url: string, payload: Payload): string {\n return url?.startsWith('http') ? url : (payload?.config?.serverURL || '') + url\n}\n\nexport const UploadFeature: FeatureProviderProviderServer<\n UploadFeatureProps,\n UploadFeaturePropsClient\n> = (props) => {\n if (!props) {\n props = { collections: {} }\n }\n\n const clientProps: UploadFeaturePropsClient = { collections: {} }\n if (props.collections) {\n for (const collection in props.collections) {\n clientProps.collections[collection] = {\n hasExtraFields: props.collections[collection].fields.length >= 1,\n }\n }\n }\n\n return {\n feature: () => {\n return {\n ClientComponent: UploadFeatureClientComponent,\n clientFeatureProps: clientProps,\n generateSchemaMap: ({ props }) => {\n if (!props?.collections) return {}\n\n const map: {\n [key: string]: Field[]\n } = {}\n\n for (const collection in props.collections) {\n map[collection] = props.collections[collection].fields\n }\n\n return map\n },\n nodes: [\n {\n converters: {\n html: {\n converter: async ({ node, payload }) => {\n if (payload) {\n let uploadDocument: any\n try {\n uploadDocument = await payload.findByID({\n id: node.value.id,\n collection: node.relationTo,\n })\n } catch (ignored) {\n // eslint-disable-next-line no-console\n console.error(\n 'Lexical upload node HTML converter: error fetching upload file',\n ignored,\n 'Node:',\n node,\n )\n return `<img />`\n }\n\n const url: string = getAbsoluteURL(uploadDocument?.url as string, payload)\n\n /**\n * If the upload is not an image, return a link to the upload\n */\n if (!(uploadDocument?.mimeType as string)?.startsWith('image')) {\n return `<a href=\"${url}\" rel=\"noopener noreferrer\">${uploadDocument.filename}</a>`\n }\n\n /**\n * If the upload is a simple image with no different sizes, return a simple img tag\n */\n if (!uploadDocument?.sizes || !Object.keys(uploadDocument?.sizes).length) {\n return `<img src=\"${url}\" alt=\"${uploadDocument?.filename}\" width=\"${uploadDocument?.width}\" height=\"${uploadDocument?.height}\"/>`\n }\n\n /**\n * If the upload is an image with different sizes, return a picture element\n */\n let pictureHTML = '<picture>'\n\n // Iterate through each size in the data.sizes object\n for (const size in uploadDocument.sizes) {\n const imageSize = uploadDocument.sizes[size]\n\n // Skip if any property of the size object is null\n if (\n !imageSize.width ||\n !imageSize.height ||\n !imageSize.mimeType ||\n !imageSize.filesize ||\n !imageSize.filename ||\n !imageSize.url\n ) {\n continue\n }\n const imageSizeURL: string = getAbsoluteURL(imageSize?.url as string, payload)\n\n pictureHTML += `<source srcset=\"${imageSizeURL}\" media=\"(max-width: ${imageSize.width}px)\" type=\"${imageSize.mimeType}\">`\n }\n\n // Add the default img tag\n pictureHTML += `<img src=\"${url}\" alt=\"Image\" width=\"${uploadDocument.width}\" height=\"${uploadDocument.height}\">`\n pictureHTML += '</picture>'\n return pictureHTML\n } else {\n return `<img src=\"${node.value.id}\" />`\n }\n },\n nodeTypes: [UploadNode.getType()],\n } as HTMLConverter<SerializedUploadNode>,\n },\n node: UploadNode,\n populationPromises: [uploadPopulationPromiseHOC(props)],\n validations: [uploadValidation()],\n },\n ],\n serverFeatureProps: props,\n }\n },\n key: 'upload',\n serverFeatureProps: props,\n }\n}\n"],"names":["UploadFeatureClientComponent","UploadNode","uploadPopulationPromiseHOC","uploadValidation","getAbsoluteURL","url","payload","startsWith","config","serverURL","UploadFeature","props","collections","clientProps","collection","hasExtraFields","fields","length","feature","ClientComponent","clientFeatureProps","generateSchemaMap","map","nodes","converters","html","converter","node","uploadDocument","findByID","id","value","relationTo","ignored","console","error","mimeType","filename","sizes","Object","keys","width","height","pictureHTML","size","imageSize","filesize","imageSizeURL","nodeTypes","getType","populationPromises","validations","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/field/features/upload/feature.server.ts"],"sourcesContent":["import type { Config } from 'payload/config'\nimport type { Field, FileData, FileSize, Payload, TypeWithID } from 'payload/types'\n\nimport { traverseFields } from '@payloadcms/next/utilities'\nimport { sanitizeFields } from 'payload/config'\n\nimport type { FeatureProviderProviderServer } from '../types.js'\nimport type { UploadFeaturePropsClient } from './feature.client.js'\n\nimport { createNode } from '../typeUtilities.js'\nimport { UploadFeatureClientComponent } from './feature.client.js'\nimport { UploadNode } from './nodes/UploadNode.js'\nimport { uploadPopulationPromiseHOC } from './populationPromise.js'\nimport { uploadValidation } from './validate.js'\n\nexport type UploadFeatureProps = {\n collections?: {\n [collection: string]: {\n fields: Field[]\n }\n }\n /**\n * Sets a maximum population depth for this upload (not the fields for this upload), regardless of the remaining depth when the respective field is reached.\n * This behaves exactly like the maxDepth properties of relationship and upload fields.\n *\n * {@link https://payloadcms.com/docs/getting-started/concepts#field-level-max-depth}\n */\n maxDepth?: number\n}\n\n/**\n * Get the absolute URL for an upload URL by potentially prepending the serverURL\n */\nfunction getAbsoluteURL(url: string, payload: Payload): string {\n return url?.startsWith('http') ? url : (payload?.config?.serverURL || '') + url\n}\n\nexport const UploadFeature: FeatureProviderProviderServer<\n UploadFeatureProps,\n UploadFeaturePropsClient\n> = (props) => {\n if (!props) {\n props = { collections: {} }\n }\n\n const clientProps: UploadFeaturePropsClient = {\n collections: {},\n }\n if (props.collections) {\n for (const collection in props.collections) {\n clientProps.collections[collection] = {\n hasExtraFields: props.collections[collection].fields.length >= 1,\n }\n }\n }\n\n return {\n feature: async ({ config: _config, isRoot }) => {\n const validRelationships = _config.collections.map((c) => c.slug) || []\n\n for (const collection in props.collections) {\n if (props.collections[collection].fields?.length) {\n props.collections[collection].fields = await sanitizeFields({\n config: _config as unknown as Config,\n fields: props.collections[collection].fields,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n }\n }\n\n return {\n ClientComponent: UploadFeatureClientComponent,\n clientFeatureProps: clientProps,\n generateSchemaMap: ({ config, i18n, props }) => {\n if (!props?.collections) return null\n\n const schemaMap = new Map<string, Field[]>()\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n for (const collection in props.collections) {\n if (props.collections[collection].fields?.length) {\n schemaMap.set(collection, props.collections[collection].fields)\n traverseFields({\n config,\n fields: props.collections[collection].fields,\n i18n,\n schemaMap,\n schemaPath: collection,\n validRelationships,\n })\n }\n }\n\n return schemaMap\n },\n nodes: [\n createNode({\n converters: {\n html: {\n converter: async ({ node, payload }) => {\n // @ts-expect-error\n const id = node?.value?.id || node?.value // for backwards-compatibility\n\n if (payload) {\n let uploadDocument: TypeWithID & FileData\n\n try {\n uploadDocument = (await payload.findByID({\n id,\n collection: node.relationTo,\n })) as TypeWithID & FileData\n } catch (ignored) {\n // eslint-disable-next-line no-console\n console.error(\n 'Lexical upload node HTML converter: error fetching upload file',\n ignored,\n 'Node:',\n node,\n )\n return `<img />`\n }\n\n const url = getAbsoluteURL(uploadDocument?.url, payload)\n\n /**\n * If the upload is not an image, return a link to the upload\n */\n if (!uploadDocument?.mimeType?.startsWith('image')) {\n return `<a href=\"${url}\" rel=\"noopener noreferrer\">${uploadDocument.filename}</a>`\n }\n\n /**\n * If the upload is a simple image with no different sizes, return a simple img tag\n */\n if (!uploadDocument?.sizes || !Object.keys(uploadDocument?.sizes).length) {\n return `<img src=\"${url}\" alt=\"${uploadDocument?.filename}\" width=\"${uploadDocument?.width}\" height=\"${uploadDocument?.height}\"/>`\n }\n\n /**\n * If the upload is an image with different sizes, return a picture element\n */\n let pictureHTML = '<picture>'\n\n // Iterate through each size in the data.sizes object\n for (const size in uploadDocument.sizes) {\n const imageSize: FileSize & {\n url?: string\n } = uploadDocument.sizes[size]\n\n // Skip if any property of the size object is null\n if (\n !imageSize.width ||\n !imageSize.height ||\n !imageSize.mimeType ||\n !imageSize.filesize ||\n !imageSize.filename ||\n !imageSize.url\n ) {\n continue\n }\n const imageSizeURL = getAbsoluteURL(imageSize?.url, payload)\n\n pictureHTML += `<source srcset=\"${imageSizeURL}\" media=\"(max-width: ${imageSize.width}px)\" type=\"${imageSize.mimeType}\">`\n }\n\n // Add the default img tag\n pictureHTML += `<img src=\"${url}\" alt=\"Image\" width=\"${uploadDocument.width}\" height=\"${uploadDocument.height}\">`\n pictureHTML += '</picture>'\n return pictureHTML\n } else {\n return `<img src=\"${id}\" />`\n }\n },\n nodeTypes: [UploadNode.getType()],\n },\n },\n node: UploadNode,\n populationPromises: [uploadPopulationPromiseHOC(props)],\n validations: [uploadValidation(props)],\n }),\n ],\n serverFeatureProps: props,\n }\n },\n key: 'upload',\n serverFeatureProps: props,\n }\n}\n"],"names":["traverseFields","sanitizeFields","createNode","UploadFeatureClientComponent","UploadNode","uploadPopulationPromiseHOC","uploadValidation","getAbsoluteURL","url","payload","startsWith","config","serverURL","UploadFeature","props","collections","clientProps","collection","hasExtraFields","fields","length","feature","_config","isRoot","validRelationships","map","c","slug","requireFieldLevelRichTextEditor","ClientComponent","clientFeatureProps","generateSchemaMap","i18n","schemaMap","Map","set","schemaPath","nodes","converters","html","converter","node","id","value","uploadDocument","findByID","relationTo","ignored","console","error","mimeType","filename","sizes","Object","keys","width","height","pictureHTML","size","imageSize","filesize","imageSizeURL","nodeTypes","getType","populationPromises","validations","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}