@payloadcms/richtext-lexical 4.0.0-internal.1f9ae9a → 4.0.0-internal.203916b

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 (531) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/cell/rscEntry.d.ts.map +1 -1
  3. package/dist/cell/rscEntry.js +5 -5
  4. package/dist/cell/rscEntry.js.map +1 -1
  5. package/dist/exports/client/Field-XH5C4HFU.js +2 -0
  6. package/dist/exports/client/Field-XH5C4HFU.js.map +7 -0
  7. package/dist/exports/client/{RelationshipComponent-RZL743CS.js → RelationshipComponent-YCPAKOL7.js} +1 -1
  8. package/dist/exports/client/RelationshipComponent-YCPAKOL7.js.map +7 -0
  9. package/dist/exports/client/bundled.css +1 -1
  10. package/dist/exports/client/chunk-5VIL27GI.js +2 -0
  11. package/dist/exports/client/chunk-5VIL27GI.js.map +7 -0
  12. package/dist/exports/client/chunk-ESITTE3C.js +2 -0
  13. package/dist/exports/client/chunk-ESITTE3C.js.map +7 -0
  14. package/dist/exports/client/chunk-UD4DQ4AK.js +2 -0
  15. package/dist/exports/client/chunk-UD4DQ4AK.js.map +7 -0
  16. package/dist/exports/client/chunk-X3D4LZS7.js +2 -0
  17. package/dist/exports/client/chunk-X3D4LZS7.js.map +7 -0
  18. package/dist/exports/client/{component-CVM4OESA.js → component-PHZQBOJE.js} +2 -2
  19. package/dist/exports/client/component-PHZQBOJE.js.map +7 -0
  20. package/dist/exports/client/componentInline-H24N7GUG.js +2 -0
  21. package/dist/exports/client/index.d.ts +0 -1
  22. package/dist/exports/client/index.d.ts.map +1 -1
  23. package/dist/exports/client/index.js +20 -21
  24. package/dist/exports/client/index.js.map +4 -4
  25. package/dist/features/blockquote/client/index.js +2 -2
  26. package/dist/features/blockquote/client/index.js.map +1 -1
  27. package/dist/features/blockquote/server/index.d.ts +1 -4
  28. package/dist/features/blockquote/server/index.d.ts.map +1 -1
  29. package/dist/features/blockquote/server/index.js +4 -2
  30. package/dist/features/blockquote/server/index.js.map +1 -1
  31. package/dist/features/blockquote/server/schema.d.ts +8 -0
  32. package/dist/features/blockquote/server/schema.d.ts.map +1 -0
  33. package/dist/features/blockquote/server/schema.js +15 -0
  34. package/dist/features/blockquote/server/schema.js.map +1 -0
  35. package/dist/features/blocks/client/component/index.css +2 -2
  36. package/dist/features/blocks/client/component/index.d.ts +2 -1
  37. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  38. package/dist/features/blocks/client/component/index.js +16 -8
  39. package/dist/features/blocks/client/component/index.js.map +1 -1
  40. package/dist/features/blocks/client/componentInline/index.css +8 -8
  41. package/dist/features/blocks/client/componentInline/index.d.ts +2 -1
  42. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  43. package/dist/features/blocks/client/componentInline/index.js +15 -7
  44. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  45. package/dist/features/blocks/client/index.d.ts.map +1 -1
  46. package/dist/features/blocks/client/index.js +4 -2
  47. package/dist/features/blocks/client/index.js.map +1 -1
  48. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts +1 -1
  49. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts.map +1 -1
  50. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +1 -1
  51. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -1
  52. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts +1 -1
  53. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts.map +1 -1
  54. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +5 -2
  55. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -1
  56. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts +1 -2
  57. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -1
  58. package/dist/features/blocks/client/markdown/markdownTransformer.js +4 -4
  59. package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -1
  60. package/dist/features/blocks/client/nodes/BlocksNode.d.ts +1 -1
  61. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  62. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  63. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts +1 -1
  64. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  65. package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
  66. package/dist/features/blocks/client/plugin/index.d.ts +1 -1
  67. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  68. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  69. package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts.map +1 -1
  70. package/dist/features/blocks/premade/CodeBlock/Component/Block.js +1 -0
  71. package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
  72. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.css +1 -1
  73. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.css +2 -4
  74. package/dist/features/blocks/premade/CodeBlock/Component/index.css +5 -5
  75. package/dist/features/blocks/server/graphQLPopulationPromise.d.ts +1 -2
  76. package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -1
  77. package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
  78. package/dist/features/blocks/server/index.d.ts +1 -0
  79. package/dist/features/blocks/server/index.d.ts.map +1 -1
  80. package/dist/features/blocks/server/index.js +24 -72
  81. package/dist/features/blocks/server/index.js.map +1 -1
  82. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts +1 -1
  83. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -1
  84. package/dist/features/blocks/server/markdown/markdownTransformer.js +4 -4
  85. package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -1
  86. package/dist/features/blocks/server/nodes/BlocksNode.d.ts +1 -18
  87. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  88. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  89. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +2 -10
  90. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  91. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  92. package/dist/features/blocks/server/schema.d.ts +45 -0
  93. package/dist/features/blocks/server/schema.d.ts.map +1 -0
  94. package/dist/features/blocks/server/schema.js +140 -0
  95. package/dist/features/blocks/server/schema.js.map +1 -0
  96. package/dist/features/blocks/server/validate.d.ts +1 -2
  97. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  98. package/dist/features/blocks/server/validate.js.map +1 -1
  99. package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
  100. package/dist/features/converters/lexicalToHtml/async/types.d.ts +14 -15
  101. package/dist/features/converters/lexicalToHtml/async/types.d.ts.map +1 -1
  102. package/dist/features/converters/lexicalToHtml/async/types.js.map +1 -1
  103. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
  104. package/dist/features/converters/lexicalToHtml/sync/types.d.ts +14 -15
  105. package/dist/features/converters/lexicalToHtml/sync/types.d.ts.map +1 -1
  106. package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
  107. package/dist/features/converters/lexicalToJSX/Component/index.d.ts +4 -2
  108. package/dist/features/converters/lexicalToJSX/Component/index.d.ts.map +1 -1
  109. package/dist/features/converters/lexicalToJSX/Component/index.js +5 -4
  110. package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -1
  111. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
  112. package/dist/features/converters/lexicalToJSX/converter/types.d.ts +12 -14
  113. package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -1
  114. package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
  115. package/dist/features/converters/lexicalToMarkdown/index.d.ts.map +1 -1
  116. package/dist/features/converters/lexicalToMarkdown/index.js +1 -1
  117. package/dist/features/converters/lexicalToMarkdown/index.js.map +1 -1
  118. package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts +12 -14
  119. package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts.map +1 -1
  120. package/dist/features/converters/lexicalToPlaintext/sync/types.js.map +1 -1
  121. package/dist/features/converters/markdownToLexical/index.d.ts.map +1 -1
  122. package/dist/features/converters/markdownToLexical/index.js +5 -2
  123. package/dist/features/converters/markdownToLexical/index.js.map +1 -1
  124. package/dist/features/debug/jsxConverter/client/plugin/style.css +2 -2
  125. package/dist/features/experimental_table/client/index.js +2 -2
  126. package/dist/features/experimental_table/client/index.js.map +1 -1
  127. package/dist/features/experimental_table/markdownTransformer.d.ts +2 -2
  128. package/dist/features/experimental_table/markdownTransformer.d.ts.map +1 -1
  129. package/dist/features/experimental_table/markdownTransformer.js +6 -3
  130. package/dist/features/experimental_table/markdownTransformer.js.map +1 -1
  131. package/dist/features/experimental_table/server/index.d.ts +1 -6
  132. package/dist/features/experimental_table/server/index.d.ts.map +1 -1
  133. package/dist/features/experimental_table/server/index.js +6 -2
  134. package/dist/features/experimental_table/server/index.js.map +1 -1
  135. package/dist/features/experimental_table/server/schema.d.ts +27 -0
  136. package/dist/features/experimental_table/server/schema.d.ts.map +1 -0
  137. package/dist/features/experimental_table/server/schema.js +107 -0
  138. package/dist/features/experimental_table/server/schema.js.map +1 -0
  139. package/dist/features/format/bold/feature.client.js +1 -1
  140. package/dist/features/format/bold/feature.client.js.map +1 -1
  141. package/dist/features/format/bold/feature.server.d.ts.map +1 -1
  142. package/dist/features/format/bold/feature.server.js +1 -1
  143. package/dist/features/format/bold/feature.server.js.map +1 -1
  144. package/dist/features/format/inlineCode/feature.client.js +1 -1
  145. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  146. package/dist/features/format/inlineCode/feature.server.d.ts.map +1 -1
  147. package/dist/features/format/inlineCode/feature.server.js +1 -1
  148. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  149. package/dist/features/format/italic/feature.client.js +1 -1
  150. package/dist/features/format/italic/feature.client.js.map +1 -1
  151. package/dist/features/format/italic/feature.server.d.ts.map +1 -1
  152. package/dist/features/format/italic/feature.server.js +1 -1
  153. package/dist/features/format/italic/feature.server.js.map +1 -1
  154. package/dist/features/format/strikethrough/feature.client.js +1 -1
  155. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  156. package/dist/features/format/strikethrough/feature.server.d.ts.map +1 -1
  157. package/dist/features/format/strikethrough/feature.server.js +1 -1
  158. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  159. package/dist/features/heading/client/index.js +2 -2
  160. package/dist/features/heading/client/index.js.map +1 -1
  161. package/dist/features/heading/markdownTransformer.d.ts +2 -2
  162. package/dist/features/heading/markdownTransformer.d.ts.map +1 -1
  163. package/dist/features/heading/markdownTransformer.js +6 -19
  164. package/dist/features/heading/markdownTransformer.js.map +1 -1
  165. package/dist/features/heading/server/index.d.ts +2 -4
  166. package/dist/features/heading/server/index.d.ts.map +1 -1
  167. package/dist/features/heading/server/index.js +4 -2
  168. package/dist/features/heading/server/index.js.map +1 -1
  169. package/dist/features/heading/server/schema.d.ts +10 -0
  170. package/dist/features/heading/server/schema.d.ts.map +1 -0
  171. package/dist/features/heading/server/schema.js +37 -0
  172. package/dist/features/heading/server/schema.js.map +1 -0
  173. package/dist/features/horizontalRule/client/index.js +2 -2
  174. package/dist/features/horizontalRule/client/index.js.map +1 -1
  175. package/dist/features/horizontalRule/client/markdownTransformer.d.ts +2 -2
  176. package/dist/features/horizontalRule/client/markdownTransformer.d.ts.map +1 -1
  177. package/dist/features/horizontalRule/client/markdownTransformer.js +1 -1
  178. package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
  179. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +1 -1
  180. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
  181. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  182. package/dist/features/horizontalRule/client/plugin/index.css +2 -2
  183. package/dist/features/horizontalRule/server/index.d.ts +1 -0
  184. package/dist/features/horizontalRule/server/index.d.ts.map +1 -1
  185. package/dist/features/horizontalRule/server/index.js +4 -2
  186. package/dist/features/horizontalRule/server/index.js.map +1 -1
  187. package/dist/features/horizontalRule/server/markdownTransformer.d.ts +2 -2
  188. package/dist/features/horizontalRule/server/markdownTransformer.d.ts.map +1 -1
  189. package/dist/features/horizontalRule/server/markdownTransformer.js +1 -1
  190. package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
  191. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +1 -5
  192. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  193. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  194. package/dist/features/horizontalRule/server/schema.d.ts +7 -0
  195. package/dist/features/horizontalRule/server/schema.d.ts.map +1 -0
  196. package/dist/features/horizontalRule/server/schema.js +25 -0
  197. package/dist/features/horizontalRule/server/schema.js.map +1 -0
  198. package/dist/features/link/client/index.d.ts.map +1 -1
  199. package/dist/features/link/client/index.js +2 -2
  200. package/dist/features/link/client/index.js.map +1 -1
  201. package/dist/features/link/client/plugins/autoLink/index.d.ts +1 -1
  202. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  203. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  204. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -3
  205. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  206. package/dist/features/link/client/plugins/floatingLinkEditor/index.css +7 -11
  207. package/dist/features/link/client/plugins/floatingLinkEditor/types.d.ts +1 -1
  208. package/dist/features/link/client/plugins/floatingLinkEditor/types.d.ts.map +1 -1
  209. package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -1
  210. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  211. package/dist/features/link/markdownTransformer.d.ts +5 -5
  212. package/dist/features/link/markdownTransformer.d.ts.map +1 -1
  213. package/dist/features/link/markdownTransformer.js +2 -2
  214. package/dist/features/link/markdownTransformer.js.map +1 -1
  215. package/dist/features/link/markdownTransformer.spec.js +10 -10
  216. package/dist/features/link/markdownTransformer.spec.js.map +1 -1
  217. package/dist/features/link/nodes/AutoLinkNode.d.ts +3 -3
  218. package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  219. package/dist/features/link/nodes/AutoLinkNode.js +2 -1
  220. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  221. package/dist/features/link/nodes/LinkNode.d.ts +3 -3
  222. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  223. package/dist/features/link/nodes/LinkNode.js +2 -1
  224. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  225. package/dist/features/link/server/baseFields.js.map +1 -1
  226. package/dist/features/link/server/graphQLPopulationPromise.d.ts +1 -1
  227. package/dist/features/link/server/graphQLPopulationPromise.d.ts.map +1 -1
  228. package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
  229. package/dist/features/link/server/index.d.ts +2 -1
  230. package/dist/features/link/server/index.d.ts.map +1 -1
  231. package/dist/features/link/server/index.js +5 -2
  232. package/dist/features/link/server/index.js.map +1 -1
  233. package/dist/features/link/server/schema.d.ts +32 -0
  234. package/dist/features/link/server/schema.d.ts.map +1 -0
  235. package/dist/features/link/server/schema.js +171 -0
  236. package/dist/features/link/server/schema.js.map +1 -0
  237. package/dist/features/link/server/validate.d.ts +1 -1
  238. package/dist/features/link/server/validate.d.ts.map +1 -1
  239. package/dist/features/link/server/validate.js.map +1 -1
  240. package/dist/features/lists/checklist/client/index.js +1 -1
  241. package/dist/features/lists/checklist/client/index.js.map +1 -1
  242. package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
  243. package/dist/features/lists/checklist/server/index.js +4 -1
  244. package/dist/features/lists/checklist/server/index.js.map +1 -1
  245. package/dist/features/lists/orderedList/client/index.js +1 -1
  246. package/dist/features/lists/orderedList/client/index.js.map +1 -1
  247. package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
  248. package/dist/features/lists/orderedList/server/index.js +4 -1
  249. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  250. package/dist/features/lists/plugin/index.d.ts +0 -9
  251. package/dist/features/lists/plugin/index.d.ts.map +1 -1
  252. package/dist/features/lists/plugin/index.js.map +1 -1
  253. package/dist/features/lists/shared/schema.d.ts +18 -0
  254. package/dist/features/lists/shared/schema.d.ts.map +1 -0
  255. package/dist/features/lists/shared/schema.js +62 -0
  256. package/dist/features/lists/shared/schema.js.map +1 -0
  257. package/dist/features/lists/unorderedList/client/index.js +1 -1
  258. package/dist/features/lists/unorderedList/client/index.js.map +1 -1
  259. package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
  260. package/dist/features/lists/unorderedList/server/index.js +4 -1
  261. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  262. package/dist/features/relationship/client/components/RelationshipComponent.d.ts +1 -1
  263. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  264. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  265. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +1 -1
  266. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  267. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  268. package/dist/features/relationship/client/plugins/index.d.ts +1 -1
  269. package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
  270. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  271. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
  272. package/dist/features/relationship/client/utils/useEnabledRelationships.js +9 -40
  273. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
  274. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +1 -1
  275. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
  276. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  277. package/dist/features/relationship/server/index.d.ts +1 -0
  278. package/dist/features/relationship/server/index.d.ts.map +1 -1
  279. package/dist/features/relationship/server/index.js +2 -0
  280. package/dist/features/relationship/server/index.js.map +1 -1
  281. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +1 -10
  282. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  283. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  284. package/dist/features/relationship/server/schema.d.ts +28 -0
  285. package/dist/features/relationship/server/schema.d.ts.map +1 -0
  286. package/dist/features/relationship/server/schema.js +97 -0
  287. package/dist/features/relationship/server/schema.js.map +1 -0
  288. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +23 -0
  289. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -0
  290. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +34 -0
  291. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -0
  292. package/dist/features/textState/feature.client.js +1 -1
  293. package/dist/features/textState/feature.client.js.map +1 -1
  294. package/dist/features/toolbars/fixed/client/Toolbar/index.css +2 -2
  295. package/dist/features/toolbars/inline/client/Toolbar/index.css +2 -13
  296. package/dist/features/toolbars/shared/ToolbarDropdown/index.css +8 -12
  297. package/dist/features/toolbars/shared/useToolbarStates.d.ts.map +1 -1
  298. package/dist/features/toolbars/shared/useToolbarStates.js +3 -1
  299. package/dist/features/toolbars/shared/useToolbarStates.js.map +1 -1
  300. package/dist/features/typesClient.d.ts +1 -1
  301. package/dist/features/typesClient.d.ts.map +1 -1
  302. package/dist/features/typesClient.js.map +1 -1
  303. package/dist/features/typesServer.d.ts +18 -41
  304. package/dist/features/typesServer.d.ts.map +1 -1
  305. package/dist/features/typesServer.js.map +1 -1
  306. package/dist/features/upload/client/component/index.css +11 -11
  307. package/dist/features/upload/client/component/index.d.ts +1 -1
  308. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  309. package/dist/features/upload/client/component/index.js.map +1 -1
  310. package/dist/features/upload/client/nodes/UploadNode.d.ts +1 -1
  311. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  312. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  313. package/dist/features/upload/client/plugin/index.d.ts +1 -1
  314. package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
  315. package/dist/features/upload/client/plugin/index.js +5 -5
  316. package/dist/features/upload/client/plugin/index.js.map +1 -1
  317. package/dist/features/upload/server/graphQLPopulationPromise.d.ts +1 -1
  318. package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
  319. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  320. package/dist/features/upload/server/index.d.ts +1 -0
  321. package/dist/features/upload/server/index.d.ts.map +1 -1
  322. package/dist/features/upload/server/index.js +5 -4
  323. package/dist/features/upload/server/index.js.map +1 -1
  324. package/dist/features/upload/server/markdownTransformer.d.ts +2 -2
  325. package/dist/features/upload/server/markdownTransformer.d.ts.map +1 -1
  326. package/dist/features/upload/server/markdownTransformer.js +1 -1
  327. package/dist/features/upload/server/markdownTransformer.js.map +1 -1
  328. package/dist/features/upload/server/nodes/UploadNode.d.ts +1 -55
  329. package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
  330. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  331. package/dist/features/upload/server/nodes/conversions.d.ts.map +1 -1
  332. package/dist/features/upload/server/nodes/conversions.js.map +1 -1
  333. package/dist/features/upload/server/schema.d.ts +52 -0
  334. package/dist/features/upload/server/schema.d.ts.map +1 -0
  335. package/dist/features/upload/server/schema.js +149 -0
  336. package/dist/features/upload/server/schema.js.map +1 -0
  337. package/dist/features/upload/server/validate.d.ts +1 -1
  338. package/dist/features/upload/server/validate.d.ts.map +1 -1
  339. package/dist/features/upload/server/validate.js.map +1 -1
  340. package/dist/field/Diff/converters/unknown/index.css +1 -1
  341. package/dist/field/Diff/converters/upload/index.js.map +1 -1
  342. package/dist/field/Field.js +1 -1
  343. package/dist/field/Field.js.map +1 -1
  344. package/dist/field/ViewSelector.css +1 -1
  345. package/dist/field/bundled.css +1 -1
  346. package/dist/field/index.css +5 -5
  347. package/dist/field/index.js +1 -1
  348. package/dist/field/index.js.map +1 -1
  349. package/dist/field/rscEntry.d.ts.map +1 -1
  350. package/dist/field/rscEntry.js +2 -0
  351. package/dist/field/rscEntry.js.map +1 -1
  352. package/dist/index.d.ts +10 -7
  353. package/dist/index.d.ts.map +1 -1
  354. package/dist/index.js +3 -3
  355. package/dist/index.js.map +1 -1
  356. package/dist/lexical/LexicalEditor.css +2 -2
  357. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  358. package/dist/lexical/config/client/loader.js +5 -1
  359. package/dist/lexical/config/client/loader.js.map +1 -1
  360. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  361. package/dist/lexical/config/server/sanitize.js +9 -11
  362. package/dist/lexical/config/server/sanitize.js.map +1 -1
  363. package/dist/lexical/plugins/DecoratorPlugin/index.css +1 -1
  364. package/dist/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
  365. package/dist/lexical/plugins/MarkdownShortcut/index.js +1 -1
  366. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  367. package/dist/lexical/plugins/SlashMenu/index.css +1 -5
  368. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.css +1 -1
  369. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +3 -3
  370. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
  371. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  372. package/dist/lexical/theme/EditorTheme.css +18 -19
  373. package/dist/lexical/ui/ContentEditable.css +5 -5
  374. package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts +17 -0
  375. package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts.map +1 -0
  376. package/dist/lexical/utils/markdown/convertFromMarkdownString.js +27 -0
  377. package/dist/lexical/utils/markdown/convertFromMarkdownString.js.map +1 -0
  378. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +88 -0
  379. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +1 -0
  380. package/dist/lexical/utils/markdown/createBlockNode.d.ts +1 -1
  381. package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
  382. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  383. package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts +25 -0
  384. package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts.map +1 -0
  385. package/dist/lexical/utils/markdown/normalizeMarkdown.js +91 -0
  386. package/dist/lexical/utils/markdown/normalizeMarkdown.js.map +1 -0
  387. package/dist/lexical-proxy/@lexical-markdown.d.ts +1 -1
  388. package/dist/lexical-proxy/@lexical-markdown.d.ts.map +1 -1
  389. package/dist/lexical-proxy/@lexical-markdown.js +1 -1
  390. package/dist/lexical-proxy/@lexical-markdown.js.map +1 -1
  391. package/dist/types/builtInNodes.d.ts +14 -0
  392. package/dist/types/builtInNodes.d.ts.map +1 -0
  393. package/dist/types/builtInNodes.js +203 -0
  394. package/dist/types/builtInNodes.js.map +1 -0
  395. package/dist/types/index.d.ts +16 -17
  396. package/dist/types/index.d.ts.map +1 -1
  397. package/dist/types/index.js.map +1 -1
  398. package/dist/types/jsonSchemaHelpers.d.ts +30 -0
  399. package/dist/types/jsonSchemaHelpers.d.ts.map +1 -0
  400. package/dist/types/jsonSchemaHelpers.js +58 -0
  401. package/dist/types/jsonSchemaHelpers.js.map +1 -0
  402. package/dist/types/nodeTypes.d.ts +115 -61
  403. package/dist/types/nodeTypes.d.ts.map +1 -1
  404. package/dist/types/nodeTypes.js +3 -2
  405. package/dist/types/nodeTypes.js.map +1 -1
  406. package/dist/types/schema.d.ts.map +1 -1
  407. package/dist/types/schema.js +74 -65
  408. package/dist/types/schema.js.map +1 -1
  409. package/dist/utilities/applyBaseFilterToFields.d.ts.map +1 -1
  410. package/dist/utilities/applyBaseFilterToFields.js +1 -2
  411. package/dist/utilities/applyBaseFilterToFields.js.map +1 -1
  412. package/dist/utilities/buildEditorState.d.ts +17 -3
  413. package/dist/utilities/buildEditorState.d.ts.map +1 -1
  414. package/dist/utilities/buildEditorState.js +8 -0
  415. package/dist/utilities/buildEditorState.js.map +1 -1
  416. package/dist/utilities/buildInitialState.d.ts +2 -1
  417. package/dist/utilities/buildInitialState.d.ts.map +1 -1
  418. package/dist/utilities/buildInitialState.js.map +1 -1
  419. package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
  420. package/dist/utilities/fieldsDrawer/Drawer.js +19 -10
  421. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  422. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts +4 -1
  423. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  424. package/dist/utilities/fieldsDrawer/DrawerContent.js +8 -7
  425. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  426. package/dist/utilities/fieldsDrawer/index.css +12 -0
  427. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts +29 -0
  428. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts.map +1 -0
  429. package/dist/utilities/fieldsDrawer/useDrawerSubmit.js +97 -0
  430. package/dist/utilities/fieldsDrawer/useDrawerSubmit.js.map +1 -0
  431. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +1 -1
  432. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  433. package/package.json +22 -26
  434. package/dist/exports/client/Field-G5Z2HM5Y.js +0 -2
  435. package/dist/exports/client/Field-G5Z2HM5Y.js.map +0 -7
  436. package/dist/exports/client/RelationshipComponent-RZL743CS.js.map +0 -7
  437. package/dist/exports/client/chunk-6QWQ7JV4.js +0 -2
  438. package/dist/exports/client/chunk-6QWQ7JV4.js.map +0 -7
  439. package/dist/exports/client/chunk-FEJXFRL7.js +0 -2
  440. package/dist/exports/client/chunk-FEJXFRL7.js.map +0 -7
  441. package/dist/exports/client/chunk-INBEEENE.js +0 -2
  442. package/dist/exports/client/chunk-INBEEENE.js.map +0 -7
  443. package/dist/exports/client/chunk-LH634DPU.js +0 -12
  444. package/dist/exports/client/chunk-LH634DPU.js.map +0 -7
  445. package/dist/exports/client/component-CVM4OESA.js.map +0 -7
  446. package/dist/exports/client/componentInline-JJZ2NKW2.js +0 -2
  447. package/dist/features/blockquote/markdownTransformer.d.ts +0 -3
  448. package/dist/features/blockquote/markdownTransformer.d.ts.map +0 -1
  449. package/dist/features/blockquote/markdownTransformer.js +0 -33
  450. package/dist/features/blockquote/markdownTransformer.js.map +0 -1
  451. package/dist/features/format/bold/markdownTransformers.d.ts +0 -6
  452. package/dist/features/format/bold/markdownTransformers.d.ts.map +0 -1
  453. package/dist/features/format/bold/markdownTransformers.js +0 -23
  454. package/dist/features/format/bold/markdownTransformers.js.map +0 -1
  455. package/dist/features/format/inlineCode/markdownTransformers.d.ts +0 -3
  456. package/dist/features/format/inlineCode/markdownTransformers.d.ts.map +0 -1
  457. package/dist/features/format/inlineCode/markdownTransformers.js +0 -6
  458. package/dist/features/format/inlineCode/markdownTransformers.js.map +0 -1
  459. package/dist/features/format/italic/markdownTransformers.d.ts +0 -4
  460. package/dist/features/format/italic/markdownTransformers.d.ts.map +0 -1
  461. package/dist/features/format/italic/markdownTransformers.js +0 -12
  462. package/dist/features/format/italic/markdownTransformers.js.map +0 -1
  463. package/dist/features/format/strikethrough/markdownTransformers.d.ts +0 -3
  464. package/dist/features/format/strikethrough/markdownTransformers.d.ts.map +0 -1
  465. package/dist/features/format/strikethrough/markdownTransformers.js +0 -6
  466. package/dist/features/format/strikethrough/markdownTransformers.js.map +0 -1
  467. package/dist/features/link/nodes/types.d.ts +0 -27
  468. package/dist/features/link/nodes/types.d.ts.map +0 -1
  469. package/dist/features/link/nodes/types.js +0 -2
  470. package/dist/features/link/nodes/types.js.map +0 -1
  471. package/dist/features/lists/checklist/markdownTransformers.d.ts +0 -3
  472. package/dist/features/lists/checklist/markdownTransformers.d.ts.map +0 -1
  473. package/dist/features/lists/checklist/markdownTransformers.js +0 -12
  474. package/dist/features/lists/checklist/markdownTransformers.js.map +0 -1
  475. package/dist/features/lists/orderedList/markdownTransformer.d.ts +0 -3
  476. package/dist/features/lists/orderedList/markdownTransformer.d.ts.map +0 -1
  477. package/dist/features/lists/orderedList/markdownTransformer.js +0 -12
  478. package/dist/features/lists/orderedList/markdownTransformer.js.map +0 -1
  479. package/dist/features/lists/shared/markdown.d.ts +0 -6
  480. package/dist/features/lists/shared/markdown.d.ts.map +0 -1
  481. package/dist/features/lists/shared/markdown.js +0 -57
  482. package/dist/features/lists/shared/markdown.js.map +0 -1
  483. package/dist/features/lists/unorderedList/markdownTransformer.d.ts +0 -3
  484. package/dist/features/lists/unorderedList/markdownTransformer.d.ts.map +0 -1
  485. package/dist/features/lists/unorderedList/markdownTransformer.js +0 -12
  486. package/dist/features/lists/unorderedList/markdownTransformer.js.map +0 -1
  487. package/dist/lexical/utils/guard.d.ts +0 -5
  488. package/dist/lexical/utils/guard.d.ts.map +0 -1
  489. package/dist/lexical/utils/guard.js +0 -9
  490. package/dist/lexical/utils/guard.js.map +0 -1
  491. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts +0 -2
  492. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts.map +0 -1
  493. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +0 -2
  494. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +0 -1
  495. package/dist/packages/@lexical/markdown/MarkdownExport.d.ts +0 -14
  496. package/dist/packages/@lexical/markdown/MarkdownExport.d.ts.map +0 -1
  497. package/dist/packages/@lexical/markdown/MarkdownExport.js +0 -213
  498. package/dist/packages/@lexical/markdown/MarkdownExport.js.map +0 -1
  499. package/dist/packages/@lexical/markdown/MarkdownImport.d.ts +0 -19
  500. package/dist/packages/@lexical/markdown/MarkdownImport.d.ts.map +0 -1
  501. package/dist/packages/@lexical/markdown/MarkdownImport.js +0 -198
  502. package/dist/packages/@lexical/markdown/MarkdownImport.js.map +0 -1
  503. package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts +0 -11
  504. package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts.map +0 -1
  505. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js +0 -304
  506. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js.map +0 -1
  507. package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts +0 -147
  508. package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts.map +0 -1
  509. package/dist/packages/@lexical/markdown/MarkdownTransformers.js +0 -268
  510. package/dist/packages/@lexical/markdown/MarkdownTransformers.js.map +0 -1
  511. package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts +0 -22
  512. package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts.map +0 -1
  513. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js +0 -91
  514. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js.map +0 -1
  515. package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts +0 -21
  516. package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts.map +0 -1
  517. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js +0 -54
  518. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js.map +0 -1
  519. package/dist/packages/@lexical/markdown/importTextTransformers.d.ts +0 -18
  520. package/dist/packages/@lexical/markdown/importTextTransformers.d.ts.map +0 -1
  521. package/dist/packages/@lexical/markdown/importTextTransformers.js +0 -54
  522. package/dist/packages/@lexical/markdown/importTextTransformers.js.map +0 -1
  523. package/dist/packages/@lexical/markdown/index.d.ts +0 -29
  524. package/dist/packages/@lexical/markdown/index.d.ts.map +0 -1
  525. package/dist/packages/@lexical/markdown/index.js +0 -39
  526. package/dist/packages/@lexical/markdown/index.js.map +0 -1
  527. package/dist/packages/@lexical/markdown/utils.d.ts +0 -34
  528. package/dist/packages/@lexical/markdown/utils.d.ts.map +0 -1
  529. package/dist/packages/@lexical/markdown/utils.js +0 -267
  530. package/dist/packages/@lexical/markdown/utils.js.map +0 -1
  531. /package/dist/exports/client/{componentInline-JJZ2NKW2.js.map → componentInline-H24N7GUG.js.map} +0 -0
