@payloadcms/richtext-lexical 3.0.0-beta.127 → 3.0.0-beta.129

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 (237) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/cell/rscEntry.d.ts +12 -0
  3. package/dist/cell/rscEntry.d.ts.map +1 -0
  4. package/dist/cell/rscEntry.js +82 -0
  5. package/dist/cell/rscEntry.js.map +1 -0
  6. package/dist/exports/client/Field-SHUAQNQD.js +2 -0
  7. package/dist/exports/client/Field-SHUAQNQD.js.map +7 -0
  8. package/dist/exports/client/RelationshipComponent-IMM4CFBE.js +2 -0
  9. package/dist/exports/client/RelationshipComponent-IMM4CFBE.js.map +7 -0
  10. package/dist/exports/client/bundled.css +1 -1
  11. package/dist/exports/client/{chunk-NEO76RJK.js → chunk-352SHIZR.js} +2 -2
  12. package/dist/exports/client/chunk-75T7MDBH.js +2 -0
  13. package/dist/exports/client/chunk-75T7MDBH.js.map +7 -0
  14. package/dist/exports/client/{chunk-XY4TCSM7.js → chunk-O4IOO4EU.js} +2 -2
  15. package/dist/exports/client/chunk-OOBB5GCO.js +2 -0
  16. package/dist/exports/client/chunk-OOBB5GCO.js.map +7 -0
  17. package/dist/exports/client/chunk-PDAZFJVO.js +2 -0
  18. package/dist/exports/client/chunk-PDAZFJVO.js.map +7 -0
  19. package/dist/exports/client/{chunk-32KXGBIQ.js → chunk-ZOYGBIAN.js} +2 -2
  20. package/dist/exports/client/component-EHTN2BHZ.js +2 -0
  21. package/dist/exports/client/component-EHTN2BHZ.js.map +7 -0
  22. package/dist/exports/client/component-YE2TDR5O.js +2 -0
  23. package/dist/exports/client/component-YE2TDR5O.js.map +7 -0
  24. package/dist/exports/client/componentInline-N5LJ2LY2.js +2 -0
  25. package/dist/exports/client/componentInline-N5LJ2LY2.js.map +7 -0
  26. package/dist/exports/client/index.d.ts +0 -1
  27. package/dist/exports/client/index.d.ts.map +1 -1
  28. package/dist/exports/client/index.js +8 -8
  29. package/dist/exports/client/index.js.map +4 -4
  30. package/dist/exports/server/rsc.d.ts +3 -0
  31. package/dist/exports/server/rsc.d.ts.map +1 -0
  32. package/dist/exports/server/rsc.js +3 -0
  33. package/dist/exports/server/rsc.js.map +1 -0
  34. package/dist/features/blocks/client/component/BlockContent.d.ts +1 -0
  35. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  36. package/dist/features/blocks/client/component/BlockContent.js +15 -15
  37. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  38. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  39. package/dist/features/blocks/client/component/index.js +68 -52
  40. package/dist/features/blocks/client/component/index.js.map +1 -1
  41. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  42. package/dist/features/blocks/client/componentInline/index.js +14 -19
  43. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  44. package/dist/features/blocks/client/index.d.ts.map +1 -1
  45. package/dist/features/blocks/client/index.js +26 -24
  46. package/dist/features/blocks/client/index.js.map +1 -1
  47. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  48. package/dist/features/blocks/client/plugin/index.js +83 -75
  49. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  50. package/dist/features/blocks/server/index.d.ts.map +1 -1
  51. package/dist/features/blocks/server/index.js +20 -10
  52. package/dist/features/blocks/server/index.js.map +1 -1
  53. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  54. package/dist/features/blocks/server/validate.js +8 -5
  55. package/dist/features/blocks/server/validate.js.map +1 -1
  56. package/dist/features/debug/testRecorder/client/plugin/index.js +25 -14
  57. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  58. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +19 -7
  59. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  60. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +16 -3
  61. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  62. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  63. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +58 -19
  64. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  65. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
  66. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +38 -32
  67. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  68. package/dist/features/experimental_table/server/index.d.ts.map +1 -1
  69. package/dist/features/experimental_table/server/index.js +3 -1
  70. package/dist/features/experimental_table/server/index.js.map +1 -1
  71. package/dist/features/format/bold/feature.client.d.ts.map +1 -1
  72. package/dist/features/format/bold/feature.client.js +2 -1
  73. package/dist/features/format/bold/feature.client.js.map +1 -1
  74. package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -1
  75. package/dist/features/format/inlineCode/feature.client.js +2 -1
  76. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  77. package/dist/features/format/italic/feature.client.d.ts.map +1 -1
  78. package/dist/features/format/italic/feature.client.js +2 -1
  79. package/dist/features/format/italic/feature.client.js.map +1 -1
  80. package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -1
  81. package/dist/features/format/strikethrough/feature.client.js +2 -1
  82. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  83. package/dist/features/format/subscript/feature.client.d.ts.map +1 -1
  84. package/dist/features/format/subscript/feature.client.js +2 -1
  85. package/dist/features/format/subscript/feature.client.js.map +1 -1
  86. package/dist/features/format/superscript/feature.client.d.ts.map +1 -1
  87. package/dist/features/format/superscript/feature.client.js +2 -1
  88. package/dist/features/format/superscript/feature.client.js.map +1 -1
  89. package/dist/features/format/underline/feature.client.d.ts.map +1 -1
  90. package/dist/features/format/underline/feature.client.js +2 -1
  91. package/dist/features/format/underline/feature.client.js.map +1 -1
  92. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  93. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +52 -15
  94. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  95. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +1 -1
  96. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  97. package/dist/features/link/server/i18n.d.ts.map +1 -1
  98. package/dist/features/link/server/i18n.js +64 -32
  99. package/dist/features/link/server/i18n.js.map +1 -1
  100. package/dist/features/link/server/index.d.ts.map +1 -1
  101. package/dist/features/link/server/index.js +3 -1
  102. package/dist/features/link/server/index.js.map +1 -1
  103. package/dist/features/link/server/validate.d.ts.map +1 -1
  104. package/dist/features/link/server/validate.js +8 -5
  105. package/dist/features/link/server/validate.js.map +1 -1
  106. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  107. package/dist/features/relationship/client/components/RelationshipComponent.js +6 -4
  108. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  109. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  110. package/dist/features/toolbars/fixed/client/Toolbar/index.js +77 -49
  111. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  112. package/dist/features/toolbars/inline/client/Toolbar/index.js +93 -52
  113. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  114. package/dist/features/toolbars/shared/ToolbarButton/index.js +1 -1
  115. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  116. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +2 -2
  117. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  118. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  119. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +25 -22
  120. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  121. package/dist/features/toolbars/types.d.ts +3 -1
  122. package/dist/features/toolbars/types.d.ts.map +1 -1
  123. package/dist/features/toolbars/types.js.map +1 -1
  124. package/dist/features/typesServer.d.ts +4 -17
  125. package/dist/features/typesServer.d.ts.map +1 -1
  126. package/dist/features/typesServer.js.map +1 -1
  127. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  128. package/dist/features/upload/client/component/index.js +8 -4
  129. package/dist/features/upload/client/component/index.js.map +1 -1
  130. package/dist/features/upload/server/feature.server.d.ts.map +1 -1
  131. package/dist/features/upload/server/feature.server.js +3 -1
  132. package/dist/features/upload/server/feature.server.js.map +1 -1
  133. package/dist/features/upload/server/validate.d.ts.map +1 -1
  134. package/dist/features/upload/server/validate.js +7 -4
  135. package/dist/features/upload/server/validate.js.map +1 -1
  136. package/dist/field/Field.d.ts.map +1 -1
  137. package/dist/field/Field.js +27 -41
  138. package/dist/field/Field.js.map +1 -1
  139. package/dist/field/bundled.css +1 -1
  140. package/dist/field/index.d.ts.map +1 -1
  141. package/dist/field/index.js +26 -27
  142. package/dist/field/index.js.map +1 -1
  143. package/dist/field/rscEntry.d.ts +9 -0
  144. package/dist/field/rscEntry.d.ts.map +1 -0
  145. package/dist/field/rscEntry.js +37 -0
  146. package/dist/field/rscEntry.js.map +1 -0
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +8 -14
  149. package/dist/index.js.map +1 -1
  150. package/dist/lexical/LexicalProvider.d.ts +1 -1
  151. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  152. package/dist/lexical/LexicalProvider.js +2 -2
  153. package/dist/lexical/LexicalProvider.js.map +1 -1
  154. package/dist/lexical/config/client/EditorConfigProvider.d.ts +4 -3
  155. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  156. package/dist/lexical/config/client/EditorConfigProvider.js +5 -5
  157. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  158. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +4 -4
  159. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  160. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +14 -5
  161. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  162. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +2 -2
  163. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  164. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +5 -5
  165. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  166. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +3 -2
  167. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  168. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  169. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  170. package/dist/lexical/plugins/SlashMenu/index.js +15 -24
  171. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  172. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +6 -4
  173. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  174. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +6 -4
  175. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  176. package/dist/lexical/theme/EditorTheme.d.ts.map +1 -1
  177. package/dist/lexical/theme/EditorTheme.js +0 -2
  178. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  179. package/dist/types.d.ts +15 -2
  180. package/dist/types.d.ts.map +1 -1
  181. package/dist/types.js.map +1 -1
  182. package/dist/utilities/fieldsDrawer/Drawer.d.ts +1 -0
  183. package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
  184. package/dist/utilities/fieldsDrawer/Drawer.js +25 -20
  185. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  186. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  187. package/dist/utilities/fieldsDrawer/DrawerContent.js +99 -143
  188. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  189. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +1 -1
  190. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
  191. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  192. package/dist/utilities/generateImportMap.js +2 -3
  193. package/dist/utilities/generateImportMap.js.map +1 -1
  194. package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
  195. package/dist/utilities/generateSchemaMap.js +13 -10
  196. package/dist/utilities/generateSchemaMap.js.map +1 -1
  197. package/dist/utilities/initLexicalFeatures.d.ts +18 -0
  198. package/dist/utilities/initLexicalFeatures.d.ts.map +1 -0
  199. package/dist/utilities/initLexicalFeatures.js +95 -0
  200. package/dist/utilities/initLexicalFeatures.js.map +1 -0
  201. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
  202. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +5 -1
  203. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  204. package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
  205. package/dist/utilities/useLexicalFeature.js +12 -4
  206. package/dist/utilities/useLexicalFeature.js.map +1 -1
  207. package/dist/validate/index.d.ts.map +1 -1
  208. package/dist/validate/index.js +1 -1
  209. package/dist/validate/index.js.map +1 -1
  210. package/package.json +43 -35
  211. package/dist/cell/index.d.ts +0 -9
  212. package/dist/cell/index.d.ts.map +0 -1
  213. package/dist/cell/index.js +0 -120
  214. package/dist/cell/index.js.map +0 -1
  215. package/dist/exports/client/Field-Y47DV2NP.js +0 -2
  216. package/dist/exports/client/Field-Y47DV2NP.js.map +0 -7
  217. package/dist/exports/client/RelationshipComponent-LBWKOBGF.js +0 -2
  218. package/dist/exports/client/RelationshipComponent-LBWKOBGF.js.map +0 -7
  219. package/dist/exports/client/chunk-7SR2HYD6.js +0 -2
  220. package/dist/exports/client/chunk-7SR2HYD6.js.map +0 -7
  221. package/dist/exports/client/chunk-GD6LBQBJ.js +0 -2
  222. package/dist/exports/client/chunk-GD6LBQBJ.js.map +0 -7
  223. package/dist/exports/client/chunk-IIWHHN4J.js +0 -2
  224. package/dist/exports/client/chunk-IIWHHN4J.js.map +0 -7
  225. package/dist/exports/client/component-4TP4L5EV.js +0 -2
  226. package/dist/exports/client/component-4TP4L5EV.js.map +0 -7
  227. package/dist/exports/client/component-XMR5NN36.js +0 -2
  228. package/dist/exports/client/component-XMR5NN36.js.map +0 -7
  229. package/dist/exports/client/componentInline-NUDJIIQ4.js +0 -2
  230. package/dist/exports/client/componentInline-NUDJIIQ4.js.map +0 -7
  231. package/dist/utilities/generateComponentMap.d.ts +0 -6
  232. package/dist/utilities/generateComponentMap.d.ts.map +0 -1
  233. package/dist/utilities/generateComponentMap.js +0 -93
  234. package/dist/utilities/generateComponentMap.js.map +0 -1
  235. /package/dist/exports/client/{chunk-NEO76RJK.js.map → chunk-352SHIZR.js.map} +0 -0
  236. /package/dist/exports/client/{chunk-XY4TCSM7.js.map → chunk-O4IOO4EU.js.map} +0 -0
  237. /package/dist/exports/client/{chunk-32KXGBIQ.js.map → chunk-ZOYGBIAN.js.map} +0 -0
