@payloadcms/richtext-lexical 3.0.0-beta.24 → 3.0.0-beta.25

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 (230) hide show
  1. package/dist/exports/components.d.ts +3 -2
  2. package/dist/exports/components.d.ts.map +1 -1
  3. package/dist/exports/components.js +3 -2
  4. package/dist/exports/components.js.map +1 -1
  5. package/dist/field/features/align/feature.client.d.ts.map +1 -1
  6. package/dist/field/features/align/feature.client.js +126 -46
  7. package/dist/field/features/align/feature.client.js.map +1 -1
  8. package/dist/field/features/align/toolbarAlignGroup.d.ts +3 -0
  9. package/dist/field/features/align/toolbarAlignGroup.d.ts.map +1 -0
  10. package/dist/field/features/align/{inlineToolbarAlignGroup.js → toolbarAlignGroup.js} +3 -3
  11. package/dist/field/features/align/toolbarAlignGroup.js.map +1 -0
  12. package/dist/field/features/blockquote/feature.client.d.ts.map +1 -1
  13. package/dist/field/features/blockquote/feature.client.js +37 -23
  14. package/dist/field/features/blockquote/feature.client.js.map +1 -1
  15. package/dist/field/features/blocks/component/index.d.ts.map +1 -1
  16. package/dist/field/features/blocks/component/index.js +1 -1
  17. package/dist/field/features/blocks/component/index.js.map +1 -1
  18. package/dist/field/features/blocks/feature.client.d.ts.map +1 -1
  19. package/dist/field/features/blocks/feature.client.js +39 -8
  20. package/dist/field/features/blocks/feature.client.js.map +1 -1
  21. package/dist/field/features/blocks/populationPromise.d.ts.map +1 -1
  22. package/dist/field/features/blocks/populationPromise.js +2 -1
  23. package/dist/field/features/blocks/populationPromise.js.map +1 -1
  24. package/dist/field/features/format/bold/feature.client.d.ts.map +1 -1
  25. package/dist/field/features/format/bold/feature.client.js +23 -19
  26. package/dist/field/features/format/bold/feature.client.js.map +1 -1
  27. package/dist/field/features/format/inlineCode/feature.client.d.ts.map +1 -1
  28. package/dist/field/features/format/inlineCode/feature.client.js +23 -19
  29. package/dist/field/features/format/inlineCode/feature.client.js.map +1 -1
  30. package/dist/field/features/format/italic/feature.client.d.ts.map +1 -1
  31. package/dist/field/features/format/italic/feature.client.js +23 -19
  32. package/dist/field/features/format/italic/feature.client.js.map +1 -1
  33. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts +3 -0
  34. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts.map +1 -0
  35. package/dist/field/features/format/shared/toolbarFormatGroup.js +10 -0
  36. package/dist/field/features/format/shared/toolbarFormatGroup.js.map +1 -0
  37. package/dist/field/features/format/strikethrough/feature.client.d.ts.map +1 -1
  38. package/dist/field/features/format/strikethrough/feature.client.js +23 -19
  39. package/dist/field/features/format/strikethrough/feature.client.js.map +1 -1
  40. package/dist/field/features/format/subscript/feature.client.d.ts.map +1 -1
  41. package/dist/field/features/format/subscript/feature.client.js +23 -19
  42. package/dist/field/features/format/subscript/feature.client.js.map +1 -1
  43. package/dist/field/features/format/superscript/feature.client.d.ts.map +1 -1
  44. package/dist/field/features/format/superscript/feature.client.js +23 -19
  45. package/dist/field/features/format/superscript/feature.client.js.map +1 -1
  46. package/dist/field/features/format/underline/feature.client.d.ts.map +1 -1
  47. package/dist/field/features/format/underline/feature.client.js +23 -19
  48. package/dist/field/features/format/underline/feature.client.js.map +1 -1
  49. package/dist/field/features/heading/feature.client.d.ts.map +1 -1
  50. package/dist/field/features/heading/feature.client.js +49 -29
  51. package/dist/field/features/heading/feature.client.js.map +1 -1
  52. package/dist/field/features/horizontalRule/feature.client.d.ts.map +1 -1
  53. package/dist/field/features/horizontalRule/feature.client.js +27 -4
  54. package/dist/field/features/horizontalRule/feature.client.js.map +1 -1
  55. package/dist/field/features/indent/feature.client.d.ts.map +1 -1
  56. package/dist/field/features/indent/feature.client.js +41 -37
  57. package/dist/field/features/indent/feature.client.js.map +1 -1
  58. package/dist/field/features/indent/toolbarIndentGroup.d.ts +3 -0
  59. package/dist/field/features/indent/toolbarIndentGroup.d.ts.map +1 -0
  60. package/dist/field/features/indent/toolbarIndentGroup.js +10 -0
  61. package/dist/field/features/indent/toolbarIndentGroup.js.map +1 -0
  62. package/dist/field/features/link/feature.client.d.ts.map +1 -1
  63. package/dist/field/features/link/feature.client.js +44 -40
  64. package/dist/field/features/link/feature.client.js.map +1 -1
  65. package/dist/field/features/link/populationPromise.d.ts.map +1 -1
  66. package/dist/field/features/link/populationPromise.js +2 -1
  67. package/dist/field/features/link/populationPromise.js.map +1 -1
  68. package/dist/field/features/lists/checklist/feature.client.d.ts.map +1 -1
  69. package/dist/field/features/lists/checklist/feature.client.js +44 -19
  70. package/dist/field/features/lists/checklist/feature.client.js.map +1 -1
  71. package/dist/field/features/lists/orderedList/feature.client.d.ts.map +1 -1
  72. package/dist/field/features/lists/orderedList/feature.client.js +44 -19
  73. package/dist/field/features/lists/orderedList/feature.client.js.map +1 -1
  74. package/dist/field/features/lists/unorderedList/feature.client.d.ts.map +1 -1
  75. package/dist/field/features/lists/unorderedList/feature.client.js +44 -19
  76. package/dist/field/features/lists/unorderedList/feature.client.js.map +1 -1
  77. package/dist/field/features/paragraph/feature.client.d.ts.map +1 -1
  78. package/dist/field/features/paragraph/feature.client.js +36 -22
  79. package/dist/field/features/paragraph/feature.client.js.map +1 -1
  80. package/dist/field/features/relationship/feature.client.d.ts.map +1 -1
  81. package/dist/field/features/relationship/feature.client.js +30 -4
  82. package/dist/field/features/relationship/feature.client.js.map +1 -1
  83. package/dist/field/features/relationship/populationPromise.d.ts.map +1 -1
  84. package/dist/field/features/relationship/populationPromise.js +2 -1
  85. package/dist/field/features/relationship/populationPromise.js.map +1 -1
  86. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts +3 -0
  87. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -0
  88. package/dist/field/features/shared/toolbar/addDropdownGroup.js +12 -0
  89. package/dist/field/features/shared/toolbar/addDropdownGroup.js.map +1 -0
  90. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts +3 -0
  91. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -0
  92. package/dist/field/features/shared/toolbar/featureButtonsGroup.js +10 -0
  93. package/dist/field/features/shared/toolbar/featureButtonsGroup.js.map +1 -0
  94. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts +3 -0
  95. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -0
  96. package/dist/field/features/shared/{inlineToolbar → toolbar}/textDropdownGroup.js +2 -2
  97. package/dist/field/features/shared/toolbar/textDropdownGroup.js.map +1 -0
  98. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts +6 -0
  99. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -0
  100. package/dist/field/features/toolbars/fixed/Toolbar/index.js +152 -0
  101. package/dist/field/features/toolbars/fixed/Toolbar/index.js.map +1 -0
  102. package/dist/field/features/toolbars/fixed/Toolbar/index.scss +81 -0
  103. package/dist/field/features/toolbars/fixed/feature.client.d.ts +3 -0
  104. package/dist/field/features/toolbars/fixed/feature.client.d.ts.map +1 -0
  105. package/dist/field/features/toolbars/fixed/feature.client.js +20 -0
  106. package/dist/field/features/toolbars/fixed/feature.client.js.map +1 -0
  107. package/dist/field/features/toolbars/fixed/feature.server.d.ts +3 -0
  108. package/dist/field/features/toolbars/fixed/feature.server.d.ts.map +1 -0
  109. package/dist/field/features/toolbars/fixed/feature.server.js +16 -0
  110. package/dist/field/features/toolbars/fixed/feature.server.js.map +1 -0
  111. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts +6 -0
  112. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts.map +1 -0
  113. package/dist/field/{lexical/plugins → features}/toolbars/inline/Toolbar/index.js +43 -17
  114. package/dist/field/features/toolbars/inline/Toolbar/index.js.map +1 -0
  115. package/dist/field/{lexical/plugins → features}/toolbars/inline/Toolbar/index.scss +3 -8
  116. package/dist/field/features/toolbars/inline/feature.client.d.ts +3 -0
  117. package/dist/field/features/toolbars/inline/feature.client.d.ts.map +1 -0
  118. package/dist/field/features/toolbars/inline/feature.client.js +20 -0
  119. package/dist/field/features/toolbars/inline/feature.client.js.map +1 -0
  120. package/dist/field/features/toolbars/inline/feature.server.d.ts +3 -0
  121. package/dist/field/features/toolbars/inline/feature.server.d.ts.map +1 -0
  122. package/dist/field/features/toolbars/inline/feature.server.js +16 -0
  123. package/dist/field/features/toolbars/inline/feature.server.js.map +1 -0
  124. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts +10 -0
  125. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -0
  126. package/dist/field/{lexical/plugins/toolbars/inline → features/toolbars/shared}/ToolbarButton/index.js +9 -5
  127. package/dist/field/features/toolbars/shared/ToolbarButton/index.js.map +1 -0
  128. package/dist/field/{lexical/plugins/toolbars/inline → features/toolbars/shared}/ToolbarButton/index.scss +3 -1
  129. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +23 -0
  130. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -0
  131. package/dist/field/{lexical/plugins/toolbars/inline → features/toolbars/shared}/ToolbarDropdown/DropDown.js +14 -64
  132. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -0
  133. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts +23 -0
  134. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -0
  135. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js +139 -0
  136. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -0
  137. package/dist/field/{lexical/plugins/toolbars/inline → features/toolbars/shared}/ToolbarDropdown/index.scss +25 -13
  138. package/dist/field/{lexical/plugins/toolbars/inline → features/toolbars}/types.d.ts +16 -8
  139. package/dist/field/features/toolbars/types.d.ts.map +1 -0
  140. package/dist/field/features/toolbars/types.js.map +1 -0
  141. package/dist/field/features/types.d.ts +7 -7
  142. package/dist/field/features/types.d.ts.map +1 -1
  143. package/dist/field/features/types.js.map +1 -1
  144. package/dist/field/features/upload/feature.client.d.ts.map +1 -1
  145. package/dist/field/features/upload/feature.client.js +29 -4
  146. package/dist/field/features/upload/feature.client.js.map +1 -1
  147. package/dist/field/features/upload/populationPromise.d.ts.map +1 -1
  148. package/dist/field/features/upload/populationPromise.js +3 -1
  149. package/dist/field/features/upload/populationPromise.js.map +1 -1
  150. package/dist/field/lexical/EditorFocusProvider.d.ts +20 -0
  151. package/dist/field/lexical/EditorFocusProvider.d.ts.map +1 -0
  152. package/dist/field/lexical/EditorFocusProvider.js +78 -0
  153. package/dist/field/lexical/EditorFocusProvider.js.map +1 -0
  154. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  155. package/dist/field/lexical/LexicalEditor.js +20 -4
  156. package/dist/field/lexical/LexicalEditor.js.map +1 -1
  157. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  158. package/dist/field/lexical/LexicalProvider.js +3 -2
  159. package/dist/field/lexical/LexicalProvider.js.map +1 -1
  160. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts +2 -3
  161. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  162. package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -1
  163. package/dist/field/lexical/config/server/default.d.ts.map +1 -1
  164. package/dist/field/lexical/config/server/default.js +3 -1
  165. package/dist/field/lexical/config/server/default.js.map +1 -1
  166. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +6 -6
  167. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  168. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  169. package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  170. package/dist/field/lexical/plugins/SlashMenu/index.js +10 -10
  171. package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -1
  172. package/dist/field/lexical/ui/icons/Add/index.d.ts +3 -0
  173. package/dist/field/lexical/ui/icons/Add/index.d.ts.map +1 -0
  174. package/dist/field/lexical/ui/icons/Add/index.js +16 -0
  175. package/dist/field/lexical/ui/icons/Add/index.js.map +1 -0
  176. package/dist/index.d.ts +8 -5
  177. package/dist/index.d.ts.map +1 -1
  178. package/dist/index.js +8 -4
  179. package/dist/index.js.map +1 -1
  180. package/dist/populate/populate.d.ts +2 -1
  181. package/dist/populate/populate.d.ts.map +1 -1
  182. package/dist/populate/populate.js +13 -11
  183. package/dist/populate/populate.js.map +1 -1
  184. package/dist/populate/populateLexicalPopulationPromises.d.ts +1 -1
  185. package/dist/populate/populateLexicalPopulationPromises.d.ts.map +1 -1
  186. package/dist/populate/populateLexicalPopulationPromises.js +2 -1
  187. package/dist/populate/populateLexicalPopulationPromises.js.map +1 -1
  188. package/dist/populate/recurseNestedFields.d.ts +2 -1
  189. package/dist/populate/recurseNestedFields.d.ts.map +1 -1
  190. package/dist/populate/recurseNestedFields.js +2 -1
  191. package/dist/populate/recurseNestedFields.js.map +1 -1
  192. package/package.json +10 -10
  193. package/dist/field/features/align/inlineToolbarAlignGroup.d.ts +0 -3
  194. package/dist/field/features/align/inlineToolbarAlignGroup.d.ts.map +0 -1
  195. package/dist/field/features/align/inlineToolbarAlignGroup.js.map +0 -1
  196. package/dist/field/features/format/shared/inlineToolbarFormatGroup.d.ts +0 -3
  197. package/dist/field/features/format/shared/inlineToolbarFormatGroup.d.ts.map +0 -1
  198. package/dist/field/features/format/shared/inlineToolbarFormatGroup.js +0 -10
  199. package/dist/field/features/format/shared/inlineToolbarFormatGroup.js.map +0 -1
  200. package/dist/field/features/indent/inlineToolbarIndentGroup.d.ts +0 -3
  201. package/dist/field/features/indent/inlineToolbarIndentGroup.d.ts.map +0 -1
  202. package/dist/field/features/indent/inlineToolbarIndentGroup.js +0 -10
  203. package/dist/field/features/indent/inlineToolbarIndentGroup.js.map +0 -1
  204. package/dist/field/features/shared/inlineToolbar/featureButtonsGroup.d.ts +0 -3
  205. package/dist/field/features/shared/inlineToolbar/featureButtonsGroup.d.ts.map +0 -1
  206. package/dist/field/features/shared/inlineToolbar/featureButtonsGroup.js +0 -10
  207. package/dist/field/features/shared/inlineToolbar/featureButtonsGroup.js.map +0 -1
  208. package/dist/field/features/shared/inlineToolbar/textDropdownGroup.d.ts +0 -3
  209. package/dist/field/features/shared/inlineToolbar/textDropdownGroup.d.ts.map +0 -1
  210. package/dist/field/features/shared/inlineToolbar/textDropdownGroup.js.map +0 -1
  211. package/dist/field/lexical/plugins/toolbars/fixed/types.d.ts +0 -40
  212. package/dist/field/lexical/plugins/toolbars/fixed/types.d.ts.map +0 -1
  213. package/dist/field/lexical/plugins/toolbars/fixed/types.js.map +0 -1
  214. package/dist/field/lexical/plugins/toolbars/inline/Toolbar/index.d.ts +0 -6
  215. package/dist/field/lexical/plugins/toolbars/inline/Toolbar/index.d.ts.map +0 -1
  216. package/dist/field/lexical/plugins/toolbars/inline/Toolbar/index.js.map +0 -1
  217. package/dist/field/lexical/plugins/toolbars/inline/ToolbarButton/index.d.ts +0 -8
  218. package/dist/field/lexical/plugins/toolbars/inline/ToolbarButton/index.d.ts.map +0 -1
  219. package/dist/field/lexical/plugins/toolbars/inline/ToolbarButton/index.js.map +0 -1
  220. package/dist/field/lexical/plugins/toolbars/inline/ToolbarDropdown/DropDown.d.ts +0 -17
  221. package/dist/field/lexical/plugins/toolbars/inline/ToolbarDropdown/DropDown.d.ts.map +0 -1
  222. package/dist/field/lexical/plugins/toolbars/inline/ToolbarDropdown/DropDown.js.map +0 -1
  223. package/dist/field/lexical/plugins/toolbars/inline/ToolbarDropdown/index.d.ts +0 -18
  224. package/dist/field/lexical/plugins/toolbars/inline/ToolbarDropdown/index.d.ts.map +0 -1
  225. package/dist/field/lexical/plugins/toolbars/inline/ToolbarDropdown/index.js +0 -42
  226. package/dist/field/lexical/plugins/toolbars/inline/ToolbarDropdown/index.js.map +0 -1
  227. package/dist/field/lexical/plugins/toolbars/inline/types.d.ts.map +0 -1
  228. package/dist/field/lexical/plugins/toolbars/inline/types.js +0 -3
  229. package/dist/field/lexical/plugins/toolbars/inline/types.js.map +0 -1
  230. /package/dist/field/{lexical/plugins/toolbars/fixed → features/toolbars}/types.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/relationship/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport { withMergedProps } from '@payloadcms/ui/elements/withMergedProps'\n\nimport type { FeatureProviderProviderClient } from '../types.js'\nimport type { RelationshipFeatureProps } from './feature.server.js'\n\nimport { RelationshipIcon } from '../../lexical/ui/icons/Relationship/index.js'\nimport { createClientComponent } from '../createClientComponent.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { RelationshipNode } from './nodes/RelationshipNode.js'\nimport { RelationshipPlugin } from './plugins/index.js'\n\nconst RelationshipFeatureClient: FeatureProviderProviderClient<RelationshipFeatureProps> = (\n props,\n) => {\n return {\n clientFeatureProps: props,\n feature: () => ({\n clientFeatureProps: props,\n nodes: [RelationshipNode],\n plugins: [\n {\n Component: withMergedProps({\n Component: RelationshipPlugin,\n toMergeIntoProps: props,\n }),\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n {\n displayName: 'Basic',\n items: [\n {\n Icon: RelationshipIcon,\n displayName: 'Relationship',\n key: 'relationship',\n keywords: ['relationship', 'relation', 'rel'],\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ],\n key: 'basic',\n },\n ],\n },\n }),\n }\n}\n\nexport const RelationshipFeatureClientComponent = createClientComponent(RelationshipFeatureClient)\n"],"names":["withMergedProps","RelationshipIcon","createClientComponent","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","RelationshipNode","RelationshipPlugin","RelationshipFeatureClient","props","clientFeatureProps","feature","nodes","plugins","Component","toMergeIntoProps","position","slashMenu","groups","displayName","items","Icon","key","keywords","onSelect","editor","dispatchCommand","replace","RelationshipFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAEA,SAASA,eAAe,QAAQ,0CAAyC;AAKzE,SAASC,gBAAgB,QAAQ,+CAA8C;AAC/E,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,uCAAuC,QAAQ,uBAAsB;AAC9E,SAASC,gBAAgB,QAAQ,8BAA6B;AAC9D,SAASC,kBAAkB,QAAQ,qBAAoB;AAEvD,MAAMC,4BAAqF,CACzFC;IAEA,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,IAAO,CAAA;gBACdD,oBAAoBD;gBACpBG,OAAO;oBAACN;iBAAiB;gBACzBO,SAAS;oBACP;wBACEC,WAAWZ,gBAAgB;4BACzBY,WAAWP;4BACXQ,kBAAkBN;wBACpB;wBACAO,UAAU;oBACZ;iBACD;gBACDC,WAAW;oBACTC,QAAQ;wBACN;4BACEC,aAAa;4BACbC,OAAO;gCACL;oCACEC,MAAMlB;oCACNgB,aAAa;oCACbG,KAAK;oCACLC,UAAU;wCAAC;wCAAgB;wCAAY;qCAAM;oCAC7CC,UAAU,CAAC,EAAEC,MAAM,EAAE;wCACnB,mDAAmD;wCACnDA,OAAOC,eAAe,CAACrB,yCAAyC;4CAC9DsB,SAAS;wCACX;oCACF;gCACF;6BACD;4BACDL,KAAK;wBACP;qBACD;gBACH;YACF,CAAA;IACF;AACF;AAEA,OAAO,MAAMM,qCAAqCxB,sBAAsBI,2BAA0B"}
