@payloadcms/richtext-lexical 3.0.0-beta.47 → 3.0.0-beta.49

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 (325) hide show
  1. package/README.md +1 -1
  2. package/dist/cell/index.d.ts +1 -1
  3. package/dist/cell/index.d.ts.map +1 -1
  4. package/dist/cell/index.js +1 -2
  5. package/dist/cell/index.js.map +1 -1
  6. package/dist/exports/client/Component-6AVANNNR.js +2 -0
  7. package/dist/exports/client/Component-6AVANNNR.js.map +7 -0
  8. package/dist/exports/client/Component-SZVAYRJX.js +2 -0
  9. package/dist/exports/client/Component-SZVAYRJX.js.map +7 -0
  10. package/dist/exports/client/Field-U5PHZTST.js +2 -0
  11. package/dist/exports/client/Field-U5PHZTST.js.map +7 -0
  12. package/dist/exports/client/RelationshipComponent-FGUPLCD2.js +2 -0
  13. package/dist/exports/client/RelationshipComponent-FGUPLCD2.js.map +7 -0
  14. package/dist/exports/client/bundled.css +1 -0
  15. package/dist/exports/client/chunk-33ZTAHVL.js +2 -0
  16. package/dist/exports/client/chunk-33ZTAHVL.js.map +7 -0
  17. package/dist/exports/client/chunk-35NZOHAF.js +2 -0
  18. package/dist/exports/client/chunk-35NZOHAF.js.map +7 -0
  19. package/dist/exports/client/chunk-3PZ2ZFQG.js +3 -0
  20. package/dist/exports/client/chunk-3PZ2ZFQG.js.map +7 -0
  21. package/dist/exports/client/chunk-FSTRW2TI.js +2 -0
  22. package/dist/exports/client/chunk-FSTRW2TI.js.map +7 -0
  23. package/dist/exports/client/chunk-Y5455JF3.js +2 -0
  24. package/dist/exports/client/chunk-Y5455JF3.js.map +7 -0
  25. package/dist/exports/client/component-FFLILIUZ.js +2 -0
  26. package/dist/exports/client/component-FFLILIUZ.js.map +7 -0
  27. package/dist/exports/client/component-GR6KYTLO.js +2 -0
  28. package/dist/exports/client/component-GR6KYTLO.js.map +7 -0
  29. package/dist/exports/client/component-RAVN56DE.js +2 -0
  30. package/dist/exports/client/component-RAVN56DE.js.map +7 -0
  31. package/dist/exports/client/index.d.ts +52 -0
  32. package/dist/exports/client/index.d.ts.map +1 -0
  33. package/dist/exports/client/index.js +36 -0
  34. package/dist/exports/client/index.js.map +7 -0
  35. package/dist/field/Field.d.ts +1 -0
  36. package/dist/field/Field.d.ts.map +1 -1
  37. package/dist/field/Field.js +3 -8
  38. package/dist/field/Field.js.map +1 -1
  39. package/dist/field/bundled.css +0 -0
  40. package/dist/field/features/align/feature.server.d.ts.map +1 -1
  41. package/dist/field/features/align/feature.server.js +2 -1
  42. package/dist/field/features/align/feature.server.js.map +1 -1
  43. package/dist/field/features/blockquote/feature.server.d.ts.map +1 -1
  44. package/dist/field/features/blockquote/feature.server.js +2 -1
  45. package/dist/field/features/blockquote/feature.server.js.map +1 -1
  46. package/dist/field/features/blocks/component/BlockContent.js +1 -9
  47. package/dist/field/features/blocks/component/BlockContent.js.map +1 -1
  48. package/dist/field/features/blocks/component/FormSavePlugin.d.ts +1 -2
  49. package/dist/field/features/blocks/component/FormSavePlugin.d.ts.map +1 -1
  50. package/dist/field/features/blocks/component/FormSavePlugin.js +2 -2
  51. package/dist/field/features/blocks/component/FormSavePlugin.js.map +1 -1
  52. package/dist/field/features/blocks/component/index.d.ts.map +1 -1
  53. package/dist/field/features/blocks/component/index.js +2 -12
  54. package/dist/field/features/blocks/component/index.js.map +1 -1
  55. package/dist/field/features/blocks/component/removeEmptyArrayValues.d.ts +1 -1
  56. package/dist/field/features/blocks/component/removeEmptyArrayValues.d.ts.map +1 -1
  57. package/dist/field/features/blocks/component/removeEmptyArrayValues.js.map +1 -1
  58. package/dist/field/features/blocks/drawer/index.d.ts.map +1 -1
  59. package/dist/field/features/blocks/drawer/index.js +1 -4
  60. package/dist/field/features/blocks/drawer/index.js.map +1 -1
  61. package/dist/field/features/blocks/feature.server.d.ts +1 -1
  62. package/dist/field/features/blocks/feature.server.d.ts.map +1 -1
  63. package/dist/field/features/blocks/feature.server.js +3 -3
  64. package/dist/field/features/blocks/feature.server.js.map +1 -1
  65. package/dist/field/features/converters/html/field/index.d.ts +7 -1
  66. package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
  67. package/dist/field/features/converters/html/field/index.js +62 -53
  68. package/dist/field/features/converters/html/field/index.js.map +1 -1
  69. package/dist/field/features/createFeaturePropComponent.d.ts.map +1 -1
  70. package/dist/field/features/createFeaturePropComponent.js +1 -3
  71. package/dist/field/features/createFeaturePropComponent.js.map +1 -1
  72. package/dist/field/features/debug/testRecorder/feature.server.d.ts.map +1 -1
  73. package/dist/field/features/debug/testRecorder/feature.server.js +2 -1
  74. package/dist/field/features/debug/testRecorder/feature.server.js.map +1 -1
  75. package/dist/field/features/debug/testRecorder/plugin/index.js +0 -1
  76. package/dist/field/features/debug/testRecorder/plugin/index.js.map +1 -1
  77. package/dist/field/features/debug/treeView/feature.server.d.ts.map +1 -1
  78. package/dist/field/features/debug/treeView/feature.server.js +2 -1
  79. package/dist/field/features/debug/treeView/feature.server.js.map +1 -1
  80. package/dist/field/features/debug/treeView/plugin/index.js +0 -1
  81. package/dist/field/features/debug/treeView/plugin/index.js.map +1 -1
  82. package/dist/field/features/format/bold/feature.server.d.ts.map +1 -1
  83. package/dist/field/features/format/bold/feature.server.js +2 -1
  84. package/dist/field/features/format/bold/feature.server.js.map +1 -1
  85. package/dist/field/features/format/inlineCode/feature.server.d.ts.map +1 -1
  86. package/dist/field/features/format/inlineCode/feature.server.js +2 -1
  87. package/dist/field/features/format/inlineCode/feature.server.js.map +1 -1
  88. package/dist/field/features/format/italic/feature.server.d.ts.map +1 -1
  89. package/dist/field/features/format/italic/feature.server.js +2 -1
  90. package/dist/field/features/format/italic/feature.server.js.map +1 -1
  91. package/dist/field/features/format/strikethrough/feature.server.d.ts.map +1 -1
  92. package/dist/field/features/format/strikethrough/feature.server.js +2 -1
  93. package/dist/field/features/format/strikethrough/feature.server.js.map +1 -1
  94. package/dist/field/features/format/subscript/feature.server.d.ts.map +1 -1
  95. package/dist/field/features/format/subscript/feature.server.js +2 -1
  96. package/dist/field/features/format/subscript/feature.server.js.map +1 -1
  97. package/dist/field/features/format/superscript/feature.server.d.ts.map +1 -1
  98. package/dist/field/features/format/superscript/feature.server.js +2 -1
  99. package/dist/field/features/format/superscript/feature.server.js.map +1 -1
  100. package/dist/field/features/format/underline/feature.server.d.ts.map +1 -1
  101. package/dist/field/features/format/underline/feature.server.js +2 -1
  102. package/dist/field/features/format/underline/feature.server.js.map +1 -1
  103. package/dist/field/features/heading/feature.client.d.ts.map +1 -1
  104. package/dist/field/features/heading/feature.client.js +1 -2
  105. package/dist/field/features/heading/feature.client.js.map +1 -1
  106. package/dist/field/features/heading/feature.server.d.ts.map +1 -1
  107. package/dist/field/features/heading/feature.server.js +2 -1
  108. package/dist/field/features/heading/feature.server.js.map +1 -1
  109. package/dist/field/features/horizontalRule/feature.server.d.ts.map +1 -1
  110. package/dist/field/features/horizontalRule/feature.server.js +2 -1
  111. package/dist/field/features/horizontalRule/feature.server.js.map +1 -1
  112. package/dist/field/features/horizontalRule/plugin/index.js +0 -1
  113. package/dist/field/features/horizontalRule/plugin/index.js.map +1 -1
  114. package/dist/field/features/indent/feature.server.d.ts.map +1 -1
  115. package/dist/field/features/indent/feature.server.js +2 -1
  116. package/dist/field/features/indent/feature.server.js.map +1 -1
  117. package/dist/field/features/link/drawer/baseFields.d.ts +1 -2
  118. package/dist/field/features/link/drawer/baseFields.d.ts.map +1 -1
  119. package/dist/field/features/link/drawer/baseFields.js.map +1 -1
  120. package/dist/field/features/link/drawer/index.d.ts.map +1 -1
  121. package/dist/field/features/link/drawer/index.js +2 -10
  122. package/dist/field/features/link/drawer/index.js.map +1 -1
  123. package/dist/field/features/link/drawer/types.d.ts +1 -1
  124. package/dist/field/features/link/drawer/types.d.ts.map +1 -1
  125. package/dist/field/features/link/drawer/types.js.map +1 -1
  126. package/dist/field/features/link/feature.server.d.ts +1 -2
  127. package/dist/field/features/link/feature.server.d.ts.map +1 -1
  128. package/dist/field/features/link/feature.server.js +5 -4
  129. package/dist/field/features/link/feature.server.js.map +1 -1
  130. package/dist/field/features/link/nodes/LinkNode.d.ts.map +1 -1
  131. package/dist/field/features/link/nodes/LinkNode.js.map +1 -1
  132. package/dist/field/features/link/plugins/autoLink/index.js.map +1 -1
  133. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  134. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +3 -8
  135. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  136. package/dist/field/features/link/plugins/floatingLinkEditor/index.js +0 -1
  137. package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -1
  138. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts +1 -2
  139. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
  140. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -1
  141. package/dist/field/features/link/validate.d.ts +1 -1
  142. package/dist/field/features/link/validate.d.ts.map +1 -1
  143. package/dist/field/features/link/validate.js.map +1 -1
  144. package/dist/field/features/lists/checklist/feature.server.d.ts.map +1 -1
  145. package/dist/field/features/lists/checklist/feature.server.js +2 -1
  146. package/dist/field/features/lists/checklist/feature.server.js.map +1 -1
  147. package/dist/field/features/lists/orderedList/feature.server.d.ts.map +1 -1
  148. package/dist/field/features/lists/orderedList/feature.server.js +2 -1
  149. package/dist/field/features/lists/orderedList/feature.server.js.map +1 -1
  150. package/dist/field/features/lists/unorderedList/feature.server.d.ts.map +1 -1
  151. package/dist/field/features/lists/unorderedList/feature.server.js +2 -1
  152. package/dist/field/features/lists/unorderedList/feature.server.js.map +1 -1
  153. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +1 -1
  154. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +2 -1
  155. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
  156. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +0 -1
  157. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  158. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -2
  159. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  160. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  161. package/dist/field/features/migrations/slateToLexical/feature.server.d.ts.map +1 -1
  162. package/dist/field/features/migrations/slateToLexical/feature.server.js +2 -1
  163. package/dist/field/features/migrations/slateToLexical/feature.server.js.map +1 -1
  164. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +0 -1
  165. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  166. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -2
  167. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  168. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  169. package/dist/field/features/paragraph/feature.server.d.ts.map +1 -1
  170. package/dist/field/features/paragraph/feature.server.js +2 -1
  171. package/dist/field/features/paragraph/feature.server.js.map +1 -1
  172. package/dist/field/features/relationship/drawer/index.js +1 -1
  173. package/dist/field/features/relationship/drawer/index.js.map +1 -1
  174. package/dist/field/features/relationship/feature.server.d.ts.map +1 -1
  175. package/dist/field/features/relationship/feature.server.js +2 -1
  176. package/dist/field/features/relationship/feature.server.js.map +1 -1
  177. package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  178. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +2 -8
  179. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  180. package/dist/field/features/relationship/plugins/index.d.ts.map +1 -1
  181. package/dist/field/features/relationship/plugins/index.js +2 -3
  182. package/dist/field/features/relationship/plugins/index.js.map +1 -1
  183. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.d.ts.map +1 -1
  184. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +1 -3
  185. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js.map +1 -1
  186. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -1
  187. package/dist/field/features/toolbars/fixed/Toolbar/index.js +1 -3
  188. package/dist/field/features/toolbars/fixed/Toolbar/index.js.map +1 -1
  189. package/dist/field/features/toolbars/fixed/feature.server.d.ts.map +1 -1
  190. package/dist/field/features/toolbars/fixed/feature.server.js +2 -1
  191. package/dist/field/features/toolbars/fixed/feature.server.js.map +1 -1
  192. package/dist/field/features/toolbars/inline/Toolbar/index.js +0 -1
  193. package/dist/field/features/toolbars/inline/Toolbar/index.js.map +1 -1
  194. package/dist/field/features/toolbars/inline/feature.server.d.ts.map +1 -1
  195. package/dist/field/features/toolbars/inline/feature.server.js +2 -1
  196. package/dist/field/features/toolbars/inline/feature.server.js.map +1 -1
  197. package/dist/field/features/toolbars/shared/ToolbarButton/index.js +0 -1
  198. package/dist/field/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  199. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +1 -2
  200. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  201. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js +1 -2
  202. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  203. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js +1 -2
  204. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  205. package/dist/field/features/types.d.ts +1 -3
  206. package/dist/field/features/types.d.ts.map +1 -1
  207. package/dist/field/features/types.js.map +1 -1
  208. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts +1 -1
  209. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
  210. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +3 -10
  211. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -1
  212. package/dist/field/features/upload/component/index.d.ts.map +1 -1
  213. package/dist/field/features/upload/component/index.js +1 -9
  214. package/dist/field/features/upload/component/index.js.map +1 -1
  215. package/dist/field/features/upload/drawer/index.js +1 -1
  216. package/dist/field/features/upload/drawer/index.js.map +1 -1
  217. package/dist/field/features/upload/feature.server.d.ts +1 -1
  218. package/dist/field/features/upload/feature.server.d.ts.map +1 -1
  219. package/dist/field/features/upload/feature.server.js +3 -2
  220. package/dist/field/features/upload/feature.server.js.map +1 -1
  221. package/dist/field/features/upload/nodes/UploadNode.d.ts +1 -2
  222. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  223. package/dist/field/features/upload/nodes/UploadNode.js.map +1 -1
  224. package/dist/field/features/upload/plugin/index.js +1 -1
  225. package/dist/field/features/upload/plugin/index.js.map +1 -1
  226. package/dist/field/features/upload/validate.js +1 -1
  227. package/dist/field/features/upload/validate.js.map +1 -1
  228. package/dist/field/index.d.ts.map +1 -1
  229. package/dist/field/index.js +35 -99
  230. package/dist/field/index.js.map +1 -1
  231. package/dist/field/lexical/LexicalEditor.js +1 -2
  232. package/dist/field/lexical/LexicalEditor.js.map +1 -1
  233. package/dist/field/lexical/LexicalProvider.d.ts +1 -2
  234. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  235. package/dist/field/lexical/LexicalProvider.js +1 -1
  236. package/dist/field/lexical/LexicalProvider.js.map +1 -1
  237. package/dist/field/lexical/config/server/loader.d.ts +1 -1
  238. package/dist/field/lexical/config/server/loader.d.ts.map +1 -1
  239. package/dist/field/lexical/config/server/loader.js.map +1 -1
  240. package/dist/field/lexical/config/server/sanitize.d.ts +1 -1
  241. package/dist/field/lexical/config/server/sanitize.d.ts.map +1 -1
  242. package/dist/field/lexical/config/server/sanitize.js.map +1 -1
  243. package/dist/field/lexical/nodes/index.d.ts.map +1 -1
  244. package/dist/field/lexical/nodes/index.js.map +1 -1
  245. package/dist/field/lexical/plugins/SlashMenu/index.js +2 -3
  246. package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -1
  247. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +0 -1
  248. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  249. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +0 -1
  250. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  251. package/dist/field/lexical/theme/EditorTheme.js +0 -1
  252. package/dist/field/lexical/theme/EditorTheme.js.map +1 -1
  253. package/dist/field/lexical/ui/ContentEditable.js +0 -1
  254. package/dist/field/lexical/ui/ContentEditable.js.map +1 -1
  255. package/dist/generateComponentMap.d.ts +1 -1
  256. package/dist/generateComponentMap.d.ts.map +1 -1
  257. package/dist/generateComponentMap.js.map +1 -1
  258. package/dist/generateSchemaMap.d.ts +1 -1
  259. package/dist/generateSchemaMap.d.ts.map +1 -1
  260. package/dist/generateSchemaMap.js.map +1 -1
  261. package/dist/index.d.ts +0 -19
  262. package/dist/index.d.ts.map +1 -1
  263. package/dist/index.js +3 -22
  264. package/dist/index.js.map +1 -1
  265. package/dist/populateGraphQL/populate.d.ts +1 -1
  266. package/dist/populateGraphQL/populate.d.ts.map +1 -1
  267. package/dist/populateGraphQL/populate.js +1 -1
  268. package/dist/populateGraphQL/populate.js.map +1 -1
  269. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +1 -1
  270. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  271. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  272. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts +1 -2
  273. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -1
  274. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +1 -1
  275. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  276. package/dist/types.d.ts +1 -3
  277. package/dist/types.d.ts.map +1 -1
  278. package/dist/types.js.map +1 -1
  279. package/dist/useLexicalFeature.d.ts.map +1 -1
  280. package/dist/useLexicalFeature.js +1 -3
  281. package/dist/useLexicalFeature.js.map +1 -1
  282. package/dist/validate/index.d.ts +1 -1
  283. package/dist/validate/index.d.ts.map +1 -1
  284. package/dist/validate/index.js.map +1 -1
  285. package/dist/validate/validateNodes.d.ts +1 -1
  286. package/dist/validate/validateNodes.d.ts.map +1 -1
  287. package/dist/validate/validateNodes.js.map +1 -1
  288. package/package.json +22 -22
  289. package/components.d.ts +0 -6
  290. package/components.js +0 -7
  291. package/dist/exports/components.d.ts +0 -11
  292. package/dist/exports/components.d.ts.map +0 -1
  293. package/dist/exports/components.js +0 -12
  294. package/dist/exports/components.js.map +0 -1
  295. package/dist/field/features/blocks/component/index.scss +0 -149
  296. package/dist/field/features/debug/testRecorder/plugin/index.scss +0 -49
  297. package/dist/field/features/debug/treeView/plugin/index.scss +0 -78
  298. package/dist/field/features/horizontalRule/plugin/index.scss +0 -20
  299. package/dist/field/features/link/drawer/index.scss +0 -50
  300. package/dist/field/features/link/plugins/floatingLinkEditor/index.scss +0 -86
  301. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.scss +0 -14
  302. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.scss +0 -14
  303. package/dist/field/features/relationship/nodes/components/index.scss +0 -97
  304. package/dist/field/features/toolbars/fixed/Toolbar/index.scss +0 -119
  305. package/dist/field/features/toolbars/inline/Toolbar/index.scss +0 -53
  306. package/dist/field/features/toolbars/shared/ToolbarButton/index.scss +0 -39
  307. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.scss +0 -112
  308. package/dist/field/features/upload/component/index.scss +0 -152
  309. package/dist/field/index.scss +0 -25
  310. package/dist/field/lexical/LexicalEditor.scss +0 -49
  311. package/dist/field/lexical/plugins/SlashMenu/index.scss +0 -61
  312. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.scss +0 -31
  313. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +0 -72
  314. package/dist/field/lexical/theme/EditorTheme.scss +0 -509
  315. package/dist/field/lexical/ui/ContentEditable.scss +0 -76
  316. package/dist/scss/app.scss +0 -208
  317. package/dist/scss/colors.scss +0 -269
  318. package/dist/scss/queries.scss +0 -27
  319. package/dist/scss/resets.scss +0 -17
  320. package/dist/scss/styles.scss +0 -11
  321. package/dist/scss/svg.scss +0 -10
  322. package/dist/scss/toasts.scss +0 -111
  323. package/dist/scss/type.scss +0 -117
  324. package/dist/scss/vars.scss +0 -213
  325. package/dist/scss/z-index.scss +0 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/field/features/upload/component/ExtraFieldsDrawer/index.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui/forms/Form'\nimport type { ClientCollectionConfig, FormState } from 'payload/types'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Drawer } from '@payloadcms/ui/elements/Drawer'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\nimport { Form } from '@payloadcms/ui/forms/Form'\nimport { RenderFields } from '@payloadcms/ui/forms/RenderFields'\nimport { FormSubmit } from '@payloadcms/ui/forms/Submit'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useDocumentInfo } from '@payloadcms/ui/providers/DocumentInfo'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport { getFormState } from '@payloadcms/ui/utilities/getFormState'\nimport { $getNodeByKey } from 'lexical'\nimport { deepCopyObject } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { UploadData, UploadNode } from '../../nodes/UploadNode.js'\nimport type { ElementProps } from '../index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\n\n/**\n * This handles the extra fields, e.g. captions or alt text, which are\n * potentially added to the upload feature.\n */\nexport const ExtraFieldsUploadDrawer: React.FC<\n ElementProps & {\n drawerSlug: string\n relatedCollection: ClientCollectionConfig\n }\n> = (props) => {\n const {\n data: { fields, relationTo, value },\n drawerSlug,\n nodeKey,\n relatedCollection,\n } = props\n\n const [editor] = useLexicalComposerContext()\n\n const { closeModal } = useModal()\n\n const { i18n, t } = useTranslation()\n const { id } = useDocumentInfo()\n const { schemaPath } = useFieldProps()\n const config = useConfig()\n const [initialState, setInitialState] = useState<FormState | false>(false)\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n const componentMapRenderedFieldsPath = `feature.upload.fields.${relatedCollection.slug}`\n const schemaFieldsPath = `${schemaPath}.feature.upload.${relatedCollection.slug}`\n\n const fieldMap = richTextComponentMap.get(componentMapRenderedFieldsPath) // Field Schema\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n data: deepCopyObject(fields || {}),\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n }) // Form State\n\n setInitialState(state)\n }\n\n void awaitInitialState()\n }, [config.routes.api, config.serverURL, schemaFieldsPath, id, fields])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, schemaFieldsPath, id],\n )\n\n const handleUpdateEditData = useCallback(\n (_, data) => {\n // Update lexical node (with key nodeKey) with new data\n editor.update(() => {\n const uploadNode: UploadNode | null = $getNodeByKey(nodeKey)\n if (uploadNode) {\n const newData: UploadData = {\n ...uploadNode.getData(),\n fields: data,\n }\n uploadNode.setData(newData)\n }\n })\n\n closeModal(drawerSlug)\n },\n [closeModal, editor, drawerSlug, nodeKey],\n )\n\n return (\n <Drawer\n slug={drawerSlug}\n title={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n >\n {initialState !== false && (\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n // @ts-expect-error TODO: Fix this\n fields={fieldMap}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleUpdateEditData}\n uuid={uuid()}\n >\n <RenderFields\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n forceRender\n path=\"\" // See Blocks feature path for details as for why this is empty\n readOnly={false}\n schemaPath={schemaFieldsPath}\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n )}\n </Drawer>\n )\n}\n"],"names":["useModal","useLexicalComposerContext","getTranslation","Drawer","useFieldProps","Form","RenderFields","FormSubmit","useConfig","useDocumentInfo","useTranslation","getFormState","$getNodeByKey","deepCopyObject","React","useCallback","useEffect","useState","v4","uuid","useEditorConfigContext","ExtraFieldsUploadDrawer","props","data","fields","relationTo","value","drawerSlug","nodeKey","relatedCollection","editor","closeModal","i18n","t","id","schemaPath","config","initialState","setInitialState","field","richTextComponentMap","componentMapRenderedFieldsPath","slug","schemaFieldsPath","fieldMap","get","awaitInitialState","state","apiRoute","routes","api","body","operation","serverURL","onChange","formState","prevFormState","handleUpdateEditData","_","update","uploadNode","newData","getData","setData","title","label","labels","singular","beforeSubmit","disableValidationOnSubmit","onSubmit","Array","isArray","forceRender","path","readOnly"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/field/features/upload/component/ExtraFieldsDrawer/index.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui/forms/Form'\nimport type { ClientCollectionConfig, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Drawer,\n Form,\n FormSubmit,\n RenderFields,\n useConfig,\n useDocumentInfo,\n useFieldProps,\n useTranslation,\n} from '@payloadcms/ui/client'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\nimport { deepCopyObject } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { UploadData, UploadNode } from '../../nodes/UploadNode.js'\nimport type { ElementProps } from '../index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\n\n/**\n * This handles the extra fields, e.g. captions or alt text, which are\n * potentially added to the upload feature.\n */\nexport const ExtraFieldsUploadDrawer: React.FC<\n ElementProps & {\n drawerSlug: string\n relatedCollection: ClientCollectionConfig\n }\n> = (props) => {\n const {\n data: { fields, relationTo, value },\n drawerSlug,\n nodeKey,\n relatedCollection,\n } = props\n\n const [editor] = useLexicalComposerContext()\n\n const { closeModal } = useModal()\n\n const { i18n, t } = useTranslation()\n const { id } = useDocumentInfo()\n const { schemaPath } = useFieldProps()\n const config = useConfig()\n const [initialState, setInitialState] = useState<FormState | false>(false)\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n const componentMapRenderedFieldsPath = `feature.upload.fields.${relatedCollection.slug}`\n const schemaFieldsPath = `${schemaPath}.feature.upload.${relatedCollection.slug}`\n\n const fieldMap = richTextComponentMap.get(componentMapRenderedFieldsPath) // Field Schema\n\n useEffect(() => {\n const awaitInitialState = async () => {\n const state = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n data: deepCopyObject(fields || {}),\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n }) // Form State\n\n setInitialState(state)\n }\n\n void awaitInitialState()\n }, [config.routes.api, config.serverURL, schemaFieldsPath, id, fields])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n return await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n })\n },\n\n [config.routes.api, config.serverURL, schemaFieldsPath, id],\n )\n\n const handleUpdateEditData = useCallback(\n (_, data) => {\n // Update lexical node (with key nodeKey) with new data\n editor.update(() => {\n const uploadNode: UploadNode | null = $getNodeByKey(nodeKey)\n if (uploadNode) {\n const newData: UploadData = {\n ...uploadNode.getData(),\n fields: data,\n }\n uploadNode.setData(newData)\n }\n })\n\n closeModal(drawerSlug)\n },\n [closeModal, editor, drawerSlug, nodeKey],\n )\n\n return (\n <Drawer\n slug={drawerSlug}\n title={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n >\n {initialState !== false && (\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n // @ts-expect-error TODO: Fix this\n fields={fieldMap}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleUpdateEditData}\n uuid={uuid()}\n >\n <RenderFields\n fieldMap={Array.isArray(fieldMap) ? fieldMap : []}\n forceRender\n path=\"\" // See Blocks feature path for details as for why this is empty\n readOnly={false}\n schemaPath={schemaFieldsPath}\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n )}\n </Drawer>\n )\n}\n"],"names":["useModal","useLexicalComposerContext","getTranslation","Drawer","Form","FormSubmit","RenderFields","useConfig","useDocumentInfo","useFieldProps","useTranslation","getFormState","$getNodeByKey","deepCopyObject","React","useCallback","useEffect","useState","v4","uuid","useEditorConfigContext","ExtraFieldsUploadDrawer","props","data","fields","relationTo","value","drawerSlug","nodeKey","relatedCollection","editor","closeModal","i18n","t","id","schemaPath","config","initialState","setInitialState","field","richTextComponentMap","componentMapRenderedFieldsPath","slug","schemaFieldsPath","fieldMap","get","awaitInitialState","state","apiRoute","routes","api","body","operation","serverURL","onChange","formState","prevFormState","handleUpdateEditData","_","update","uploadNode","newData","getData","setData","title","label","labels","singular","beforeSubmit","disableValidationOnSubmit","onSubmit","Array","isArray","forceRender","path","readOnly"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/component/index.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAInF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAOxD,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AA2MD,eAAO,MAAM,eAAe,UAAW,YAAY,KAAG,MAAM,SAM3D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/component/index.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAInF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAOxD,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AA2MD,eAAO,MAAM,eAAe,UAAW,YAAY,KAAG,MAAM,SAM3D,CAAA"}
@@ -4,14 +4,7 @@ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext
4
4
  import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js';
5
5
  import { mergeRegister } from '@lexical/utils';
6
6
  import { getTranslation } from '@payloadcms/translations';
7
- import { Button } from '@payloadcms/ui/elements/Button';
8
- import { useDocumentDrawer } from '@payloadcms/ui/elements/DocumentDrawer';
9
- import { DrawerToggler } from '@payloadcms/ui/elements/Drawer';
10
- import { useDrawerSlug } from '@payloadcms/ui/elements/Drawer';
11
- import { File } from '@payloadcms/ui/graphics/File';
12
- import usePayloadAPI from '@payloadcms/ui/hooks/usePayloadAPI';
13
- import { useConfig } from '@payloadcms/ui/providers/Config';
14
- import { useTranslation } from '@payloadcms/ui/providers/Translation';
7
+ import { Button, DrawerToggler, File, useConfig, useDocumentDrawer, useDrawerSlug, usePayloadAPI, useTranslation } from '@payloadcms/ui/client';
15
8
  import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
16
9
  import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
17
10
  import { useEditorConfigContext } from '../../../lexical/config/client/EditorConfigProvider.js';
@@ -19,7 +12,6 @@ import { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledR
19
12
  import { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js';
20
13
  import { $isUploadNode } from '../nodes/UploadNode.js';
21
14
  import { ExtraFieldsUploadDrawer } from './ExtraFieldsDrawer/index.js';
22
- import './index.scss';
23
15
  const baseClass = 'lexical-upload';
24
16
  const initialParams = {
25
17
  depth: 0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/upload/component/index.tsx"],"sourcesContent":["'use client'\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
+ {"version":3,"sources":["../../../../../src/field/features/upload/component/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\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 {\n Button,\n DrawerToggler,\n File,\n useConfig,\n useDocumentDrawer,\n useDrawerSlug,\n usePayloadAPI,\n useTranslation,\n} from '@payloadcms/ui/client'\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","DrawerToggler","File","useConfig","useDocumentDrawer","useDrawerSlug","usePayloadAPI","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,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
4
- import { useListDrawer } from '@payloadcms/ui/elements/ListDrawer';
4
+ import { useListDrawer } from '@payloadcms/ui/client';
5
5
  import { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical';
6
6
  import React, { useCallback, useEffect, useState } from 'react';
7
7
  import { EnabledRelationshipsCondition } from '../../relationship/utils/EnabledRelationshipsCondition.js';
@@ -1 +1 @@
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 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","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,eAAe,CAAC,EACpBC,MAAM,EACNC,UAAU,EACVC,cAAc,EACdC,KAAK,EAMN;IACC,IAAI,CAACD,gBAAgB;QACnBF,OAAOI,eAAe,CAACP,uBAAuB;YAC5CQ,QAAQ;YACRJ;YACAE;QACF;IACF,OAAO;QACLH,OAAOM,MAAM,CAAC;YACZ,MAAMC,OAAOlB,cAAca;YAC3B,IAAIK,MAAM;gBACRA,KAAKC,OAAO,CACVZ,kBAAkB;oBAChBa,MAAM;wBACJJ,QAAQ;wBACRJ;wBACAE;oBACF;gBACF;YAEJ;QACF;IACF;AACF;AAMA,MAAMO,wBAAyC,CAAC,EAAEC,sBAAsB,EAAE;IACxE,MAAM,CAACX,OAAO,GAAGb;IAEjB,MAAM,CAACe,gBAAgBU,kBAAkB,GAAGlB,SAAwB;IAEpE,MAAM,CAACmB,YAAYC,mBAAmB,EAAEC,WAAW,EAAEC,UAAU,EAAE,CAAC,GAAG5B,cAAc;QACjF6B,iBAAiBN;QACjBO,SAAS;IACX;IAEAzB,UAAU;QACR,OAAOO,OAAOmB,eAAe,CAG3BrB,mCACA,CAACsB;YACCR,kBAAkBQ,SAASZ,UAAUY,SAASZ,QAAQa,UAAU;YAChEL;YACA,OAAO;QACT,GACA1B;IAEJ,GAAG;QAACU;QAAQgB;KAAW;IAEvB,MAAMM,WAAW9B,YACf,CAAC,EAAE+B,cAAc,EAAEC,KAAK,EAAE;QACxBzB,aAAa;YACXC;YACAC,YAAYsB;YACZrB;YACAC,OAAOqB;QACT;QACAT;IACF,GACA;QAACf;QAAQe;QAAab;KAAe;IAGvC,qBAAO,KAACW;QAAWS,UAAUA;;AAC/B;AAEA,OAAO,MAAMG,eAAe,CAACC;IAC3B,qBACE,KAAC/B;QAA+B,GAAG+B,KAAK;QAAER,OAAO;kBAC/C,cAAA,KAACR;YAAuB,GAAGgB,KAAK;;;AAGtC,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/client'\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 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","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,wBAAuB;AACrD,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,eAAe,CAAC,EACpBC,MAAM,EACNC,UAAU,EACVC,cAAc,EACdC,KAAK,EAMN;IACC,IAAI,CAACD,gBAAgB;QACnBF,OAAOI,eAAe,CAACP,uBAAuB;YAC5CQ,QAAQ;YACRJ;YACAE;QACF;IACF,OAAO;QACLH,OAAOM,MAAM,CAAC;YACZ,MAAMC,OAAOlB,cAAca;YAC3B,IAAIK,MAAM;gBACRA,KAAKC,OAAO,CACVZ,kBAAkB;oBAChBa,MAAM;wBACJJ,QAAQ;wBACRJ;wBACAE;oBACF;gBACF;YAEJ;QACF;IACF;AACF;AAMA,MAAMO,wBAAyC,CAAC,EAAEC,sBAAsB,EAAE;IACxE,MAAM,CAACX,OAAO,GAAGb;IAEjB,MAAM,CAACe,gBAAgBU,kBAAkB,GAAGlB,SAAwB;IAEpE,MAAM,CAACmB,YAAYC,mBAAmB,EAAEC,WAAW,EAAEC,UAAU,EAAE,CAAC,GAAG5B,cAAc;QACjF6B,iBAAiBN;QACjBO,SAAS;IACX;IAEAzB,UAAU;QACR,OAAOO,OAAOmB,eAAe,CAG3BrB,mCACA,CAACsB;YACCR,kBAAkBQ,SAASZ,UAAUY,SAASZ,QAAQa,UAAU;YAChEL;YACA,OAAO;QACT,GACA1B;IAEJ,GAAG;QAACU;QAAQgB;KAAW;IAEvB,MAAMM,WAAW9B,YACf,CAAC,EAAE+B,cAAc,EAAEC,KAAK,EAAE;QACxBzB,aAAa;YACXC;YACAC,YAAYsB;YACZrB;YACAC,OAAOqB;QACT;QACAT;IACF,GACA;QAACf;QAAQe;QAAab;KAAe;IAGvC,qBAAO,KAACW;QAAWS,UAAUA;;AAC/B;AAEA,OAAO,MAAMG,eAAe,CAACC;IAC3B,qBACE,KAAC/B;QAA+B,GAAG+B,KAAK;QAAER,OAAO;kBAC/C,cAAA,KAACR;YAAuB,GAAGgB,KAAK;;;AAGtC,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { Field } from 'payload/types';
1
+ import type { Field } from 'payload';
2
2
  import type { FeatureProviderProviderServer } from '../types.js';
3
3
  import type { UploadFeaturePropsClient } from './feature.client.js';
4
4
  export type UploadFeatureProps = {
@@ -1 +1 @@
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;AAUnE,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,CAuNzB,CAAA"}
1
+ {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../src/field/features/upload/feature.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,KAAK,EAA2C,MAAM,SAAS,CAAA;AAKrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAWnE,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,CAuNzB,CAAA"}
@@ -1,8 +1,9 @@
1
1
  import { traverseFields } from '@payloadcms/ui/utilities/buildFieldSchemaMap/traverseFields';
2
- import { sanitizeFields } from 'payload/config';
2
+ import { sanitizeFields } from 'payload';
3
+ // eslint-disable-next-line payload/no-imports-from-exports-dir
4
+ import { UploadFeatureClientComponent } from '../../../exports/client/index.js';
3
5
  import { populate } from '../../../populateGraphQL/populate.js';
4
6
  import { createNode } from '../typeUtilities.js';
5
- import { UploadFeatureClientComponent } from './feature.client.js';
6
7
  import { uploadPopulationPromiseHOC } from './graphQLPopulationPromise.js';
7
8
  import { i18n } from './i18n.js';
8
9
  import { UploadNode } from './nodes/UploadNode.js';
@@ -1 +1 @@
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/ui/utilities/buildFieldSchemaMap/traverseFields'\nimport { sanitizeFields } from 'payload/config'\n\nimport type { FeatureProviderProviderServer } from '../types.js'\nimport type { UploadFeaturePropsClient } from './feature.client.js'\n\nimport { populate } from '../../../populateGraphQL/populate.js'\nimport { createNode } from '../typeUtilities.js'\nimport { UploadFeatureClientComponent } from './feature.client.js'\nimport { uploadPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { UploadNode } from './nodes/UploadNode.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 i18n,\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 getSubFields: ({ node, req }) => {\n const collection = req.payload.collections[node?.relationTo]\n\n if (collection) {\n const collectionFieldSchema = props?.collections?.[node?.relationTo]?.fields\n\n if (Array.isArray(collectionFieldSchema)) {\n if (!collectionFieldSchema?.length) {\n return null\n }\n return collectionFieldSchema\n }\n }\n return null\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [uploadPopulationPromiseHOC(props)],\n hooks: {\n afterRead: [\n ({\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!node?.value) {\n return node\n }\n const collection = req.payload.collections[node?.relationTo]\n\n if (!collection) {\n return node\n }\n // @ts-expect-error\n const id = node?.value?.id || node?.value // for backwards-compatibility\n\n const populateDepth =\n props?.maxDepth !== undefined && props?.maxDepth < depth\n ? props?.maxDepth\n : depth\n\n populationPromises.push(\n populate({\n id,\n collection,\n currentDepth,\n data: node,\n depth: populateDepth,\n draft,\n key: 'value',\n overrideAccess,\n req,\n showHiddenFields,\n }),\n )\n\n return node\n },\n ],\n },\n node: UploadNode,\n validations: [uploadValidation(props)],\n }),\n ],\n serverFeatureProps: props,\n }\n },\n key: 'upload',\n serverFeatureProps: props,\n }\n}\n"],"names":["traverseFields","sanitizeFields","populate","createNode","UploadFeatureClientComponent","uploadPopulationPromiseHOC","i18n","UploadNode","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","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","getSubFields","req","collectionFieldSchema","Array","isArray","getSubFieldsData","graphQLPopulationPromises","hooks","afterRead","currentDepth","depth","draft","overrideAccess","populationPromises","showHiddenFields","populateDepth","maxDepth","undefined","push","data","key","validations","serverFeatureProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/field/features/upload/feature.server.ts"],"sourcesContent":["import type { Config, Field, FileData, FileSize, Payload, TypeWithID } from 'payload'\n\nimport { traverseFields } from '@payloadcms/ui/utilities/buildFieldSchemaMap/traverseFields'\nimport { sanitizeFields } from 'payload'\n\nimport type { FeatureProviderProviderServer } from '../types.js'\nimport type { UploadFeaturePropsClient } from './feature.client.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { UploadFeatureClientComponent } from '../../../exports/client/index.js'\nimport { populate } from '../../../populateGraphQL/populate.js'\nimport { createNode } from '../typeUtilities.js'\nimport { uploadPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { UploadNode } from './nodes/UploadNode.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 i18n,\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 getSubFields: ({ node, req }) => {\n const collection = req.payload.collections[node?.relationTo]\n\n if (collection) {\n const collectionFieldSchema = props?.collections?.[node?.relationTo]?.fields\n\n if (Array.isArray(collectionFieldSchema)) {\n if (!collectionFieldSchema?.length) {\n return null\n }\n return collectionFieldSchema\n }\n }\n return null\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [uploadPopulationPromiseHOC(props)],\n hooks: {\n afterRead: [\n ({\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!node?.value) {\n return node\n }\n const collection = req.payload.collections[node?.relationTo]\n\n if (!collection) {\n return node\n }\n // @ts-expect-error\n const id = node?.value?.id || node?.value // for backwards-compatibility\n\n const populateDepth =\n props?.maxDepth !== undefined && props?.maxDepth < depth\n ? props?.maxDepth\n : depth\n\n populationPromises.push(\n populate({\n id,\n collection,\n currentDepth,\n data: node,\n depth: populateDepth,\n draft,\n key: 'value',\n overrideAccess,\n req,\n showHiddenFields,\n }),\n )\n\n return node\n },\n ],\n },\n node: UploadNode,\n validations: [uploadValidation(props)],\n }),\n ],\n serverFeatureProps: props,\n }\n },\n key: 'upload',\n serverFeatureProps: props,\n }\n}\n"],"names":["traverseFields","sanitizeFields","UploadFeatureClientComponent","populate","createNode","uploadPopulationPromiseHOC","i18n","UploadNode","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","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","getSubFields","req","collectionFieldSchema","Array","isArray","getSubFieldsData","graphQLPopulationPromises","hooks","afterRead","currentDepth","depth","draft","overrideAccess","populationPromises","showHiddenFields","populateDepth","maxDepth","undefined","push","data","key","validations","serverFeatureProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js';
2
- import type { ElementFormatType, NodeKey } from 'lexical';
3
- import type { DOMConversionMap, DOMExportOutput, LexicalNode, Spread } from 'lexical';
2
+ import type { DOMConversionMap, DOMExportOutput, ElementFormatType, LexicalNode, NodeKey, Spread } from 'lexical';
4
3
  import type { JSX } from 'react';
5
4
  import { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js';
6
5
  export type UploadData = {
@@ -1 +1 @@
1
- {"version":3,"file":"UploadNode.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/nodes/UploadNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAA;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,WAAW,EACX,MAAM,EACP,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAShF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE;QAEN,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB,CAAA;AAuCD,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAA;AAEnF,qBAAa,UAAW,SAAQ,kBAAkB;IAChD,MAAM,EAAE,UAAU,CAAA;gBAEN,EACV,IAAI,EACJ,MAAM,EACN,GAAG,GACJ,EAAE;QACD,IAAI,EAAE,UAAU,CAAA;QAChB,MAAM,CAAC,EAAE,iBAAiB,CAAA;QAC1B,GAAG,CAAC,EAAE,OAAO,CAAA;KACd;IAKD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IAQ1C,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,SAAS,IAAI,gBAAgB,GAAG,IAAI;IAS3C,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,oBAAoB,GAAG,UAAU;IAsBnE,MAAM,CAAC,QAAQ,IAAI,KAAK;IAIxB,QAAQ,IAAI,GAAG,CAAC,OAAO;IAKvB,SAAS,IAAI,eAAe;IAQ5B,UAAU,IAAI,oBAAoB;IASlC,OAAO,IAAI,UAAU;IAIrB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM/B,SAAS,IAAI,KAAK;CAGnB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,GACL,EAAE;IACD,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;CAC/D,GAAG,UAAU,CAKb;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,UAAU,CAEtF"}
1
+ {"version":3,"file":"UploadNode.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/upload/nodes/UploadNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAA;AAC/F,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,MAAM,EACP,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAShF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE;QAEN,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB,CAAA;AAuCD,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAA;AAEnF,qBAAa,UAAW,SAAQ,kBAAkB;IAChD,MAAM,EAAE,UAAU,CAAA;gBAEN,EACV,IAAI,EACJ,MAAM,EACN,GAAG,GACJ,EAAE;QACD,IAAI,EAAE,UAAU,CAAA;QAChB,MAAM,CAAC,EAAE,iBAAiB,CAAA;QAC1B,GAAG,CAAC,EAAE,OAAO,CAAA;KACd;IAKD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IAQ1C,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,SAAS,IAAI,gBAAgB,GAAG,IAAI;IAS3C,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,oBAAoB,GAAG,UAAU;IAsBnE,MAAM,CAAC,QAAQ,IAAI,KAAK;IAIxB,QAAQ,IAAI,GAAG,CAAC,OAAO;IAKvB,SAAS,IAAI,eAAe;IAQ5B,UAAU,IAAI,oBAAoB;IASlC,OAAO,IAAI,UAAU;IAIrB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM/B,SAAS,IAAI,KAAK;CAGnB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,GACL,EAAE;IACD,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;CAC/D,GAAG,UAAU,CAKb;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,UAAU,CAEtF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/upload/nodes/UploadNode.tsx"],"sourcesContent":["import type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport type { ElementFormatType, NodeKey } from 'lexical'\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n LexicalNode,\n Spread,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport ObjectID from 'bson-objectid'\nimport { $applyNodeReplacement } from 'lexical'\nimport * as React from 'react'\n\nconst RawUploadComponent = React.lazy(() =>\n import('../component/index.js').then((module) => ({ default: module.UploadComponent })),\n)\n\nexport type UploadData = {\n fields: {\n // unknown, custom fields:\n [key: string]: unknown\n }\n id: string\n relationTo: string\n value: number | string\n}\n\nfunction isGoogleDocCheckboxImg(img: HTMLImageElement): boolean {\n return (\n img.parentElement != null &&\n img.parentElement.tagName === 'LI' &&\n img.previousSibling === null &&\n img.getAttribute('aria-roledescription') === 'checkbox'\n )\n}\n\nfunction $convertUploadElement(domNode: HTMLImageElement): DOMConversionOutput | null {\n if (\n domNode.hasAttribute('data-lexical-upload-relation-to') &&\n domNode.hasAttribute('data-lexical-upload-id')\n ) {\n const id = domNode.getAttribute('data-lexical-upload-id')\n const relationTo = domNode.getAttribute('data-lexical-upload-relation-to')\n\n if (id != null && relationTo != null) {\n const node = $createUploadNode({\n data: {\n fields: {},\n relationTo,\n value: id,\n },\n })\n return { node }\n }\n }\n const img = domNode\n if (img.src.startsWith('file:///') || isGoogleDocCheckboxImg(img)) {\n return null\n }\n // TODO: Auto-upload functionality here!\n //}\n return null\n}\n\nexport type SerializedUploadNode = Spread<UploadData, SerializedDecoratorBlockNode>\n\nexport class UploadNode extends DecoratorBlockNode {\n __data: UploadData\n\n constructor({\n data,\n format,\n key,\n }: {\n data: UploadData\n format?: ElementFormatType\n key?: NodeKey\n }) {\n super(format, key)\n this.__data = data\n }\n\n static clone(node: UploadNode): UploadNode {\n return new UploadNode({\n data: node.__data,\n format: node.__format,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'upload'\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n img: (node: HTMLImageElement) => ({\n conversion: $convertUploadElement,\n priority: 0,\n }),\n }\n }\n\n static importJSON(serializedNode: SerializedUploadNode): UploadNode {\n if (serializedNode.version === 1 && (serializedNode?.value as unknown as { id: string })?.id) {\n serializedNode.value = (serializedNode.value as unknown as { id: string }).id\n }\n if (serializedNode.version === 2 && !serializedNode?.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n\n const importedData: UploadData = {\n id: serializedNode.id,\n fields: serializedNode.fields,\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n\n const node = $createUploadNode({ data: importedData })\n node.setFormat(serializedNode.format)\n\n return node\n }\n\n static isInline(): false {\n return false\n }\n\n decorate(): JSX.Element {\n // @ts-expect-error\n return <RawUploadComponent data={this.__data} format={this.__format} nodeKey={this.getKey()} />\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('img')\n element.setAttribute('data-lexical-upload-id', String(this.__data?.value))\n element.setAttribute('data-lexical-upload-relation-to', this.__data?.relationTo)\n\n return { element }\n }\n\n exportJSON(): SerializedUploadNode {\n return {\n ...super.exportJSON(),\n ...this.getData(),\n type: this.getType(),\n version: 3,\n }\n }\n\n getData(): UploadData {\n return this.getLatest().__data\n }\n\n setData(data: UploadData): void {\n const writable = this.getWritable()\n writable.__data = data\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateDOM(): false {\n return false\n }\n}\n\nexport function $createUploadNode({\n data,\n}: {\n data: Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>\n}): UploadNode {\n if (!data?.id) {\n data.id = new ObjectID.default().toHexString()\n }\n return $applyNodeReplacement(new UploadNode({ data: data as UploadData }))\n}\n\nexport function $isUploadNode(node: LexicalNode | null | undefined): node is UploadNode {\n return node instanceof UploadNode\n}\n"],"names":["DecoratorBlockNode","ObjectID","$applyNodeReplacement","React","RawUploadComponent","lazy","then","module","default","UploadComponent","isGoogleDocCheckboxImg","img","parentElement","tagName","previousSibling","getAttribute","$convertUploadElement","domNode","hasAttribute","id","relationTo","node","$createUploadNode","data","fields","value","src","startsWith","UploadNode","__data","constructor","format","key","clone","__format","__key","getType","importDOM","conversion","priority","importJSON","serializedNode","version","toHexString","importedData","setFormat","isInline","decorate","nodeKey","getKey","exportDOM","element","document","createElement","setAttribute","String","exportJSON","getData","type","getLatest","setData","writable","getWritable","updateDOM","$isUploadNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/field/features/upload/nodes/UploadNode.tsx"],"sourcesContent":["import type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n Spread,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport ObjectID from 'bson-objectid'\nimport { $applyNodeReplacement } from 'lexical'\nimport * as React from 'react'\n\nconst RawUploadComponent = React.lazy(() =>\n import('../component/index.js').then((module) => ({ default: module.UploadComponent })),\n)\n\nexport type UploadData = {\n fields: {\n // unknown, custom fields:\n [key: string]: unknown\n }\n id: string\n relationTo: string\n value: number | string\n}\n\nfunction isGoogleDocCheckboxImg(img: HTMLImageElement): boolean {\n return (\n img.parentElement != null &&\n img.parentElement.tagName === 'LI' &&\n img.previousSibling === null &&\n img.getAttribute('aria-roledescription') === 'checkbox'\n )\n}\n\nfunction $convertUploadElement(domNode: HTMLImageElement): DOMConversionOutput | null {\n if (\n domNode.hasAttribute('data-lexical-upload-relation-to') &&\n domNode.hasAttribute('data-lexical-upload-id')\n ) {\n const id = domNode.getAttribute('data-lexical-upload-id')\n const relationTo = domNode.getAttribute('data-lexical-upload-relation-to')\n\n if (id != null && relationTo != null) {\n const node = $createUploadNode({\n data: {\n fields: {},\n relationTo,\n value: id,\n },\n })\n return { node }\n }\n }\n const img = domNode\n if (img.src.startsWith('file:///') || isGoogleDocCheckboxImg(img)) {\n return null\n }\n // TODO: Auto-upload functionality here!\n //}\n return null\n}\n\nexport type SerializedUploadNode = Spread<UploadData, SerializedDecoratorBlockNode>\n\nexport class UploadNode extends DecoratorBlockNode {\n __data: UploadData\n\n constructor({\n data,\n format,\n key,\n }: {\n data: UploadData\n format?: ElementFormatType\n key?: NodeKey\n }) {\n super(format, key)\n this.__data = data\n }\n\n static clone(node: UploadNode): UploadNode {\n return new UploadNode({\n data: node.__data,\n format: node.__format,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'upload'\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n img: (node: HTMLImageElement) => ({\n conversion: $convertUploadElement,\n priority: 0,\n }),\n }\n }\n\n static importJSON(serializedNode: SerializedUploadNode): UploadNode {\n if (serializedNode.version === 1 && (serializedNode?.value as unknown as { id: string })?.id) {\n serializedNode.value = (serializedNode.value as unknown as { id: string }).id\n }\n if (serializedNode.version === 2 && !serializedNode?.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n\n const importedData: UploadData = {\n id: serializedNode.id,\n fields: serializedNode.fields,\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n\n const node = $createUploadNode({ data: importedData })\n node.setFormat(serializedNode.format)\n\n return node\n }\n\n static isInline(): false {\n return false\n }\n\n decorate(): JSX.Element {\n // @ts-expect-error\n return <RawUploadComponent data={this.__data} format={this.__format} nodeKey={this.getKey()} />\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('img')\n element.setAttribute('data-lexical-upload-id', String(this.__data?.value))\n element.setAttribute('data-lexical-upload-relation-to', this.__data?.relationTo)\n\n return { element }\n }\n\n exportJSON(): SerializedUploadNode {\n return {\n ...super.exportJSON(),\n ...this.getData(),\n type: this.getType(),\n version: 3,\n }\n }\n\n getData(): UploadData {\n return this.getLatest().__data\n }\n\n setData(data: UploadData): void {\n const writable = this.getWritable()\n writable.__data = data\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateDOM(): false {\n return false\n }\n}\n\nexport function $createUploadNode({\n data,\n}: {\n data: Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>\n}): UploadNode {\n if (!data?.id) {\n data.id = new ObjectID.default().toHexString()\n }\n return $applyNodeReplacement(new UploadNode({ data: data as UploadData }))\n}\n\nexport function $isUploadNode(node: LexicalNode | null | undefined): node is UploadNode {\n return node instanceof UploadNode\n}\n"],"names":["DecoratorBlockNode","ObjectID","$applyNodeReplacement","React","RawUploadComponent","lazy","then","module","default","UploadComponent","isGoogleDocCheckboxImg","img","parentElement","tagName","previousSibling","getAttribute","$convertUploadElement","domNode","hasAttribute","id","relationTo","node","$createUploadNode","data","fields","value","src","startsWith","UploadNode","__data","constructor","format","key","clone","__format","__key","getType","importDOM","conversion","priority","importJSON","serializedNode","version","toHexString","importedData","setFormat","isInline","decorate","nodeKey","getKey","exportDOM","element","document","createElement","setAttribute","String","exportJSON","getData","type","getLatest","setData","writable","getWritable","updateDOM","$isUploadNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
4
4
  import { $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils';
5
- import { useConfig } from '@payloadcms/ui/providers/Config';
5
+ import { useConfig } from '@payloadcms/ui/client';
6
6
  import { $getPreviousSelection, $getSelection, $isParagraphNode, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical';
7
7
  import React, { useEffect } from 'react';
8
8
  import { UploadDrawer } from '../drawer/index.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/upload/plugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport {\n $getPreviousSelection,\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n} from 'lexical'\nimport React, { useEffect } from 'react'\n\nimport type { PluginComponentWithAnchor } from '../../types.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadData } from '../nodes/UploadNode.js'\n\nimport { UploadDrawer } from '../drawer/index.js'\nimport { $createUploadNode, UploadNode } from '../nodes/UploadNode.js'\n\nexport type InsertUploadPayload = Readonly<Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>>\n\nexport const INSERT_UPLOAD_COMMAND: LexicalCommand<InsertUploadPayload> =\n createCommand('INSERT_UPLOAD_COMMAND')\n\nexport const UploadPlugin: PluginComponentWithAnchor<UploadFeaturePropsClient> = ({\n clientProps,\n}) => {\n const [editor] = useLexicalComposerContext()\n const { collections } = useConfig()\n\n useEffect(() => {\n if (!editor.hasNodes([UploadNode])) {\n throw new Error('UploadPlugin: UploadNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertUploadPayload>(\n INSERT_UPLOAD_COMMAND,\n (payload: InsertUploadPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const uploadNode = $createUploadNode({\n data: {\n id: payload.id,\n fields: payload.fields,\n relationTo: payload.relationTo,\n value: payload.value,\n },\n })\n // Insert upload node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(uploadNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParent()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor])\n\n return <UploadDrawer enabledCollectionSlugs={collections.map(({ slug }) => slug)} />\n}\n"],"names":["useLexicalComposerContext","$insertNodeToNearestRoot","mergeRegister","useConfig","$getPreviousSelection","$getSelection","$isParagraphNode","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","React","useEffect","UploadDrawer","$createUploadNode","UploadNode","INSERT_UPLOAD_COMMAND","UploadPlugin","clientProps","editor","collections","hasNodes","Error","registerCommand","payload","update","selection","uploadNode","data","id","fields","relationTo","value","focus","focusNode","getNode","getTextContentSize","getParent","getChildren","filter","node","length","remove","enabledCollectionSlugs","map","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAGA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,iBAAgB;AACxE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SACEC,qBAAqB,EACrBC,aAAa,EACbC,gBAAgB,EAChBC,iBAAiB,EACjBC,uBAAuB,EACvBC,aAAa,QACR,UAAS;AAChB,OAAOC,SAASC,SAAS,QAAQ,QAAO;AAMxC,SAASC,YAAY,QAAQ,qBAAoB;AACjD,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,yBAAwB;AAItE,OAAO,MAAMC,wBACXN,cAAc,yBAAwB;AAExC,OAAO,MAAMO,eAAoE,CAAC,EAChFC,WAAW,EACZ;IACC,MAAM,CAACC,OAAO,GAAGlB;IACjB,MAAM,EAAEmB,WAAW,EAAE,GAAGhB;IAExBQ,UAAU;QACR,IAAI,CAACO,OAAOE,QAAQ,CAAC;YAACN;SAAW,GAAG;YAClC,MAAM,IAAIO,MAAM;QAClB;QAEA,OAAOnB,cACLgB,OAAOI,eAAe,CACpBP,uBACA,CAACQ;YACCL,OAAOM,MAAM,CAAC;gBACZ,MAAMC,YAAYpB,mBAAmBD;gBAErC,IAAIG,kBAAkBkB,YAAY;oBAChC,MAAMC,aAAab,kBAAkB;wBACnCc,MAAM;4BACJC,IAAIL,QAAQK,EAAE;4BACdC,QAAQN,QAAQM,MAAM;4BACtBC,YAAYP,QAAQO,UAAU;4BAC9BC,OAAOR,QAAQQ,KAAK;wBACtB;oBACF;oBACA,8HAA8H;oBAC9H9B,yBAAyByB;oBAEzB,MAAM,EAAEM,KAAK,EAAE,GAAGP;oBAClB,MAAMQ,YAAYD,MAAME,OAAO;oBAE/B,+FAA+F;oBAC/F,0FAA0F;oBAC1F,IACE5B,iBAAiB2B,cACjBA,UAAUE,kBAAkB,OAAO,KACnCF,UACGG,SAAS,GACTC,WAAW,GACXC,MAAM,CAAC,CAACC,OAASjC,iBAAiBiC,OAAOC,MAAM,GAAG,GACrD;wBACAP,UAAUQ,MAAM;oBAClB;gBACF;YACF;YAEA,OAAO;QACT,GACAjC;IAGN,GAAG;QAACU;KAAO;IAEX,qBAAO,KAACN;QAAa8B,wBAAwBvB,YAAYwB,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;;AAC7E,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/field/features/upload/plugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils'\nimport { useConfig } from '@payloadcms/ui/client'\nimport {\n $getPreviousSelection,\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n} from 'lexical'\nimport React, { useEffect } from 'react'\n\nimport type { PluginComponentWithAnchor } from '../../types.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadData } from '../nodes/UploadNode.js'\n\nimport { UploadDrawer } from '../drawer/index.js'\nimport { $createUploadNode, UploadNode } from '../nodes/UploadNode.js'\n\nexport type InsertUploadPayload = Readonly<Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>>\n\nexport const INSERT_UPLOAD_COMMAND: LexicalCommand<InsertUploadPayload> =\n createCommand('INSERT_UPLOAD_COMMAND')\n\nexport const UploadPlugin: PluginComponentWithAnchor<UploadFeaturePropsClient> = ({\n clientProps,\n}) => {\n const [editor] = useLexicalComposerContext()\n const { collections } = useConfig()\n\n useEffect(() => {\n if (!editor.hasNodes([UploadNode])) {\n throw new Error('UploadPlugin: UploadNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertUploadPayload>(\n INSERT_UPLOAD_COMMAND,\n (payload: InsertUploadPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const uploadNode = $createUploadNode({\n data: {\n id: payload.id,\n fields: payload.fields,\n relationTo: payload.relationTo,\n value: payload.value,\n },\n })\n // Insert upload node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(uploadNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParent()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor])\n\n return <UploadDrawer enabledCollectionSlugs={collections.map(({ slug }) => slug)} />\n}\n"],"names":["useLexicalComposerContext","$insertNodeToNearestRoot","mergeRegister","useConfig","$getPreviousSelection","$getSelection","$isParagraphNode","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","React","useEffect","UploadDrawer","$createUploadNode","UploadNode","INSERT_UPLOAD_COMMAND","UploadPlugin","clientProps","editor","collections","hasNodes","Error","registerCommand","payload","update","selection","uploadNode","data","id","fields","relationTo","value","focus","focusNode","getNode","getTextContentSize","getParent","getChildren","filter","node","length","remove","enabledCollectionSlugs","map","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAGA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,iBAAgB;AACxE,SAASC,SAAS,QAAQ,wBAAuB;AACjD,SACEC,qBAAqB,EACrBC,aAAa,EACbC,gBAAgB,EAChBC,iBAAiB,EACjBC,uBAAuB,EACvBC,aAAa,QACR,UAAS;AAChB,OAAOC,SAASC,SAAS,QAAQ,QAAO;AAMxC,SAASC,YAAY,QAAQ,qBAAoB;AACjD,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,yBAAwB;AAItE,OAAO,MAAMC,wBACXN,cAAc,yBAAwB;AAExC,OAAO,MAAMO,eAAoE,CAAC,EAChFC,WAAW,EACZ;IACC,MAAM,CAACC,OAAO,GAAGlB;IACjB,MAAM,EAAEmB,WAAW,EAAE,GAAGhB;IAExBQ,UAAU;QACR,IAAI,CAACO,OAAOE,QAAQ,CAAC;YAACN;SAAW,GAAG;YAClC,MAAM,IAAIO,MAAM;QAClB;QAEA,OAAOnB,cACLgB,OAAOI,eAAe,CACpBP,uBACA,CAACQ;YACCL,OAAOM,MAAM,CAAC;gBACZ,MAAMC,YAAYpB,mBAAmBD;gBAErC,IAAIG,kBAAkBkB,YAAY;oBAChC,MAAMC,aAAab,kBAAkB;wBACnCc,MAAM;4BACJC,IAAIL,QAAQK,EAAE;4BACdC,QAAQN,QAAQM,MAAM;4BACtBC,YAAYP,QAAQO,UAAU;4BAC9BC,OAAOR,QAAQQ,KAAK;wBACtB;oBACF;oBACA,8HAA8H;oBAC9H9B,yBAAyByB;oBAEzB,MAAM,EAAEM,KAAK,EAAE,GAAGP;oBAClB,MAAMQ,YAAYD,MAAME,OAAO;oBAE/B,+FAA+F;oBAC/F,0FAA0F;oBAC1F,IACE5B,iBAAiB2B,cACjBA,UAAUE,kBAAkB,OAAO,KACnCF,UACGG,SAAS,GACTC,WAAW,GACXC,MAAM,CAAC,CAACC,OAASjC,iBAAiBiC,OAAOC,MAAM,GAAG,GACrD;wBACAP,UAAUQ,MAAM;oBAClB;gBACF;YACF;YAEA,OAAO;QACT,GACAjC;IAGN,GAAG;QAACU;KAAO;IAEX,qBAAO,KAACN;QAAa8B,wBAAwBvB,YAAYwB,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;;AAC7E,EAAC"}
@@ -1,5 +1,5 @@
1
1
  import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema';
2
- import { isValidID } from 'payload/utilities';
2
+ import { isValidID } from 'payload';
3
3
  export const uploadValidation = (props)=>{
4
4
  return async ({ node, validation: { options: { id, operation, preferences, req, req: { payload, t } } } })=>{
5
5
  const idType = payload.collections[node.relationTo].customIDType || payload.db.defaultIDType;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/upload/validate.ts"],"sourcesContent":["import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport { isValidID } from 'payload/utilities'\n\nimport type { NodeValidation } from '../types.js'\nimport type { UploadFeatureProps } from './feature.server.js'\nimport type { SerializedUploadNode } from './nodes/UploadNode.js'\n\nexport const uploadValidation = (\n props: UploadFeatureProps,\n): NodeValidation<SerializedUploadNode> => {\n return async ({\n node,\n validation: {\n options: {\n id,\n operation,\n preferences,\n req,\n req: { payload, t },\n },\n },\n }) => {\n const idType = payload.collections[node.relationTo].customIDType || payload.db.defaultIDType\n // @ts-expect-error\n const nodeID = node?.value?.id || node?.value // for backwards-compatibility\n\n if (!isValidID(nodeID, idType)) {\n return t('validation:validUploadID')\n }\n\n if (!props?.collections) {\n return true\n }\n\n if (Object.keys(props?.collections).length === 0) {\n return true\n }\n\n const collection = props?.collections[node.relationTo]\n\n if (!collection?.fields?.length) {\n return true\n }\n\n const result = await buildStateFromSchema({\n id,\n data: node?.fields ?? {},\n fieldSchema: collection.fields,\n operation: operation === 'create' || operation === 'update' ? operation : 'update',\n preferences,\n req,\n siblingData: node?.fields ?? {},\n })\n\n let errorPaths = []\n for (const fieldKey in result) {\n if (result[fieldKey].errorPaths) {\n errorPaths = errorPaths.concat(result[fieldKey].errorPaths)\n }\n }\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"names":["buildStateFromSchema","isValidID","uploadValidation","props","node","validation","options","id","operation","preferences","req","payload","t","idType","collections","relationTo","customIDType","db","defaultIDType","nodeID","value","Object","keys","length","collection","fields","result","data","fieldSchema","siblingData","errorPaths","fieldKey","concat","join"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,oBAAoB,QAAQ,4CAA2C;AAChF,SAASC,SAAS,QAAQ,oBAAmB;AAM7C,OAAO,MAAMC,mBAAmB,CAC9BC;IAEA,OAAO,OAAO,EACZC,IAAI,EACJC,YAAY,EACVC,SAAS,EACPC,EAAE,EACFC,SAAS,EACTC,WAAW,EACXC,GAAG,EACHA,KAAK,EAAEC,OAAO,EAAEC,CAAC,EAAE,EACpB,EACF,EACF;QACC,MAAMC,SAASF,QAAQG,WAAW,CAACV,KAAKW,UAAU,CAAC,CAACC,YAAY,IAAIL,QAAQM,EAAE,CAACC,aAAa;QAC5F,mBAAmB;QACnB,MAAMC,SAASf,MAAMgB,OAAOb,MAAMH,MAAMgB,MAAM,8BAA8B;;QAE5E,IAAI,CAACnB,UAAUkB,QAAQN,SAAS;YAC9B,OAAOD,EAAE;QACX;QAEA,IAAI,CAACT,OAAOW,aAAa;YACvB,OAAO;QACT;QAEA,IAAIO,OAAOC,IAAI,CAACnB,OAAOW,aAAaS,MAAM,KAAK,GAAG;YAChD,OAAO;QACT;QAEA,MAAMC,aAAarB,OAAOW,WAAW,CAACV,KAAKW,UAAU,CAAC;QAEtD,IAAI,CAACS,YAAYC,QAAQF,QAAQ;YAC/B,OAAO;QACT;QAEA,MAAMG,SAAS,MAAM1B,qBAAqB;YACxCO;YACAoB,MAAMvB,MAAMqB,UAAU,CAAC;YACvBG,aAAaJ,WAAWC,MAAM;YAC9BjB,WAAWA,cAAc,YAAYA,cAAc,WAAWA,YAAY;YAC1EC;YACAC;YACAmB,aAAazB,MAAMqB,UAAU,CAAC;QAChC;QAEA,IAAIK,aAAa,EAAE;QACnB,IAAK,MAAMC,YAAYL,OAAQ;YAC7B,IAAIA,MAAM,CAACK,SAAS,CAACD,UAAU,EAAE;gBAC/BA,aAAaA,WAAWE,MAAM,CAACN,MAAM,CAACK,SAAS,CAACD,UAAU;YAC5D;QACF;QAEA,IAAIA,WAAWP,MAAM,EAAE;YACrB,OAAO,uCAAuCO,WAAWG,IAAI,CAAC;QAChE;QAEA,OAAO;IACT;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/features/upload/validate.ts"],"sourcesContent":["import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema'\nimport { isValidID } from 'payload'\n\nimport type { NodeValidation } from '../types.js'\nimport type { UploadFeatureProps } from './feature.server.js'\nimport type { SerializedUploadNode } from './nodes/UploadNode.js'\n\nexport const uploadValidation = (\n props: UploadFeatureProps,\n): NodeValidation<SerializedUploadNode> => {\n return async ({\n node,\n validation: {\n options: {\n id,\n operation,\n preferences,\n req,\n req: { payload, t },\n },\n },\n }) => {\n const idType = payload.collections[node.relationTo].customIDType || payload.db.defaultIDType\n // @ts-expect-error\n const nodeID = node?.value?.id || node?.value // for backwards-compatibility\n\n if (!isValidID(nodeID, idType)) {\n return t('validation:validUploadID')\n }\n\n if (!props?.collections) {\n return true\n }\n\n if (Object.keys(props?.collections).length === 0) {\n return true\n }\n\n const collection = props?.collections[node.relationTo]\n\n if (!collection?.fields?.length) {\n return true\n }\n\n const result = await buildStateFromSchema({\n id,\n data: node?.fields ?? {},\n fieldSchema: collection.fields,\n operation: operation === 'create' || operation === 'update' ? operation : 'update',\n preferences,\n req,\n siblingData: node?.fields ?? {},\n })\n\n let errorPaths = []\n for (const fieldKey in result) {\n if (result[fieldKey].errorPaths) {\n errorPaths = errorPaths.concat(result[fieldKey].errorPaths)\n }\n }\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"names":["buildStateFromSchema","isValidID","uploadValidation","props","node","validation","options","id","operation","preferences","req","payload","t","idType","collections","relationTo","customIDType","db","defaultIDType","nodeID","value","Object","keys","length","collection","fields","result","data","fieldSchema","siblingData","errorPaths","fieldKey","concat","join"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,oBAAoB,QAAQ,4CAA2C;AAChF,SAASC,SAAS,QAAQ,UAAS;AAMnC,OAAO,MAAMC,mBAAmB,CAC9BC;IAEA,OAAO,OAAO,EACZC,IAAI,EACJC,YAAY,EACVC,SAAS,EACPC,EAAE,EACFC,SAAS,EACTC,WAAW,EACXC,GAAG,EACHA,KAAK,EAAEC,OAAO,EAAEC,CAAC,EAAE,EACpB,EACF,EACF;QACC,MAAMC,SAASF,QAAQG,WAAW,CAACV,KAAKW,UAAU,CAAC,CAACC,YAAY,IAAIL,QAAQM,EAAE,CAACC,aAAa;QAC5F,mBAAmB;QACnB,MAAMC,SAASf,MAAMgB,OAAOb,MAAMH,MAAMgB,MAAM,8BAA8B;;QAE5E,IAAI,CAACnB,UAAUkB,QAAQN,SAAS;YAC9B,OAAOD,EAAE;QACX;QAEA,IAAI,CAACT,OAAOW,aAAa;YACvB,OAAO;QACT;QAEA,IAAIO,OAAOC,IAAI,CAACnB,OAAOW,aAAaS,MAAM,KAAK,GAAG;YAChD,OAAO;QACT;QAEA,MAAMC,aAAarB,OAAOW,WAAW,CAACV,KAAKW,UAAU,CAAC;QAEtD,IAAI,CAACS,YAAYC,QAAQF,QAAQ;YAC/B,OAAO;QACT;QAEA,MAAMG,SAAS,MAAM1B,qBAAqB;YACxCO;YACAoB,MAAMvB,MAAMqB,UAAU,CAAC;YACvBG,aAAaJ,WAAWC,MAAM;YAC9BjB,WAAWA,cAAc,YAAYA,cAAc,WAAWA,YAAY;YAC1EC;YACAC;YACAmB,aAAazB,MAAMqB,UAAU,CAAC;QAChC;QAEA,IAAIK,aAAa,EAAE;QACnB,IAAK,MAAMC,YAAYL,OAAQ;YAC7B,IAAIA,MAAM,CAACK,SAAS,CAACD,UAAU,EAAE;gBAC/BA,aAAaA,WAAWE,MAAM,CAACN,MAAM,CAACK,SAAS,CAACD,UAAU;YAC5D;QACF;QAEA,IAAIA,WAAWP,MAAM,EAAE;YACrB,OAAO,uCAAuCO,WAAWG,IAAI,CAAC;QAChE;QAEA,OAAO;IACT;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKlE,OAAO,KAA8C,MAAM,OAAO,CAAA;AAElE,OAAO,KAAK,EAAqC,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAY5F,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAClC,aAAa,GAAG;IACd,KAAK,CAAC,EAAE,sBAAsB,CAAA;IAC9B,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,CAmHF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAGlE,OAAO,KAA8C,MAAM,OAAO,CAAA;AAElE,OAAO,KAAK,EAAqC,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAY5F,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAClC,aAAa,GAAG;IACd,KAAK,CAAC,EAAE,sBAAsB,CAAA;IAC9B,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACnD,CAmHF,CAAA"}