@@ -0,0 +1,3 @@
1
+ export { RscEntryLexicalCell } from '../../cell/rscEntry.js';
2
+ export { RscEntryLexicalField } from '../../field/rscEntry.js';
3
+ //# sourceMappingURL=rsc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../src/exports/server/rsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { RscEntryLexicalCell } from '../../cell/rscEntry.js';
2
+ export { RscEntryLexicalField } from '../../field/rscEntry.js';
3
+ //# sourceMappingURL=rsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsc.js","names":["RscEntryLexicalCell","RscEntryLexicalField"],"sources":["../../../src/exports/server/rsc.ts"],"sourcesContent":["export { RscEntryLexicalCell } from '../../cell/rscEntry.js'\nexport { RscEntryLexicalField } from '../../field/rscEntry.js'\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ;AACpC,SAASC,oBAAoB,QAAQ","ignoreList":[]}
@@ -8,6 +8,7 @@ type Props = {
8
8
  field: LexicalRichTextFieldProps['field'];
9
9
  formData: BlockFields;
10
10
  formSchema: ClientField[];
11
+ Label?: React.ReactNode;
11
12
  nodeKey: string;
12
13
  path: string;
13
14
  schemaPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BlockContent.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/BlockContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAmC,MAAM,SAAS,CAAA;AAkBxF,OAAO,KAAiC,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAKnE,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAA;IACzC,QAAQ,EAAE,WAAW,CAAA;IACrB,UAAU,EAAE,WAAW,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAoBD;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsLxC,CAAA"}
1
+ {"version":3,"file":"BlockContent.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/BlockContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAmC,MAAM,SAAS,CAAA;AAiBxF,OAAO,KAAiC,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAMnE,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAA;IACzC,QAAQ,EAAE,WAAW,CAAA;IACrB,UAAU,EAAE,WAAW,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAoBD;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmLxC,CAAA"}
@@ -3,10 +3,11 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
5
5
  import { getTranslation } from '@payloadcms/translations';
6
- import { Button, Collapsible, ErrorPill, Pill, RenderComponent, RenderFields, SectionTitle, useDocumentInfo, useFormSubmitted, useTranslation } from '@payloadcms/ui';
6
+ import { Button, Collapsible, ErrorPill, Pill, RenderFields, SectionTitle, useDocumentInfo, useFormSubmitted, useTranslation } from '@payloadcms/ui';
7
7
  import { dequal } from 'dequal/lite';
8
8
  import { $getNodeByKey } from 'lexical';
9
9
  import React, { useCallback, useEffect } from 'react';
10
+ import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
10
11
  import { $isBlockNode } from '../nodes/BlocksNode.js';
11
12
  import { FormSavePlugin } from './FormSavePlugin.js';
12
13
  // Recursively remove all undefined values from even being present in formData, as they will
@@ -37,12 +38,19 @@ export const BlockContent = props => {
37
38
  clientBlock,
38
39
  field,
39
40
  formSchema,
41
+ Label,
40
42
  nodeKey,
43
+ path,
41
44
  schemaPath
42
45
  } = props;
43
46
  let {
44
47
  formData
45
48
  } = props;
49
+ const {
50
+ fieldProps: {
51
+ permissions
52
+ }
53
+ } = useEditorConfigContext();
46
54
  const {
47
55
  i18n
48
56
  } = useTranslation();
@@ -51,6 +59,7 @@ export const BlockContent = props => {
51
59
  // Remember, these preferences are scoped to the whole document, not just this form. This
52
60
  // is important to consider for the data path used in setDocFieldPreferences
53
61
  const {
62
+ docPermissions,
54
63
  getDocPreferences,
55
64
  setDocFieldPreferences
56
65
  } = useDocumentInfo();
@@ -134,13 +143,7 @@ export const BlockContent = props => {
134
143
  children: [/*#__PURE__*/_jsx(Collapsible, {
135
144
  className: classNames,
136
145
  collapsibleStyle: fieldHasErrors ? 'error' : 'default',
137
- header: clientBlock?.admin?.components?.Label ? /*#__PURE__*/_jsx(RenderComponent, {
138
- clientProps: {
139
- blockKind: 'lexicalBlock',
140
- formData
141
- },
142
- mappedComponent: clientBlock.admin.components.Label
143
- }) : /*#__PURE__*/_jsxs("div", {
146
+ header: Label || /*#__PURE__*/_jsxs("div", {
144
147
  className: `${baseClass}__block-header`,
145
148
  children: [/*#__PURE__*/_jsxs("div", {
146
149
  children: [/*#__PURE__*/_jsx(Pill, {
@@ -174,15 +177,12 @@ export const BlockContent = props => {
174
177
  setIsCollapsed(incomingCollapsedState);
175
178
  },
176
179
  children: /*#__PURE__*/_jsx(RenderFields, {
177
- className: `${baseClass}__fields`,
178
180
  fields: formSchema,
179
181
  forceRender: true,
180
- margins: "small",
181
- path: "" // Leaving path empty makes it so field values are not prefixed / scoped by the entire schemaPath. e.g. we can access "myField" instead of "someLexicalField.feature.blocks.someArrayB" // TODO: Could there be any implications leaving path different than schemaPath?
182
- ,
183
-
184
- readOnly: false,
185
- schemaPath: schemaPath
182
+ parentIndexPath: "",
183
+ parentPath: '',
184
+ parentSchemaPath: "",
185
+ permissions: permissions
186
186
  })
187
187
  }, 0), /*#__PURE__*/_jsx(FormSavePlugin, {
188
188
  onChange: onFormChange
@@ -1 +1 @@
1
- {"version":3,"file":"BlockContent.js","names":["useLexicalComposerContext","getTranslation","Button","Collapsible","ErrorPill","Pill","RenderComponent","RenderFields","SectionTitle","useDocumentInfo","useFormSubmitted","useTranslation","dequal","$getNodeByKey","React","useCallback","useEffect","$isBlockNode","FormSavePlugin","removeUndefinedAndNullAndEmptyArraysRecursively","obj","key","value","Array","isArray","length","undefined","BlockContent","props","baseClass","clientBlock","field","formSchema","nodeKey","schemaPath","formData","i18n","editor","getDocPreferences","setDocFieldPreferences","isCollapsed","setIsCollapsed","useState","then","currentDocPreferences","currentFieldPreferences","fields","name","collapsedArray","collapsed","includes","id","hasSubmitted","errorCount","setErrorCount","fieldHasErrors","classNames","filter","Boolean","join","onFormChange","fullFieldsWithValues","newFormData","blockType","setTimeout","update","node","setFields","rowErrorCount","formField","Object","values","valid","onCollapsedChange","changedCollapsed","newCollapsed","push","splice","indexOf","hello","removeBlock","remove","_jsxs","Fragment","_jsx","className","collapsibleStyle","header","admin","components","Label","clientProps","blockKind","mappedComponent","pillStyle","labels","singular","slug","path","readOnly","count","withMessage","isEditable","buttonStyle","disabled","icon","onClick","e","preventDefault","round","tooltip","onToggle","incomingCollapsedState","forceRender","margins","onChange"],"sources":["../../../../../src/features/blocks/client/component/BlockContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, CollapsedPreferences, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Collapsible,\n ErrorPill,\n Pill,\n RenderComponent,\n RenderFields,\n SectionTitle,\n useDocumentInfo,\n useFormSubmitted,\n useTranslation,\n} from '@payloadcms/ui'\nimport { dequal } from 'dequal/lite'\nimport { $getNodeByKey } from 'lexical'\nimport React, { useCallback, useEffect } from 'react'\n\nimport type { LexicalRichTextFieldProps } from '../../../../types.js'\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport { FormSavePlugin } from './FormSavePlugin.js'\n\ntype Props = {\n baseClass: string\n clientBlock: ClientBlock\n field: LexicalRichTextFieldProps['field']\n formData: BlockFields\n formSchema: ClientField[]\n nodeKey: string\n path: string\n schemaPath: string\n}\n\n// Recursively remove all undefined values from even being present in formData, as they will\n// cause isDeepEqual to return false if, for example, formData has a key that fields.data\n// does not have, even if it's undefined.\n// Currently, this happens if a block has another sub-blocks field. Inside formData, that sub-blocks field has an undefined blockName property.\n// Inside of fields.data however, that sub-blocks blockName property does not exist at all.\nfunction removeUndefinedAndNullAndEmptyArraysRecursively(obj: object) {\n for (const key in obj) {\n const value = obj[key]\n if (Array.isArray(value) && !value?.length) {\n delete obj[key]\n } else if (value && typeof value === 'object') {\n removeUndefinedAndNullAndEmptyArraysRecursively(value)\n } else if (value === undefined || value === null) {\n delete obj[key]\n }\n }\n}\n\n/**\n * The actual content of the Block. This should be INSIDE a Form component,\n * scoped to the block. All format operations in here are thus scoped to the block's form, and\n * not the whole document.\n */\nexport const BlockContent: React.FC<Props> = (props) => {\n const { baseClass, clientBlock, field, formSchema, nodeKey, schemaPath } = props\n let { formData } = props\n\n const { i18n } = useTranslation()\n const [editor] = useLexicalComposerContext()\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>()\n\n useEffect(() => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences = currentDocPreferences?.fields[field.name]\n const collapsedArray = currentFieldPreferences?.collapsed\n setIsCollapsed(collapsedArray ? collapsedArray.includes(formData.id) : false)\n })\n }, [field.name, formData.id, getDocPreferences])\n\n const hasSubmitted = useFormSubmitted()\n\n const [errorCount, setErrorCount] = React.useState(0)\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const onFormChange = useCallback(\n ({\n fullFieldsWithValues,\n newFormData,\n }: {\n fullFieldsWithValues: FormState\n newFormData: BlockFields\n }) => {\n newFormData.id = formData.id\n newFormData.blockType = formData.blockType\n\n removeUndefinedAndNullAndEmptyArraysRecursively(newFormData)\n removeUndefinedAndNullAndEmptyArraysRecursively(formData)\n\n // Only update if the data has actually changed. Otherwise, we may be triggering an unnecessary value change,\n // which would trigger the \"Leave without saving\" dialog unnecessarily\n if (!dequal(formData, newFormData)) {\n // Running this in the next tick in the meantime fixes this issue: https://github.com/payloadcms/payload/issues/4108\n // I don't know why. When this is called immediately, it might focus out of a nested lexical editor field if an update is made there.\n // My hypothesis is that the nested editor might not have fully finished its update cycle yet. By updating in the next tick, we\n // ensure that the nested editor has finished its update cycle before we update the block node.\n setTimeout(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n formData = newFormData\n node.setFields(newFormData)\n }\n })\n }, 0)\n }\n\n // update error count\n if (hasSubmitted) {\n let rowErrorCount = 0\n for (const formField of Object.values(fullFieldsWithValues)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n },\n [editor, nodeKey, hasSubmitted, formData],\n )\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences = currentDocPreferences?.fields[field.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(field.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, field.name, setDocFieldPreferences, formData.id],\n )\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n if (typeof isCollapsed !== 'boolean') {\n return null\n }\n\n return (\n <React.Fragment>\n <Collapsible\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n header={\n clientBlock?.admin?.components?.Label ? (\n <RenderComponent\n clientProps={{ blockKind: 'lexicalBlock', formData }}\n mappedComponent={clientBlock.admin.components.Label}\n />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <div>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${formData?.blockType}`}\n pillStyle=\"white\"\n >\n {typeof clientBlock?.labels?.singular === 'string'\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock.slug}\n </Pill>\n <SectionTitle path=\"blockName\" readOnly={field?.admin?.readOnly || false} />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n {editor.isEditable() && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n )}\n </div>\n )\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n >\n <RenderFields\n className={`${baseClass}__fields`}\n fields={formSchema}\n forceRender\n margins=\"small\"\n path=\"\" // Leaving path empty makes it so field values are not prefixed / scoped by the entire schemaPath. e.g. we can access \"myField\" instead of \"someLexicalField.feature.blocks.someArrayB\" // TODO: Could there be any implications leaving path different than schemaPath?\n readOnly={false}\n schemaPath={schemaPath} // Having the correct schemaPath here allows sub-fields (like array > addRow) to run correct form-state calls and retrieve their needed form state from the server\n />\n </Collapsible>\n\n <FormSavePlugin onChange={onFormChange} />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BlockContent.js","names":["useLexicalComposerContext","getTranslation","Button","Collapsible","ErrorPill","Pill","RenderFields","SectionTitle","useDocumentInfo","useFormSubmitted","useTranslation","dequal","$getNodeByKey","React","useCallback","useEffect","useEditorConfigContext","$isBlockNode","FormSavePlugin","removeUndefinedAndNullAndEmptyArraysRecursively","obj","key","value","Array","isArray","length","undefined","BlockContent","props","baseClass","clientBlock","field","formSchema","Label","nodeKey","path","schemaPath","formData","fieldProps","permissions","i18n","editor","docPermissions","getDocPreferences","setDocFieldPreferences","isCollapsed","setIsCollapsed","useState","then","currentDocPreferences","currentFieldPreferences","fields","name","collapsedArray","collapsed","includes","id","hasSubmitted","errorCount","setErrorCount","fieldHasErrors","classNames","filter","Boolean","join","onFormChange","fullFieldsWithValues","newFormData","blockType","setTimeout","update","node","setFields","rowErrorCount","formField","Object","values","valid","onCollapsedChange","changedCollapsed","newCollapsed","push","splice","indexOf","hello","removeBlock","remove","_jsxs","Fragment","_jsx","className","collapsibleStyle","header","pillStyle","labels","singular","slug","readOnly","admin","count","withMessage","isEditable","buttonStyle","disabled","icon","onClick","e","preventDefault","round","tooltip","onToggle","incomingCollapsedState","forceRender","parentIndexPath","parentPath","parentSchemaPath","onChange"],"sources":["../../../../../src/features/blocks/client/component/BlockContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, CollapsedPreferences, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Collapsible,\n ErrorPill,\n Pill,\n RenderFields,\n SectionTitle,\n useDocumentInfo,\n useFormSubmitted,\n useTranslation,\n} from '@payloadcms/ui'\nimport { dequal } from 'dequal/lite'\nimport { $getNodeByKey } from 'lexical'\nimport React, { useCallback, useEffect } from 'react'\n\nimport type { LexicalRichTextFieldProps } from '../../../../types.js'\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport { FormSavePlugin } from './FormSavePlugin.js'\n\ntype Props = {\n baseClass: string\n clientBlock: ClientBlock\n field: LexicalRichTextFieldProps['field']\n formData: BlockFields\n formSchema: ClientField[]\n Label?: React.ReactNode\n nodeKey: string\n path: string\n schemaPath: string\n}\n\n// Recursively remove all undefined values from even being present in formData, as they will\n// cause isDeepEqual to return false if, for example, formData has a key that fields.data\n// does not have, even if it's undefined.\n// Currently, this happens if a block has another sub-blocks field. Inside formData, that sub-blocks field has an undefined blockName property.\n// Inside of fields.data however, that sub-blocks blockName property does not exist at all.\nfunction removeUndefinedAndNullAndEmptyArraysRecursively(obj: object) {\n for (const key in obj) {\n const value = obj[key]\n if (Array.isArray(value) && !value?.length) {\n delete obj[key]\n } else if (value && typeof value === 'object') {\n removeUndefinedAndNullAndEmptyArraysRecursively(value)\n } else if (value === undefined || value === null) {\n delete obj[key]\n }\n }\n}\n\n/**\n * The actual content of the Block. This should be INSIDE a Form component,\n * scoped to the block. All format operations in here are thus scoped to the block's form, and\n * not the whole document.\n */\nexport const BlockContent: React.FC<Props> = (props) => {\n const { baseClass, clientBlock, field, formSchema, Label, nodeKey, path, schemaPath } = props\n let { formData } = props\n const {\n fieldProps: { permissions },\n } = useEditorConfigContext()\n\n const { i18n } = useTranslation()\n const [editor] = useLexicalComposerContext()\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { docPermissions, getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>()\n\n useEffect(() => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences = currentDocPreferences?.fields[field.name]\n const collapsedArray = currentFieldPreferences?.collapsed\n setIsCollapsed(collapsedArray ? collapsedArray.includes(formData.id) : false)\n })\n }, [field.name, formData.id, getDocPreferences])\n\n const hasSubmitted = useFormSubmitted()\n\n const [errorCount, setErrorCount] = React.useState(0)\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const onFormChange = useCallback(\n ({\n fullFieldsWithValues,\n newFormData,\n }: {\n fullFieldsWithValues: FormState\n newFormData: BlockFields\n }) => {\n newFormData.id = formData.id\n newFormData.blockType = formData.blockType\n\n removeUndefinedAndNullAndEmptyArraysRecursively(newFormData)\n removeUndefinedAndNullAndEmptyArraysRecursively(formData)\n\n // Only update if the data has actually changed. Otherwise, we may be triggering an unnecessary value change,\n // which would trigger the \"Leave without saving\" dialog unnecessarily\n if (!dequal(formData, newFormData)) {\n // Running this in the next tick in the meantime fixes this issue: https://github.com/payloadcms/payload/issues/4108\n // I don't know why. When this is called immediately, it might focus out of a nested lexical editor field if an update is made there.\n // My hypothesis is that the nested editor might not have fully finished its update cycle yet. By updating in the next tick, we\n // ensure that the nested editor has finished its update cycle before we update the block node.\n setTimeout(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n formData = newFormData\n node.setFields(newFormData)\n }\n })\n }, 0)\n }\n\n // update error count\n if (hasSubmitted) {\n let rowErrorCount = 0\n for (const formField of Object.values(fullFieldsWithValues)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n },\n [editor, nodeKey, hasSubmitted, formData],\n )\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences = currentDocPreferences?.fields[field.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(field.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, field.name, setDocFieldPreferences, formData.id],\n )\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n if (typeof isCollapsed !== 'boolean') {\n return null\n }\n\n return (\n <React.Fragment>\n <Collapsible\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n header={\n Label || (\n <div className={`${baseClass}__block-header`}>\n <div>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${formData?.blockType}`}\n pillStyle=\"white\"\n >\n {typeof clientBlock?.labels?.singular === 'string'\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock.slug}\n </Pill>\n <SectionTitle path=\"blockName\" readOnly={field?.admin?.readOnly || false} />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n {editor.isEditable() && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n )}\n </div>\n )\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n >\n <RenderFields\n fields={formSchema}\n forceRender={true}\n parentIndexPath=\"\"\n parentPath={''}\n parentSchemaPath=\"\"\n permissions={permissions} // TODO: Pass field permissions\n />\n </Collapsible>\n\n <FormSavePlugin onChange={onFormChange} />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/index.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAoD,MAAM,OAAO,CAAA;AASxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAInE,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsJ1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAOhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAInE,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuM1C,CAAA"}
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { Collapsible, Form, Pill, RenderComponent, SectionTitle, ShimmerEffect, useConfig, useDocumentInfo, useFieldProps, useFormSubmitted, useTranslation } from '@payloadcms/ui';
5
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
4
+ import { Collapsible, Form, Pill, SectionTitle, ShimmerEffect, useDocumentInfo, useFormSubmitted, useServerFunctions, useTranslation } from '@payloadcms/ui';
5
+ import { abortAndIgnore } from '@payloadcms/ui/shared';
6
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
7
  const baseClass = 'lexical-block';
7
8
  import { getTranslation } from '@payloadcms/translations';
8
- import { getFormState } from '@payloadcms/ui/shared';
9
9
  import { v4 as uuid } from 'uuid';
10
10
  import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
11
11
  import { BlockContent } from './BlockContent.js';
@@ -14,44 +14,54 @@ export const BlockComponent = props => {
14
14
  formData,
15
15
  nodeKey
16
16
  } = props;
17
- const {
18
- config
19
- } = useConfig();
20
17
  const submitted = useFormSubmitted();
21
18
  const {
22
- id
19
+ id,
20
+ collectionSlug,
21
+ globalSlug
23
22
  } = useDocumentInfo();
24
23
  const {
25
- path,
26
- schemaPath
27
- } = useFieldProps();
28
- const {
29
- field: parentLexicalRichTextField
24
+ fieldProps: {
25
+ featureClientSchemaMap,
26
+ field: parentLexicalRichTextField,
27
+ path,
28
+ schemaPath
29
+ }
30
30
  } = useEditorConfigContext();
31
+ const onChangeAbortControllerRef = useRef(new AbortController());
32
+ const {
33
+ docPermissions,
34
+ getDocPreferences
35
+ } = useDocumentInfo();
36
+ const {
37
+ getFormState
38
+ } = useServerFunctions();
31
39
  const [initialState, setInitialState] = useState(false);
40
+ const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}.fields`;
41
+ const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}`;
42
+ const clientSchemaMap = featureClientSchemaMap['blocks'];
43
+ const blocksField = clientSchemaMap[componentMapRenderedBlockPath][0];
44
+ const clientBlock = blocksField.blocks[0];
32
45
  const {
33
- field: {
34
- richTextComponentMap
35
- }
36
- } = useEditorConfigContext();
37
- const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.lexical_blocks.${formData.blockType}`;
38
- const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_blocks`;
39
- const blocksField = richTextComponentMap?.get(componentMapRenderedBlockPath)[0];
40
- const clientBlock = blocksField.blocks.find(block => block.slug === formData.blockType);
46
+ i18n
47
+ } = useTranslation();
41
48
  // Field Schema
42
49
  useEffect(() => {
50
+ const abortController = new AbortController();
43
51
  const awaitInitialState = async () => {
44
52
  const {
45
53
  state
46
54
  } = await getFormState({
47
- apiRoute: config.routes.api,
48
- body: {
49
- id,
50
- data: formData,
51
- operation: 'update',
52
- schemaPath: schemaFieldsPath
53
- },
54
- serverURL: config.serverURL
55
+ id,
56
+ collectionSlug,
57
+ data: formData,
58
+ docPermissions,
59
+ docPreferences: await getDocPreferences(),
60
+ globalSlug,
61
+ operation: 'update',
62
+ renderAllFields: true,
63
+ schemaPath: schemaFieldsPath,
64
+ signal: abortController.signal
55
65
  });
56
66
  if (state) {
57
67
  state.blockName = {
@@ -66,35 +76,47 @@ export const BlockComponent = props => {
66
76
  if (formData) {
67
77
  void awaitInitialState();
68
78
  }
69
- }, [config.routes.api, config.serverURL, schemaFieldsPath, id]) // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.
70
- ;
79
+ return () => {
80
+ abortAndIgnore(abortController);
81
+ };
82
+ }, [getFormState, schemaFieldsPath, id, collectionSlug, globalSlug, getDocPreferences, docPermissions]);
71
83
  const onChange = useCallback(async ({
72
84
  formState: prevFormState
73
85
  }) => {
86
+ abortAndIgnore(onChangeAbortControllerRef.current);
87
+ const controller = new AbortController();
88
+ onChangeAbortControllerRef.current = controller;
74
89
  const {
75
- state: formState
90
+ state: newFormState
76
91
  } = await getFormState({
77
- apiRoute: config.routes.api,
78
- body: {
79
- id,
80
- formState: prevFormState,
81
- operation: 'update',
82
- schemaPath: schemaFieldsPath
83
- },
84
- serverURL: config.serverURL
92
+ id,
93
+ collectionSlug,
94
+ docPermissions,
95
+ docPreferences: await getDocPreferences(),
96
+ formState: prevFormState,
97
+ globalSlug,
98
+ operation: 'update',
99
+ schemaPath: schemaFieldsPath,
100
+ signal: controller.signal
85
101
  });
86
- formState.blockName = {
102
+ if (!newFormState) {
103
+ return prevFormState;
104
+ }
105
+ newFormState.blockName = {
87
106
  initialValue: '',
88
107
  passesCondition: true,
89
108
  valid: true,
90
109
  value: formData.blockName
91
110
  };
92
- return formState;
93
- }, [config.routes.api, config.serverURL, id, schemaFieldsPath, formData.blockName]);
94
- const {
95
- i18n
96
- } = useTranslation();
111
+ return newFormState;
112
+ }, [getFormState, id, collectionSlug, docPermissions, getDocPreferences, globalSlug, schemaFieldsPath, formData.blockName]);
113
+ useEffect(() => {
114
+ return () => {
115
+ abortAndIgnore(onChangeAbortControllerRef.current);
116
+ };
117
+ }, []);
97
118
  const classNames = [`${baseClass}__row`, `${baseClass}__row--no-errors`].filter(Boolean).join(' ');
119
+ const Label = clientBlock?.admin?.components?.Label;
98
120
  // Memoized Form JSX
99
121
  const formContent = useMemo(() => {
100
122
  return clientBlock && initialState !== false ? /*#__PURE__*/_jsx(Form, {
@@ -117,13 +139,7 @@ export const BlockComponent = props => {
117
139
  }) : /*#__PURE__*/_jsx(Collapsible, {
118
140
  className: classNames,
119
141
  collapsibleStyle: "default",
120
- header: clientBlock?.admin?.components?.Label ? /*#__PURE__*/_jsx(RenderComponent, {
121
- clientProps: {
122
- blockKind: 'lexicalBlock',
123
- formData
124
- },
125
- mappedComponent: clientBlock.admin.components.Label
126
- }) : /*#__PURE__*/_jsx("div", {
142
+ header: clientBlock?.admin?.components?.Label ? Label : /*#__PURE__*/_jsx("div", {
127
143
  className: `${baseClass}__block-header`,
128
144
  children: /*#__PURE__*/_jsxs("div", {
129
145
  children: [/*#__PURE__*/_jsx(Pill, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Collapsible","Form","Pill","RenderComponent","SectionTitle","ShimmerEffect","useConfig","useDocumentInfo","useFieldProps","useFormSubmitted","useTranslation","React","useCallback","useEffect","useMemo","useState","baseClass","getTranslation","getFormState","v4","uuid","useEditorConfigContext","BlockContent","BlockComponent","props","formData","nodeKey","config","submitted","id","path","schemaPath","field","parentLexicalRichTextField","initialState","setInitialState","richTextComponentMap","schemaFieldsPath","blockType","componentMapRenderedBlockPath","blocksField","get","clientBlock","blocks","find","block","slug","awaitInitialState","state","apiRoute","routes","api","body","data","operation","serverURL","blockName","initialValue","passesCondition","valid","value","onChange","formState","prevFormState","i18n","classNames","filter","Boolean","join","formContent","_jsx","beforeSubmit","fields","formSchema","className","collapsibleStyle","header","admin","components","Label","clientProps","blockKind","mappedComponent","_jsxs","pillStyle","labels","singular","readOnly","height"],"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Collapsible,\n Form,\n Pill,\n RenderComponent,\n SectionTitle,\n ShimmerEffect,\n useConfig,\n useDocumentInfo,\n useFieldProps,\n useFormSubmitted,\n useTranslation,\n} from '@payloadcms/ui'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nconst baseClass = 'lexical-block'\nimport type { BlocksFieldClient, FormState } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport { v4 as uuid } from 'uuid'\n\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { BlockContent } from './BlockContent.js'\nimport './index.scss'\n\ntype Props = {\n readonly children?: React.ReactNode\n readonly formData: BlockFields\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const { config } = useConfig()\n const submitted = useFormSubmitted()\n const { id } = useDocumentInfo()\n const { path, schemaPath } = useFieldProps()\n const { field: parentLexicalRichTextField } = useEditorConfigContext()\n\n const [initialState, setInitialState] = useState<false | FormState>(false)\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.lexical_blocks.${formData.blockType}`\n\n const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_blocks`\n const blocksField: BlocksFieldClient = richTextComponentMap?.get(componentMapRenderedBlockPath)[0]\n\n const clientBlock = blocksField.blocks.find((block) => block.slug === formData.blockType)\n\n // Field Schema\n useEffect(() => {\n const awaitInitialState = async () => {\n const { state } = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n data: formData,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n })\n\n if (state) {\n state.blockName = {\n initialValue: '',\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n setInitialState(state)\n }\n }\n\n if (formData) {\n void awaitInitialState()\n }\n }, [config.routes.api, config.serverURL, schemaFieldsPath, id]) // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n\n const onChange = useCallback(\n async ({ formState: prevFormState }) => {\n const { state: formState } = await getFormState({\n apiRoute: config.routes.api,\n body: {\n id,\n formState: prevFormState,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n },\n serverURL: config.serverURL,\n })\n\n formState.blockName = {\n initialValue: '',\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n return formState\n },\n\n [config.routes.api, config.serverURL, id, schemaFieldsPath, formData.blockName],\n )\n const { i18n } = useTranslation()\n\n const classNames = [`${baseClass}__row`, `${baseClass}__row--no-errors`].filter(Boolean).join(' ')\n\n // Memoized Form JSX\n const formContent = useMemo(() => {\n return clientBlock && initialState !== false ? (\n <Form\n beforeSubmit={[onChange]}\n fields={clientBlock.fields}\n initialState={initialState}\n onChange={[onChange]}\n submitted={submitted}\n uuid={uuid()}\n >\n <BlockContent\n baseClass={baseClass}\n clientBlock={clientBlock}\n field={parentLexicalRichTextField}\n formData={formData}\n formSchema={clientBlock.fields}\n nodeKey={nodeKey}\n path={`${path}.lexical_internal_feature.blocks.${formData.blockType}`}\n schemaPath={schemaFieldsPath}\n />\n </Form>\n ) : (\n <Collapsible\n className={classNames}\n collapsibleStyle=\"default\"\n header={\n clientBlock?.admin?.components?.Label ? (\n <RenderComponent\n clientProps={{ blockKind: 'lexicalBlock', formData }}\n mappedComponent={clientBlock.admin.components.Label}\n />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <div>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${formData?.blockType}`}\n pillStyle=\"white\"\n >\n {clientBlock && typeof clientBlock.labels?.singular === 'string'\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug}\n </Pill>\n <SectionTitle\n path=\"blockName\"\n readOnly={parentLexicalRichTextField?.admin?.readOnly || false}\n />\n </div>\n </div>\n )\n }\n key={0}\n >\n <ShimmerEffect height=\"35vh\" />\n </Collapsible>\n )\n }, [\n clientBlock,\n initialState,\n onChange,\n submitted,\n parentLexicalRichTextField,\n nodeKey,\n path,\n schemaFieldsPath,\n classNames,\n i18n,\n ])\n\n return <div className={baseClass + ' ' + baseClass + '-' + formData.blockType}>{formContent}</div>\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Collapsible","Form","Pill","SectionTitle","ShimmerEffect","useDocumentInfo","useFormSubmitted","useServerFunctions","useTranslation","abortAndIgnore","React","useCallback","useEffect","useMemo","useRef","useState","baseClass","getTranslation","v4","uuid","useEditorConfigContext","BlockContent","BlockComponent","props","formData","nodeKey","submitted","id","collectionSlug","globalSlug","fieldProps","featureClientSchemaMap","field","parentLexicalRichTextField","path","schemaPath","onChangeAbortControllerRef","AbortController","docPermissions","getDocPreferences","getFormState","initialState","setInitialState","schemaFieldsPath","blockType","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blocks","i18n","abortController","awaitInitialState","state","data","docPreferences","operation","renderAllFields","signal","blockName","initialValue","passesCondition","valid","value","onChange","formState","prevFormState","current","controller","newFormState","classNames","filter","Boolean","join","Label","admin","components","formContent","_jsx","beforeSubmit","fields","formSchema","className","collapsibleStyle","header","_jsxs","pillStyle","labels","singular","slug","readOnly","height"],"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Collapsible,\n Form,\n Pill,\n SectionTitle,\n ShimmerEffect,\n useDocumentInfo,\n useFormSubmitted,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nconst baseClass = 'lexical-block'\nimport { getTranslation } from '@payloadcms/translations'\nimport { type BlocksFieldClient, type FormState } from 'payload'\nimport { v4 as uuid } from 'uuid'\n\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { BlockContent } from './BlockContent.js'\nimport './index.scss'\n\ntype Props = {\n readonly children?: React.ReactNode\n readonly formData: BlockFields\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const submitted = useFormSubmitted()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const {\n fieldProps: { featureClientSchemaMap, field: parentLexicalRichTextField, path, schemaPath },\n } = useEditorConfigContext()\n const onChangeAbortControllerRef = useRef(new AbortController())\n const { docPermissions, getDocPreferences } = useDocumentInfo()\n\n const { getFormState } = useServerFunctions()\n\n const [initialState, setInitialState] = useState<false | FormState | undefined>(false)\n\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}.fields`\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const { i18n } = useTranslation()\n\n // Field Schema\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions,\n docPreferences: await getDocPreferences(),\n globalSlug,\n operation: 'update',\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n state.blockName = {\n initialValue: '',\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n setInitialState(state)\n }\n }\n\n if (formData) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n id,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n docPermissions,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ])\n\n const onChange = useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state: newFormState } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences: await getDocPreferences(),\n formState: prevFormState,\n globalSlug,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!newFormState) {\n return prevFormState\n }\n\n newFormState.blockName = {\n initialValue: '',\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n return newFormState\n },\n\n [\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n getDocPreferences,\n globalSlug,\n schemaFieldsPath,\n formData.blockName,\n ],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const classNames = [`${baseClass}__row`, `${baseClass}__row--no-errors`].filter(Boolean).join(' ')\n\n const Label = clientBlock?.admin?.components?.Label\n\n // Memoized Form JSX\n const formContent = useMemo(() => {\n return clientBlock && initialState !== false ? (\n <Form\n beforeSubmit={[onChange]}\n fields={clientBlock.fields}\n initialState={initialState}\n onChange={[onChange]}\n submitted={submitted}\n uuid={uuid()}\n >\n <BlockContent\n baseClass={baseClass}\n clientBlock={clientBlock}\n field={parentLexicalRichTextField}\n formData={formData}\n formSchema={clientBlock.fields}\n nodeKey={nodeKey}\n path={`${path}.lexical_internal_feature.blocks.${formData.blockType}`}\n schemaPath={schemaFieldsPath}\n />\n </Form>\n ) : (\n <Collapsible\n className={classNames}\n collapsibleStyle=\"default\"\n header={\n clientBlock?.admin?.components?.Label ? (\n Label\n ) : (\n <div className={`${baseClass}__block-header`}>\n <div>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${formData?.blockType}`}\n pillStyle=\"white\"\n >\n {clientBlock && typeof clientBlock.labels?.singular === 'string'\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug}\n </Pill>\n <SectionTitle\n path=\"blockName\"\n readOnly={parentLexicalRichTextField?.admin?.readOnly || false}\n />\n </div>\n </div>\n )\n }\n key={0}\n >\n <ShimmerEffect height=\"35vh\" />\n </Collapsible>\n )\n }, [\n clientBlock,\n initialState,\n onChange,\n submitted,\n parentLexicalRichTextField,\n nodeKey,\n path,\n schemaFieldsPath,\n classNames,\n i18n,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ])\n\n return <div className={baseClass + ' ' + baseClass + '-' + formData.blockType}>{formContent}</div>\n}\n"],"mappings":"AAAA;;;AAEA,SACEA,WAAW,EACXC,IAAI,EACJC,IAAI,EACJC,YAAY,EACZC,aAAa,EACbC,eAAe,EACfC,gBAAgB,EAChBC,kBAAkB,EAClBC,cAAc,QACT;AACP,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAEzE,MAAMC,SAAA,GAAY;AAClB,SAASC,cAAc,QAAQ;AAE/B,SAASC,EAAA,IAAMC,IAAI,QAAQ;AAI3B,SAASC,sBAAsB,QAAQ;AACvC,SAASC,YAAY,QAAQ;AAS7B,OAAO,MAAMC,cAAA,GAAmCC,KAAA;EAC9C,MAAM;IAAEC,QAAQ;IAAEC;EAAO,CAAE,GAAGF,KAAA;EAC9B,MAAMG,SAAA,GAAYpB,gBAAA;EAClB,MAAM;IAAEqB,EAAE;IAAEC,cAAc;IAAEC;EAAU,CAAE,GAAGxB,eAAA;EAC3C,MAAM;IACJyB,UAAA,EAAY;MAAEC,sBAAsB;MAAEC,KAAA,EAAOC,0BAA0B;MAAEC,IAAI;MAAEC;IAAU;EAAE,CAC5F,GAAGf,sBAAA;EACJ,MAAMgB,0BAAA,GAA6BtB,MAAA,CAAO,IAAIuB,eAAA;EAC9C,MAAM;IAAEC,cAAc;IAAEC;EAAiB,CAAE,GAAGlC,eAAA;EAE9C,MAAM;IAAEmC;EAAY,CAAE,GAAGjC,kBAAA;EAEzB,MAAM,CAACkC,YAAA,EAAcC,eAAA,CAAgB,GAAG3B,QAAA,CAAwC;EAEhF,MAAM4B,gBAAA,GAAmB,GAAGR,UAAA,mDAA6DX,QAAA,CAASoB,SAAS,SAAS;EAEpH,MAAMC,6BAAA,GAAgC,GAAGV,UAAA,mDAA6DX,QAAA,CAASoB,SAAS,EAAE;EAE1H,MAAME,eAAA,GAAkBf,sBAAsB,CAAC,SAAS;EAExD,MAAMgB,WAAA,GAAiCD,eAAe,CACpDD,6BAAA,CACD,CAAC,EAAE;EAEJ,MAAMG,WAAA,GAAcD,WAAA,CAAYE,MAAM,CAAC,EAAE;EAEzC,MAAM;IAAEC;EAAI,CAAE,GAAG1C,cAAA;EAEjB;EACAI,SAAA,CAAU;IACR,MAAMuC,eAAA,GAAkB,IAAId,eAAA;IAE5B,MAAMe,iBAAA,GAAoB,MAAAA,CAAA;MACxB,MAAM;QAAEC;MAAK,CAAE,GAAG,MAAMb,YAAA,CAAa;QACnCb,EAAA;QACAC,cAAA;QACA0B,IAAA,EAAM9B,QAAA;QACNc,cAAA;QACAiB,cAAA,EAAgB,MAAMhB,iBAAA;QACtBV,UAAA;QACA2B,SAAA,EAAW;QACXC,eAAA,EAAiB;QACjBtB,UAAA,EAAYQ,gBAAA;QACZe,MAAA,EAAQP,eAAA,CAAgBO;MAC1B;MAEA,IAAIL,KAAA,EAAO;QACTA,KAAA,CAAMM,SAAS,GAAG;UAChBC,YAAA,EAAc;UACdC,eAAA,EAAiB;UACjBC,KAAA,EAAO;UACPC,KAAA,EAAOvC,QAAA,CAASmC;QAClB;QAEAjB,eAAA,CAAgBW,KAAA;MAClB;IACF;IAEA,IAAI7B,QAAA,EAAU;MACZ,KAAK4B,iBAAA;IACP;IAEA,OAAO;MACL3C,cAAA,CAAe0C,eAAA;IACjB;EACF,GAAG,CACDX,YAAA,EACAG,gBAAA,EACAhB,EAAA,EACAC,cAAA,EACAC,UAAA,EACAU,iBAAA,EACAD,cAAA,CAED;EAED,MAAM0B,QAAA,GAAWrD,WAAA,CACf,OAAO;IAAEsD,SAAA,EAAWC;EAAa,CAAE;IACjCzD,cAAA,CAAe2B,0BAAA,CAA2B+B,OAAO;IAEjD,MAAMC,UAAA,GAAa,IAAI/B,eAAA;IACvBD,0BAAA,CAA2B+B,OAAO,GAAGC,UAAA;IAErC,MAAM;MAAEf,KAAA,EAAOgB;IAAY,CAAE,GAAG,MAAM7B,YAAA,CAAa;MACjDb,EAAA;MACAC,cAAA;MACAU,cAAA;MACAiB,cAAA,EAAgB,MAAMhB,iBAAA;MACtB0B,SAAA,EAAWC,aAAA;MACXrC,UAAA;MACA2B,SAAA,EAAW;MACXrB,UAAA,EAAYQ,gBAAA;MACZe,MAAA,EAAQU,UAAA,CAAWV;IACrB;IAEA,IAAI,CAACW,YAAA,EAAc;MACjB,OAAOH,aAAA;IACT;IAEAG,YAAA,CAAaV,SAAS,GAAG;MACvBC,YAAA,EAAc;MACdC,eAAA,EAAiB;MACjBC,KAAA,EAAO;MACPC,KAAA,EAAOvC,QAAA,CAASmC;IAClB;IAEA,OAAOU,YAAA;EACT,GAEA,CACE7B,YAAA,EACAb,EAAA,EACAC,cAAA,EACAU,cAAA,EACAC,iBAAA,EACAV,UAAA,EACAc,gBAAA,EACAnB,QAAA,CAASmC,SAAS,CACnB;EAGH/C,SAAA,CAAU;IACR,OAAO;MACLH,cAAA,CAAe2B,0BAAA,CAA2B+B,OAAO;IACnD;EACF,GAAG,EAAE;EAEL,MAAMG,UAAA,GAAa,CAAC,GAAGtD,SAAA,OAAgB,EAAE,GAAGA,SAAA,kBAA2B,CAAC,CAACuD,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;EAE9F,MAAMC,KAAA,GAAQ1B,WAAA,EAAa2B,KAAA,EAAOC,UAAA,EAAYF,KAAA;EAE9C;EACA,MAAMG,WAAA,GAAchE,OAAA,CAAQ;IAC1B,OAAOmC,WAAA,IAAeP,YAAA,KAAiB,qBACrCqC,IAAA,CAAC7E,IAAA;MACC8E,YAAA,EAAc,CAACf,QAAA,CAAS;MACxBgB,MAAA,EAAQhC,WAAA,CAAYgC,MAAM;MAC1BvC,YAAA,EAAcA,YAAA;MACduB,QAAA,EAAU,CAACA,QAAA,CAAS;MACpBtC,SAAA,EAAWA,SAAA;MACXP,IAAA,EAAMA,IAAA;gBAEN,aAAA2D,IAAA,CAACzD,YAAA;QACCL,SAAA,EAAWA,SAAA;QACXgC,WAAA,EAAaA,WAAA;QACbhB,KAAA,EAAOC,0BAAA;QACPT,QAAA,EAAUA,QAAA;QACVyD,UAAA,EAAYjC,WAAA,CAAYgC,MAAM;QAC9BvD,OAAA,EAASA,OAAA;QACTS,IAAA,EAAM,GAAGA,IAAA,oCAAwCV,QAAA,CAASoB,SAAS,EAAE;QACrET,UAAA,EAAYQ;;sBAIhBmC,IAAA,CAAC9E,WAAA;MACCkF,SAAA,EAAWZ,UAAA;MACXa,gBAAA,EAAiB;MACjBC,MAAA,EACEpC,WAAA,EAAa2B,KAAA,EAAOC,UAAA,EAAYF,KAAA,GAC9BA,KAAA,gBAEAI,IAAA,CAAC;QAAII,SAAA,EAAW,GAAGlE,SAAA,gBAAyB;kBAC1C,aAAAqE,KAAA,CAAC;kCACCP,IAAA,CAAC5E,IAAA;YACCgF,SAAA,EAAW,GAAGlE,SAAA,gBAAyBA,SAAA,gBAAyBQ,QAAA,EAAUoB,SAAA,EAAW;YACrF0C,SAAA,EAAU;sBAETtC,WAAA,IAAe,OAAOA,WAAA,CAAYuC,MAAM,EAAEC,QAAA,KAAa,WACpDvE,cAAA,CAAe+B,WAAA,CAAYuC,MAAM,CAACC,QAAQ,EAAEtC,IAAA,IAC5CF,WAAA,EAAayC;2BAEnBX,IAAA,CAAC3E,YAAA;YACC+B,IAAA,EAAK;YACLwD,QAAA,EAAUzD,0BAAA,EAA4B0C,KAAA,EAAOe,QAAA,IAAY;;;;gBAQnE,aAAAZ,IAAA,CAAC1E,aAAA;QAAcuF,MAAA,EAAO;;OAFjB;EAKX,GAAG,CACD3C,WAAA,EACAP,YAAA,EACAuB,QAAA,EACAtC,SAAA,EACAO,0BAAA,EACAR,OAAA,EACAS,IAAA,EACAS,gBAAA,EACA2B,UAAA,EACApB,IAAA,CAED;EAED,oBAAO4B,IAAA,CAAC;IAAII,SAAA,EAAWlE,SAAA,GAAY,MAAMA,SAAA,GAAY,MAAMQ,QAAA,CAASoB,SAAS;cAAGiC;;AAClF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAoB7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAKrE,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkIhD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAoB7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAKrE,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiIhD,CAAA"}
@@ -7,7 +7,7 @@ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext
7
7
  import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection';
8
8
  import { mergeRegister } from '@lexical/utils';
9
9
  import { getTranslation } from '@payloadcms/translations';
10
- import { Button, RenderComponent, useTranslation } from '@payloadcms/ui';
10
+ import { Button, useTranslation } from '@payloadcms/ui';
11
11
  import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
12
12
  import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
13
13
  import { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js';
@@ -23,18 +23,18 @@ export const InlineBlockComponent = props => {
23
23
  t
24
24
  } = useTranslation();
25
25
  const {
26
- field
26
+ fieldProps: {
27
+ featureClientSchemaMap,
28
+ readOnly,
29
+ schemaPath
30
+ }
27
31
  } = useEditorConfigContext();
28
32
  const inlineBlockElemElemRef = useRef(null);
29
33
  const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
30
- const {
31
- field: {
32
- richTextComponentMap
33
- }
34
- } = useEditorConfigContext();
35
- const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`;
36
- const blocksField = richTextComponentMap?.get(componentMapRenderedBlockPath)[0];
37
- const clientBlock = blocksField.blocks.find(block => block.slug === formData.blockType);
34
+ const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`;
35
+ const clientSchemaMap = featureClientSchemaMap['blocks'];
36
+ const blocksField = clientSchemaMap[componentMapRenderedBlockPath][0];
37
+ const clientBlock = blocksField.blocks[0];
38
38
  const removeInlineBlock = useCallback(() => {
39
39
  editor.update(() => {
40
40
  $getNodeByKey(nodeKey)?.remove();
@@ -74,23 +74,18 @@ export const InlineBlockComponent = props => {
74
74
  return mergeRegister(editor.registerCommand(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW));
75
75
  }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick]);
76
76
  const blockDisplayName = clientBlock?.labels?.singular ? getTranslation(clientBlock.labels.singular, i18n) : clientBlock?.slug;
77
+ const Label = clientBlock?.admin?.components?.Label;
77
78
  return /*#__PURE__*/_jsxs("div", {
78
79
  className: [baseClass, baseClass + '-' + formData.blockType, isSelected && `${baseClass}--selected`].filter(Boolean).join(' '),
79
80
  ref: inlineBlockElemElemRef,
80
- children: [clientBlock?.admin?.components?.Label ? /*#__PURE__*/_jsx(RenderComponent, {
81
- clientProps: {
82
- blockKind: 'lexicalInlineBlock',
83
- formData
84
- },
85
- mappedComponent: clientBlock.admin.components.Label
86
- }) : /*#__PURE__*/_jsx("div", {
81
+ children: [Label ? Label : /*#__PURE__*/_jsx("div", {
87
82
  children: getTranslation(clientBlock.labels.singular, i18n)
88
83
  }), editor.isEditable() && /*#__PURE__*/_jsxs("div", {
89
84
  className: `${baseClass}__actions`,
90
85
  children: [/*#__PURE__*/_jsx(Button, {
91
86
  buttonStyle: "icon-label",
92
87
  className: `${baseClass}__editButton`,
93
- disabled: field?.admin?.readOnly,
88
+ disabled: readOnly,
94
89
  el: "div",
95
90
  icon: "edit",
96
91
  onClick: () => {
@@ -107,7 +102,7 @@ export const InlineBlockComponent = props => {
107
102
  }), /*#__PURE__*/_jsx(Button, {
108
103
  buttonStyle: "icon-label",
109
104
  className: `${baseClass}__removeButton`,
110
- disabled: field?.admin?.readOnly,
105
+ disabled: readOnly,
111
106
  icon: "x",
112
107
  onClick: e => {
113
108
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","baseClass","useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","RenderComponent","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","useEditorConfigContext","$isInlineBlockNode","OPEN_INLINE_BLOCK_DRAWER_COMMAND","InlineBlockComponent","props","formData","nodeKey","editor","i18n","t","field","inlineBlockElemElemRef","isSelected","setSelected","clearSelection","richTextComponentMap","componentMapRenderedBlockPath","blocksField","get","clientBlock","blocks","find","block","slug","blockType","removeInlineBlock","update","remove","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","onClick","payload","target","current","contains","shiftKey","registerCommand","blockDisplayName","labels","singular","_jsxs","className","filter","Boolean","join","ref","admin","components","Label","_jsx","clientProps","blockKind","mappedComponent","isEditable","buttonStyle","disabled","readOnly","el","icon","dispatchCommand","fields","round","size","tooltip","label","e"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useEffect, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, RenderComponent, useTranslation } from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\n\nimport type { InlineBlockFields } from '../nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport { OPEN_INLINE_BLOCK_DRAWER_COMMAND } from '../plugin/commands.js'\nimport './index.scss'\n\ntype Props = {\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const [editor] = useLexicalComposerContext()\n const { i18n, t } = useTranslation<object, string>()\n const { field } = useEditorConfigContext()\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`\n const blocksField: BlocksFieldClient = richTextComponentMap?.get(componentMapRenderedBlockPath)[0]\n const clientBlock = blocksField.blocks.find((block) => block.slug === formData.blockType)\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isInlineBlockNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if inlineBlockElemElemRef.target or anything WITHIN inlineBlockElemElemRef.target was clicked\n if (\n event.target === inlineBlockElemElemRef.current ||\n inlineBlockElemElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return (\n <div\n className={[\n baseClass,\n baseClass + '-' + formData.blockType,\n isSelected && `${baseClass}--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {clientBlock?.admin?.components?.Label ? (\n <RenderComponent\n clientProps={{ blockKind: 'lexicalInlineBlock', formData }}\n mappedComponent={clientBlock.admin.components.Label}\n />\n ) : (\n <div>{getTranslation(clientBlock!.labels!.singular, i18n)}</div>\n )}\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={field?.admin?.readOnly}\n el=\"div\"\n icon=\"edit\"\n onClick={() => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: formData,\n nodeKey,\n })\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","baseClass","useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","useEditorConfigContext","$isInlineBlockNode","OPEN_INLINE_BLOCK_DRAWER_COMMAND","InlineBlockComponent","props","formData","nodeKey","editor","i18n","t","fieldProps","featureClientSchemaMap","readOnly","schemaPath","inlineBlockElemElemRef","isSelected","setSelected","clearSelection","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blocks","removeInlineBlock","update","remove","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","onClick","payload","target","current","contains","shiftKey","registerCommand","blockDisplayName","labels","singular","slug","Label","admin","components","_jsxs","className","filter","Boolean","join","ref","_jsx","isEditable","buttonStyle","disabled","el","icon","dispatchCommand","fields","round","size","tooltip","label","e"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useEffect, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, useTranslation } from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\n\nimport type { InlineBlockFields } from '../nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport { OPEN_INLINE_BLOCK_DRAWER_COMMAND } from '../plugin/commands.js'\nimport './index.scss'\n\ntype Props = {\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const [editor] = useLexicalComposerContext()\n const { i18n, t } = useTranslation<object, string>()\n const {\n fieldProps: { featureClientSchemaMap, readOnly, schemaPath },\n } = useEditorConfigContext()\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isInlineBlockNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if inlineBlockElemElemRef.target or anything WITHIN inlineBlockElemElemRef.target was clicked\n if (\n event.target === inlineBlockElemElemRef.current ||\n inlineBlockElemElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const Label = clientBlock?.admin?.components?.Label\n\n return (\n <div\n className={[\n baseClass,\n baseClass + '-' + formData.blockType,\n isSelected && `${baseClass}--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {Label ? Label : <div>{getTranslation(clientBlock.labels!.singular, i18n)}</div>}\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"div\"\n icon=\"edit\"\n onClick={() => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: formData,\n nodeKey,\n })\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/client/index.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,mBAAmB,gHAsL7B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/client/index.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,mBAAmB,gHAkL7B,CAAA"}