1
+ {"version":3,"sources":["../../../../src/field/features/relationship/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport { withMergedProps } from '@payloadcms/ui/elements/withMergedProps'\nimport { $isNodeSelection } from 'lexical'\n\nimport type { FeatureProviderProviderClient } from '../types.js'\nimport type { RelationshipFeatureProps } from './feature.server.js'\n\nimport { RelationshipIcon } from '../../lexical/ui/icons/Relationship/index.js'\nimport { createClientComponent } from '../createClientComponent.js'\nimport { toolbarAddDropdownGroupWithItems } from '../shared/toolbar/addDropdownGroup.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { $isRelationshipNode, RelationshipNode } from './nodes/RelationshipNode.js'\nimport { RelationshipPlugin } from './plugins/index.js'\n\nconst RelationshipFeatureClient: FeatureProviderProviderClient<RelationshipFeatureProps> = (\n props,\n) => {\n return {\n clientFeatureProps: props,\n feature: () => ({\n clientFeatureProps: props,\n nodes: [RelationshipNode],\n plugins: [\n {\n Component: withMergedProps({\n Component: RelationshipPlugin,\n toMergeIntoProps: props,\n }),\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n {\n items: [\n {\n Icon: RelationshipIcon,\n key: 'relationship',\n keywords: ['relationship', 'relation', 'rel'],\n label: 'Relationship',\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ],\n key: 'basic',\n label: 'Basic',\n },\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: RelationshipIcon,\n isActive: ({ selection }) => {\n if (!$isNodeSelection(selection) || !selection.getNodes().length) {\n return false\n }\n\n const firstNode = selection.getNodes()[0]\n return $isRelationshipNode(firstNode)\n },\n key: 'relationship',\n label: 'Relationship',\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n }),\n }\n}\n\nexport const RelationshipFeatureClientComponent = createClientComponent(RelationshipFeatureClient)\n"],"names":["withMergedProps","$isNodeSelection","RelationshipIcon","createClientComponent","toolbarAddDropdownGroupWithItems","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","$isRelationshipNode","RelationshipNode","RelationshipPlugin","RelationshipFeatureClient","props","clientFeatureProps","feature","nodes","plugins","Component","toMergeIntoProps","position","slashMenu","groups","items","Icon","key","keywords","label","onSelect","editor","dispatchCommand","replace","toolbarFixed","ChildComponent","isActive","selection","getNodes","length","firstNode","RelationshipFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAEA,SAASA,eAAe,QAAQ,0CAAyC;AACzE,SAASC,gBAAgB,QAAQ,UAAS;AAK1C,SAASC,gBAAgB,QAAQ,+CAA8C;AAC/E,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,gCAAgC,QAAQ,wCAAuC;AACxF,SAASC,uCAAuC,QAAQ,uBAAsB;AAC9E,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ,8BAA6B;AACnF,SAASC,kBAAkB,QAAQ,qBAAoB;AAEvD,MAAMC,4BAAqF,CACzFC;IAEA,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,IAAO,CAAA;gBACdD,oBAAoBD;gBACpBG,OAAO;oBAACN;iBAAiB;gBACzBO,SAAS;oBACP;wBACEC,WAAWf,gBAAgB;4BACzBe,WAAWP;4BACXQ,kBAAkBN;wBACpB;wBACAO,UAAU;oBACZ;iBACD;gBACDC,WAAW;oBACTC,QAAQ;wBACN;4BACEC,OAAO;gCACL;oCACEC,MAAMnB;oCACNoB,KAAK;oCACLC,UAAU;wCAAC;wCAAgB;wCAAY;qCAAM;oCAC7CC,OAAO;oCACPC,UAAU,CAAC,EAAEC,MAAM,EAAE;wCACnB,mDAAmD;wCACnDA,OAAOC,eAAe,CAACtB,yCAAyC;4CAC9DuB,SAAS;wCACX;oCACF;gCACF;6BACD;4BACDN,KAAK;4BACLE,OAAO;wBACT;qBACD;gBACH;gBACAK,cAAc;oBACZV,QAAQ;wBACNf,iCAAiC;4BAC/B;gCACE0B,gBAAgB5B;gCAChB6B,UAAU,CAAC,EAAEC,SAAS,EAAE;oCACtB,IAAI,CAAC/B,iBAAiB+B,cAAc,CAACA,UAAUC,QAAQ,GAAGC,MAAM,EAAE;wCAChE,OAAO;oCACT;oCAEA,MAAMC,YAAYH,UAAUC,QAAQ,EAAE,CAAC,EAAE;oCACzC,OAAO3B,oBAAoB6B;gCAC7B;gCACAb,KAAK;gCACLE,OAAO;gCACPC,UAAU,CAAC,EAAEC,MAAM,EAAE;oCACnB,mDAAmD;oCACnDA,OAAOC,eAAe,CAACtB,yCAAyC;wCAC9DuB,SAAS;oCACX;gCACF;4BACF;yBACD;qBACF;gBACH;YACF,CAAA;IACF;AACF;AAEA,OAAO,MAAMQ,qCAAqCjC,sBAAsBM,2BAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"populationPromise.d.ts","sourceRoot":"","sources":["../../../../src/field/features/relationship/populationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAI7E,eAAO,MAAM,6BAA6B,EAAE,iBAAiB,CAAC,0BAA0B,CAiCvF,CAAA"}
1
+ {"version":3,"file":"populationPromise.d.ts","sourceRoot":"","sources":["../../../../src/field/features/relationship/populationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAI7E,eAAO,MAAM,6BAA6B,EAAE,iBAAiB,CAAC,0BAA0B,CAmCvF,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { populate } from '../../../populate/populate.js';
2
- export const relationshipPopulationPromise = ({ currentDepth, depth, field, node, overrideAccess, populationPromises, req, showHiddenFields })=>{
2
+ export const relationshipPopulationPromise = ({ currentDepth, depth, draft, field, node, overrideAccess, populationPromises, req, showHiddenFields })=>{
3
3
  if (node?.value) {
4
4
  // @ts-expect-error
5
5
  const id = node?.value?.id || node?.value // for backwards-compatibility
@@ -12,6 +12,7 @@ export const relationshipPopulationPromise = ({ currentDepth, depth, field, node
12
12
  currentDepth,
13
13
  data: node,
14
14
  depth,
15
+ draft,
15
16
  field,
16
17
  key: 'value',
17
18
  overrideAccess,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/relationship/populationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../types.js'\nimport type { SerializedRelationshipNode } from './nodes/RelationshipNode.js'\n\nimport { populate } from '../../../populate/populate.js'\n\nexport const relationshipPopulationPromise: PopulationPromise<SerializedRelationshipNode> = ({\n currentDepth,\n depth,\n field,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n}) => {\n if (node?.value) {\n // @ts-expect-error\n const id = node?.value?.id || node?.value // for backwards-compatibility\n\n const collection = req.payload.collections[node?.relationTo]\n\n if (collection) {\n populationPromises.push(\n populate({\n id,\n collection,\n currentDepth,\n data: node,\n depth,\n field,\n key: 'value',\n overrideAccess,\n req,\n showHiddenFields,\n }),\n )\n }\n }\n}\n"],"names":["populate","relationshipPopulationPromise","currentDepth","depth","field","node","overrideAccess","populationPromises","req","showHiddenFields","value","id","collection","payload","collections","relationTo","push","data","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,QAAQ,QAAQ,gCAA+B;AAExD,OAAO,MAAMC,gCAA+E,CAAC,EAC3FC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EACjB;IACC,IAAIJ,MAAMK,OAAO;QACf,mBAAmB;QACnB,MAAMC,KAAKN,MAAMK,OAAOC,MAAMN,MAAMK,MAAM,8BAA8B;;QAExE,MAAME,aAAaJ,IAAIK,OAAO,CAACC,WAAW,CAACT,MAAMU,WAAW;QAE5D,IAAIH,YAAY;YACdL,mBAAmBS,IAAI,CACrBhB,SAAS;gBACPW;gBACAC;gBACAV;gBACAe,MAAMZ;gBACNF;gBACAC;gBACAc,KAAK;gBACLZ;gBACAE;gBACAC;YACF;QAEJ;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/features/relationship/populationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../types.js'\nimport type { SerializedRelationshipNode } from './nodes/RelationshipNode.js'\n\nimport { populate } from '../../../populate/populate.js'\n\nexport const relationshipPopulationPromise: PopulationPromise<SerializedRelationshipNode> = ({\n currentDepth,\n depth,\n draft,\n field,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n}) => {\n if (node?.value) {\n // @ts-expect-error\n const id = node?.value?.id || node?.value // for backwards-compatibility\n\n const collection = req.payload.collections[node?.relationTo]\n\n if (collection) {\n populationPromises.push(\n populate({\n id,\n collection,\n currentDepth,\n data: node,\n depth,\n draft,\n field,\n key: 'value',\n overrideAccess,\n req,\n showHiddenFields,\n }),\n )\n }\n }\n}\n"],"names":["populate","relationshipPopulationPromise","currentDepth","depth","draft","field","node","overrideAccess","populationPromises","req","showHiddenFields","value","id","collection","payload","collections","relationTo","push","data","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,QAAQ,QAAQ,gCAA+B;AAExD,OAAO,MAAMC,gCAA+E,CAAC,EAC3FC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EACjB;IACC,IAAIJ,MAAMK,OAAO;QACf,mBAAmB;QACnB,MAAMC,KAAKN,MAAMK,OAAOC,MAAMN,MAAMK,MAAM,8BAA8B;;QAExE,MAAME,aAAaJ,IAAIK,OAAO,CAACC,WAAW,CAACT,MAAMU,WAAW;QAE5D,IAAIH,YAAY;YACdL,mBAAmBS,IAAI,CACrBjB,SAAS;gBACPY;gBACAC;gBACAX;gBACAgB,MAAMZ;gBACNH;gBACAC;gBACAC;gBACAc,KAAK;gBACLZ;gBACAE;gBACAC;YACF;QAEJ;IACF;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js';
2
+ export declare const toolbarAddDropdownGroupWithItems: (items: ToolbarGroupItem[]) => ToolbarGroup;
3
+ //# sourceMappingURL=addDropdownGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addDropdownGroup.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/shared/toolbar/addDropdownGroup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAI7E,eAAO,MAAM,gCAAgC,UAAW,gBAAgB,EAAE,KAAG,YAQ5E,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { AddIcon } from '../../../lexical/ui/icons/Add/index.js';
2
+ export const toolbarAddDropdownGroupWithItems = (items)=>{
3
+ return {
4
+ type: 'dropdown',
5
+ ChildComponent: AddIcon,
6
+ items,
7
+ key: 'add',
8
+ order: 10
9
+ };
10
+ };
11
+
12
+ //# sourceMappingURL=addDropdownGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/field/features/shared/toolbar/addDropdownGroup.ts"],"sourcesContent":["import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { AddIcon } from '../../../lexical/ui/icons/Add/index.js'\n\nexport const toolbarAddDropdownGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'dropdown',\n ChildComponent: AddIcon,\n items,\n key: 'add',\n order: 10,\n }\n}\n"],"names":["AddIcon","toolbarAddDropdownGroupWithItems","items","type","ChildComponent","key","order"],"rangeMappings":";;;;;;;;;","mappings":"AAEA,SAASA,OAAO,QAAQ,yCAAwC;AAEhE,OAAO,MAAMC,mCAAmC,CAACC;IAC/C,OAAO;QACLC,MAAM;QACNC,gBAAgBJ;QAChBE;QACAG,KAAK;QACLC,OAAO;IACT;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js';
2
+ export declare const toolbarFeatureButtonsGroupWithItems: (items: ToolbarGroupItem[]) => ToolbarGroup;
3
+ //# sourceMappingURL=featureButtonsGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featureButtonsGroup.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/shared/toolbar/featureButtonsGroup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE7E,eAAO,MAAM,mCAAmC,UAAW,gBAAgB,EAAE,KAAG,YAO/E,CAAA"}
@@ -0,0 +1,10 @@
1
+ export const toolbarFeatureButtonsGroupWithItems = (items)=>{
2
+ return {
3
+ type: 'buttons',
4
+ items,
5
+ key: 'features',
6
+ order: 50
7
+ };
8
+ };
9
+
10
+ //# sourceMappingURL=featureButtonsGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/field/features/shared/toolbar/featureButtonsGroup.ts"],"sourcesContent":["import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nexport const toolbarFeatureButtonsGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'buttons',\n items,\n key: 'features',\n order: 50,\n }\n}\n"],"names":["toolbarFeatureButtonsGroupWithItems","items","type","key","order"],"rangeMappings":";;;;;;;","mappings":"AAEA,OAAO,MAAMA,sCAAsC,CAACC;IAClD,OAAO;QACLC,MAAM;QACND;QACAE,KAAK;QACLC,OAAO;IACT;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js';
2
+ export declare const toolbarTextDropdownGroupWithItems: (items: ToolbarGroupItem[]) => ToolbarGroup;
3
+ //# sourceMappingURL=textDropdownGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textDropdownGroup.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/shared/toolbar/textDropdownGroup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAI7E,eAAO,MAAM,iCAAiC,UAAW,gBAAgB,EAAE,KAAG,YAQ7E,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { TextIcon } from '../../../lexical/ui/icons/Text/index.js';
2
- export const inlineToolbarTextDropdownGroupWithItems = (items)=>{
2
+ export const toolbarTextDropdownGroupWithItems = (items)=>{
3
3
  return {
4
4
  type: 'dropdown',
5
5
  ChildComponent: TextIcon,
6
6
  items,
7
7
  key: 'text',
8
- order: 1
8
+ order: 25
9
9
  };
10
10
  };
11
11
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/field/features/shared/toolbar/textDropdownGroup.ts"],"sourcesContent":["import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { TextIcon } from '../../../lexical/ui/icons/Text/index.js'\n\nexport const toolbarTextDropdownGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'dropdown',\n ChildComponent: TextIcon,\n items,\n key: 'text',\n order: 25,\n }\n}\n"],"names":["TextIcon","toolbarTextDropdownGroupWithItems","items","type","ChildComponent","key","order"],"rangeMappings":";;;;;;;;;","mappings":"AAEA,SAASA,QAAQ,QAAQ,0CAAyC;AAElE,OAAO,MAAMC,oCAAoC,CAACC;IAChD,OAAO;QACLC,MAAM;QACNC,gBAAgBJ;QAChBE;QACAG,KAAK;QACLC,OAAO;IACT;AACF,EAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import './index.scss';
3
+ export declare function FixedToolbarPlugin({ anchorElem, }: {
4
+ anchorElem?: HTMLElement;
5
+ }): React.ReactElement | null;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/toolbars/fixed/Toolbar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,cAAc,CAAA;AA2KrB,wBAAgB,kBAAkB,CAAC,EACjC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAqB5B"}
@@ -0,0 +1,152 @@
1
+ 'use client';
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
3
+ import { useTranslation } from '@payloadcms/ui/providers/Translation';
4
+ import * as React from 'react';
5
+ import { useEditorFocus } from '../../../../lexical/EditorFocusProvider.js';
6
+ import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
7
+ import { ToolbarButton } from '../../shared/ToolbarButton/index.js';
8
+ import { ToolbarDropdown } from '../../shared/ToolbarDropdown/index.js';
9
+ import './index.scss';
10
+ function ButtonGroupItem({ anchorElem, editor, item }) {
11
+ if (item.Component) {
12
+ return item?.Component && /*#__PURE__*/ React.createElement(item.Component, {
13
+ anchorElem: anchorElem,
14
+ editor: editor,
15
+ item: item,
16
+ key: item.key
17
+ });
18
+ }
19
+ return /*#__PURE__*/ React.createElement(ToolbarButton, {
20
+ editor: editor,
21
+ item: item,
22
+ key: item.key
23
+ }, item?.ChildComponent && /*#__PURE__*/ React.createElement(item.ChildComponent, null));
24
+ }
25
+ function ToolbarGroupComponent({ anchorElem, editor, editorConfig, group, index }) {
26
+ const { i18n } = useTranslation();
27
+ const [dropdownLabel, setDropdownLabel] = React.useState(null);
28
+ const [DropdownIcon, setDropdownIcon] = React.useState(null);
29
+ React.useEffect(()=>{
30
+ if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {
31
+ setDropdownIcon(()=>group.ChildComponent);
32
+ } else {
33
+ setDropdownIcon(null);
34
+ }
35
+ }, [
36
+ group
37
+ ]);
38
+ const onActiveChange = ({ activeItems })=>{
39
+ if (!activeItems.length) {
40
+ if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {
41
+ setDropdownIcon(()=>group.ChildComponent);
42
+ setDropdownLabel(null);
43
+ } else {
44
+ setDropdownIcon(null);
45
+ setDropdownLabel(null);
46
+ }
47
+ return;
48
+ }
49
+ const item = activeItems[0];
50
+ let label = item.key;
51
+ if (item.label) {
52
+ label = typeof item.label === 'function' ? item.label({
53
+ i18n
54
+ }) : item.label;
55
+ }
56
+ // Crop title to max. 25 characters
57
+ if (label.length > 25) {
58
+ label = label.substring(0, 25) + '...';
59
+ }
60
+ setDropdownLabel(label);
61
+ setDropdownIcon(()=>item.ChildComponent);
62
+ };
63
+ return /*#__PURE__*/ React.createElement("div", {
64
+ className: `fixed-toolbar__group fixed-toolbar__group-${group.key}`,
65
+ key: group.key
66
+ }, group.type === 'dropdown' && group.items.length && (DropdownIcon ? /*#__PURE__*/ React.createElement(ToolbarDropdown, {
67
+ Icon: DropdownIcon,
68
+ anchorElem: anchorElem,
69
+ editor: editor,
70
+ groupKey: group.key,
71
+ items: group.items,
72
+ itemsContainerClassNames: [
73
+ 'fixed-toolbar__dropdown-items'
74
+ ],
75
+ label: dropdownLabel,
76
+ maxActiveItems: 1,
77
+ onActiveChange: onActiveChange
78
+ }) : /*#__PURE__*/ React.createElement(ToolbarDropdown, {
79
+ anchorElem: anchorElem,
80
+ editor: editor,
81
+ groupKey: group.key,
82
+ items: group.items,
83
+ itemsContainerClassNames: [
84
+ 'fixed-toolbar__dropdown-items'
85
+ ],
86
+ label: dropdownLabel,
87
+ maxActiveItems: 1,
88
+ onActiveChange: onActiveChange
89
+ })), group.type === 'buttons' && group.items.length && group.items.map((item)=>{
90
+ return /*#__PURE__*/ React.createElement(ButtonGroupItem, {
91
+ anchorElem: anchorElem,
92
+ editor: editor,
93
+ item: item,
94
+ key: item.key
95
+ });
96
+ }), index < editorConfig.features.toolbarFixed?.groups.length - 1 && /*#__PURE__*/ React.createElement("div", {
97
+ className: "divider"
98
+ }));
99
+ }
100
+ function FixedToolbar({ anchorElem, editor, editorConfig }) {
101
+ return /*#__PURE__*/ React.createElement("div", {
102
+ className: "fixed-toolbar",
103
+ onFocus: (event)=>{
104
+ // Prevent other focus events being triggered. Otherwise, if this was to be clicked while in a child editor,
105
+ // the parent editor will be focused, and the child editor will lose focus.
106
+ event.stopPropagation();
107
+ }
108
+ }, editor.isEditable() && /*#__PURE__*/ React.createElement(React.Fragment, null, editorConfig?.features && editorConfig.features?.toolbarFixed?.groups.map((group, i)=>{
109
+ return /*#__PURE__*/ React.createElement(ToolbarGroupComponent, {
110
+ anchorElem: anchorElem,
111
+ editor: editor,
112
+ editorConfig: editorConfig,
113
+ group: group,
114
+ index: i,
115
+ key: group.key
116
+ });
117
+ })));
118
+ }
119
+ const checkParentEditor = (editorFocus)=>{
120
+ if (editorFocus.parentEditorConfigContext?.editorConfig) {
121
+ if (editorFocus.parentEditorConfigContext?.editorConfig.resolvedFeatureMap.has('toolbarFixed')) {
122
+ return true;
123
+ } else {
124
+ if (editorFocus.parentEditorFocus) {
125
+ return checkParentEditor(editorFocus.parentEditorFocus);
126
+ }
127
+ }
128
+ }
129
+ return false;
130
+ };
131
+ export function FixedToolbarPlugin({ anchorElem = document.body }) {
132
+ const [currentEditor] = useLexicalComposerContext();
133
+ const { editorConfig: currentEditorConfig, uuid } = useEditorConfigContext();
134
+ const editorFocus = useEditorFocus();
135
+ const editor = editorFocus.focusedEditor || currentEditor;
136
+ const editorConfig = editorFocus.focusedEditorConfigContext?.editorConfig || currentEditorConfig;
137
+ // Check if there is a parent editor with a fixed toolbar already
138
+ const hasParentWithFixedToolbar = checkParentEditor(editorFocus);
139
+ if (hasParentWithFixedToolbar) {
140
+ return null;
141
+ }
142
+ if (!editorConfig?.features?.toolbarFixed?.groups?.length) {
143
+ return null;
144
+ }
145
+ return /*#__PURE__*/ React.createElement(FixedToolbar, {
146
+ anchorElem: anchorElem,
147
+ editor: editor,
148
+ editorConfig: editorConfig
149
+ });
150
+ }
151
+
152
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/features/toolbars/fixed/Toolbar/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport * as React from 'react'\n\nimport type { EditorFocusContextType } from '../../../../lexical/EditorFocusProvider.js'\nimport type { SanitizedClientEditorConfig } from '../../../../lexical/config/types.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../types.js'\n\nimport { useEditorFocus } from '../../../../lexical/EditorFocusProvider.js'\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { ToolbarButton } from '../../shared/ToolbarButton/index.js'\nimport { ToolbarDropdown } from '../../shared/ToolbarDropdown/index.js'\nimport './index.scss'\n\nfunction ButtonGroupItem({\n anchorElem,\n editor,\n item,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n item: ToolbarGroupItem\n}): React.ReactNode {\n if (item.Component) {\n return (\n item?.Component && (\n <item.Component anchorElem={anchorElem} editor={editor} item={item} key={item.key} />\n )\n )\n }\n\n return (\n <ToolbarButton editor={editor} item={item} key={item.key}>\n {item?.ChildComponent && <item.ChildComponent />}\n </ToolbarButton>\n )\n}\n\nfunction ToolbarGroupComponent({\n anchorElem,\n editor,\n editorConfig,\n group,\n index,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n group: ToolbarGroup\n index: number\n}): React.ReactNode {\n const { i18n } = useTranslation()\n\n const [dropdownLabel, setDropdownLabel] = React.useState<null | string>(null)\n const [DropdownIcon, setDropdownIcon] = React.useState<React.FC | null>(null)\n\n React.useEffect(() => {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent)\n } else {\n setDropdownIcon(null)\n }\n }, [group])\n\n const onActiveChange = ({ activeItems }: { activeItems: ToolbarGroupItem[] }) => {\n if (!activeItems.length) {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent)\n setDropdownLabel(null)\n } else {\n setDropdownIcon(null)\n setDropdownLabel(null)\n }\n return\n }\n const item = activeItems[0]\n\n let label = item.key\n if (item.label) {\n label = typeof item.label === 'function' ? item.label({ i18n }) : item.label\n }\n // Crop title to max. 25 characters\n if (label.length > 25) {\n label = label.substring(0, 25) + '...'\n }\n setDropdownLabel(label)\n setDropdownIcon(() => item.ChildComponent)\n }\n\n return (\n <div className={`fixed-toolbar__group fixed-toolbar__group-${group.key}`} key={group.key}>\n {group.type === 'dropdown' &&\n group.items.length &&\n (DropdownIcon ? (\n <ToolbarDropdown\n Icon={DropdownIcon}\n anchorElem={anchorElem}\n editor={editor}\n groupKey={group.key}\n items={group.items}\n itemsContainerClassNames={['fixed-toolbar__dropdown-items']}\n label={dropdownLabel}\n maxActiveItems={1}\n onActiveChange={onActiveChange}\n />\n ) : (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n groupKey={group.key}\n items={group.items}\n itemsContainerClassNames={['fixed-toolbar__dropdown-items']}\n label={dropdownLabel}\n maxActiveItems={1}\n onActiveChange={onActiveChange}\n />\n ))}\n {group.type === 'buttons' &&\n group.items.length &&\n group.items.map((item) => {\n return (\n <ButtonGroupItem anchorElem={anchorElem} editor={editor} item={item} key={item.key} />\n )\n })}\n {index < editorConfig.features.toolbarFixed?.groups.length - 1 && <div className=\"divider\" />}\n </div>\n )\n}\n\nfunction FixedToolbar({\n anchorElem,\n editor,\n editorConfig,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n}): React.ReactNode {\n return (\n <div\n className=\"fixed-toolbar\"\n onFocus={(event) => {\n // Prevent other focus events being triggered. Otherwise, if this was to be clicked while in a child editor,\n // the parent editor will be focused, and the child editor will lose focus.\n event.stopPropagation()\n }}\n >\n {editor.isEditable() && (\n <React.Fragment>\n {editorConfig?.features &&\n editorConfig.features?.toolbarFixed?.groups.map((group, i) => {\n return (\n <ToolbarGroupComponent\n anchorElem={anchorElem}\n editor={editor}\n editorConfig={editorConfig}\n group={group}\n index={i}\n key={group.key}\n />\n )\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nconst checkParentEditor = (editorFocus: EditorFocusContextType): boolean => {\n if (editorFocus.parentEditorConfigContext?.editorConfig) {\n if (\n editorFocus.parentEditorConfigContext?.editorConfig.resolvedFeatureMap.has('toolbarFixed')\n ) {\n return true\n } else {\n if (editorFocus.parentEditorFocus) {\n return checkParentEditor(editorFocus.parentEditorFocus)\n }\n }\n }\n return false\n}\n\nexport function FixedToolbarPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement | null {\n const [currentEditor] = useLexicalComposerContext()\n const { editorConfig: currentEditorConfig, uuid } = useEditorConfigContext()\n\n const editorFocus = useEditorFocus()\n const editor = editorFocus.focusedEditor || currentEditor\n\n const editorConfig = editorFocus.focusedEditorConfigContext?.editorConfig || currentEditorConfig\n\n // Check if there is a parent editor with a fixed toolbar already\n const hasParentWithFixedToolbar = checkParentEditor(editorFocus)\n\n if (hasParentWithFixedToolbar) {\n return null\n }\n\n if (!editorConfig?.features?.toolbarFixed?.groups?.length) {\n return null\n }\n\n return <FixedToolbar anchorElem={anchorElem} editor={editor} editorConfig={editorConfig} />\n}\n"],"names":["useLexicalComposerContext","useTranslation","React","useEditorFocus","useEditorConfigContext","ToolbarButton","ToolbarDropdown","ButtonGroupItem","anchorElem","editor","item","Component","key","ChildComponent","ToolbarGroupComponent","editorConfig","group","index","i18n","dropdownLabel","setDropdownLabel","useState","DropdownIcon","setDropdownIcon","useEffect","type","items","length","onActiveChange","activeItems","label","substring","div","className","Icon","groupKey","itemsContainerClassNames","maxActiveItems","map","features","toolbarFixed","groups","FixedToolbar","onFocus","event","stopPropagation","isEditable","Fragment","i","checkParentEditor","editorFocus","parentEditorConfigContext","resolvedFeatureMap","has","parentEditorFocus","FixedToolbarPlugin","document","body","currentEditor","currentEditorConfig","uuid","focusedEditor","focusedEditorConfigContext","hasParentWithFixedToolbar"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,81 @@
1
+ @import '../../../../../scss/styles';
2
+
3
+
4
+ html[data-theme='dark'] {
5
+ .fixed-toolbar {
6
+ &__dropdown-items {
7
+ background: var(--theme-elevation-0);
8
+
9
+ .toolbar-popup__dropdown-item {
10
+ color: var(--theme-elevation-900);
11
+
12
+ &:hover:not([disabled]), &.active {
13
+ background-color: var(--theme-elevation-100);
14
+ }
15
+
16
+ .icon {
17
+ color: var(--theme-elevation-600);
18
+ }
19
+ }
20
+ }
21
+
22
+ .toolbar-popup {
23
+ &__button {
24
+ &.active, &:hover:not([disabled]) {
25
+ background-color: var(--theme-elevation-100);
26
+ }
27
+ }
28
+
29
+ &__dropdown {
30
+ &:hover:not([disabled]) {
31
+ background-color: var(--theme-elevation-100);
32
+ }
33
+
34
+ &-caret:after {
35
+ filter: invert(1);
36
+ }
37
+
38
+ &-label {
39
+ color: var(--theme-elevation-750);
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+
47
+ .fixed-toolbar {
48
+ @include blur-bg(var(--theme-elevation-0));
49
+ display: flex;
50
+ align-items: center;
51
+ padding: 0 3.72px 0 6.25px;
52
+ vertical-align: middle;
53
+ height: 37.5px;
54
+ position: sticky;
55
+ z-index: 2;
56
+ top: var(--doc-controls-height);
57
+ margin-bottom: $baseline;
58
+ border: $style-stroke-width-s solid var(--theme-elevation-150);
59
+
60
+
61
+ &__group {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: 2px;
65
+ z-index: 1;
66
+
67
+ .icon {
68
+ min-width: 20px;
69
+ height: 20px;
70
+ color: var(--theme-elevation-600);
71
+ }
72
+
73
+ .divider {
74
+ width: 1px;
75
+ height: 15px;
76
+ background-color: var(--color-base-100);
77
+ margin: 0 6.25px;
78
+ }
79
+ }
80
+
81
+ }
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" resolution-mode="require"/>
2
+ export declare const FixedToolbarFeatureClientComponent: import("react").FC<undefined>;
3
+ //# sourceMappingURL=feature.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.client.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/toolbars/fixed/feature.client.tsx"],"names":[],"mappings":";AAsBA,eAAO,MAAM,kCAAkC,+BAAmD,CAAA"}
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import { createClientComponent } from '../../createClientComponent.js';
3
+ import { FixedToolbarPlugin } from './Toolbar/index.js';
4
+ const FixedToolbarFeatureClient = (props)=>{
5
+ return {
6
+ clientFeatureProps: props,
7
+ feature: ()=>({
8
+ clientFeatureProps: props,
9
+ plugins: [
10
+ {
11
+ Component: FixedToolbarPlugin,
12
+ position: 'top'
13
+ }
14
+ ]
15
+ })
16
+ };
17
+ };
18
+ export const FixedToolbarFeatureClientComponent = createClientComponent(FixedToolbarFeatureClient);
19
+
20
+ //# sourceMappingURL=feature.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/field/features/toolbars/fixed/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport type { FeatureProviderProviderClient } from '../../types.js'\n\nimport { createClientComponent } from '../../createClientComponent.js'\nimport { FixedToolbarPlugin } from './Toolbar/index.js'\n\nconst FixedToolbarFeatureClient: FeatureProviderProviderClient<undefined> = (props) => {\n return {\n clientFeatureProps: props,\n feature: () => ({\n clientFeatureProps: props,\n plugins: [\n {\n Component: FixedToolbarPlugin,\n position: 'top',\n },\n ],\n }),\n }\n}\n\nexport const FixedToolbarFeatureClientComponent = createClientComponent(FixedToolbarFeatureClient)\n"],"names":["createClientComponent","FixedToolbarPlugin","FixedToolbarFeatureClient","props","clientFeatureProps","feature","plugins","Component","position","FixedToolbarFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAAA;AAIA,SAASA,qBAAqB,QAAQ,iCAAgC;AACtE,SAASC,kBAAkB,QAAQ,qBAAoB;AAEvD,MAAMC,4BAAsE,CAACC;IAC3E,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,IAAO,CAAA;gBACdD,oBAAoBD;gBACpBG,SAAS;oBACP;wBACEC,WAAWN;wBACXO,UAAU;oBACZ;iBACD;YACH,CAAA;IACF;AACF;AAEA,OAAO,MAAMC,qCAAqCT,sBAAsBE,2BAA0B"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureProviderProviderServer } from '../../types.js';
2
+ export declare const FixedToolbarFeature: FeatureProviderProviderServer<undefined, undefined>;
3
+ //# sourceMappingURL=feature.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/toolbars/fixed/feature.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAInE,eAAO,MAAM,mBAAmB,EAAE,6BAA6B,CAAC,SAAS,EAAE,SAAS,CAYnF,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { FixedToolbarFeatureClientComponent } from './feature.client.js';
2
+ export const FixedToolbarFeature = (props)=>{
3
+ return {
4
+ feature: ()=>{
5
+ return {
6
+ ClientComponent: FixedToolbarFeatureClientComponent,
7
+ clientFeatureProps: null,
8
+ serverFeatureProps: props
9
+ };
10
+ },
11
+ key: 'toolbarFixed',
12
+ serverFeatureProps: props
13
+ };
14
+ };
15
+
16
+ //# sourceMappingURL=feature.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/field/features/toolbars/fixed/feature.server.ts"],"sourcesContent":["import type { FeatureProviderProviderServer } from '../../types.js'\n\nimport { FixedToolbarFeatureClientComponent } from './feature.client.js'\n\nexport const FixedToolbarFeature: FeatureProviderProviderServer<undefined, undefined> = (props) => {\n return {\n feature: () => {\n return {\n ClientComponent: FixedToolbarFeatureClientComponent,\n clientFeatureProps: null,\n serverFeatureProps: props,\n }\n },\n key: 'toolbarFixed',\n serverFeatureProps: props,\n }\n}\n"],"names":["FixedToolbarFeatureClientComponent","FixedToolbarFeature","props","feature","ClientComponent","clientFeatureProps","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAEA,SAASA,kCAAkC,QAAQ,sBAAqB;AAExE,OAAO,MAAMC,sBAA2E,CAACC;IACvF,OAAO;QACLC,SAAS;YACP,OAAO;gBACLC,iBAAiBJ;gBACjBK,oBAAoB;gBACpBC,oBAAoBJ;YACtB;QACF;QACAK,KAAK;QACLD,oBAAoBJ;IACtB;AACF,EAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import './index.scss';
3
+ export declare function InlineToolbarPlugin({ anchorElem, }: {
4
+ anchorElem?: HTMLElement;
5
+ }): React.ReactElement | null;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/toolbars/inline/Toolbar/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,cAAc,CAAA;AA4WrB,wBAAgB,mBAAmB,CAAC,EAClC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAI5B"}
@@ -5,11 +5,11 @@ import { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, SE
5
5
  import { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import * as React from 'react';
7
7
  import { createPortal } from 'react-dom';
8
- import { useEditorConfigContext } from '../../../../config/client/EditorConfigProvider.js';
9
- import { getDOMRangeRect } from '../../../../utils/getDOMRangeRect.js';
10
- import { setFloatingElemPosition } from '../../../../utils/setFloatingElemPosition.js';
11
- import { ToolbarButton } from '../ToolbarButton/index.js';
12
- import { ToolbarDropdown } from '../ToolbarDropdown/index.js';
8
+ import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
9
+ import { getDOMRangeRect } from '../../../../lexical/utils/getDOMRangeRect.js';
10
+ import { setFloatingElemPosition } from '../../../../lexical/utils/setFloatingElemPosition.js';
11
+ import { ToolbarButton } from '../../shared/ToolbarButton/index.js';
12
+ import { ToolbarDropdown } from '../../shared/ToolbarDropdown/index.js';
13
13
  import './index.scss';
14
14
  function ButtonGroupItem({ anchorElem, editor, item }) {
15
15
  if (item.Component) {
@@ -21,27 +21,53 @@ function ButtonGroupItem({ anchorElem, editor, item }) {
21
21
  });
22
22
  }
23
23
  return /*#__PURE__*/ React.createElement(ToolbarButton, {
24
+ editor: editor,
24
25
  item: item,
25
26
  key: item.key
26
27
  }, item?.ChildComponent && /*#__PURE__*/ React.createElement(item.ChildComponent, null));
27
28
  }
28
- function ToolbarGroup({ anchorElem, editor, group, index }) {
29
+ function ToolbarGroupComponent({ anchorElem, editor, group, index }) {
29
30
  const { editorConfig } = useEditorConfigContext();
30
- const Icon = group?.type === 'dropdown' && group.items.length && group.ChildComponent ? group.ChildComponent : null;
31
+ const [DropdownIcon, setDropdownIcon] = React.useState(null);
32
+ React.useEffect(()=>{
33
+ if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {
34
+ setDropdownIcon(()=>group.ChildComponent);
35
+ } else {
36
+ setDropdownIcon(null);
37
+ }
38
+ }, [
39
+ group
40
+ ]);
41
+ const onActiveChange = ({ activeItems })=>{
42
+ if (!activeItems.length) {
43
+ if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {
44
+ setDropdownIcon(()=>group.ChildComponent);
45
+ } else {
46
+ setDropdownIcon(null);
47
+ }
48
+ return;
49
+ }
50
+ const item = activeItems[0];
51
+ setDropdownIcon(()=>item.ChildComponent);
52
+ };
31
53
  return /*#__PURE__*/ React.createElement("div", {
32
54
  className: `inline-toolbar-popup__group inline-toolbar-popup__group-${group.key}`,
33
55
  key: group.key
34
- }, group.type === 'dropdown' && group.items.length && (Icon ? /*#__PURE__*/ React.createElement(ToolbarDropdown, {
35
- Icon: Icon,
56
+ }, group.type === 'dropdown' && group.items.length && (DropdownIcon ? /*#__PURE__*/ React.createElement(ToolbarDropdown, {
57
+ Icon: DropdownIcon,
36
58
  anchorElem: anchorElem,
37
59
  editor: editor,
38
60
  groupKey: group.key,
39
- items: group.items
61
+ items: group.items,
62
+ maxActiveItems: 1,
63
+ onActiveChange: onActiveChange
40
64
  }) : /*#__PURE__*/ React.createElement(ToolbarDropdown, {
41
65
  anchorElem: anchorElem,
42
66
  editor: editor,
43
67
  groupKey: group.key,
44
- items: group.items
68
+ items: group.items,
69
+ maxActiveItems: 1,
70
+ onActiveChange: onActiveChange
45
71
  })), group.type === 'buttons' && group.items.length && group.items.map((item)=>{
46
72
  return /*#__PURE__*/ React.createElement(ButtonGroupItem, {
47
73
  anchorElem: anchorElem,
@@ -53,7 +79,7 @@ function ToolbarGroup({ anchorElem, editor, group, index }) {
53
79
  className: "divider"
54
80
  }));
55
81
  }
56
- function FloatingSelectToolbar({ anchorElem, editor }) {
82
+ function InlineToolbar({ anchorElem, editor }) {
57
83
  const floatingToolbarRef = useRef(null);
58
84
  const caretRef = useRef(null);
59
85
  const { editorConfig } = useEditorConfigContext();
@@ -178,7 +204,7 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
178
204
  className: "caret",
179
205
  ref: caretRef
180
206
  }), editor.isEditable() && /*#__PURE__*/ React.createElement(React.Fragment, null, editorConfig?.features && editorConfig.features?.toolbarInline?.groups.map((group, i)=>{
181
- return /*#__PURE__*/ React.createElement(ToolbarGroup, {
207
+ return /*#__PURE__*/ React.createElement(ToolbarGroupComponent, {
182
208
  anchorElem: anchorElem,
183
209
  editor: editor,
184
210
  group: group,
@@ -187,7 +213,7 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
187
213
  });
188
214
  })));
189
215
  }
190
- function useFloatingTextFormatToolbar(editor, anchorElem) {
216
+ function useInlineToolbar(editor, anchorElem) {
191
217
  const [isText, setIsText] = useState(false);
192
218
  const updatePopup = useCallback(()=>{
193
219
  editor.getEditorState().read(()=>{
@@ -255,14 +281,14 @@ function useFloatingTextFormatToolbar(editor, anchorElem) {
255
281
  if (!isText) {
256
282
  return null;
257
283
  }
258
- return /*#__PURE__*/ createPortal(/*#__PURE__*/ React.createElement(FloatingSelectToolbar, {
284
+ return /*#__PURE__*/ createPortal(/*#__PURE__*/ React.createElement(InlineToolbar, {
259
285
  anchorElem: anchorElem,
260
286
  editor: editor
261
287
  }), anchorElem);
262
288
  }
263
- export function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
289
+ export function InlineToolbarPlugin({ anchorElem = document.body }) {
264
290
  const [editor] = useLexicalComposerContext();
265
- return useFloatingTextFormatToolbar(editor, anchorElem);
291
+ return useInlineToolbar(editor, anchorElem);
266
292
  }
267
293
 
268
294
  //# sourceMappingURL=index.js.map