@@ -0,0 +1,149 @@
1
+ import { createHash } from 'crypto';
2
+ import { fieldsToJSONSchema, flattenAllFields } from 'payload';
3
+ import { formatSchema, versionSchema } from '../../../types/jsonSchemaHelpers.js';
4
+ import { filterEnabledRelationshipCollections } from '../../relationship/shared/filterEnabledRelationshipCollections.js';
5
+ /** MUST stay byte-for-byte in sync with the runtime `SerializedUploadNode` declared above. */
6
+ const SERIALIZED_UPLOAD_NODE_TS = `export type SerializedUploadNode<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {
7
+ type: 'upload';
8
+ format: LexicalElementFormat;
9
+ id: string;
10
+ version: number;
11
+ fields: TFields;
12
+ } & {
13
+ [TSlug in TSlugs]: {
14
+ relationTo: TSlug;
15
+ value: Config['collections'][TSlug]['id'] | Config['collections'][TSlug];
16
+ };
17
+ }[TSlugs];`;
18
+ /** Input variant of `SerializedUploadNode`: `value` is ID-only (you only ever write an ID). */
19
+ const SERIALIZED_UPLOAD_NODE_INPUT_TS = `export type SerializedUploadNodeInput<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {
20
+ type: 'upload';
21
+ format: LexicalElementFormat;
22
+ id: string;
23
+ version: number;
24
+ fields: TFields;
25
+ } & {
26
+ [TSlug in TSlugs]: {
27
+ relationTo: TSlug;
28
+ value: Config['collections'][TSlug]['id'];
29
+ };
30
+ }[TSlugs];`;
31
+ const hashUploadFields = schema => createHash('sha256').update(JSON.stringify(schema)).digest('hex').slice(0, 8).toUpperCase();
32
+ export const createUploadNodeJSONSchema = props => ({
33
+ collectionIDFieldTypes,
34
+ config,
35
+ i18n,
36
+ interfaceNameDefinitions,
37
+ typeStringDefinitions,
38
+ variant
39
+ }) => {
40
+ const isInput = variant === 'input';
41
+ typeStringDefinitions.add(isInput ? SERIALIZED_UPLOAD_NODE_INPUT_TS : SERIALIZED_UPLOAD_NODE_TS);
42
+ const enabledCollections = config?.collections ? filterEnabledRelationshipCollections(config.collections, {
43
+ disabledCollections: props?.disabledCollections,
44
+ enabledCollections: props?.enabledCollections,
45
+ uploads: true
46
+ }) : [];
47
+ // Configured extra fields are registered as their own interface and referenced here, so the
48
+ // generated TypeScript keeps them - the node-level `tsType` would otherwise erase `fields` to
49
+ // `{ [k: string]: unknown }`. Mirrors how LinkFeature handles custom link fields.
50
+ //
51
+ // Each collection gets its own `SerializedUploadNode<'slug', Fields>` instantiation so the
52
+ // generated union correctly pairs each `relationTo` with its own fields type. A single
53
+ // `SerializedUploadNode<'a' | 'b', AFields | BFields>` would lose that pairing.
54
+ const perCollectionTsTypes = [];
55
+ const collectionVariants = enabledCollections.map(collection => {
56
+ const slug = collection.slug;
57
+ const idType = collectionIDFieldTypes[slug] ?? 'string';
58
+ const extraFields = props?.collections?.[slug]?.fields ?? [];
59
+ const flattenedExtra = flattenAllFields({
60
+ fields: extraFields
61
+ });
62
+ const extraFieldsSchema = flattenedExtra.length > 0 && config ? fieldsToJSONSchema({
63
+ collectionIDFieldTypes,
64
+ config,
65
+ fields: flattenedExtra,
66
+ i18n,
67
+ interfaceNameDefinitions,
68
+ typeStringDefinitions,
69
+ variant
70
+ }) : {
71
+ properties: {},
72
+ required: []
73
+ };
74
+ let fieldsSchema = {
75
+ type: 'object',
76
+ additionalProperties: false,
77
+ properties: extraFieldsSchema.properties,
78
+ required: extraFieldsSchema.required
79
+ };
80
+ let fieldsTypeName;
81
+ if (flattenedExtra.length > 0) {
82
+ fieldsTypeName = `LexicalUploadFields_${hashUploadFields(fieldsSchema)}`;
83
+ interfaceNameDefinitions.set(fieldsTypeName, fieldsSchema);
84
+ fieldsSchema = {
85
+ $ref: `#/$defs/${fieldsTypeName}`
86
+ };
87
+ }
88
+ const uploadTsName = isInput ? 'SerializedUploadNodeInput' : 'SerializedUploadNode';
89
+ perCollectionTsTypes.push(fieldsTypeName ? `${uploadTsName}<'${slug}', ${fieldsTypeName}>` : `${uploadTsName}<'${slug}'>`);
90
+ return {
91
+ type: 'object',
92
+ additionalProperties: false,
93
+ properties: {
94
+ id: {
95
+ type: 'string'
96
+ },
97
+ type: {
98
+ type: 'string',
99
+ const: 'upload'
100
+ },
101
+ fields: fieldsSchema,
102
+ format: formatSchema,
103
+ relationTo: {
104
+ type: 'string',
105
+ const: slug
106
+ },
107
+ value: isInput ? {
108
+ type: idType,
109
+ description: 'The uploaded file ID.'
110
+ } : {
111
+ description: 'The uploaded file by ID (string or number). Populated to the full upload document when read at depth > 0.',
112
+ oneOf: [{
113
+ type: idType
114
+ }, {
115
+ $ref: `#/$defs/${slug}`
116
+ }]
117
+ },
118
+ version: versionSchema
119
+ },
120
+ required: ['fields', 'format', 'id', 'relationTo', 'type', 'value', 'version']
121
+ };
122
+ });
123
+ let schema;
124
+ if (collectionVariants.length === 0) {
125
+ // Fallback when no enabled upload collections.
126
+ schema = {
127
+ type: 'object',
128
+ additionalProperties: true,
129
+ properties: {
130
+ type: {
131
+ type: 'string',
132
+ const: 'upload'
133
+ },
134
+ version: versionSchema
135
+ },
136
+ required: ['type', 'version']
137
+ };
138
+ } else {
139
+ const baseSchema = collectionVariants.length === 1 ? collectionVariants[0] : {
140
+ oneOf: collectionVariants
141
+ };
142
+ schema = {
143
+ ...baseSchema,
144
+ tsType: perCollectionTsTypes.join(' | ')
145
+ };
146
+ }
147
+ return schema;
148
+ };
149
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":["createHash","fieldsToJSONSchema","flattenAllFields","formatSchema","versionSchema","filterEnabledRelationshipCollections","SERIALIZED_UPLOAD_NODE_TS","SERIALIZED_UPLOAD_NODE_INPUT_TS","hashUploadFields","schema","update","JSON","stringify","digest","slice","toUpperCase","createUploadNodeJSONSchema","props","collectionIDFieldTypes","config","i18n","interfaceNameDefinitions","typeStringDefinitions","variant","isInput","add","enabledCollections","collections","disabledCollections","uploads","perCollectionTsTypes","collectionVariants","map","collection","slug","idType","extraFields","fields","flattenedExtra","extraFieldsSchema","length","properties","required","fieldsSchema","type","additionalProperties","fieldsTypeName","set","$ref","uploadTsName","push","id","const","format","relationTo","value","description","oneOf","version","baseSchema","tsType","join"],"sources":["../../../../src/features/upload/server/schema.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type {\n DataFromCollectionSlug,\n IDTypeForCollectionSlug,\n JsonObject,\n TypedUploadCollection,\n UploadCollectionSlug,\n} from 'payload'\n\nimport { createHash } from 'crypto'\nimport { fieldsToJSONSchema, flattenAllFields } from 'payload'\n\nimport type { LexicalElementFormat } from '../../../types/nodeTypes.js'\nimport type { JSONSchemaFn } from '../../typesServer.js'\nimport type { UploadFeatureProps } from './index.js'\n\nimport { formatSchema, versionSchema } from '../../../types/jsonSchemaHelpers.js'\nimport { filterEnabledRelationshipCollections } from '../../relationship/shared/filterEnabledRelationshipCollections.js'\n\nexport type UploadData<TFields extends JsonObject = JsonObject> = {\n [TCollectionSlug in UploadCollectionSlug]: {\n fields: TFields\n /** ID of this upload node — NOT the linked document's ID. */\n id: string\n relationTo: TCollectionSlug\n /** Either the document ID or the full populated document. */\n value: DataFromCollectionSlug<TCollectionSlug> | IDTypeForCollectionSlug<TCollectionSlug>\n }\n}[UploadCollectionSlug]\n\n/** @internal Adds a pending state to `UploadData`. */\nexport type Internal_UploadData<TFields extends JsonObject = JsonObject> = {\n pending?: {\n /** Bulk upload form ID. */\n formID: string\n /** `src` of the image DOM element. */\n src: string\n }\n} & UploadData<TFields>\n\n/**\n * More precise variant of {@link UploadData}. Replaces `UploadData` in v4.\n * @internal\n * @todo Replace UploadData with UploadDataImproved in 4.0\n */\nexport type UploadDataImproved<TFields extends JsonObject = JsonObject> = {\n [TCollectionSlug in UploadCollectionSlug]: {\n fields: TFields\n id: string\n relationTo: TCollectionSlug\n value: IDTypeForCollectionSlug<TCollectionSlug> | TypedUploadCollection[TCollectionSlug]\n }\n}[UploadCollectionSlug]\n\nexport type SerializedUploadNode<\n TSlugs extends UploadCollectionSlug = UploadCollectionSlug,\n TFields = { [k: string]: unknown },\n> = {\n [TSlug in TSlugs]: {\n relationTo: TSlug\n value: DataFromCollectionSlug<TSlug> | IDTypeForCollectionSlug<TSlug>\n }\n}[TSlugs] & {\n fields: TFields\n format: LexicalElementFormat\n id: string\n type: 'upload'\n version: number\n}\n\n/** MUST stay byte-for-byte in sync with the runtime `SerializedUploadNode` declared above. */\nconst SERIALIZED_UPLOAD_NODE_TS = `export type SerializedUploadNode<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {\n type: 'upload';\n format: LexicalElementFormat;\n id: string;\n version: number;\n fields: TFields;\n} & {\n [TSlug in TSlugs]: {\n relationTo: TSlug;\n value: Config['collections'][TSlug]['id'] | Config['collections'][TSlug];\n };\n}[TSlugs];`\n\n/** Input variant of `SerializedUploadNode`: `value` is ID-only (you only ever write an ID). */\nconst SERIALIZED_UPLOAD_NODE_INPUT_TS = `export type SerializedUploadNodeInput<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {\n type: 'upload';\n format: LexicalElementFormat;\n id: string;\n version: number;\n fields: TFields;\n} & {\n [TSlug in TSlugs]: {\n relationTo: TSlug;\n value: Config['collections'][TSlug]['id'];\n };\n}[TSlugs];`\n\nconst hashUploadFields = (schema: JSONSchema4): string =>\n createHash('sha256').update(JSON.stringify(schema)).digest('hex').slice(0, 8).toUpperCase()\n\nexport const createUploadNodeJSONSchema =\n (props: undefined | UploadFeatureProps): JSONSchemaFn =>\n ({\n collectionIDFieldTypes,\n config,\n i18n,\n interfaceNameDefinitions,\n typeStringDefinitions,\n variant,\n }) => {\n const isInput = variant === 'input'\n typeStringDefinitions.add(isInput ? SERIALIZED_UPLOAD_NODE_INPUT_TS : SERIALIZED_UPLOAD_NODE_TS)\n const enabledCollections = config?.collections\n ? filterEnabledRelationshipCollections(config.collections, {\n disabledCollections: props?.disabledCollections,\n enabledCollections: props?.enabledCollections,\n uploads: true,\n })\n : []\n\n // Configured extra fields are registered as their own interface and referenced here, so the\n // generated TypeScript keeps them - the node-level `tsType` would otherwise erase `fields` to\n // `{ [k: string]: unknown }`. Mirrors how LinkFeature handles custom link fields.\n //\n // Each collection gets its own `SerializedUploadNode<'slug', Fields>` instantiation so the\n // generated union correctly pairs each `relationTo` with its own fields type. A single\n // `SerializedUploadNode<'a' | 'b', AFields | BFields>` would lose that pairing.\n const perCollectionTsTypes: string[] = []\n const collectionVariants: JSONSchema4[] = enabledCollections.map((collection) => {\n const slug = collection.slug\n const idType: 'number' | 'string' = collectionIDFieldTypes[slug] ?? 'string'\n const extraFields = props?.collections?.[slug]?.fields ?? []\n const flattenedExtra = flattenAllFields({ fields: extraFields })\n const extraFieldsSchema =\n flattenedExtra.length > 0 && config\n ? fieldsToJSONSchema({\n collectionIDFieldTypes,\n config,\n fields: flattenedExtra,\n i18n,\n interfaceNameDefinitions,\n typeStringDefinitions,\n variant,\n })\n : { properties: {}, required: [] }\n\n let fieldsSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: extraFieldsSchema.properties,\n required: extraFieldsSchema.required,\n }\n let fieldsTypeName: string | undefined\n if (flattenedExtra.length > 0) {\n fieldsTypeName = `LexicalUploadFields_${hashUploadFields(fieldsSchema)}`\n interfaceNameDefinitions.set(fieldsTypeName, fieldsSchema)\n fieldsSchema = { $ref: `#/$defs/${fieldsTypeName}` }\n }\n\n const uploadTsName = isInput ? 'SerializedUploadNodeInput' : 'SerializedUploadNode'\n perCollectionTsTypes.push(\n fieldsTypeName\n ? `${uploadTsName}<'${slug}', ${fieldsTypeName}>`\n : `${uploadTsName}<'${slug}'>`,\n )\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: { type: 'string' },\n type: { type: 'string', const: 'upload' },\n fields: fieldsSchema,\n format: formatSchema,\n relationTo: { type: 'string', const: slug },\n value: isInput\n ? { type: idType, description: 'The uploaded file ID.' }\n : {\n description:\n 'The uploaded file by ID (string or number). Populated to the full upload document when read at depth > 0.',\n oneOf: [{ type: idType }, { $ref: `#/$defs/${slug}` }],\n },\n version: versionSchema,\n },\n required: ['fields', 'format', 'id', 'relationTo', 'type', 'value', 'version'],\n }\n })\n\n let schema: JSONSchema4\n if (collectionVariants.length === 0) {\n // Fallback when no enabled upload collections.\n schema = {\n type: 'object',\n additionalProperties: true,\n properties: {\n type: { type: 'string', const: 'upload' },\n version: versionSchema,\n },\n required: ['type', 'version'],\n }\n } else {\n const baseSchema: JSONSchema4 =\n collectionVariants.length === 1 ? collectionVariants[0]! : { oneOf: collectionVariants }\n schema = { ...baseSchema, tsType: perCollectionTsTypes.join(' | ') }\n }\n\n return schema\n }\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { NodeValidation } from '../../typesServer.js';
2
2
  import type { UploadFeatureProps } from './index.js';
3
- import type { SerializedUploadNode } from './nodes/UploadNode.js';
3
+ import type { SerializedUploadNode } from './schema.js';
4
4
  export declare const uploadValidation: (props: UploadFeatureProps) => NodeValidation<SerializedUploadNode>;
5
5
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAEjE,eAAO,MAAM,gBAAgB,GAC3B,OAAO,kBAAkB,KACxB,cAAc,CAAC,oBAAoB,CAqErC,CAAA"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEvD,eAAO,MAAM,gBAAgB,GAC3B,OAAO,kBAAkB,KACxB,cAAc,CAAC,oBAAoB,CAqErC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","names":["fieldSchemasToFormState","isValidID","uploadValidation","props","node","validation","options","id","data","operation","preferences","req","payload","t","idType","collections","relationTo","customIDType","db","defaultIDType","nodeID","value","Object","keys","length","collection","fields","result","collectionSlug","documentData","fieldSchemaMap","undefined","initialBlockData","permissions","renderAllFields","schemaPath","errorPathsSet","Set","fieldKey","fieldState","errorPaths","errorPath","add","Array","from","join"],"sources":["../../../../src/features/upload/server/validate.ts"],"sourcesContent":["import { fieldSchemasToFormState } from '@payloadcms/ui/forms/fieldSchemasToFormState'\nimport { isValidID } from 'payload'\n\nimport type { NodeValidation } from '../../typesServer.js'\nimport type { UploadFeatureProps } from './index.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 data,\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 - Fix in Payload v4\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 fieldSchemasToFormState({\n id,\n collectionSlug: node.relationTo,\n data: node?.fields ?? {},\n documentData: data,\n fields: collection.fields,\n fieldSchemaMap: undefined,\n initialBlockData: node?.fields ?? {},\n operation: operation === 'create' || operation === 'update' ? operation : 'update',\n permissions: {},\n preferences,\n renderAllFields: false,\n req,\n schemaPath: '',\n })\n\n const errorPathsSet = new Set<string>()\n for (const fieldKey in result) {\n const fieldState = result[fieldKey]\n if (fieldState?.errorPaths?.length) {\n for (const errorPath of fieldState.errorPaths) {\n errorPathsSet.add(errorPath)\n }\n }\n }\n const errorPaths = Array.from(errorPathsSet)\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ;AACxC,SAASC,SAAS,QAAQ;AAM1B,OAAO,MAAMC,gBAAA,GACXC,KAAA;EAEA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAA,EAAY;MACVC,OAAA,EAAS;QACPC,EAAE;QACFC,IAAI;QACJC,SAAS;QACTC,WAAW;QACXC,GAAG;QACHA,GAAA,EAAK;UAAEC,OAAO;UAAEC;QAAC;MAAE;IACpB;EACF,CACF;IACC,MAAMC,MAAA,GAASF,OAAA,CAAQG,WAAW,CAACX,IAAA,CAAKY,UAAU,CAAC,EAAEC,YAAA,IAAgBL,OAAA,CAAQM,EAAE,CAACC,aAAa;IAC7F;IACA,MAAMC,MAAA,GAAShB,IAAA,EAAMiB,KAAA,EAAOd,EAAA,IAAMH,IAAA,EAAMiB,KAAA,CAAM;AAAA;IAE9C,IAAI,CAACpB,SAAA,CAAUmB,MAAA,EAAQN,MAAA,GAAS;MAC9B,OAAOD,CAAA,CAAE;IACX;IAEA,IAAI,CAACV,KAAA,EAAOY,WAAA,EAAa;MACvB,OAAO;IACT;IAEA,IAAIO,MAAA,CAAOC,IAAI,CAACpB,KAAA,EAAOY,WAAA,EAAaS,MAAM,KAAK,GAAG;MAChD,OAAO;IACT;IAEA,MAAMC,UAAA,GAAatB,KAAA,EAAOY,WAAW,CAACX,IAAA,CAAKY,UAAU,CAAC;IAEtD,IAAI,CAACS,UAAA,EAAYC,MAAA,EAAQF,MAAA,EAAQ;MAC/B,OAAO;IACT;IAEA,MAAMG,MAAA,GAAS,MAAM3B,uBAAA,CAAwB;MAC3CO,EAAA;MACAqB,cAAA,EAAgBxB,IAAA,CAAKY,UAAU;MAC/BR,IAAA,EAAMJ,IAAA,EAAMsB,MAAA,IAAU,CAAC;MACvBG,YAAA,EAAcrB,IAAA;MACdkB,MAAA,EAAQD,UAAA,CAAWC,MAAM;MACzBI,cAAA,EAAgBC,SAAA;MAChBC,gBAAA,EAAkB5B,IAAA,EAAMsB,MAAA,IAAU,CAAC;MACnCjB,SAAA,EAAWA,SAAA,KAAc,YAAYA,SAAA,KAAc,WAAWA,SAAA,GAAY;MAC1EwB,WAAA,EAAa,CAAC;MACdvB,WAAA;MACAwB,eAAA,EAAiB;MACjBvB,GAAA;MACAwB,UAAA,EAAY;IACd;IAEA,MAAMC,aAAA,GAAgB,IAAIC,GAAA;IAC1B,KAAK,MAAMC,QAAA,IAAYX,MAAA,EAAQ;MAC7B,MAAMY,UAAA,GAAaZ,MAAM,CAACW,QAAA,CAAS;MACnC,IAAIC,UAAA,EAAYC,UAAA,EAAYhB,MAAA,EAAQ;QAClC,KAAK,MAAMiB,SAAA,IAAaF,UAAA,CAAWC,UAAU,EAAE;UAC7CJ,aAAA,CAAcM,GAAG,CAACD,SAAA;QACpB;MACF;IACF;IACA,MAAMD,UAAA,GAAaG,KAAA,CAAMC,IAAI,CAACR,aAAA;IAE9B,IAAII,UAAA,CAAWhB,MAAM,EAAE;MACrB,OAAO,uCAAuCgB,UAAA,CAAWK,IAAI,CAAC;IAChE;IAEA,OAAO;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"validate.js","names":["fieldSchemasToFormState","isValidID","uploadValidation","props","node","validation","options","id","data","operation","preferences","req","payload","t","idType","collections","relationTo","customIDType","db","defaultIDType","nodeID","value","Object","keys","length","collection","fields","result","collectionSlug","documentData","fieldSchemaMap","undefined","initialBlockData","permissions","renderAllFields","schemaPath","errorPathsSet","Set","fieldKey","fieldState","errorPaths","errorPath","add","Array","from","join"],"sources":["../../../../src/features/upload/server/validate.ts"],"sourcesContent":["import { fieldSchemasToFormState } from '@payloadcms/ui/forms/fieldSchemasToFormState'\nimport { isValidID } from 'payload'\n\nimport type { NodeValidation } from '../../typesServer.js'\nimport type { UploadFeatureProps } from './index.js'\nimport type { SerializedUploadNode } from './schema.js'\n\nexport const uploadValidation = (\n props: UploadFeatureProps,\n): NodeValidation<SerializedUploadNode> => {\n return async ({\n node,\n validation: {\n options: {\n id,\n data,\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 - Fix in Payload v4\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 fieldSchemasToFormState({\n id,\n collectionSlug: node.relationTo,\n data: node?.fields ?? {},\n documentData: data,\n fields: collection.fields,\n fieldSchemaMap: undefined,\n initialBlockData: node?.fields ?? {},\n operation: operation === 'create' || operation === 'update' ? operation : 'update',\n permissions: {},\n preferences,\n renderAllFields: false,\n req,\n schemaPath: '',\n })\n\n const errorPathsSet = new Set<string>()\n for (const fieldKey in result) {\n const fieldState = result[fieldKey]\n if (fieldState?.errorPaths?.length) {\n for (const errorPath of fieldState.errorPaths) {\n errorPathsSet.add(errorPath)\n }\n }\n }\n const errorPaths = Array.from(errorPathsSet)\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ;AACxC,SAASC,SAAS,QAAQ;AAM1B,OAAO,MAAMC,gBAAA,GACXC,KAAA;EAEA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAA,EAAY;MACVC,OAAA,EAAS;QACPC,EAAE;QACFC,IAAI;QACJC,SAAS;QACTC,WAAW;QACXC,GAAG;QACHA,GAAA,EAAK;UAAEC,OAAO;UAAEC;QAAC;MAAE;IACpB;EACF,CACF;IACC,MAAMC,MAAA,GAASF,OAAA,CAAQG,WAAW,CAACX,IAAA,CAAKY,UAAU,CAAC,EAAEC,YAAA,IAAgBL,OAAA,CAAQM,EAAE,CAACC,aAAa;IAC7F;IACA,MAAMC,MAAA,GAAShB,IAAA,EAAMiB,KAAA,EAAOd,EAAA,IAAMH,IAAA,EAAMiB,KAAA,CAAM;AAAA;IAE9C,IAAI,CAACpB,SAAA,CAAUmB,MAAA,EAAQN,MAAA,GAAS;MAC9B,OAAOD,CAAA,CAAE;IACX;IAEA,IAAI,CAACV,KAAA,EAAOY,WAAA,EAAa;MACvB,OAAO;IACT;IAEA,IAAIO,MAAA,CAAOC,IAAI,CAACpB,KAAA,EAAOY,WAAA,EAAaS,MAAM,KAAK,GAAG;MAChD,OAAO;IACT;IAEA,MAAMC,UAAA,GAAatB,KAAA,EAAOY,WAAW,CAACX,IAAA,CAAKY,UAAU,CAAC;IAEtD,IAAI,CAACS,UAAA,EAAYC,MAAA,EAAQF,MAAA,EAAQ;MAC/B,OAAO;IACT;IAEA,MAAMG,MAAA,GAAS,MAAM3B,uBAAA,CAAwB;MAC3CO,EAAA;MACAqB,cAAA,EAAgBxB,IAAA,CAAKY,UAAU;MAC/BR,IAAA,EAAMJ,IAAA,EAAMsB,MAAA,IAAU,CAAC;MACvBG,YAAA,EAAcrB,IAAA;MACdkB,MAAA,EAAQD,UAAA,CAAWC,MAAM;MACzBI,cAAA,EAAgBC,SAAA;MAChBC,gBAAA,EAAkB5B,IAAA,EAAMsB,MAAA,IAAU,CAAC;MACnCjB,SAAA,EAAWA,SAAA,KAAc,YAAYA,SAAA,KAAc,WAAWA,SAAA,GAAY;MAC1EwB,WAAA,EAAa,CAAC;MACdvB,WAAA;MACAwB,eAAA,EAAiB;MACjBvB,GAAA;MACAwB,UAAA,EAAY;IACd;IAEA,MAAMC,aAAA,GAAgB,IAAIC,GAAA;IAC1B,KAAK,MAAMC,QAAA,IAAYX,MAAA,EAAQ;MAC7B,MAAMY,UAAA,GAAaZ,MAAM,CAACW,QAAA,CAAS;MACnC,IAAIC,UAAA,EAAYC,UAAA,EAAYhB,MAAA,EAAQ;QAClC,KAAK,MAAMiB,SAAA,IAAaF,UAAA,CAAWC,UAAU,EAAE;UAC7CJ,aAAA,CAAcM,GAAG,CAACD,SAAA;QACpB;MACF;IACF;IACA,MAAMD,UAAA,GAAaG,KAAA,CAAMC,IAAI,CAACR,aAAA;IAE9B,IAAII,UAAA,CAAWhB,MAAM,EAAE;MACrB,OAAO,uCAAuCgB,UAAA,CAAWK,IAAI,CAAC;IAChE;IAEA,OAAO;EACT;AACF","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  @layer payload-default {
2
2
  .lexical-diff .lexical-unknown-diff {
3
- box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.1);
3
+ box-shadow: var(--elevation-100-canvas);
4
4
  max-width: fit-content;
5
5
  display: flex;
6
6
  align-items: center;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["File","createHash","formatFilesize","React","baseClass","UploadDiffHTMLConverterAsync","i18n","req","upload","node","populate","providedCSSString","uploadNode","uploadDoc","undefined","value","id","collectionSlug","relationTo","alt","fields","thumbnailSRC","thumbnailURL","url","ReactDOMServer","default","nodeFieldsHash","update","JSON","stringify","digest","filename","t","JSX","_jsx","className","_jsxs","length","src","filesize","width","height","Fragment","mimeType","html","renderToStaticMarkup"],"sources":["../../../../../src/field/Diff/converters/upload/index.tsx"],"sourcesContent":["import type { FileData, PayloadRequest, TypeWithID } from 'payload'\n\nimport { type I18nClient } from '@payloadcms/translations'\nimport { File } from '@payloadcms/ui/rsc'\nimport { createHash } from 'crypto'\n\nimport './index.css'\n\nimport { formatFilesize } from 'payload/shared'\nimport React from 'react'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { UploadDataImproved } from '../../../../features/upload/server/nodes/UploadNode.js'\nimport type { SerializedUploadNode } from '../../../../types/nodeTypes.js'\n\nconst baseClass = 'lexical-upload-diff'\n\nexport const UploadDiffHTMLConverterAsync: (args: {\n i18n: I18nClient\n req: PayloadRequest\n}) => HTMLConvertersAsync<SerializedUploadNode> = ({ i18n, req }) => {\n return {\n upload: async ({ node, populate, providedCSSString }) => {\n const uploadNode = node as UploadDataImproved\n\n let uploadDoc: (FileData & TypeWithID) | undefined = undefined\n\n // If there's no valid upload data, populate return an empty string\n if (typeof uploadNode.value !== 'object') {\n if (!populate) {\n return ''\n }\n uploadDoc = await populate<FileData & TypeWithID>({\n id: uploadNode.value,\n collectionSlug: uploadNode.relationTo,\n })\n } else {\n uploadDoc = uploadNode.value as unknown as FileData & TypeWithID\n }\n\n if (!uploadDoc) {\n return ''\n }\n\n const alt = (node.fields?.alt as string) || (uploadDoc as { alt?: string })?.alt || ''\n\n const thumbnailSRC: string =\n ('thumbnailURL' in uploadDoc && (uploadDoc?.thumbnailURL as string)) || uploadDoc?.url || ''\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n // hash fields to ensure they are diffed if they change\n const nodeFieldsHash = createHash('sha256')\n .update(JSON.stringify(node.fields ?? {}))\n .digest('hex')\n\n const filename =\n uploadDoc?.filename ||\n `${i18n.t('general:untitled')} - ID: ${typeof uploadNode.value === 'object' ? uploadNode.value : uploadNode.value}`\n\n const JSX = (\n <div\n className={`${baseClass}${providedCSSString}`}\n data-enable-match=\"true\"\n data-fields-hash={`${nodeFieldsHash}`}\n data-filename={uploadDoc?.filename}\n data-lexical-upload-id={uploadNode.value}\n data-lexical-upload-relation-to={uploadNode.relationTo}\n data-src={thumbnailSRC}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC?.length ? <img alt={alt} src={thumbnailSRC} /> : <File />}\n </div>\n <div className={`${baseClass}__info`} data-enable-match=\"false\">\n <strong>{filename}</strong>\n <div className={`${baseClass}__meta`}>\n {formatFilesize(uploadDoc?.filesize)}\n {typeof uploadDoc?.width === 'number' && typeof uploadDoc?.height === 'number' && (\n <React.Fragment>\n &nbsp;-&nbsp;\n {uploadDoc?.width}x{uploadDoc?.height}\n </React.Fragment>\n )}\n {uploadDoc?.mimeType && (\n <React.Fragment>\n &nbsp;-&nbsp;\n {uploadDoc?.mimeType}\n </React.Fragment>\n )}\n </div>\n </div>\n </div>\n </div>\n )\n\n // Render to HTML\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n return html\n },\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["File","createHash","formatFilesize","React","baseClass","UploadDiffHTMLConverterAsync","i18n","req","upload","node","populate","providedCSSString","uploadNode","uploadDoc","undefined","value","id","collectionSlug","relationTo","alt","fields","thumbnailSRC","thumbnailURL","url","ReactDOMServer","default","nodeFieldsHash","update","JSON","stringify","digest","filename","t","JSX","_jsx","className","_jsxs","length","src","filesize","width","height","Fragment","mimeType","html","renderToStaticMarkup"],"sources":["../../../../../src/field/Diff/converters/upload/index.tsx"],"sourcesContent":["import type { FileData, PayloadRequest, TypeWithID } from 'payload'\n\nimport { type I18nClient } from '@payloadcms/translations'\nimport { File } from '@payloadcms/ui/rsc'\nimport { createHash } from 'crypto'\n\nimport './index.css'\n\nimport { formatFilesize } from 'payload/shared'\nimport React from 'react'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { UploadDataImproved } from '../../../../features/upload/server/schema.js'\nimport type { SerializedUploadNode } from '../../../../types/nodeTypes.js'\n\nconst baseClass = 'lexical-upload-diff'\n\nexport const UploadDiffHTMLConverterAsync: (args: {\n i18n: I18nClient\n req: PayloadRequest\n}) => HTMLConvertersAsync<SerializedUploadNode> = ({ i18n, req }) => {\n return {\n upload: async ({ node, populate, providedCSSString }) => {\n const uploadNode = node as UploadDataImproved\n\n let uploadDoc: (FileData & TypeWithID) | undefined = undefined\n\n // If there's no valid upload data, populate return an empty string\n if (typeof uploadNode.value !== 'object') {\n if (!populate) {\n return ''\n }\n uploadDoc = await populate<FileData & TypeWithID>({\n id: uploadNode.value,\n collectionSlug: uploadNode.relationTo,\n })\n } else {\n uploadDoc = uploadNode.value as unknown as FileData & TypeWithID\n }\n\n if (!uploadDoc) {\n return ''\n }\n\n const alt = (node.fields?.alt as string) || (uploadDoc as { alt?: string })?.alt || ''\n\n const thumbnailSRC: string =\n ('thumbnailURL' in uploadDoc && (uploadDoc?.thumbnailURL as string)) || uploadDoc?.url || ''\n\n const ReactDOMServer = (await import('react-dom/server')).default\n\n // hash fields to ensure they are diffed if they change\n const nodeFieldsHash = createHash('sha256')\n .update(JSON.stringify(node.fields ?? {}))\n .digest('hex')\n\n const filename =\n uploadDoc?.filename ||\n `${i18n.t('general:untitled')} - ID: ${typeof uploadNode.value === 'object' ? uploadNode.value : uploadNode.value}`\n\n const JSX = (\n <div\n className={`${baseClass}${providedCSSString}`}\n data-enable-match=\"true\"\n data-fields-hash={`${nodeFieldsHash}`}\n data-filename={uploadDoc?.filename}\n data-lexical-upload-id={uploadNode.value}\n data-lexical-upload-relation-to={uploadNode.relationTo}\n data-src={thumbnailSRC}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC?.length ? <img alt={alt} src={thumbnailSRC} /> : <File />}\n </div>\n <div className={`${baseClass}__info`} data-enable-match=\"false\">\n <strong>{filename}</strong>\n <div className={`${baseClass}__meta`}>\n {formatFilesize(uploadDoc?.filesize)}\n {typeof uploadDoc?.width === 'number' && typeof uploadDoc?.height === 'number' && (\n <React.Fragment>\n &nbsp;-&nbsp;\n {uploadDoc?.width}x{uploadDoc?.height}\n </React.Fragment>\n )}\n {uploadDoc?.mimeType && (\n <React.Fragment>\n &nbsp;-&nbsp;\n {uploadDoc?.mimeType}\n </React.Fragment>\n )}\n </div>\n </div>\n </div>\n </div>\n )\n\n // Render to HTML\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n return html\n },\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -162,7 +162,7 @@ const RichTextComponent = props => {
162
162
  fallbackRender: fallbackRender,
163
163
  onReset: () => {},
164
164
  children: [BeforeInput, /*#__PURE__*/_jsx(BulkUploadProvider, {
165
- drawerSlugPrefix: `lexical-${path}`,
165
+ modalSlugPrefix: `lexical-${path}`,
166
166
  children: /*#__PURE__*/_jsx(LexicalProvider, {
167
167
  composerKey: pathWithEditDepth,
168
168
  editorConfig: editorConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","names":["BulkUploadProvider","FieldDescription","FieldError","FieldLabel","isFieldRTL","RenderCustomComponent","useConfig","useEditDepth","useEffectEvent","useField","useLocale","mergeFieldStyles","dequal","React","useCallback","useEffect","useMemo","useState","ErrorBoundary","LexicalProvider","useRunDeprioritized","useRichTextView","ViewSelector","baseClass","RichTextComponent","props","editorConfig","field","admin","className","description","readOnly","readOnlyFromAdmin","label","localized","required","path","pathFromProps","readOnlyFromTopLevelProps","schemaPath","validate","readOnlyFromProps","locale","config","localization","localizationConfig","rtl","fieldLocalized","undefined","editDepth","isControlledByParent","memoizedValidate","value","validationOptions","customComponents","AfterInput","BeforeInput","Description","Error","Error1","Label","disabled","disabledFromField","initialValue","setValue","showError","potentiallyStalePath","isSmallWidthViewport","setIsSmallWidthViewport","rerenderProviderKey","setRerenderProviderKey","prevInitialValueRef","useRef","prevValueRef","updateViewPortWidth","isNextSmallWidthViewport","window","matchMedia","matches","addEventListener","removeEventListener","classes","hideGutter","filter","Boolean","join","pathWithEditDepth","runDeprioritized","handleChange","editorState","updateFieldValue","newState","toJSON","current","styles","handleInitialValueChange","JSON","parse","stringify","Date","Object","is","_jsxs","view","style","_jsx","CustomComponent","Fallback","fallbackRender","onReset","drawerSlugPrefix","composerKey","fieldProps","onChange","error","role","color","message","String","RichText"],"sources":["../../src/field/Field.tsx"],"sourcesContent":["'use client'\nimport type { EditorState, SerializedEditorState } from 'lexical'\nimport type { FallbackProps } from 'react-error-boundary'\n\nimport {\n BulkUploadProvider,\n FieldDescription,\n FieldError,\n FieldLabel,\n isFieldRTL,\n RenderCustomComponent,\n useConfig,\n useEditDepth,\n useEffectEvent,\n useField,\n useLocale,\n} from '@payloadcms/ui'\nimport { mergeFieldStyles } from '@payloadcms/ui/shared'\nimport { dequal } from 'dequal/lite'\nimport { type Validate } from 'payload'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\n\nimport '../lexical/theme/EditorTheme.css'\nimport './bundled.css'\nimport './index.css'\n\nimport type { LexicalRichTextFieldProps } from '../types/index.js'\n\nimport { LexicalProvider } from '../lexical/LexicalProvider.js'\nimport { useRunDeprioritized } from '../utilities/useRunDeprioritized.js'\nimport { useRichTextView } from './RichTextViewProvider.js'\nimport { ViewSelector } from './ViewSelector.js'\n\nconst baseClass = 'rich-text-lexical'\n\nconst RichTextComponent: React.FC<\n {\n readonly editorConfig: SanitizedClientEditorConfig // With rendered features n stuff\n } & LexicalRichTextFieldProps\n> = (props) => {\n const {\n editorConfig,\n field,\n field: {\n admin: { className, description, readOnly: readOnlyFromAdmin } = {},\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly: readOnlyFromTopLevelProps,\n schemaPath,\n validate, // Users can pass in client side validation if they WANT to, but it's not required anymore\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const locale = useLocale()\n const {\n config: { localization: localizationConfig },\n } = useConfig()\n\n const rtl = isFieldRTL({\n fieldLocalized: localized,\n locale,\n localizationConfig: localizationConfig || undefined,\n })\n\n const editDepth = useEditDepth()\n const { isControlledByParent } = useRichTextView()\n\n const memoizedValidate = useCallback<Validate>(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return validate(value, { ...validationOptions, required })\n }\n return true\n },\n // Important: do not add props to the dependencies array.\n // This would cause an infinite loop and endless re-rendering.\n // Removing props from the dependencies array fixed this issue: https://github.com/payloadcms/payload/issues/3709\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled: disabledFromField,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<SerializedEditorState>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || disabledFromField\n\n const [isSmallWidthViewport, setIsSmallWidthViewport] = useState<boolean>(false)\n const [rerenderProviderKey, setRerenderProviderKey] = useState<Date>()\n\n const prevInitialValueRef = React.useRef<SerializedEditorState | undefined>(initialValue)\n const prevValueRef = React.useRef<SerializedEditorState | undefined>(value)\n\n useEffect(() => {\n const updateViewPortWidth = () => {\n const isNextSmallWidthViewport = window.matchMedia('(max-width: 768px)').matches\n\n if (isNextSmallWidthViewport !== isSmallWidthViewport) {\n setIsSmallWidthViewport(isNextSmallWidthViewport)\n }\n }\n updateViewPortWidth()\n window.addEventListener('resize', updateViewPortWidth)\n\n return () => {\n window.removeEventListener('resize', updateViewPortWidth)\n }\n }, [isSmallWidthViewport])\n\n const classes = [\n 'field-type',\n baseClass,\n className,\n showError && 'error',\n disabled && `${baseClass}--read-only`,\n editorConfig?.admin?.hideGutter !== true && !isSmallWidthViewport\n ? `${baseClass}--show-gutter`\n : null,\n ]\n .filter(Boolean)\n .join(' ')\n\n const pathWithEditDepth = `${path}.${editDepth}`\n\n const runDeprioritized = useRunDeprioritized() // defaults to 500 ms timeout\n\n const handleChange = useCallback(\n (editorState: EditorState) => {\n // Capture `editorState` in the closure so we can safely run later.\n const updateFieldValue = () => {\n const newState = editorState.toJSON()\n prevValueRef.current = newState\n setValue(newState)\n }\n\n // Queue the update for the browser’s idle time (or Safari shim)\n // and let the hook handle debouncing/cancellation.\n void runDeprioritized(updateFieldValue)\n },\n [setValue, runDeprioritized], // `runDeprioritized` is stable (useCallback inside hook)\n )\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const handleInitialValueChange = useEffectEvent(\n (initialValue: SerializedEditorState | undefined) => {\n // Object deep equality check here, as re-mounting the editor if\n // the new value is the same as the old one is not necessary.\n // In postgres, the order of keys in JSON objects is not guaranteed to be preserved,\n // so we need to do a deep equality check here that does not care about key order => we use dequal.\n // If we used JSON.stringify, the editor would re-mount every time you save the document, as the order of keys changes => change detected => re-mount.\n if (\n prevValueRef.current !== value &&\n !dequal(\n prevValueRef.current != null\n ? JSON.parse(JSON.stringify(prevValueRef.current))\n : prevValueRef.current,\n value,\n )\n ) {\n prevInitialValueRef.current = initialValue\n prevValueRef.current = value\n setRerenderProviderKey(new Date())\n }\n },\n )\n\n useEffect(() => {\n // Needs to trigger for object reference changes - otherwise,\n // reacting to the same initial value change twice will cause\n // the second change to be ignored, even though the value has changed.\n // That's because initialValue is not kept up-to-date\n if (!Object.is(initialValue, prevInitialValueRef.current)) {\n handleInitialValueChange(initialValue)\n }\n }, [initialValue])\n\n return (\n <div\n className={classes}\n data-field-path={path}\n data-field-schemapath={schemaPath}\n data-lexical-view={editorConfig?.view}\n key={pathWithEditDepth}\n style={styles}\n >\n <div className={`${baseClass}__label-row`}>\n {Label || (\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n )}\n {!isControlledByParent && <ViewSelector />}\n </div>\n <div className={`${baseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n <ErrorBoundary fallbackRender={fallbackRender} onReset={() => {}}>\n {BeforeInput}\n {/* Lexical may be in a drawer. We need to define another BulkUploadProvider to ensure that the bulk upload drawer\n is rendered in the correct depth (not displayed *behind* the current drawer).\n The `lexical-` prefix prevents drawer-slug collisions with non-lexical `BulkUploadProvider`s up the tree. */}\n <BulkUploadProvider drawerSlugPrefix={`lexical-${path}`}>\n <LexicalProvider\n composerKey={pathWithEditDepth}\n editorConfig={editorConfig}\n fieldProps={props}\n isSmallWidthViewport={isSmallWidthViewport}\n key={JSON.stringify({ path, rerenderProviderKey })} // makes sure lexical is completely re-rendered when initialValue changes, bypassing the lexical-internal value memoization. That way, external changes to the form will update the editor. More infos in PR description (https://github.com/payloadcms/payload/pull/5010)\n onChange={handleChange}\n readOnly={disabled}\n rtl={rtl}\n value={value}\n />\n </BulkUploadProvider>\n {AfterInput}\n </ErrorBoundary>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nfunction fallbackRender({ error }: FallbackProps) {\n return (\n <div className=\"errorBoundary\" role=\"alert\">\n <p>Something went wrong:</p>\n <pre style={{ color: 'red' }}>{error instanceof Error ? error.message : String(error)}</pre>\n </div>\n )\n}\n\nexport const RichText: typeof RichTextComponent = RichTextComponent\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Field.js","names":["BulkUploadProvider","FieldDescription","FieldError","FieldLabel","isFieldRTL","RenderCustomComponent","useConfig","useEditDepth","useEffectEvent","useField","useLocale","mergeFieldStyles","dequal","React","useCallback","useEffect","useMemo","useState","ErrorBoundary","LexicalProvider","useRunDeprioritized","useRichTextView","ViewSelector","baseClass","RichTextComponent","props","editorConfig","field","admin","className","description","readOnly","readOnlyFromAdmin","label","localized","required","path","pathFromProps","readOnlyFromTopLevelProps","schemaPath","validate","readOnlyFromProps","locale","config","localization","localizationConfig","rtl","fieldLocalized","undefined","editDepth","isControlledByParent","memoizedValidate","value","validationOptions","customComponents","AfterInput","BeforeInput","Description","Error","Error1","Label","disabled","disabledFromField","initialValue","setValue","showError","potentiallyStalePath","isSmallWidthViewport","setIsSmallWidthViewport","rerenderProviderKey","setRerenderProviderKey","prevInitialValueRef","useRef","prevValueRef","updateViewPortWidth","isNextSmallWidthViewport","window","matchMedia","matches","addEventListener","removeEventListener","classes","hideGutter","filter","Boolean","join","pathWithEditDepth","runDeprioritized","handleChange","editorState","updateFieldValue","newState","toJSON","current","styles","handleInitialValueChange","JSON","parse","stringify","Date","Object","is","_jsxs","view","style","_jsx","CustomComponent","Fallback","fallbackRender","onReset","modalSlugPrefix","composerKey","fieldProps","onChange","error","role","color","message","String","RichText"],"sources":["../../src/field/Field.tsx"],"sourcesContent":["'use client'\nimport type { EditorState, SerializedEditorState } from 'lexical'\nimport type { FallbackProps } from 'react-error-boundary'\n\nimport {\n BulkUploadProvider,\n FieldDescription,\n FieldError,\n FieldLabel,\n isFieldRTL,\n RenderCustomComponent,\n useConfig,\n useEditDepth,\n useEffectEvent,\n useField,\n useLocale,\n} from '@payloadcms/ui'\nimport { mergeFieldStyles } from '@payloadcms/ui/shared'\nimport { dequal } from 'dequal/lite'\nimport { type Validate } from 'payload'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\n\nimport '../lexical/theme/EditorTheme.css'\nimport './bundled.css'\nimport './index.css'\n\nimport type { LexicalRichTextFieldProps } from '../types/index.js'\n\nimport { LexicalProvider } from '../lexical/LexicalProvider.js'\nimport { useRunDeprioritized } from '../utilities/useRunDeprioritized.js'\nimport { useRichTextView } from './RichTextViewProvider.js'\nimport { ViewSelector } from './ViewSelector.js'\n\nconst baseClass = 'rich-text-lexical'\n\nconst RichTextComponent: React.FC<\n {\n readonly editorConfig: SanitizedClientEditorConfig // With rendered features n stuff\n } & LexicalRichTextFieldProps\n> = (props) => {\n const {\n editorConfig,\n field,\n field: {\n admin: { className, description, readOnly: readOnlyFromAdmin } = {},\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly: readOnlyFromTopLevelProps,\n schemaPath,\n validate, // Users can pass in client side validation if they WANT to, but it's not required anymore\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const locale = useLocale()\n const {\n config: { localization: localizationConfig },\n } = useConfig()\n\n const rtl = isFieldRTL({\n fieldLocalized: localized,\n locale,\n localizationConfig: localizationConfig || undefined,\n })\n\n const editDepth = useEditDepth()\n const { isControlledByParent } = useRichTextView()\n\n const memoizedValidate = useCallback<Validate>(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return validate(value, { ...validationOptions, required })\n }\n return true\n },\n // Important: do not add props to the dependencies array.\n // This would cause an infinite loop and endless re-rendering.\n // Removing props from the dependencies array fixed this issue: https://github.com/payloadcms/payload/issues/3709\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled: disabledFromField,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<SerializedEditorState>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || disabledFromField\n\n const [isSmallWidthViewport, setIsSmallWidthViewport] = useState<boolean>(false)\n const [rerenderProviderKey, setRerenderProviderKey] = useState<Date>()\n\n const prevInitialValueRef = React.useRef<SerializedEditorState | undefined>(initialValue)\n const prevValueRef = React.useRef<SerializedEditorState | undefined>(value)\n\n useEffect(() => {\n const updateViewPortWidth = () => {\n const isNextSmallWidthViewport = window.matchMedia('(max-width: 768px)').matches\n\n if (isNextSmallWidthViewport !== isSmallWidthViewport) {\n setIsSmallWidthViewport(isNextSmallWidthViewport)\n }\n }\n updateViewPortWidth()\n window.addEventListener('resize', updateViewPortWidth)\n\n return () => {\n window.removeEventListener('resize', updateViewPortWidth)\n }\n }, [isSmallWidthViewport])\n\n const classes = [\n 'field-type',\n baseClass,\n className,\n showError && 'error',\n disabled && `${baseClass}--read-only`,\n editorConfig?.admin?.hideGutter !== true && !isSmallWidthViewport\n ? `${baseClass}--show-gutter`\n : null,\n ]\n .filter(Boolean)\n .join(' ')\n\n const pathWithEditDepth = `${path}.${editDepth}`\n\n const runDeprioritized = useRunDeprioritized() // defaults to 500 ms timeout\n\n const handleChange = useCallback(\n (editorState: EditorState) => {\n // Capture `editorState` in the closure so we can safely run later.\n const updateFieldValue = () => {\n const newState = editorState.toJSON()\n prevValueRef.current = newState\n setValue(newState)\n }\n\n // Queue the update for the browser’s idle time (or Safari shim)\n // and let the hook handle debouncing/cancellation.\n void runDeprioritized(updateFieldValue)\n },\n [setValue, runDeprioritized], // `runDeprioritized` is stable (useCallback inside hook)\n )\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const handleInitialValueChange = useEffectEvent(\n (initialValue: SerializedEditorState | undefined) => {\n // Object deep equality check here, as re-mounting the editor if\n // the new value is the same as the old one is not necessary.\n // In postgres, the order of keys in JSON objects is not guaranteed to be preserved,\n // so we need to do a deep equality check here that does not care about key order => we use dequal.\n // If we used JSON.stringify, the editor would re-mount every time you save the document, as the order of keys changes => change detected => re-mount.\n if (\n prevValueRef.current !== value &&\n !dequal(\n prevValueRef.current != null\n ? JSON.parse(JSON.stringify(prevValueRef.current))\n : prevValueRef.current,\n value,\n )\n ) {\n prevInitialValueRef.current = initialValue\n prevValueRef.current = value\n setRerenderProviderKey(new Date())\n }\n },\n )\n\n useEffect(() => {\n // Needs to trigger for object reference changes - otherwise,\n // reacting to the same initial value change twice will cause\n // the second change to be ignored, even though the value has changed.\n // That's because initialValue is not kept up-to-date\n if (!Object.is(initialValue, prevInitialValueRef.current)) {\n handleInitialValueChange(initialValue)\n }\n }, [initialValue])\n\n return (\n <div\n className={classes}\n data-field-path={path}\n data-field-schemapath={schemaPath}\n data-lexical-view={editorConfig?.view}\n key={pathWithEditDepth}\n style={styles}\n >\n <div className={`${baseClass}__label-row`}>\n {Label || (\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n )}\n {!isControlledByParent && <ViewSelector />}\n </div>\n <div className={`${baseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n <ErrorBoundary fallbackRender={fallbackRender} onReset={() => {}}>\n {BeforeInput}\n {/* Lexical may be in a drawer. We need to define another BulkUploadProvider to ensure that the bulk upload drawer\n is rendered in the correct depth (not displayed *behind* the current drawer).\n The `lexical-` prefix prevents drawer-slug collisions with non-lexical `BulkUploadProvider`s up the tree. */}\n <BulkUploadProvider modalSlugPrefix={`lexical-${path}`}>\n <LexicalProvider\n composerKey={pathWithEditDepth}\n editorConfig={editorConfig}\n fieldProps={props}\n isSmallWidthViewport={isSmallWidthViewport}\n key={JSON.stringify({ path, rerenderProviderKey })} // makes sure lexical is completely re-rendered when initialValue changes, bypassing the lexical-internal value memoization. That way, external changes to the form will update the editor. More infos in PR description (https://github.com/payloadcms/payload/pull/5010)\n onChange={handleChange}\n readOnly={disabled}\n rtl={rtl}\n value={value}\n />\n </BulkUploadProvider>\n {AfterInput}\n </ErrorBoundary>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nfunction fallbackRender({ error }: FallbackProps) {\n return (\n <div className=\"errorBoundary\" role=\"alert\">\n <p>Something went wrong:</p>\n <pre style={{ color: 'red' }}>{error instanceof Error ? error.message : String(error)}</pre>\n </div>\n )\n}\n\nexport const RichText: typeof RichTextComponent = RichTextComponent\n"],"mappings":"AAAA;;;AAIA,SACEA,kBAAkB,EAClBC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,EACVC,UAAU,EACVC,qBAAqB,EACrBC,SAAS,EACTC,YAAY,EACZC,cAAc,EACdC,QAAQ,EACRC,SAAS,QACJ;AACP,SAASC,gBAAgB,QAAQ;AACjC,SAASC,MAAM,QAAQ;AAEvB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AACjE,SAASC,aAAa,QAAQ;AAI9B,OAAO;AACP,OAAO;AACP,OAAO;AAIP,SAASC,eAAe,QAAQ;AAChC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAE7B,MAAMC,SAAA,GAAY;AAElB,MAAMC,iBAAA,GAIDC,KAAA;EACH,MAAM;IACJC,YAAY;IACZC,KAAK;IACLA,KAAA,EAAO;MACLC,KAAA,EAAO;QAAEC,SAAS;QAAEC,WAAW;QAAEC,QAAA,EAAUC;MAAiB,CAAE,GAAG,CAAC,CAAC;MACnEC,KAAK;MACLC,SAAS;MACTC;IAAQ,CACT;IACDC,IAAA,EAAMC,aAAa;IACnBN,QAAA,EAAUO,yBAAyB;IACnCC,UAAU;IACVC;EAAQ,CACT,GAAGf,KAAA;EAEJ,MAAMgB,iBAAA,GAAoBH,yBAAA,IAA6BN,iBAAA;EAEvD,MAAMU,MAAA,GAAShC,SAAA;EACf,MAAM;IACJiC,MAAA,EAAQ;MAAEC,YAAA,EAAcC;IAAkB;EAAE,CAC7C,GAAGvC,SAAA;EAEJ,MAAMwC,GAAA,GAAM1C,UAAA,CAAW;IACrB2C,cAAA,EAAgBb,SAAA;IAChBQ,MAAA;IACAG,kBAAA,EAAoBA,kBAAA,IAAsBG;EAC5C;EAEA,MAAMC,SAAA,GAAY1C,YAAA;EAClB,MAAM;IAAE2C;EAAoB,CAAE,GAAG7B,eAAA;EAEjC,MAAM8B,gBAAA,GAAmBrC,WAAA,CACvB,CAACsC,KAAA,EAAOC,iBAAA;IACN,IAAI,OAAOb,QAAA,KAAa,YAAY;MAClC;MACA,OAAOA,QAAA,CAASY,KAAA,EAAO;QAAE,GAAGC,iBAAiB;QAAElB;MAAS;IAC1D;IACA,OAAO;EACT;EACA;EACA;EACA;EACA,CAACK,QAAA,EAAUL,QAAA,CAAS;EAGtB,MAAM;IACJmB,gBAAA,EAAkB;MAAEC,UAAU;MAAEC,WAAW;MAAEC,WAAW;MAAEC,KAAA,EAAAC,MAAK;MAAEC;IAAK,CAAE,GAAG,CAAC,CAAC;IAC7EC,QAAA,EAAUC,iBAAiB;IAC3BC,YAAY;IACZ3B,IAAI;IACJ4B,QAAQ;IACRC,SAAS;IACTb,KAAK,EAALA;EAAK,CACN,GAAG3C,QAAA,CAAgC;IAClCyD,oBAAA,EAAsB7B,aAAA;IACtBG,QAAA,EAAUW;EACZ;EAEA,MAAMU,QAAA,GAAWpB,iBAAA,IAAqBqB,iBAAA;EAEtC,MAAM,CAACK,oBAAA,EAAsBC,uBAAA,CAAwB,GAAGnD,QAAA,CAAkB;EAC1E,MAAM,CAACoD,mBAAA,EAAqBC,sBAAA,CAAuB,GAAGrD,QAAA;EAEtD,MAAMsD,mBAAA,GAAsB1D,KAAA,CAAM2D,MAAM,CAAoCT,YAAA;EAC5E,MAAMU,YAAA,GAAe5D,KAAA,CAAM2D,MAAM,CAAoCpB,OAAA;EAErErC,SAAA,CAAU;IACR,MAAM2D,mBAAA,GAAsBA,CAAA;MAC1B,MAAMC,wBAAA,GAA2BC,MAAA,CAAOC,UAAU,CAAC,sBAAsBC,OAAO;MAEhF,IAAIH,wBAAA,KAA6BR,oBAAA,EAAsB;QACrDC,uBAAA,CAAwBO,wBAAA;MAC1B;IACF;IACAD,mBAAA;IACAE,MAAA,CAAOG,gBAAgB,CAAC,UAAUL,mBAAA;IAElC,OAAO;MACLE,MAAA,CAAOI,mBAAmB,CAAC,UAAUN,mBAAA;IACvC;EACF,GAAG,CAACP,oBAAA,CAAqB;EAEzB,MAAMc,OAAA,GAAU,CACd,cACA1D,SAAA,EACAM,SAAA,EACAoC,SAAA,IAAa,SACbJ,QAAA,IAAY,GAAGtC,SAAA,aAAsB,EACrCG,YAAA,EAAcE,KAAA,EAAOsD,UAAA,KAAe,QAAQ,CAACf,oBAAA,GACzC,GAAG5C,SAAA,eAAwB,GAC3B,KACL,CACE4D,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,MAAMC,iBAAA,GAAoB,GAAGlD,IAAA,IAAQa,SAAA,EAAW;EAEhD,MAAMsC,gBAAA,GAAmBnE,mBAAA,GAAsB;AAAA;EAE/C,MAAMoE,YAAA,GAAe1E,WAAA,CAClB2E,WAAA;IACC;IACA,MAAMC,gBAAA,GAAmBA,CAAA;MACvB,MAAMC,QAAA,GAAWF,WAAA,CAAYG,MAAM;MACnCnB,YAAA,CAAaoB,OAAO,GAAGF,QAAA;MACvB3B,QAAA,CAAS2B,QAAA;IACX;IAEA;IACA;IACA,KAAKJ,gBAAA,CAAiBG,gBAAA;EACxB,GACA,CAAC1B,QAAA,EAAUuB,gBAAA,CAAiB;EAG9B,MAAMO,MAAA,GAAS9E,OAAA,CAAQ,MAAML,gBAAA,CAAiBgB,KAAA,GAAQ,CAACA,KAAA,CAAM;EAE7D,MAAMoE,wBAAA,GAA2BvF,cAAA,CAC9BuD,cAAA;IACC;IACA;IACA;IACA;IACA;IACA,IACEU,YAAA,CAAaoB,OAAO,KAAKzC,OAAA,IACzB,CAACxC,MAAA,CACC6D,YAAA,CAAaoB,OAAO,IAAI,OACpBG,IAAA,CAAKC,KAAK,CAACD,IAAA,CAAKE,SAAS,CAACzB,YAAA,CAAaoB,OAAO,KAC9CpB,YAAA,CAAaoB,OAAO,EACxBzC,OAAA,GAEF;MACAmB,mBAAA,CAAoBsB,OAAO,GAAG9B,cAAA;MAC9BU,YAAA,CAAaoB,OAAO,GAAGzC,OAAA;MACvBkB,sBAAA,CAAuB,IAAI6B,IAAA;IAC7B;EACF;EAGFpF,SAAA,CAAU;IACR;IACA;IACA;IACA;IACA,IAAI,CAACqF,MAAA,CAAOC,EAAE,CAACtC,YAAA,EAAcQ,mBAAA,CAAoBsB,OAAO,GAAG;MACzDE,wBAAA,CAAyBhC,YAAA;IAC3B;EACF,GAAG,CAACA,YAAA,CAAa;EAEjB,oBACEuC,KAAA,CAAC;IACCzE,SAAA,EAAWoD,OAAA;IACX,mBAAiB7C,IAAA;IACjB,yBAAuBG,UAAA;IACvB,qBAAmBb,YAAA,EAAc6E,IAAA;IAEjCC,KAAA,EAAOV,MAAA;4BAEPQ,KAAA,CAAC;MAAIzE,SAAA,EAAW,GAAGN,SAAA,aAAsB;iBACtCqC,KAAA,iBACC6C,IAAA,CAACtG,UAAA;QAAW8B,KAAA,EAAOA,KAAA;QAAOC,SAAA,EAAWA,SAAA;QAAWE,IAAA,EAAMA,IAAA;QAAMD,QAAA,EAAUA;UAEvE,CAACe,oBAAA,iBAAwBuD,IAAA,CAACnF,YAAA;qBAE7BgF,KAAA,CAAC;MAAIzE,SAAA,EAAW,GAAGN,SAAA,QAAiB;8BAClCkF,IAAA,CAACpG,qBAAA;QACCqG,eAAA,EAAiB/C,MAAA;QACjBgD,QAAA,eAAUF,IAAA,CAACvG,UAAA;UAAWkC,IAAA,EAAMA,IAAA;UAAM6B,SAAA,EAAWA;;uBAE/CqC,KAAA,CAACpF,aAAA;QAAc0F,cAAA,EAAgBA,cAAA;QAAgBC,OAAA,EAASA,CAAA,MAAO;mBAC5DrD,WAAA,E,aAIDiD,IAAA,CAACzG,kBAAA;UAAmB8G,eAAA,EAAiB,WAAW1E,IAAA,EAAM;oBACpD,aAAAqE,IAAA,CAACtF,eAAA;YACC4F,WAAA,EAAazB,iBAAA;YACb5D,YAAA,EAAcA,YAAA;YACdsF,UAAA,EAAYvF,KAAA;YACZ0C,oBAAA,EAAsBA,oBAAA;YAEtB8C,QAAA,EAAUzB,YAAA;YACVzD,QAAA,EAAU8B,QAAA;YACVf,GAAA,EAAKA,GAAA;YACLM,KAAA,EAAOA;aAJF4C,IAAA,CAAKE,SAAS,CAAC;YAAE9D,IAAA;YAAMiC;UAAoB;YAOnDd,UAAA;uBAEHkD,IAAA,CAACpG,qBAAA;QACCqG,eAAA,EAAiBjD,WAAA;QACjBkD,QAAA,eAAUF,IAAA,CAACxG,gBAAA;UAAiB6B,WAAA,EAAaA,WAAA;UAAaM,IAAA,EAAMA;;;;KApC3DkD,iBAAA;AAyCX;AAEA,SAASsB,eAAe;EAAEM;AAAK,CAAiB;EAC9C,oBACEZ,KAAA,CAAC;IAAIzE,SAAA,EAAU;IAAgBsF,IAAA,EAAK;4BAClCV,IAAA,CAAC;gBAAE;qBACHA,IAAA,CAAC;MAAID,KAAA,EAAO;QAAEY,KAAA,EAAO;MAAM;gBAAIF,KAAA,YAAiBxD,KAAA,GAAQwD,KAAA,CAAMG,OAAO,GAAGC,MAAA,CAAOJ,KAAA;;;AAGrF;AAEA,OAAO,MAAMK,QAAA,GAAqC/F,iBAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  .lexical-view-selector {
2
2
  display: inline-flex;
3
- margin-left: var(--spacing-xs);
3
+ margin-inline-start: var(--spacing-xs);
4
4
  vertical-align: middle;
5
5
  }
6
6