@payloadcms/richtext-lexical 4.0.0-internal.2fddfc0 → 4.0.0-internal.314c594

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 (559) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/exports/client/Field-F22V5L4V.js +2 -0
  3. package/dist/exports/client/Field-F22V5L4V.js.map +7 -0
  4. package/dist/exports/client/bundled.css +1 -1
  5. package/dist/exports/client/chunk-43E5QYAA.js +2 -0
  6. package/dist/exports/client/chunk-43E5QYAA.js.map +7 -0
  7. package/dist/exports/client/chunk-LN6VX25I.js +2 -0
  8. package/dist/exports/client/chunk-LN6VX25I.js.map +7 -0
  9. package/dist/exports/client/component-D5QLYS7W.js +2 -0
  10. package/dist/exports/client/component-D5QLYS7W.js.map +7 -0
  11. package/dist/exports/client/index.d.ts +1 -3
  12. package/dist/exports/client/index.d.ts.map +1 -1
  13. package/dist/exports/client/index.js +26 -27
  14. package/dist/exports/client/index.js.map +4 -4
  15. package/dist/features/align/client/toolbarAlignGroup.d.ts.map +1 -1
  16. package/dist/features/blockquote/client/index.js +2 -2
  17. package/dist/features/blockquote/client/index.js.map +1 -1
  18. package/dist/features/blockquote/server/index.js +2 -2
  19. package/dist/features/blockquote/server/index.js.map +1 -1
  20. package/dist/features/blocks/client/component/index.css +2 -2
  21. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.d.ts.map +1 -1
  22. package/dist/features/blocks/client/componentInline/index.css +8 -8
  23. package/dist/features/blocks/client/getBlockImageComponent.d.ts +1 -1
  24. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts +1 -1
  25. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts.map +1 -1
  26. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +1 -1
  27. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -1
  28. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts +1 -1
  29. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts.map +1 -1
  30. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +5 -2
  31. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -1
  32. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts +1 -2
  33. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -1
  34. package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -1
  35. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  36. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  37. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.css +1 -1
  38. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.css +2 -4
  39. package/dist/features/blocks/premade/CodeBlock/Component/index.css +5 -5
  40. package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -1
  41. package/dist/features/blocks/server/index.js +2 -2
  42. package/dist/features/blocks/server/index.js.map +1 -1
  43. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts +1 -1
  44. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -1
  45. package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -1
  46. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  47. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  48. package/dist/features/blocks/server/schema.d.ts.map +1 -1
  49. package/dist/features/blocks/server/schema.js +3 -2
  50. package/dist/features/blocks/server/schema.js.map +1 -1
  51. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  52. package/dist/features/converters/htmlToLexical/index.d.ts.map +1 -1
  53. package/dist/features/converters/lexicalToHtml/shared/cssColors.d.ts.map +1 -1
  54. package/dist/features/converters/lexicalToMarkdown/index.d.ts.map +1 -1
  55. package/dist/features/converters/lexicalToMarkdown/index.js +1 -1
  56. package/dist/features/converters/lexicalToMarkdown/index.js.map +1 -1
  57. package/dist/features/converters/markdownToLexical/index.d.ts.map +1 -1
  58. package/dist/features/converters/markdownToLexical/index.js +5 -2
  59. package/dist/features/converters/markdownToLexical/index.js.map +1 -1
  60. package/dist/features/debug/jsxConverter/client/plugin/style.css +2 -2
  61. package/dist/features/debug/testRecorder/client/plugin/index.css +0 -1
  62. package/dist/features/format/bold/feature.client.js +1 -1
  63. package/dist/features/format/bold/feature.client.js.map +1 -1
  64. package/dist/features/format/bold/feature.server.d.ts.map +1 -1
  65. package/dist/features/format/bold/feature.server.js +1 -1
  66. package/dist/features/format/bold/feature.server.js.map +1 -1
  67. package/dist/features/format/inlineCode/feature.client.js +1 -1
  68. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  69. package/dist/features/format/inlineCode/feature.server.d.ts.map +1 -1
  70. package/dist/features/format/inlineCode/feature.server.js +1 -1
  71. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  72. package/dist/features/format/italic/feature.client.js +1 -1
  73. package/dist/features/format/italic/feature.client.js.map +1 -1
  74. package/dist/features/format/italic/feature.server.d.ts.map +1 -1
  75. package/dist/features/format/italic/feature.server.js +1 -1
  76. package/dist/features/format/italic/feature.server.js.map +1 -1
  77. package/dist/features/format/shared/toolbarFormatGroup.d.ts.map +1 -1
  78. package/dist/features/format/strikethrough/feature.client.js +1 -1
  79. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  80. package/dist/features/format/strikethrough/feature.server.d.ts.map +1 -1
  81. package/dist/features/format/strikethrough/feature.server.js +1 -1
  82. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  83. package/dist/features/heading/client/index.js +2 -2
  84. package/dist/features/heading/client/index.js.map +1 -1
  85. package/dist/features/heading/markdownTransformer.d.ts +2 -2
  86. package/dist/features/heading/markdownTransformer.d.ts.map +1 -1
  87. package/dist/features/heading/markdownTransformer.js +6 -19
  88. package/dist/features/heading/markdownTransformer.js.map +1 -1
  89. package/dist/features/heading/server/index.js +2 -2
  90. package/dist/features/heading/server/index.js.map +1 -1
  91. package/dist/features/heading/server/schema.d.ts.map +1 -1
  92. package/dist/features/horizontalRule/client/index.js +2 -2
  93. package/dist/features/horizontalRule/client/index.js.map +1 -1
  94. package/dist/features/horizontalRule/client/markdownTransformer.d.ts +2 -2
  95. package/dist/features/horizontalRule/client/markdownTransformer.d.ts.map +1 -1
  96. package/dist/features/horizontalRule/client/markdownTransformer.js +1 -1
  97. package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
  98. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +1 -1
  99. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
  100. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +1 -1
  101. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  102. package/dist/features/horizontalRule/client/plugin/index.css +2 -2
  103. package/dist/features/horizontalRule/server/index.js +2 -2
  104. package/dist/features/horizontalRule/server/index.js.map +1 -1
  105. package/dist/features/horizontalRule/server/markdownTransformer.d.ts +2 -2
  106. package/dist/features/horizontalRule/server/markdownTransformer.d.ts.map +1 -1
  107. package/dist/features/horizontalRule/server/markdownTransformer.js +1 -1
  108. package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
  109. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +1 -1
  110. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  111. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +1 -1
  112. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  113. package/dist/features/indent/client/toolbarIndentGroup.d.ts.map +1 -1
  114. package/dist/features/link/client/index.js +2 -2
  115. package/dist/features/link/client/index.js.map +1 -1
  116. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  117. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -3
  118. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  119. package/dist/features/link/client/plugins/floatingLinkEditor/index.css +7 -12
  120. package/dist/features/link/markdownTransformer.d.ts +4 -4
  121. package/dist/features/link/markdownTransformer.d.ts.map +1 -1
  122. package/dist/features/link/markdownTransformer.js +2 -2
  123. package/dist/features/link/markdownTransformer.js.map +1 -1
  124. package/dist/features/link/markdownTransformer.spec.js +10 -10
  125. package/dist/features/link/markdownTransformer.spec.js.map +1 -1
  126. package/dist/features/link/nodes/AutoLinkNode.d.ts +1 -1
  127. package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  128. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  129. package/dist/features/link/nodes/LinkNode.d.ts +1 -1
  130. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  131. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  132. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  133. package/dist/features/link/server/baseFields.js.map +1 -1
  134. package/dist/features/link/server/graphQLPopulationPromise.d.ts.map +1 -1
  135. package/dist/features/link/server/index.js +4 -4
  136. package/dist/features/link/server/index.js.map +1 -1
  137. package/dist/features/link/server/schema.d.ts.map +1 -1
  138. package/dist/features/link/server/schema.js +4 -2
  139. package/dist/features/link/server/schema.js.map +1 -1
  140. package/dist/features/link/server/validate.d.ts.map +1 -1
  141. package/dist/features/lists/checklist/client/index.js +1 -1
  142. package/dist/features/lists/checklist/client/index.js.map +1 -1
  143. package/dist/features/lists/checklist/server/index.js +1 -1
  144. package/dist/features/lists/checklist/server/index.js.map +1 -1
  145. package/dist/features/lists/orderedList/client/index.js +1 -1
  146. package/dist/features/lists/orderedList/client/index.js.map +1 -1
  147. package/dist/features/lists/orderedList/server/index.js +1 -1
  148. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  149. package/dist/features/lists/unorderedList/client/index.js +1 -1
  150. package/dist/features/lists/unorderedList/client/index.js.map +1 -1
  151. package/dist/features/lists/unorderedList/server/index.js +1 -1
  152. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  153. package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
  154. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  155. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
  156. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
  157. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  158. package/dist/features/relationship/server/schema.d.ts +3 -3
  159. package/dist/features/relationship/server/schema.d.ts.map +1 -1
  160. package/dist/features/relationship/server/schema.js +22 -5
  161. package/dist/features/relationship/server/schema.js.map +1 -1
  162. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -1
  163. package/dist/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -1
  164. package/dist/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -1
  165. package/dist/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -1
  166. package/dist/features/table/client/index.d.ts.map +1 -0
  167. package/dist/features/{experimental_table → table}/client/index.js +2 -2
  168. package/dist/features/table/client/index.js.map +1 -0
  169. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -0
  170. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -0
  171. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -0
  172. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js.map +1 -0
  173. package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -0
  174. package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -0
  175. package/dist/features/table/client/plugins/TablePlugin/TableGridPopup/index.d.ts.map +1 -0
  176. package/dist/features/table/client/plugins/TablePlugin/TableGridPopup/index.js.map +1 -0
  177. package/dist/features/table/client/plugins/TablePlugin/index.d.ts.map +1 -0
  178. package/dist/features/table/client/plugins/TablePlugin/index.js.map +1 -0
  179. package/dist/features/table/client/utils/debounce.d.ts.map +1 -0
  180. package/dist/features/table/client/utils/debounce.js.map +1 -0
  181. package/dist/features/table/client/utils/useDebounce.d.ts.map +1 -0
  182. package/dist/features/table/client/utils/useDebounce.js.map +1 -0
  183. package/dist/features/table/markdownTransformer.d.ts +5 -0
  184. package/dist/features/table/markdownTransformer.d.ts.map +1 -0
  185. package/dist/features/{experimental_table → table}/markdownTransformer.js +6 -3
  186. package/dist/features/table/markdownTransformer.js.map +1 -0
  187. package/dist/features/table/server/index.d.ts +3 -0
  188. package/dist/features/table/server/index.d.ts.map +1 -0
  189. package/dist/features/{experimental_table → table}/server/index.js +6 -6
  190. package/dist/features/table/server/index.js.map +1 -0
  191. package/dist/features/table/server/schema.d.ts.map +1 -0
  192. package/dist/features/table/server/schema.js.map +1 -0
  193. package/dist/features/textState/feature.client.js +1 -1
  194. package/dist/features/textState/feature.client.js.map +1 -1
  195. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts +8 -0
  196. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts.map +1 -0
  197. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js +80 -0
  198. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js.map +1 -0
  199. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.spec.js +65 -0
  200. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.spec.js.map +1 -0
  201. package/dist/features/toolbars/fixed/client/Toolbar/index.css +80 -8
  202. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  203. package/dist/features/toolbars/fixed/client/Toolbar/index.js +4 -1
  204. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  205. package/dist/features/toolbars/inline/client/Toolbar/index.css +2 -14
  206. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  207. package/dist/features/toolbars/shared/ToolbarDropdown/index.css +8 -14
  208. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  209. package/dist/features/toolbars/shared/useToolbarStates.d.ts.map +1 -1
  210. package/dist/features/toolbars/shared/useToolbarStates.js +3 -1
  211. package/dist/features/toolbars/shared/useToolbarStates.js.map +1 -1
  212. package/dist/features/typesClient.d.ts +1 -1
  213. package/dist/features/typesClient.d.ts.map +1 -1
  214. package/dist/features/typesClient.js.map +1 -1
  215. package/dist/features/typesServer.d.ts +3 -3
  216. package/dist/features/typesServer.d.ts.map +1 -1
  217. package/dist/features/typesServer.js.map +1 -1
  218. package/dist/features/upload/client/component/index.css +9 -9
  219. package/dist/features/upload/client/component/index.js +2 -1
  220. package/dist/features/upload/client/component/index.js.map +1 -1
  221. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  222. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  223. package/dist/features/upload/client/plugin/index.js +5 -5
  224. package/dist/features/upload/client/plugin/index.js.map +1 -1
  225. package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
  226. package/dist/features/upload/server/index.js +4 -4
  227. package/dist/features/upload/server/index.js.map +1 -1
  228. package/dist/features/upload/server/markdownTransformer.d.ts +2 -2
  229. package/dist/features/upload/server/markdownTransformer.d.ts.map +1 -1
  230. package/dist/features/upload/server/markdownTransformer.js +1 -1
  231. package/dist/features/upload/server/markdownTransformer.js.map +1 -1
  232. package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
  233. package/dist/features/upload/server/schema.d.ts +4 -4
  234. package/dist/features/upload/server/schema.d.ts.map +1 -1
  235. package/dist/features/upload/server/schema.js +26 -6
  236. package/dist/features/upload/server/schema.js.map +1 -1
  237. package/dist/features/upload/server/validate.d.ts.map +1 -1
  238. package/dist/field/Diff/converters/unknown/index.css +1 -1
  239. package/dist/field/Field.d.ts.map +1 -1
  240. package/dist/field/Field.js +18 -15
  241. package/dist/field/Field.js.map +1 -1
  242. package/dist/field/ViewSelector.css +1 -1
  243. package/dist/field/bundled.css +1 -1
  244. package/dist/field/index.css +4 -4
  245. package/dist/i18n.d.ts.map +1 -1
  246. package/dist/i18n.js +68 -0
  247. package/dist/i18n.js.map +1 -1
  248. package/dist/index.d.ts +3 -3
  249. package/dist/index.d.ts.map +1 -1
  250. package/dist/index.js +11 -54
  251. package/dist/index.js.map +1 -1
  252. package/dist/lexical/LexicalEditor.css +18 -18
  253. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  254. package/dist/lexical/LexicalEditor.js +2 -36
  255. package/dist/lexical/LexicalEditor.js.map +1 -1
  256. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  257. package/dist/lexical/LexicalProvider.js +7 -22
  258. package/dist/lexical/LexicalProvider.js.map +1 -1
  259. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  260. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  261. package/dist/lexical/config/server/loader.d.ts +1 -1
  262. package/dist/lexical/config/server/loader.d.ts.map +1 -1
  263. package/dist/lexical/config/server/loader.js +2 -2
  264. package/dist/lexical/config/server/loader.js.map +1 -1
  265. package/dist/lexical/config/server/sanitize.d.ts +1 -1
  266. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  267. package/dist/lexical/config/server/sanitize.js +2 -2
  268. package/dist/lexical/config/server/sanitize.js.map +1 -1
  269. package/dist/lexical/plugins/DecoratorPlugin/index.css +1 -1
  270. package/dist/lexical/plugins/InsertParagraphAtEnd/index.css +16 -24
  271. package/dist/lexical/plugins/InsertParagraphAtEnd/index.d.ts.map +1 -1
  272. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +27 -14
  273. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
  274. package/dist/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
  275. package/dist/lexical/plugins/MarkdownShortcut/index.js +1 -1
  276. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  277. package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts.map +1 -1
  278. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js +21 -0
  279. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +1 -1
  280. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +0 -1
  281. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  282. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +1 -20
  283. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  284. package/dist/lexical/plugins/SlashMenu/index.css +1 -6
  285. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.css +1 -1
  286. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  287. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +4 -3
  288. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
  289. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  290. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -1
  291. package/dist/lexical/theme/EditorTheme.css +18 -19
  292. package/dist/lexical/ui/ContentEditable.css +22 -17
  293. package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts +17 -0
  294. package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts.map +1 -0
  295. package/dist/lexical/utils/markdown/convertFromMarkdownString.js +27 -0
  296. package/dist/lexical/utils/markdown/convertFromMarkdownString.js.map +1 -0
  297. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +88 -0
  298. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +1 -0
  299. package/dist/lexical/utils/markdown/createBlockNode.d.ts +2 -2
  300. package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
  301. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  302. package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts +25 -0
  303. package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts.map +1 -0
  304. package/dist/lexical/utils/markdown/normalizeMarkdown.js +91 -0
  305. package/dist/lexical/utils/markdown/normalizeMarkdown.js.map +1 -0
  306. package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
  307. package/dist/lexical/utils/point.d.ts.map +1 -1
  308. package/dist/lexical/utils/rect.d.ts.map +1 -1
  309. package/dist/lexical-proxy/@lexical-markdown.d.ts +1 -1
  310. package/dist/lexical-proxy/@lexical-markdown.d.ts.map +1 -1
  311. package/dist/lexical-proxy/@lexical-markdown.js +1 -1
  312. package/dist/lexical-proxy/@lexical-markdown.js.map +1 -1
  313. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts +2 -0
  314. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts.map +1 -0
  315. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js +2 -0
  316. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js.map +1 -0
  317. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts +2 -0
  318. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts.map +1 -0
  319. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js +2 -0
  320. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js.map +1 -0
  321. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts +2 -0
  322. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts.map +1 -0
  323. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js +2 -0
  324. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js.map +1 -0
  325. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts +2 -0
  326. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts.map +1 -0
  327. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js +2 -0
  328. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js.map +1 -0
  329. package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts +2 -0
  330. package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts.map +1 -0
  331. package/dist/lexical-proxy/@lexical-react/ReactExtension.js +2 -0
  332. package/dist/lexical-proxy/@lexical-react/ReactExtension.js.map +1 -0
  333. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts +2 -0
  334. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts.map +1 -0
  335. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js +2 -0
  336. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js.map +1 -0
  337. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts +2 -0
  338. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts.map +1 -0
  339. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js +2 -0
  340. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js.map +1 -0
  341. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts +2 -0
  342. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts.map +1 -0
  343. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js +2 -0
  344. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js.map +1 -0
  345. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts +2 -0
  346. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts.map +1 -0
  347. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js +2 -0
  348. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js.map +1 -0
  349. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts +2 -0
  350. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts.map +1 -0
  351. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js +2 -0
  352. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js.map +1 -0
  353. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts +2 -0
  354. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts.map +1 -0
  355. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js +2 -0
  356. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js.map +1 -0
  357. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts +2 -0
  358. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts.map +1 -0
  359. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js +2 -0
  360. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js.map +1 -0
  361. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts +2 -0
  362. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts.map +1 -0
  363. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js +2 -0
  364. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js.map +1 -0
  365. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts +2 -0
  366. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts.map +1 -0
  367. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js +2 -0
  368. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js.map +1 -0
  369. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts +2 -0
  370. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts.map +1 -0
  371. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js +2 -0
  372. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js.map +1 -0
  373. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  374. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -1
  375. package/dist/types/index.d.ts +1 -1
  376. package/dist/types/index.d.ts.map +1 -1
  377. package/dist/types/index.js.map +1 -1
  378. package/dist/types/jsonSchemaHelpers.d.ts.map +1 -1
  379. package/dist/types/nodeTypes.d.ts +1 -1
  380. package/dist/types/nodeTypes.d.ts.map +1 -1
  381. package/dist/types/nodeTypes.js.map +1 -1
  382. package/dist/types/schema.d.ts.map +1 -1
  383. package/dist/types/schema.js +12 -5
  384. package/dist/types/schema.js.map +1 -1
  385. package/dist/utilities/applyBaseFilterToFields.d.ts.map +1 -1
  386. package/dist/utilities/applyBaseFilterToFields.js.map +1 -1
  387. package/dist/utilities/createServerFeature.d.ts +1 -1
  388. package/dist/utilities/createServerFeature.d.ts.map +1 -1
  389. package/dist/utilities/createServerFeature.js +2 -2
  390. package/dist/utilities/createServerFeature.js.map +1 -1
  391. package/dist/utilities/editorConfigFactory.d.ts +6 -6
  392. package/dist/utilities/editorConfigFactory.d.ts.map +1 -1
  393. package/dist/utilities/editorConfigFactory.js +9 -9
  394. package/dist/utilities/editorConfigFactory.js.map +1 -1
  395. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts +1 -1
  396. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts.map +1 -1
  397. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -1
  398. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -1
  399. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -1
  400. package/dist/utilities/generateImportMap.d.ts +1 -1
  401. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  402. package/dist/utilities/generateImportMap.js +3 -7
  403. package/dist/utilities/generateImportMap.js.map +1 -1
  404. package/dist/utilities/generateSchemaMap.d.ts +1 -1
  405. package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
  406. package/dist/utilities/getDefaultSanitizedEditorConfig.d.ts +2 -2
  407. package/dist/utilities/getDefaultSanitizedEditorConfig.d.ts.map +1 -1
  408. package/dist/utilities/getDefaultSanitizedEditorConfig.js +6 -17
  409. package/dist/utilities/getDefaultSanitizedEditorConfig.js.map +1 -1
  410. package/dist/utilities/recurseNodeTree.d.ts.map +1 -1
  411. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
  412. package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
  413. package/dist/validate/index.d.ts.map +1 -1
  414. package/package.json +95 -27
  415. package/dist/@types/assets.d.js +0 -2
  416. package/dist/@types/assets.d.js.map +0 -1
  417. package/dist/exports/client/Field-VW7ZGT6K.js +0 -2
  418. package/dist/exports/client/Field-VW7ZGT6K.js.map +0 -7
  419. package/dist/exports/client/chunk-4EIYXZ6H.js +0 -12
  420. package/dist/exports/client/chunk-4EIYXZ6H.js.map +0 -7
  421. package/dist/exports/client/chunk-UD4DQ4AK.js +0 -2
  422. package/dist/exports/client/chunk-UD4DQ4AK.js.map +0 -7
  423. package/dist/exports/client/component-PHZQBOJE.js +0 -2
  424. package/dist/exports/client/component-PHZQBOJE.js.map +0 -7
  425. package/dist/exports/server/rsc.browser.d.ts +0 -11
  426. package/dist/exports/server/rsc.browser.d.ts.map +0 -1
  427. package/dist/exports/server/rsc.browser.js +0 -10
  428. package/dist/exports/server/rsc.browser.js.map +0 -1
  429. package/dist/features/blockquote/markdownTransformer.d.ts +0 -3
  430. package/dist/features/blockquote/markdownTransformer.d.ts.map +0 -1
  431. package/dist/features/blockquote/markdownTransformer.js +0 -33
  432. package/dist/features/blockquote/markdownTransformer.js.map +0 -1
  433. package/dist/features/experimental_table/client/index.d.ts.map +0 -1
  434. package/dist/features/experimental_table/client/index.js.map +0 -1
  435. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +0 -1
  436. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +0 -1
  437. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +0 -1
  438. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +0 -1
  439. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +0 -1
  440. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +0 -1
  441. package/dist/features/experimental_table/client/plugins/TablePlugin/TableGridPopup/index.d.ts.map +0 -1
  442. package/dist/features/experimental_table/client/plugins/TablePlugin/TableGridPopup/index.js.map +0 -1
  443. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +0 -1
  444. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +0 -1
  445. package/dist/features/experimental_table/client/utils/debounce.d.ts.map +0 -1
  446. package/dist/features/experimental_table/client/utils/debounce.js.map +0 -1
  447. package/dist/features/experimental_table/client/utils/useDebounce.d.ts.map +0 -1
  448. package/dist/features/experimental_table/client/utils/useDebounce.js.map +0 -1
  449. package/dist/features/experimental_table/markdownTransformer.d.ts +0 -5
  450. package/dist/features/experimental_table/markdownTransformer.d.ts.map +0 -1
  451. package/dist/features/experimental_table/markdownTransformer.js.map +0 -1
  452. package/dist/features/experimental_table/server/index.d.ts +0 -3
  453. package/dist/features/experimental_table/server/index.d.ts.map +0 -1
  454. package/dist/features/experimental_table/server/index.js.map +0 -1
  455. package/dist/features/experimental_table/server/schema.d.ts.map +0 -1
  456. package/dist/features/experimental_table/server/schema.js.map +0 -1
  457. package/dist/features/format/bold/markdownTransformers.d.ts +0 -6
  458. package/dist/features/format/bold/markdownTransformers.d.ts.map +0 -1
  459. package/dist/features/format/bold/markdownTransformers.js +0 -23
  460. package/dist/features/format/bold/markdownTransformers.js.map +0 -1
  461. package/dist/features/format/inlineCode/markdownTransformers.d.ts +0 -3
  462. package/dist/features/format/inlineCode/markdownTransformers.d.ts.map +0 -1
  463. package/dist/features/format/inlineCode/markdownTransformers.js +0 -6
  464. package/dist/features/format/inlineCode/markdownTransformers.js.map +0 -1
  465. package/dist/features/format/italic/markdownTransformers.d.ts +0 -4
  466. package/dist/features/format/italic/markdownTransformers.d.ts.map +0 -1
  467. package/dist/features/format/italic/markdownTransformers.js +0 -12
  468. package/dist/features/format/italic/markdownTransformers.js.map +0 -1
  469. package/dist/features/format/strikethrough/markdownTransformers.d.ts +0 -3
  470. package/dist/features/format/strikethrough/markdownTransformers.d.ts.map +0 -1
  471. package/dist/features/format/strikethrough/markdownTransformers.js +0 -6
  472. package/dist/features/format/strikethrough/markdownTransformers.js.map +0 -1
  473. package/dist/features/lists/checklist/markdownTransformers.d.ts +0 -3
  474. package/dist/features/lists/checklist/markdownTransformers.d.ts.map +0 -1
  475. package/dist/features/lists/checklist/markdownTransformers.js +0 -12
  476. package/dist/features/lists/checklist/markdownTransformers.js.map +0 -1
  477. package/dist/features/lists/orderedList/markdownTransformer.d.ts +0 -3
  478. package/dist/features/lists/orderedList/markdownTransformer.d.ts.map +0 -1
  479. package/dist/features/lists/orderedList/markdownTransformer.js +0 -12
  480. package/dist/features/lists/orderedList/markdownTransformer.js.map +0 -1
  481. package/dist/features/lists/shared/markdown.d.ts +0 -6
  482. package/dist/features/lists/shared/markdown.d.ts.map +0 -1
  483. package/dist/features/lists/shared/markdown.js +0 -57
  484. package/dist/features/lists/shared/markdown.js.map +0 -1
  485. package/dist/features/lists/unorderedList/markdownTransformer.d.ts +0 -3
  486. package/dist/features/lists/unorderedList/markdownTransformer.d.ts.map +0 -1
  487. package/dist/features/lists/unorderedList/markdownTransformer.js +0 -12
  488. package/dist/features/lists/unorderedList/markdownTransformer.js.map +0 -1
  489. package/dist/field/clientEntry.d.ts +0 -29
  490. package/dist/field/clientEntry.d.ts.map +0 -1
  491. package/dist/field/clientEntry.js +0 -86
  492. package/dist/field/clientEntry.js.map +0 -1
  493. package/dist/lexical/utils/guard.d.ts +0 -5
  494. package/dist/lexical/utils/guard.d.ts.map +0 -1
  495. package/dist/lexical/utils/guard.js +0 -9
  496. package/dist/lexical/utils/guard.js.map +0 -1
  497. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts +0 -2
  498. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts.map +0 -1
  499. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +0 -2
  500. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +0 -1
  501. package/dist/packages/@lexical/markdown/LexicalMarkdownHardLineBreak.spec.js +0 -160
  502. package/dist/packages/@lexical/markdown/LexicalMarkdownHardLineBreak.spec.js.map +0 -1
  503. package/dist/packages/@lexical/markdown/MarkdownExport.d.ts +0 -14
  504. package/dist/packages/@lexical/markdown/MarkdownExport.d.ts.map +0 -1
  505. package/dist/packages/@lexical/markdown/MarkdownExport.js +0 -220
  506. package/dist/packages/@lexical/markdown/MarkdownExport.js.map +0 -1
  507. package/dist/packages/@lexical/markdown/MarkdownImport.d.ts +0 -19
  508. package/dist/packages/@lexical/markdown/MarkdownImport.d.ts.map +0 -1
  509. package/dist/packages/@lexical/markdown/MarkdownImport.js +0 -199
  510. package/dist/packages/@lexical/markdown/MarkdownImport.js.map +0 -1
  511. package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts +0 -11
  512. package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts.map +0 -1
  513. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js +0 -304
  514. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js.map +0 -1
  515. package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts +0 -173
  516. package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts.map +0 -1
  517. package/dist/packages/@lexical/markdown/MarkdownTransformers.js +0 -352
  518. package/dist/packages/@lexical/markdown/MarkdownTransformers.js.map +0 -1
  519. package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts +0 -22
  520. package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts.map +0 -1
  521. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js +0 -91
  522. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js.map +0 -1
  523. package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts +0 -21
  524. package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts.map +0 -1
  525. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js +0 -54
  526. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js.map +0 -1
  527. package/dist/packages/@lexical/markdown/importTextTransformers.d.ts +0 -18
  528. package/dist/packages/@lexical/markdown/importTextTransformers.d.ts.map +0 -1
  529. package/dist/packages/@lexical/markdown/importTextTransformers.js +0 -54
  530. package/dist/packages/@lexical/markdown/importTextTransformers.js.map +0 -1
  531. package/dist/packages/@lexical/markdown/index.d.ts +0 -29
  532. package/dist/packages/@lexical/markdown/index.d.ts.map +0 -1
  533. package/dist/packages/@lexical/markdown/index.js +0 -39
  534. package/dist/packages/@lexical/markdown/index.js.map +0 -1
  535. package/dist/packages/@lexical/markdown/utils.d.ts +0 -34
  536. package/dist/packages/@lexical/markdown/utils.d.ts.map +0 -1
  537. package/dist/packages/@lexical/markdown/utils.js +0 -267
  538. package/dist/packages/@lexical/markdown/utils.js.map +0 -1
  539. /package/dist/features/{experimental_table → table}/client/index.d.ts +0 -0
  540. /package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.css +0 -0
  541. /package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.d.ts +0 -0
  542. /package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.js +0 -0
  543. /package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.css +0 -0
  544. /package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.d.ts +0 -0
  545. /package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.js +0 -0
  546. /package/dist/features/{experimental_table → table}/client/plugins/TableHoverActionsPlugin/index.d.ts +0 -0
  547. /package/dist/features/{experimental_table → table}/client/plugins/TableHoverActionsPlugin/index.js +0 -0
  548. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.css +0 -0
  549. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.d.ts +0 -0
  550. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.js +0 -0
  551. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.css +0 -0
  552. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.d.ts +0 -0
  553. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.js +0 -0
  554. /package/dist/features/{experimental_table → table}/client/utils/debounce.d.ts +0 -0
  555. /package/dist/features/{experimental_table → table}/client/utils/debounce.js +0 -0
  556. /package/dist/features/{experimental_table → table}/client/utils/useDebounce.d.ts +0 -0
  557. /package/dist/features/{experimental_table → table}/client/utils/useDebounce.js +0 -0
  558. /package/dist/features/{experimental_table → table}/server/schema.d.ts +0 -0
  559. /package/dist/features/{experimental_table → table}/server/schema.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownTransformer.js","names":["$convertToMarkdownString","$createTableCellNode","$createTableNode","$createTableRowNode","$isTableCellNode","$isTableNode","$isTableRowNode","TableCellHeaderStates","TableCellNode","TableNode","TableRowNode","$isParagraphNode","$isTextNode","$convertFromMarkdownString","TABLE_ROW_REG_EXP","TABLE_ROW_DIVIDER_REG_EXP","PAYLOAD_TABLE","allTransformers","type","dependencies","export","node","output","row","getChildren","rowOutput","isHeaderRow","cell","push","replace","trim","__headerState","ROW","join","map","_","regExp","parentNode","_1","match","match0","test","table","getPreviousSibling","rows","lastRow","length","forEach","setHeaderStyles","remove","matchCells","mapToTableCells","sibling","maxCells","getChildrenSize","firstChild","getFirstChild","cells","getTextContent","Math","max","unshift","previousSibling","tableRow","append","i","$createTableCell","getTableColumnsSize","selectEnd","textContent","NO_STATUS","split","text"],"sources":["../../../src/features/table/markdownTransformer.ts"],"sourcesContent":["import type { LexicalNode } from 'lexical'\n\nimport {\n $convertToMarkdownString,\n type ElementTransformer,\n type Transformer,\n} from '@lexical/markdown'\nimport {\n $createTableCellNode,\n $createTableNode,\n $createTableRowNode,\n $isTableCellNode,\n $isTableNode,\n $isTableRowNode,\n TableCellHeaderStates,\n TableCellNode,\n TableNode,\n TableRowNode,\n} from '@lexical/table'\nimport { $isParagraphNode, $isTextNode } from 'lexical'\n\nimport { $convertFromMarkdownString } from '../../lexical/utils/markdown/convertFromMarkdownString.js'\n\n// Very primitive table setup\nconst TABLE_ROW_REG_EXP = /^\\|(.+)\\|\\s?$/\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst TABLE_ROW_DIVIDER_REG_EXP = /^(\\| ?:?-*:? ?)+\\|\\s?$/\n\nexport const PAYLOAD_TABLE: (props: { allTransformers: Transformer[] }) => ElementTransformer = ({\n allTransformers,\n}) => ({\n type: 'element',\n dependencies: [TableNode, TableRowNode, TableCellNode],\n export: (node: LexicalNode) => {\n if (!$isTableNode(node)) {\n return null\n }\n\n const output: string[] = []\n\n for (const row of node.getChildren()) {\n const rowOutput: string[] = []\n if (!$isTableRowNode(row)) {\n continue\n }\n\n let isHeaderRow = false\n for (const cell of row.getChildren()) {\n // It's TableCellNode, so it's just to make flow happy\n if ($isTableCellNode(cell)) {\n rowOutput.push(\n $convertToMarkdownString(allTransformers, cell).replace(/\\n/g, '\\\\n').trim(),\n )\n\n if (cell.__headerState === TableCellHeaderStates.ROW) {\n isHeaderRow = true\n }\n }\n }\n\n output.push(`| ${rowOutput.join(' | ')} |`)\n if (isHeaderRow) {\n output.push(`| ${rowOutput.map((_) => '---').join(' | ')} |`)\n }\n }\n\n return output.join('\\n')\n },\n regExp: TABLE_ROW_REG_EXP,\n replace: (parentNode, _1, match) => {\n const match0 = match[0]\n if (!match0) {\n return\n }\n // Header row\n if (TABLE_ROW_DIVIDER_REG_EXP.test(match0)) {\n const table = parentNode.getPreviousSibling()\n if (!table || !$isTableNode(table)) {\n return\n }\n\n const rows = table.getChildren()\n const lastRow = rows[rows.length - 1]\n if (!lastRow || !$isTableRowNode(lastRow)) {\n return\n }\n\n // Add header state to row cells\n lastRow.getChildren().forEach((cell) => {\n if (!$isTableCellNode(cell)) {\n return\n }\n cell.setHeaderStyles(TableCellHeaderStates.ROW, TableCellHeaderStates.ROW)\n })\n\n // Remove line\n parentNode.remove()\n return\n }\n\n const matchCells = mapToTableCells(match0, allTransformers)\n\n if (matchCells == null) {\n return\n }\n\n const rows = [matchCells]\n let sibling = parentNode.getPreviousSibling()\n let maxCells = matchCells.length\n\n while (sibling) {\n if (!$isParagraphNode(sibling)) {\n break\n }\n\n if (sibling.getChildrenSize() !== 1) {\n break\n }\n\n const firstChild = sibling.getFirstChild()\n\n if (!$isTextNode(firstChild)) {\n break\n }\n\n const cells = mapToTableCells(firstChild.getTextContent(), allTransformers)\n\n if (cells == null) {\n break\n }\n\n maxCells = Math.max(maxCells, cells.length)\n rows.unshift(cells)\n const previousSibling = sibling.getPreviousSibling()\n sibling.remove()\n sibling = previousSibling\n }\n\n const table = $createTableNode()\n\n for (const cells of rows) {\n const tableRow = $createTableRowNode()\n table.append(tableRow)\n\n for (let i = 0; i < maxCells; i++) {\n tableRow.append(i < cells.length ? cells[i]! : $createTableCell('', allTransformers))\n }\n }\n\n const previousSibling = parentNode.getPreviousSibling()\n if ($isTableNode(previousSibling) && getTableColumnsSize(previousSibling) === maxCells) {\n previousSibling.append(...table.getChildren())\n parentNode.remove()\n } else {\n parentNode.replace(table)\n }\n\n table.selectEnd()\n },\n})\n\nfunction getTableColumnsSize(table: TableNode) {\n const row = table.getFirstChild()\n return $isTableRowNode(row) ? row.getChildrenSize() : 0\n}\n\nconst $createTableCell = (textContent: string, allTransformers: Transformer[]): TableCellNode => {\n textContent = textContent.replace(/\\\\n/g, '\\n')\n const cell = $createTableCellNode(TableCellHeaderStates.NO_STATUS)\n // shouldMergeAdjacentLines is true to preserve how cell content was parsed\n // before the exported $convertFromMarkdownString default changed to false.\n $convertFromMarkdownString(textContent, allTransformers, cell, false, true)\n return cell\n}\n\nconst mapToTableCells = (\n textContent: string,\n allTransformers: Transformer[],\n): Array<TableCellNode> | null => {\n const match = textContent.match(TABLE_ROW_REG_EXP)\n if (!match || !match[1]) {\n return null\n }\n return match[1].split('|').map((text) => $createTableCell(text, allTransformers))\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export type { SerializedTableCellNode, SerializedTableNode, SerializedTableRowNode, } from './schema.js';
2
+ export declare const TableFeature: import("../../typesServer.js").FeatureProviderProviderServer<undefined, undefined, undefined>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/table/server/index.ts"],"names":[],"mappings":"AAUA,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAiBpB,eAAO,MAAM,YAAY,+FAwCvB,CAAA"}
@@ -2,7 +2,7 @@ import { TableCellNode, TableNode, TableRowNode } from '@lexical/table';
2
2
  import { sanitizeFields } from 'payload';
3
3
  import { createServerFeature } from '../../../utilities/createServerFeature.js';
4
4
  import { createNode } from '../../typeUtilities.js';
5
- import { TableMarkdownTransformer } from '../markdownTransformer.js';
5
+ import { PAYLOAD_TABLE } from '../markdownTransformer.js';
6
6
  import { tableCellNodeJSONSchema, tableNodeJSONSchema, tableRowNodeJSONSchema } from './schema.js';
7
7
  const fields = [{
8
8
  name: 'rows',
@@ -15,14 +15,14 @@ const fields = [{
15
15
  defaultValue: 5,
16
16
  required: true
17
17
  }];
18
- export const EXPERIMENTAL_TableFeature = createServerFeature({
19
- feature: async ({
18
+ export const TableFeature = createServerFeature({
19
+ feature: ({
20
20
  config,
21
21
  isRoot,
22
22
  parentIsLocalized
23
23
  }) => {
24
24
  const validRelationships = config.collections.map(c => c.slug) || [];
25
- const sanitizedFields = await sanitizeFields({
25
+ const sanitizedFields = sanitizeFields({
26
26
  config: config,
27
27
  fields,
28
28
  parentIsLocalized,
@@ -38,7 +38,7 @@ export const EXPERIMENTAL_TableFeature = createServerFeature({
38
38
  });
39
39
  return schemaMap;
40
40
  },
41
- markdownTransformers: [TableMarkdownTransformer],
41
+ markdownTransformers: [PAYLOAD_TABLE],
42
42
  nodes: [createNode({
43
43
  jsonSchema: tableNodeJSONSchema,
44
44
  node: TableNode
@@ -51,6 +51,6 @@ export const EXPERIMENTAL_TableFeature = createServerFeature({
51
51
  })]
52
52
  };
53
53
  },
54
- key: 'experimental_table'
54
+ key: 'table'
55
55
  });
56
56
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["TableCellNode","TableNode","TableRowNode","sanitizeFields","createServerFeature","createNode","PAYLOAD_TABLE","tableCellNodeJSONSchema","tableNodeJSONSchema","tableRowNodeJSONSchema","fields","name","type","defaultValue","required","TableFeature","feature","config","isRoot","parentIsLocalized","validRelationships","collections","map","c","slug","sanitizedFields","requireFieldLevelRichTextEditor","ClientFeature","generateSchemaMap","schemaMap","Map","set","markdownTransformers","nodes","jsonSchema","node","key"],"sources":["../../../../src/features/table/server/index.ts"],"sourcesContent":["import type { Config, Field, FieldSchemaMap } from 'payload'\n\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\nimport { sanitizeFields } from 'payload'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { PAYLOAD_TABLE } from '../markdownTransformer.js'\nimport { tableCellNodeJSONSchema, tableNodeJSONSchema, tableRowNodeJSONSchema } from './schema.js'\n\nexport type {\n SerializedTableCellNode,\n SerializedTableNode,\n SerializedTableRowNode,\n} from './schema.js'\n\nconst fields: Field[] = [\n {\n name: 'rows',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n {\n name: 'columns',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n]\n\nexport const TableFeature = createServerFeature({\n feature: ({ config, isRoot, parentIsLocalized }) => {\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n const sanitizedFields = sanitizeFields({\n config: config as unknown as Config,\n fields,\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#TableFeatureClient',\n generateSchemaMap: () => {\n const schemaMap: FieldSchemaMap = new Map()\n\n schemaMap.set('fields', {\n fields: sanitizedFields,\n })\n\n return schemaMap\n },\n markdownTransformers: [PAYLOAD_TABLE],\n nodes: [\n createNode({\n jsonSchema: tableNodeJSONSchema,\n node: TableNode,\n }),\n createNode({\n jsonSchema: tableCellNodeJSONSchema,\n node: TableCellNode,\n }),\n createNode({\n jsonSchema: tableRowNodeJSONSchema,\n node: TableRowNode,\n }),\n ],\n }\n },\n key: 'table',\n})\n"],"mappings":"AAEA,SAASA,aAAa,EAAEC,SAAS,EAAEC,YAAY,QAAQ;AACvD,SAASC,cAAc,QAAQ;AAE/B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,aAAa,QAAQ;AAC9B,SAASC,uBAAuB,EAAEC,mBAAmB,EAAEC,sBAAsB,QAAQ;AAQrF,MAAMC,MAAA,GAAkB,CACtB;EACEC,IAAA,EAAM;EACNC,IAAA,EAAM;EACNC,YAAA,EAAc;EACdC,QAAA,EAAU;AACZ,GACA;EACEH,IAAA,EAAM;EACNC,IAAA,EAAM;EACNC,YAAA,EAAc;EACdC,QAAA,EAAU;AACZ,EACD;AAED,OAAO,MAAMC,YAAA,GAAeX,mBAAA,CAAoB;EAC9CY,OAAA,EAASA,CAAC;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAiB,CAAE;IAC7C,MAAMC,kBAAA,GAAqBH,MAAA,CAAOI,WAAW,CAACC,GAAG,CAAEC,CAAA,IAAMA,CAAA,CAAEC,IAAI,KAAK,EAAE;IAEtE,MAAMC,eAAA,GAAkBtB,cAAA,CAAe;MACrCc,MAAA,EAAQA,MAAA;MACRP,MAAA;MACAS,iBAAA;MACAO,+BAAA,EAAiCR,MAAA;MACjCE;IACF;IACA,OAAO;MACLO,aAAA,EAAe;MACfC,iBAAA,EAAmBA,CAAA;QACjB,MAAMC,SAAA,GAA4B,IAAIC,GAAA;QAEtCD,SAAA,CAAUE,GAAG,CAAC,UAAU;UACtBrB,MAAA,EAAQe;QACV;QAEA,OAAOI,SAAA;MACT;MACAG,oBAAA,EAAsB,CAAC1B,aAAA,CAAc;MACrC2B,KAAA,EAAO,CACL5B,UAAA,CAAW;QACT6B,UAAA,EAAY1B,mBAAA;QACZ2B,IAAA,EAAMlC;MACR,IACAI,UAAA,CAAW;QACT6B,UAAA,EAAY3B,uBAAA;QACZ4B,IAAA,EAAMnC;MACR,IACAK,UAAA,CAAW;QACT6B,UAAA,EAAYzB,sBAAA;QACZ0B,IAAA,EAAMjC;MACR;IAEJ;EACF;EACAkC,GAAA,EAAK;AACP","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/table/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,MAAM,WAAW,uBAAuB,CACtC,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,CAC/D,SAAQ,4BAA4B,CAAC,SAAS,CAAC;IAC/C,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,WAAW,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB,CAClC,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,CAC/D,SAAQ,4BAA4B,CAAC,SAAS,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,sBAAsB,CACrC,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,CAC/D,SAAQ,4BAA4B,CAAC,SAAS,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;CACjB;AA2BD,eAAO,MAAM,mBAAmB,EAAE,YAgBjC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,YAuBrC,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,YAWpC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":["TABLE_NODES_TS","tableNodeJSONSchema","elementNodeSchema","nodeUnionName","typeStringDefinitions","add","nodeType","properties","colWidths","type","items","frozenColumnCount","frozenRowCount","rowStriping","tsType","tableCellNodeJSONSchema","backgroundColor","oneOf","colSpan","description","headerState","rowSpan","verticalAlign","width","required","tableRowNodeJSONSchema","height"],"sources":["../../../../src/features/table/server/schema.ts"],"sourcesContent":["import type { SerializedLexicalNode } from 'lexical'\n\nimport type { SerializedLexicalElementBase } from '../../../types/nodeTypes.js'\nimport type { JSONSchemaFn } from '../../typesServer.js'\n\nexport interface SerializedTableCellNode<\n TChildren extends SerializedLexicalNode = SerializedLexicalNode,\n> extends SerializedLexicalElementBase<TChildren> {\n backgroundColor?: null | string\n colSpan?: number\n headerState: number\n rowSpan?: number\n type: 'tablecell'\n verticalAlign?: string\n width?: number\n}\n\nexport interface SerializedTableNode<\n TChildren extends SerializedLexicalNode = SerializedLexicalNode,\n> extends SerializedLexicalElementBase<TChildren> {\n colWidths?: number[]\n frozenColumnCount?: number\n frozenRowCount?: number\n rowStriping?: boolean\n type: 'table'\n}\n\nexport interface SerializedTableRowNode<\n TChildren extends SerializedLexicalNode = SerializedLexicalNode,\n> extends SerializedLexicalElementBase<TChildren> {\n height?: number\n type: 'tablerow'\n}\n\n/**\n * MUST stay byte-for-byte in sync with the runtime `SerializedTableNode`,\n * `SerializedTableRowNode`, and `SerializedTableCellNode` declared above.\n */\nconst TABLE_NODES_TS = `export interface SerializedTableNode<TChildren> extends SerializedLexicalElementBase<TChildren> {\n type: 'table';\n colWidths?: number[];\n frozenColumnCount?: number;\n frozenRowCount?: number;\n rowStriping?: boolean;\n}\nexport interface SerializedTableRowNode<TChildren> extends SerializedLexicalElementBase<TChildren> {\n type: 'tablerow';\n height?: number;\n}\nexport interface SerializedTableCellNode<TChildren> extends SerializedLexicalElementBase<TChildren> {\n type: 'tablecell';\n backgroundColor?: string | null;\n colSpan?: number;\n headerState: number;\n rowSpan?: number;\n verticalAlign?: string;\n width?: number;\n}`\n\nexport const tableNodeJSONSchema: JSONSchemaFn = ({\n elementNodeSchema,\n nodeUnionName,\n typeStringDefinitions,\n}) => {\n typeStringDefinitions.add(TABLE_NODES_TS)\n return elementNodeSchema({\n nodeType: 'table',\n properties: {\n colWidths: { type: 'array', items: { type: 'number' } },\n frozenColumnCount: { type: 'integer' },\n frozenRowCount: { type: 'integer' },\n rowStriping: { type: 'boolean' },\n },\n tsType: `SerializedTableNode<${nodeUnionName}>`,\n })\n}\n\nexport const tableCellNodeJSONSchema: JSONSchemaFn = ({\n elementNodeSchema,\n nodeUnionName,\n typeStringDefinitions,\n}) => {\n typeStringDefinitions.add(TABLE_NODES_TS)\n return elementNodeSchema({\n nodeType: 'tablecell',\n properties: {\n backgroundColor: { oneOf: [{ type: 'string' }, { type: 'null' }] },\n colSpan: { type: 'integer', description: 'How many columns this cell spans (default 1).' },\n headerState: {\n type: 'integer',\n description:\n 'Header bitmask: 0 = normal cell, 1 = row header, 2 = column header, 3 = both.',\n },\n rowSpan: { type: 'integer', description: 'How many rows this cell spans (default 1).' },\n verticalAlign: { type: 'string' },\n width: { type: 'integer' },\n },\n required: ['headerState'],\n tsType: `SerializedTableCellNode<${nodeUnionName}>`,\n })\n}\n\nexport const tableRowNodeJSONSchema: JSONSchemaFn = ({\n elementNodeSchema,\n nodeUnionName,\n typeStringDefinitions,\n}) => {\n typeStringDefinitions.add(TABLE_NODES_TS)\n return elementNodeSchema({\n nodeType: 'tablerow',\n properties: { height: { type: 'integer' } },\n tsType: `SerializedTableRowNode<${nodeUnionName}>`,\n })\n}\n"],"mappings":"AAkCA;;;GAIA,MAAMA,cAAA,GAAiB;;;;;;;;;;;;;;;;;;;EAmBrB;AAEF,OAAO,MAAMC,mBAAA,GAAoCA,CAAC;EAChDC,iBAAiB;EACjBC,aAAa;EACbC;AAAqB,CACtB;EACCA,qBAAA,CAAsBC,GAAG,CAACL,cAAA;EAC1B,OAAOE,iBAAA,CAAkB;IACvBI,QAAA,EAAU;IACVC,UAAA,EAAY;MACVC,SAAA,EAAW;QAAEC,IAAA,EAAM;QAASC,KAAA,EAAO;UAAED,IAAA,EAAM;QAAS;MAAE;MACtDE,iBAAA,EAAmB;QAAEF,IAAA,EAAM;MAAU;MACrCG,cAAA,EAAgB;QAAEH,IAAA,EAAM;MAAU;MAClCI,WAAA,EAAa;QAAEJ,IAAA,EAAM;MAAU;IACjC;IACAK,MAAA,EAAQ,uBAAuBX,aAAA;EACjC;AACF;AAEA,OAAO,MAAMY,uBAAA,GAAwCA,CAAC;EACpDb,iBAAiB;EACjBC,aAAa;EACbC;AAAqB,CACtB;EACCA,qBAAA,CAAsBC,GAAG,CAACL,cAAA;EAC1B,OAAOE,iBAAA,CAAkB;IACvBI,QAAA,EAAU;IACVC,UAAA,EAAY;MACVS,eAAA,EAAiB;QAAEC,KAAA,EAAO,CAAC;UAAER,IAAA,EAAM;QAAS,GAAG;UAAEA,IAAA,EAAM;QAAO;MAAG;MACjES,OAAA,EAAS;QAAET,IAAA,EAAM;QAAWU,WAAA,EAAa;MAAgD;MACzFC,WAAA,EAAa;QACXX,IAAA,EAAM;QACNU,WAAA,EACE;MACJ;MACAE,OAAA,EAAS;QAAEZ,IAAA,EAAM;QAAWU,WAAA,EAAa;MAA6C;MACtFG,aAAA,EAAe;QAAEb,IAAA,EAAM;MAAS;MAChCc,KAAA,EAAO;QAAEd,IAAA,EAAM;MAAU;IAC3B;IACAe,QAAA,EAAU,CAAC,cAAc;IACzBV,MAAA,EAAQ,2BAA2BX,aAAA;EACrC;AACF;AAEA,OAAO,MAAMsB,sBAAA,GAAuCA,CAAC;EACnDvB,iBAAiB;EACjBC,aAAa;EACbC;AAAqB,CACtB;EACCA,qBAAA,CAAsBC,GAAG,CAACL,cAAA;EAC1B,OAAOE,iBAAA,CAAkB;IACvBI,QAAA,EAAU;IACVC,UAAA,EAAY;MAAEmB,MAAA,EAAQ;QAAEjB,IAAA,EAAM;MAAU;IAAE;IAC1CK,MAAA,EAAQ,0BAA0BX,aAAA;EACpC;AACF","ignoreList":[]}
@@ -43,7 +43,7 @@ const toolbarGroups = (props, stateMap) => {
43
43
  type: 'dropdown',
44
44
  ChildComponent: () => /*#__PURE__*/_jsx(TextStateIcon, {
45
45
  css: {
46
- color: 'var(--theme-elevation-600)'
46
+ color: 'var(--color-icon-secondary)'
47
47
  }
48
48
  }),
49
49
  items: [...clearStyle, ...items],
@@ -1 +1 @@
1
- {"version":3,"file":"feature.client.js","names":["TextStateIcon","createClientFeature","registerTextStates","setTextState","StatePlugin","toolbarGroups","props","stateMap","items","stateKey","state","key","stateValue","meta","push","ChildComponent","_jsx","css","label","onSelect","editor","clearStyle","i18n","t","undefined","order","type","color","TextStateFeatureClient","plugins","Component","position","toolbarFixed","groups","toolbarInline"],"sources":["../../../src/features/textState/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport type { ToolbarDropdownGroup, ToolbarGroup } from '../toolbars/types.js'\nimport type { TextStateFeatureProps } from './feature.server.js'\n\nimport { TextStateIcon } from '../../lexical/ui/icons/TextState/index.js'\nimport { createClientFeature } from '../../utilities/createClientFeature.js'\nimport { registerTextStates, setTextState, type StateMap, StatePlugin } from './textState.js'\n\nconst toolbarGroups = (props: TextStateFeatureProps, stateMap: StateMap): ToolbarGroup[] => {\n const items: ToolbarDropdownGroup['items'] = []\n\n for (const stateKey in props.state) {\n const key = props.state[stateKey]!\n for (const stateValue in key) {\n const meta = key[stateValue]!\n items.push({\n ChildComponent: () => <TextStateIcon css={meta.css} />,\n key: stateValue,\n label: meta.label,\n onSelect: ({ editor }) => {\n setTextState(editor, stateMap, stateKey, stateValue)\n },\n })\n }\n }\n\n const clearStyle: ToolbarDropdownGroup['items'] = [\n {\n ChildComponent: () => <TextStateIcon />,\n key: `clear-style`,\n label: ({ i18n }) => i18n.t('lexical:textState:defaultStyle'),\n onSelect: ({ editor }) => {\n for (const stateKey in props.state) {\n setTextState(editor, stateMap, stateKey, undefined)\n }\n },\n order: 1,\n },\n ]\n\n return [\n {\n type: 'dropdown',\n ChildComponent: () => <TextStateIcon css={{ color: 'var(--theme-elevation-600)' }} />,\n items: [...clearStyle, ...items],\n key: 'textState',\n order: 30,\n },\n ]\n}\n\nexport const TextStateFeatureClient = createClientFeature<TextStateFeatureProps>(({ props }) => {\n const stateMap = registerTextStates(props.state)\n return {\n plugins: [\n {\n Component: () => StatePlugin({ stateMap }),\n position: 'normal',\n },\n ],\n toolbarFixed: {\n groups: toolbarGroups(props, stateMap),\n },\n toolbarInline: {\n groups: toolbarGroups(props, stateMap),\n },\n }\n})\n"],"mappings":"AAAA;;;AAKA,SAASA,aAAa,QAAQ;AAC9B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,kBAAkB,EAAEC,YAAY,EAAiBC,WAAW,QAAQ;AAE7E,MAAMC,aAAA,GAAgBA,CAACC,KAAA,EAA8BC,QAAA;EACnD,MAAMC,KAAA,GAAuC,EAAE;EAE/C,KAAK,MAAMC,QAAA,IAAYH,KAAA,CAAMI,KAAK,EAAE;IAClC,MAAMC,GAAA,GAAML,KAAA,CAAMI,KAAK,CAACD,QAAA,CAAS;IACjC,KAAK,MAAMG,UAAA,IAAcD,GAAA,EAAK;MAC5B,MAAME,IAAA,GAAOF,GAAG,CAACC,UAAA,CAAW;MAC5BJ,KAAA,CAAMM,IAAI,CAAC;QACTC,cAAA,EAAgBA,CAAA,kBAAMC,IAAA,CAAChB,aAAA;UAAciB,GAAA,EAAKJ,IAAA,CAAKI;;QAC/CN,GAAA,EAAKC,UAAA;QACLM,KAAA,EAAOL,IAAA,CAAKK,KAAK;QACjBC,QAAA,EAAUA,CAAC;UAAEC;QAAM,CAAE;UACnBjB,YAAA,CAAaiB,MAAA,EAAQb,QAAA,EAAUE,QAAA,EAAUG,UAAA;QAC3C;MACF;IACF;EACF;EAEA,MAAMS,UAAA,GAA4C,CAChD;IACEN,cAAA,EAAgBA,CAAA,kBAAMC,IAAA,CAAChB,aAAA;IACvBW,GAAA,EAAK,aAAa;IAClBO,KAAA,EAAOA,CAAC;MAAEI;IAAI,CAAE,KAAKA,IAAA,CAAKC,CAAC,CAAC;IAC5BJ,QAAA,EAAUA,CAAC;MAAEC;IAAM,CAAE;MACnB,KAAK,MAAMX,QAAA,IAAYH,KAAA,CAAMI,KAAK,EAAE;QAClCP,YAAA,CAAaiB,MAAA,EAAQb,QAAA,EAAUE,QAAA,EAAUe,SAAA;MAC3C;IACF;IACAC,KAAA,EAAO;EACT,EACD;EAED,OAAO,CACL;IACEC,IAAA,EAAM;IACNX,cAAA,EAAgBA,CAAA,kBAAMC,IAAA,CAAChB,aAAA;MAAciB,GAAA,EAAK;QAAEU,KAAA,EAAO;MAA6B;;IAChFnB,KAAA,EAAO,C,GAAIa,UAAA,E,GAAeb,KAAA,CAAM;IAChCG,GAAA,EAAK;IACLc,KAAA,EAAO;EACT,EACD;AACH;AAEA,OAAO,MAAMG,sBAAA,GAAyB3B,mBAAA,CAA2C,CAAC;EAAEK;AAAK,CAAE;EACzF,MAAMC,QAAA,GAAWL,kBAAA,CAAmBI,KAAA,CAAMI,KAAK;EAC/C,OAAO;IACLmB,OAAA,EAAS,CACP;MACEC,SAAA,EAAWA,CAAA,KAAM1B,WAAA,CAAY;QAAEG;MAAS;MACxCwB,QAAA,EAAU;IACZ,EACD;IACDC,YAAA,EAAc;MACZC,MAAA,EAAQ5B,aAAA,CAAcC,KAAA,EAAOC,QAAA;IAC/B;IACA2B,aAAA,EAAe;MACbD,MAAA,EAAQ5B,aAAA,CAAcC,KAAA,EAAOC,QAAA;IAC/B;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"feature.client.js","names":["TextStateIcon","createClientFeature","registerTextStates","setTextState","StatePlugin","toolbarGroups","props","stateMap","items","stateKey","state","key","stateValue","meta","push","ChildComponent","_jsx","css","label","onSelect","editor","clearStyle","i18n","t","undefined","order","type","color","TextStateFeatureClient","plugins","Component","position","toolbarFixed","groups","toolbarInline"],"sources":["../../../src/features/textState/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport type { ToolbarDropdownGroup, ToolbarGroup } from '../toolbars/types.js'\nimport type { TextStateFeatureProps } from './feature.server.js'\n\nimport { TextStateIcon } from '../../lexical/ui/icons/TextState/index.js'\nimport { createClientFeature } from '../../utilities/createClientFeature.js'\nimport { registerTextStates, setTextState, type StateMap, StatePlugin } from './textState.js'\n\nconst toolbarGroups = (props: TextStateFeatureProps, stateMap: StateMap): ToolbarGroup[] => {\n const items: ToolbarDropdownGroup['items'] = []\n\n for (const stateKey in props.state) {\n const key = props.state[stateKey]!\n for (const stateValue in key) {\n const meta = key[stateValue]!\n items.push({\n ChildComponent: () => <TextStateIcon css={meta.css} />,\n key: stateValue,\n label: meta.label,\n onSelect: ({ editor }) => {\n setTextState(editor, stateMap, stateKey, stateValue)\n },\n })\n }\n }\n\n const clearStyle: ToolbarDropdownGroup['items'] = [\n {\n ChildComponent: () => <TextStateIcon />,\n key: `clear-style`,\n label: ({ i18n }) => i18n.t('lexical:textState:defaultStyle'),\n onSelect: ({ editor }) => {\n for (const stateKey in props.state) {\n setTextState(editor, stateMap, stateKey, undefined)\n }\n },\n order: 1,\n },\n ]\n\n return [\n {\n type: 'dropdown',\n ChildComponent: () => <TextStateIcon css={{ color: 'var(--color-icon-secondary)' }} />,\n items: [...clearStyle, ...items],\n key: 'textState',\n order: 30,\n },\n ]\n}\n\nexport const TextStateFeatureClient = createClientFeature<TextStateFeatureProps>(({ props }) => {\n const stateMap = registerTextStates(props.state)\n return {\n plugins: [\n {\n Component: () => StatePlugin({ stateMap }),\n position: 'normal',\n },\n ],\n toolbarFixed: {\n groups: toolbarGroups(props, stateMap),\n },\n toolbarInline: {\n groups: toolbarGroups(props, stateMap),\n },\n }\n})\n"],"mappings":"AAAA;;;AAKA,SAASA,aAAa,QAAQ;AAC9B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,kBAAkB,EAAEC,YAAY,EAAiBC,WAAW,QAAQ;AAE7E,MAAMC,aAAA,GAAgBA,CAACC,KAAA,EAA8BC,QAAA;EACnD,MAAMC,KAAA,GAAuC,EAAE;EAE/C,KAAK,MAAMC,QAAA,IAAYH,KAAA,CAAMI,KAAK,EAAE;IAClC,MAAMC,GAAA,GAAML,KAAA,CAAMI,KAAK,CAACD,QAAA,CAAS;IACjC,KAAK,MAAMG,UAAA,IAAcD,GAAA,EAAK;MAC5B,MAAME,IAAA,GAAOF,GAAG,CAACC,UAAA,CAAW;MAC5BJ,KAAA,CAAMM,IAAI,CAAC;QACTC,cAAA,EAAgBA,CAAA,kBAAMC,IAAA,CAAChB,aAAA;UAAciB,GAAA,EAAKJ,IAAA,CAAKI;;QAC/CN,GAAA,EAAKC,UAAA;QACLM,KAAA,EAAOL,IAAA,CAAKK,KAAK;QACjBC,QAAA,EAAUA,CAAC;UAAEC;QAAM,CAAE;UACnBjB,YAAA,CAAaiB,MAAA,EAAQb,QAAA,EAAUE,QAAA,EAAUG,UAAA;QAC3C;MACF;IACF;EACF;EAEA,MAAMS,UAAA,GAA4C,CAChD;IACEN,cAAA,EAAgBA,CAAA,kBAAMC,IAAA,CAAChB,aAAA;IACvBW,GAAA,EAAK,aAAa;IAClBO,KAAA,EAAOA,CAAC;MAAEI;IAAI,CAAE,KAAKA,IAAA,CAAKC,CAAC,CAAC;IAC5BJ,QAAA,EAAUA,CAAC;MAAEC;IAAM,CAAE;MACnB,KAAK,MAAMX,QAAA,IAAYH,KAAA,CAAMI,KAAK,EAAE;QAClCP,YAAA,CAAaiB,MAAA,EAAQb,QAAA,EAAUE,QAAA,EAAUe,SAAA;MAC3C;IACF;IACAC,KAAA,EAAO;EACT,EACD;EAED,OAAO,CACL;IACEC,IAAA,EAAM;IACNX,cAAA,EAAgBA,CAAA,kBAAMC,IAAA,CAAChB,aAAA;MAAciB,GAAA,EAAK;QAAEU,KAAA,EAAO;MAA8B;;IACjFnB,KAAA,EAAO,C,GAAIa,UAAA,E,GAAeb,KAAA,CAAM;IAChCG,GAAA,EAAK;IACLc,KAAA,EAAO;EACT,EACD;AACH;AAEA,OAAO,MAAMG,sBAAA,GAAyB3B,mBAAA,CAA2C,CAAC;EAAEK;AAAK,CAAE;EACzF,MAAMC,QAAA,GAAWL,kBAAA,CAAmBI,KAAA,CAAMI,KAAK;EAC/C,OAAO;IACLmB,OAAA,EAAS,CACP;MACEC,SAAA,EAAWA,CAAA,KAAM1B,WAAA,CAAY;QAAEG;MAAS;MACxCwB,QAAA,EAAU;IACZ,EACD;IACDC,YAAA,EAAc;MACZC,MAAA,EAAQ5B,aAAA,CAAcC,KAAA,EAAOC,QAAA;IAC/B;IACA2B,aAAA,EAAe;MACbD,MAAA,EAAQ5B,aAAA,CAAcC,KAAA,EAAOC,QAAA;IAC/B;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ export declare function getHorizontalScrollDelta({ clientWidth, deltaMode, deltaY, isRightToLeft, }: {
2
+ clientWidth: number;
3
+ deltaMode: number;
4
+ deltaY: number;
5
+ isRightToLeft: boolean;
6
+ }): number;
7
+ export declare function useRedirectVerticalWheelToHorizontalScroll(): void;
8
+ //# sourceMappingURL=horizontalWheelScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizontalWheelScroll.d.ts","sourceRoot":"","sources":["../../../../../../src/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.ts"],"names":[],"mappings":"AASA,wBAAgB,wBAAwB,CAAC,EACvC,WAAW,EACX,SAAS,EACT,MAAM,EACN,aAAa,GACd,EAAE;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;CACvB,GAAG,MAAM,CAOT;AA0CD,wBAAgB,0CAA0C,IAAI,IAAI,CAgBjE"}
@@ -0,0 +1,80 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { useEffect } from 'react';
5
+ const scrollContainerSelector = '.fixed-toolbar__scroll';
6
+ // A single notch on a classic (non-trackpad) wheel mouse reports deltaMode 1 with a
7
+ // deltaY of only 1-3, so it must be scaled up to a pixel value that actually moves the scroll.
8
+ const PIXELS_PER_LINE = 40;
9
+ export function getHorizontalScrollDelta({
10
+ clientWidth,
11
+ deltaMode,
12
+ deltaY,
13
+ isRightToLeft
14
+ }) {
15
+ const deltaInPixels = deltaMode === 1 ? deltaY * PIXELS_PER_LINE : deltaMode === 2 ? deltaY * clientWidth : deltaY;
16
+ // scrollLeft moves toward the inline-start edge for a given positive delta in RTL,
17
+ // the opposite of LTR, so the delta must be negated to keep the scroll direction consistent.
18
+ return isRightToLeft ? -deltaInPixels : deltaInPixels;
19
+ }
20
+ function redirectVerticalWheelToHorizontalScroll(event) {
21
+ const isPrimarilyVerticalWheelInput = Math.abs(event.deltaY) > Math.abs(event.deltaX);
22
+ if (!isPrimarilyVerticalWheelInput) {
23
+ return;
24
+ }
25
+ const target = event.target;
26
+ if (!(target instanceof Element)) {
27
+ return;
28
+ }
29
+ const scrollContainer = target.closest(scrollContainerSelector);
30
+ if (!scrollContainer) {
31
+ return;
32
+ }
33
+ const canScrollHorizontally = scrollContainer.scrollWidth > scrollContainer.clientWidth;
34
+ if (!canScrollHorizontally) {
35
+ return;
36
+ }
37
+ event.preventDefault();
38
+ scrollContainer.scrollLeft += getHorizontalScrollDelta({
39
+ clientWidth: scrollContainer.clientWidth,
40
+ deltaMode: event.deltaMode,
41
+ deltaY: event.deltaY,
42
+ isRightToLeft: getComputedStyle(scrollContainer).direction === 'rtl'
43
+ });
44
+ }
45
+ // A single page can render many fixed toolbars at once (e.g. rich text nested several
46
+ // layers deep inside blocks), so this listener is delegated to `document` and shared
47
+ // across every toolbar instance instead of being attached per instance. A wheel listener
48
+ // that can call preventDefault() must be non-passive, and non-passive listeners make the
49
+ // browser treat their element as a "non-fast-scrollable region" that every scroll gesture
50
+ // on the page has to be checked against, even ones nowhere near it. Attaching one instance
51
+ // per toolbar would multiply that bookkeeping by however many toolbars happen to be on the
52
+ // page; a single delegated listener keeps that cost constant no matter how many there are.
53
+ let toolbarsListeningForWheelEvents = 0;
54
+ export function useRedirectVerticalWheelToHorizontalScroll() {
55
+ const $ = _c(1);
56
+ let t0;
57
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
58
+ t0 = [];
59
+ $[0] = t0;
60
+ } else {
61
+ t0 = $[0];
62
+ }
63
+ useEffect(_temp2, t0);
64
+ }
65
+ function _temp2() {
66
+ if (toolbarsListeningForWheelEvents === 0) {
67
+ document.addEventListener("wheel", redirectVerticalWheelToHorizontalScroll, {
68
+ passive: false
69
+ });
70
+ }
71
+ toolbarsListeningForWheelEvents = toolbarsListeningForWheelEvents + 1;
72
+ return _temp;
73
+ }
74
+ function _temp() {
75
+ toolbarsListeningForWheelEvents = toolbarsListeningForWheelEvents - 1;
76
+ if (toolbarsListeningForWheelEvents === 0) {
77
+ document.removeEventListener("wheel", redirectVerticalWheelToHorizontalScroll);
78
+ }
79
+ }
80
+ //# sourceMappingURL=horizontalWheelScroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizontalWheelScroll.js","names":["c","_c","useEffect","scrollContainerSelector","PIXELS_PER_LINE","getHorizontalScrollDelta","clientWidth","deltaMode","deltaY","isRightToLeft","deltaInPixels","redirectVerticalWheelToHorizontalScroll","event","isPrimarilyVerticalWheelInput","Math","abs","deltaX","target","Element","scrollContainer","closest","canScrollHorizontally","scrollWidth","preventDefault","scrollLeft","getComputedStyle","direction","toolbarsListeningForWheelEvents","useRedirectVerticalWheelToHorizontalScroll","$","t0","Symbol","for","_temp2","document","addEventListener","passive","_temp","removeEventListener"],"sources":["../../../../../../src/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.ts"],"sourcesContent":["'use client'\nimport { useEffect } from 'react'\n\nconst scrollContainerSelector = '.fixed-toolbar__scroll'\n\n// A single notch on a classic (non-trackpad) wheel mouse reports deltaMode 1 with a\n// deltaY of only 1-3, so it must be scaled up to a pixel value that actually moves the scroll.\nconst PIXELS_PER_LINE = 40\n\nexport function getHorizontalScrollDelta({\n clientWidth,\n deltaMode,\n deltaY,\n isRightToLeft,\n}: {\n clientWidth: number\n deltaMode: number\n deltaY: number\n isRightToLeft: boolean\n}): number {\n const deltaInPixels =\n deltaMode === 1 ? deltaY * PIXELS_PER_LINE : deltaMode === 2 ? deltaY * clientWidth : deltaY\n\n // scrollLeft moves toward the inline-start edge for a given positive delta in RTL,\n // the opposite of LTR, so the delta must be negated to keep the scroll direction consistent.\n return isRightToLeft ? -deltaInPixels : deltaInPixels\n}\n\nfunction redirectVerticalWheelToHorizontalScroll(event: WheelEvent): void {\n const isPrimarilyVerticalWheelInput = Math.abs(event.deltaY) > Math.abs(event.deltaX)\n if (!isPrimarilyVerticalWheelInput) {\n return\n }\n\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n\n const scrollContainer = target.closest<HTMLElement>(scrollContainerSelector)\n if (!scrollContainer) {\n return\n }\n\n const canScrollHorizontally = scrollContainer.scrollWidth > scrollContainer.clientWidth\n if (!canScrollHorizontally) {\n return\n }\n\n event.preventDefault()\n scrollContainer.scrollLeft += getHorizontalScrollDelta({\n clientWidth: scrollContainer.clientWidth,\n deltaMode: event.deltaMode,\n deltaY: event.deltaY,\n isRightToLeft: getComputedStyle(scrollContainer).direction === 'rtl',\n })\n}\n\n// A single page can render many fixed toolbars at once (e.g. rich text nested several\n// layers deep inside blocks), so this listener is delegated to `document` and shared\n// across every toolbar instance instead of being attached per instance. A wheel listener\n// that can call preventDefault() must be non-passive, and non-passive listeners make the\n// browser treat their element as a \"non-fast-scrollable region\" that every scroll gesture\n// on the page has to be checked against, even ones nowhere near it. Attaching one instance\n// per toolbar would multiply that bookkeeping by however many toolbars happen to be on the\n// page; a single delegated listener keeps that cost constant no matter how many there are.\nlet toolbarsListeningForWheelEvents = 0\n\nexport function useRedirectVerticalWheelToHorizontalScroll(): void {\n useEffect(() => {\n if (toolbarsListeningForWheelEvents === 0) {\n document.addEventListener('wheel', redirectVerticalWheelToHorizontalScroll, {\n passive: false,\n })\n }\n toolbarsListeningForWheelEvents += 1\n\n return () => {\n toolbarsListeningForWheelEvents -= 1\n if (toolbarsListeningForWheelEvents === 0) {\n document.removeEventListener('wheel', redirectVerticalWheelToHorizontalScroll)\n }\n }\n }, [])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,QAAQ;AAE1B,MAAMC,uBAAA,GAA0B;AAEhC;AACA;AACA,MAAMC,eAAA,GAAkB;AAExB,OAAO,SAASC,yBAAyB;EACvCC,WAAW;EACXC,SAAS;EACTC,MAAM;EACNC;AAAa,CAMd;EACC,MAAMC,aAAA,GACJH,SAAA,KAAc,IAAIC,MAAA,GAASJ,eAAA,GAAkBG,SAAA,KAAc,IAAIC,MAAA,GAASF,WAAA,GAAcE,MAAA;EAExF;EACA;EACA,OAAOC,aAAA,GAAgB,CAACC,aAAA,GAAgBA,aAAA;AAC1C;AAEA,SAASC,wCAAwCC,KAAiB;EAChE,MAAMC,6BAAA,GAAgCC,IAAA,CAAKC,GAAG,CAACH,KAAA,CAAMJ,MAAM,IAAIM,IAAA,CAAKC,GAAG,CAACH,KAAA,CAAMI,MAAM;EACpF,IAAI,CAACH,6BAAA,EAA+B;IAClC;EACF;EAEA,MAAMI,MAAA,GAASL,KAAA,CAAMK,MAAM;EAC3B,IAAI,EAAEA,MAAA,YAAkBC,OAAM,GAAI;IAChC;EACF;EAEA,MAAMC,eAAA,GAAkBF,MAAA,CAAOG,OAAO,CAAcjB,uBAAA;EACpD,IAAI,CAACgB,eAAA,EAAiB;IACpB;EACF;EAEA,MAAME,qBAAA,GAAwBF,eAAA,CAAgBG,WAAW,GAAGH,eAAA,CAAgBb,WAAW;EACvF,IAAI,CAACe,qBAAA,EAAuB;IAC1B;EACF;EAEAT,KAAA,CAAMW,cAAc;EACpBJ,eAAA,CAAgBK,UAAU,IAAInB,wBAAA,CAAyB;IACrDC,WAAA,EAAaa,eAAA,CAAgBb,WAAW;IACxCC,SAAA,EAAWK,KAAA,CAAML,SAAS;IAC1BC,MAAA,EAAQI,KAAA,CAAMJ,MAAM;IACpBC,aAAA,EAAegB,gBAAA,CAAiBN,eAAA,EAAiBO,SAAS,KAAK;EACjE;AACF;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,+BAAA,GAAkC;AAEtC,OAAO,SAAAC,2CAAA;EAAA,MAAAC,CAAA,GAAA5B,EAAA;EAAA,IAAA6B,EAAA;EAAA,IAAAD,CAAA,QAAAE,MAAA,CAAAC,GAAA;IAeFF,EAAA;IAAED,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAdL3B,SAAA,CAAA+B,MAAA,EAcGH,EAAE;AAAA;AAfA,SAAAG,OAAA;EAAA,IAECN,+BAAA,MAAoC;IACtCO,QAAA,CAAAC,gBAAA,CAA0B,SAAAxB,uCAAA;MAAAyB,OAAA;IAAA,CAE1B;EAAA;EAAAT,+BAAA,GAEFA,+BAAA,IAAmC;EAAA,OAAAU,KAAA;AAAA;AAPhC,SAAAA,MAAA;EAAAV,+BAAA,GAUDA,+BAAA,IAAmC;EAAA,IAC/BA,+BAAA,MAAoC;IACtCO,QAAA,CAAAI,mBAAA,CAA6B,SAAA3B,uCAAS;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getHorizontalScrollDelta } from './horizontalWheelScroll.js';
3
+ describe('getHorizontalScrollDelta', () => {
4
+ describe('deltaMode 0 (pixel)', () => {
5
+ it('should pass deltaY through unchanged for LTR', () => {
6
+ const delta = getHorizontalScrollDelta({
7
+ clientWidth: 300,
8
+ deltaMode: 0,
9
+ deltaY: 15,
10
+ isRightToLeft: false
11
+ });
12
+ expect(delta).toBe(15);
13
+ });
14
+ it('should negate deltaY for RTL', () => {
15
+ const delta = getHorizontalScrollDelta({
16
+ clientWidth: 300,
17
+ deltaMode: 0,
18
+ deltaY: 15,
19
+ isRightToLeft: true
20
+ });
21
+ expect(delta).toBe(-15);
22
+ });
23
+ });
24
+ describe('deltaMode 1 (line)', () => {
25
+ it('should scale deltaY by the pixels-per-line factor for LTR', () => {
26
+ const delta = getHorizontalScrollDelta({
27
+ clientWidth: 300,
28
+ deltaMode: 1,
29
+ deltaY: 3,
30
+ isRightToLeft: false
31
+ });
32
+ expect(delta).toBe(120);
33
+ });
34
+ it('should scale and negate deltaY for RTL', () => {
35
+ const delta = getHorizontalScrollDelta({
36
+ clientWidth: 300,
37
+ deltaMode: 1,
38
+ deltaY: 3,
39
+ isRightToLeft: true
40
+ });
41
+ expect(delta).toBe(-120);
42
+ });
43
+ });
44
+ describe('deltaMode 2 (page)', () => {
45
+ it('should scale deltaY by the scroll container width for LTR', () => {
46
+ const delta = getHorizontalScrollDelta({
47
+ clientWidth: 300,
48
+ deltaMode: 2,
49
+ deltaY: 2,
50
+ isRightToLeft: false
51
+ });
52
+ expect(delta).toBe(600);
53
+ });
54
+ it('should scale and negate deltaY for RTL', () => {
55
+ const delta = getHorizontalScrollDelta({
56
+ clientWidth: 300,
57
+ deltaMode: 2,
58
+ deltaY: 2,
59
+ isRightToLeft: true
60
+ });
61
+ expect(delta).toBe(-600);
62
+ });
63
+ });
64
+ });
65
+ //# sourceMappingURL=horizontalWheelScroll.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizontalWheelScroll.spec.js","names":["describe","expect","it","getHorizontalScrollDelta","delta","clientWidth","deltaMode","deltaY","isRightToLeft","toBe"],"sources":["../../../../../../src/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { getHorizontalScrollDelta } from './horizontalWheelScroll.js'\n\ndescribe('getHorizontalScrollDelta', () => {\n describe('deltaMode 0 (pixel)', () => {\n it('should pass deltaY through unchanged for LTR', () => {\n const delta = getHorizontalScrollDelta({\n clientWidth: 300,\n deltaMode: 0,\n deltaY: 15,\n isRightToLeft: false,\n })\n\n expect(delta).toBe(15)\n })\n\n it('should negate deltaY for RTL', () => {\n const delta = getHorizontalScrollDelta({\n clientWidth: 300,\n deltaMode: 0,\n deltaY: 15,\n isRightToLeft: true,\n })\n\n expect(delta).toBe(-15)\n })\n })\n\n describe('deltaMode 1 (line)', () => {\n it('should scale deltaY by the pixels-per-line factor for LTR', () => {\n const delta = getHorizontalScrollDelta({\n clientWidth: 300,\n deltaMode: 1,\n deltaY: 3,\n isRightToLeft: false,\n })\n\n expect(delta).toBe(120)\n })\n\n it('should scale and negate deltaY for RTL', () => {\n const delta = getHorizontalScrollDelta({\n clientWidth: 300,\n deltaMode: 1,\n deltaY: 3,\n isRightToLeft: true,\n })\n\n expect(delta).toBe(-120)\n })\n })\n\n describe('deltaMode 2 (page)', () => {\n it('should scale deltaY by the scroll container width for LTR', () => {\n const delta = getHorizontalScrollDelta({\n clientWidth: 300,\n deltaMode: 2,\n deltaY: 2,\n isRightToLeft: false,\n })\n\n expect(delta).toBe(600)\n })\n\n it('should scale and negate deltaY for RTL', () => {\n const delta = getHorizontalScrollDelta({\n clientWidth: 300,\n deltaMode: 2,\n deltaY: 2,\n isRightToLeft: true,\n })\n\n expect(delta).toBe(-600)\n })\n })\n})\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ;AAErC,SAASC,wBAAwB,QAAQ;AAEzCH,QAAA,CAAS,4BAA4B;EACnCA,QAAA,CAAS,uBAAuB;IAC9BE,EAAA,CAAG,gDAAgD;MACjD,MAAME,KAAA,GAAQD,wBAAA,CAAyB;QACrCE,WAAA,EAAa;QACbC,SAAA,EAAW;QACXC,MAAA,EAAQ;QACRC,aAAA,EAAe;MACjB;MAEAP,MAAA,CAAOG,KAAA,EAAOK,IAAI,CAAC;IACrB;IAEAP,EAAA,CAAG,gCAAgC;MACjC,MAAME,KAAA,GAAQD,wBAAA,CAAyB;QACrCE,WAAA,EAAa;QACbC,SAAA,EAAW;QACXC,MAAA,EAAQ;QACRC,aAAA,EAAe;MACjB;MAEAP,MAAA,CAAOG,KAAA,EAAOK,IAAI,CAAC,CAAC;IACtB;EACF;EAEAT,QAAA,CAAS,sBAAsB;IAC7BE,EAAA,CAAG,6DAA6D;MAC9D,MAAME,KAAA,GAAQD,wBAAA,CAAyB;QACrCE,WAAA,EAAa;QACbC,SAAA,EAAW;QACXC,MAAA,EAAQ;QACRC,aAAA,EAAe;MACjB;MAEAP,MAAA,CAAOG,KAAA,EAAOK,IAAI,CAAC;IACrB;IAEAP,EAAA,CAAG,0CAA0C;MAC3C,MAAME,KAAA,GAAQD,wBAAA,CAAyB;QACrCE,WAAA,EAAa;QACbC,SAAA,EAAW;QACXC,MAAA,EAAQ;QACRC,aAAA,EAAe;MACjB;MAEAP,MAAA,CAAOG,KAAA,EAAOK,IAAI,CAAC,CAAC;IACtB;EACF;EAEAT,QAAA,CAAS,sBAAsB;IAC7BE,EAAA,CAAG,6DAA6D;MAC9D,MAAME,KAAA,GAAQD,wBAAA,CAAyB;QACrCE,WAAA,EAAa;QACbC,SAAA,EAAW;QACXC,MAAA,EAAQ;QACRC,aAAA,EAAe;MACjB;MAEAP,MAAA,CAAOG,KAAA,EAAOK,IAAI,CAAC;IACrB;IAEAP,EAAA,CAAG,0CAA0C;MAC3C,MAAME,KAAA,GAAQD,wBAAA,CAAyB;QACrCE,WAAA,EAAa;QACbC,SAAA,EAAW;QACXC,MAAA,EAAQ;QACRC,aAAA,EAAe;MACjB;MAEAP,MAAA,CAAOG,KAAA,EAAOK,IAAI,CAAC,CAAC;IACtB;EACF;AACF","ignoreList":[]}
@@ -1,3 +1,37 @@
1
+ @property --fixed-toolbar-fade-start {
2
+ syntax: '<length>';
3
+ inherits: false;
4
+ initial-value: 0px;
5
+ }
6
+
7
+ @property --fixed-toolbar-fade-end {
8
+ syntax: '<length>';
9
+ inherits: false;
10
+ initial-value: 0px;
11
+ }
12
+
13
+ /*
14
+ * Drives the fade widths off the toolbar's own scroll position: fully opaque at rest,
15
+ * fading in on whichever edge still has scrolled-off content once it overflows.
16
+ * Unsupported browsers (no animation-timeline) simply keep the initial 0px fade, i.e. no fade at all.
17
+ */
18
+ @keyframes fixed-toolbar-scroll-fade {
19
+ 0% {
20
+ --fixed-toolbar-fade-start: 0px;
21
+ }
22
+ 10%,
23
+ 100% {
24
+ --fixed-toolbar-fade-start: var(--spacer-5);
25
+ }
26
+ 0%,
27
+ 90% {
28
+ --fixed-toolbar-fade-end: var(--spacer-5);
29
+ }
30
+ 100% {
31
+ --fixed-toolbar-fade-end: 0px;
32
+ }
33
+ }
34
+
1
35
  @layer payload-default {
2
36
  .fixed-toolbar.fixed-toolbar--hide {
3
37
  visibility: hidden;
@@ -7,10 +41,8 @@
7
41
 
8
42
  .fixed-toolbar {
9
43
  display: flex;
10
- flex-wrap: wrap;
11
44
  align-items: center;
12
45
  padding: 0 var(--spacer-2);
13
- gap: var(--spacer-2);
14
46
  vertical-align: middle;
15
47
  position: sticky;
16
48
  z-index: 2;
@@ -27,9 +59,9 @@
27
59
  content: ' ';
28
60
  position: absolute;
29
61
  top: 0;
30
- right: 0;
62
+ inset-inline-end: 0;
31
63
  bottom: 0;
32
- left: 0;
64
+ inset-inline-start: 0;
33
65
  border-radius: inherit;
34
66
  }
35
67
 
@@ -46,24 +78,64 @@
46
78
  border-radius: 0 0 var(--radius-medium) var(--radius-medium) !important;
47
79
 
48
80
  > .editor-scroller > .editor {
81
+ --content-editable-padding-block-start: var(--spacer-2);
82
+
49
83
  > .ContentEditable__root {
50
84
  padding-top: var(--spacer-2);
51
85
  }
52
86
  }
87
+ }
88
+ }
53
89
 
54
- > .editor-scroller > .editor > div > .LexicalEditorTheme__placeholder {
55
- top: var(--spacer-4);
56
- }
90
+ .fixed-toolbar__scroll {
91
+ display: flex;
92
+ flex: 1 1 auto;
93
+ flex-wrap: nowrap;
94
+ align-items: center;
95
+ gap: var(--spacer-2);
96
+ min-width: 0;
97
+ overflow-x: auto;
98
+ scrollbar-width: none;
99
+ -ms-overflow-style: none;
100
+ position: relative;
101
+ z-index: 1;
102
+ animation: fixed-toolbar-scroll-fade linear;
103
+ animation-timeline: scroll(self inline);
104
+ mask: linear-gradient(
105
+ to right,
106
+ transparent,
107
+ black var(--fixed-toolbar-fade-start),
108
+ black calc(100% - var(--fixed-toolbar-fade-end)),
109
+ transparent
110
+ );
111
+
112
+ &::-webkit-scrollbar {
113
+ display: none;
57
114
  }
58
115
  }
59
116
 
117
+ [dir='rtl'] .fixed-toolbar__scroll {
118
+ mask: linear-gradient(
119
+ to left,
120
+ transparent,
121
+ black var(--fixed-toolbar-fade-start),
122
+ black calc(100% - var(--fixed-toolbar-fade-end)),
123
+ transparent
124
+ );
125
+ }
126
+
60
127
  .fixed-toolbar__group {
61
128
  display: flex;
62
- flex-wrap: wrap;
129
+ flex-wrap: nowrap;
63
130
  align-items: center;
64
131
  gap: var(--spacer-2);
65
132
  align-self: stretch;
66
133
  z-index: 1;
134
+ flex-shrink: 0;
135
+
136
+ > * {
137
+ flex-shrink: 0;
138
+ }
67
139
 
68
140
  .divider {
69
141
  width: var(--stroke-width-small);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/toolbars/fixed/client/Toolbar/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAMrE,OAAO,aAAa,CAAA;AA2PpB,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,wBAAwB,CAuCxE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/toolbars/fixed/client/Toolbar/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAOrE,OAAO,aAAa,CAAA;AA6PpB,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,wBAAwB,CAuCxE,CAAA"}
@@ -11,6 +11,7 @@ import { useEditorConfigContext } from '../../../../../lexical/config/client/Edi
11
11
  import { ToolbarButton } from '../../../shared/ToolbarButton/index.js';
12
12
  import { ToolbarDropdown } from '../../../shared/ToolbarDropdown/index.js';
13
13
  import { useToolbarStates } from '../../../shared/useToolbarStates.js';
14
+ import { useRedirectVerticalWheelToHorizontalScroll } from './horizontalWheelScroll.js';
14
15
  import './index.css';
15
16
  function ButtonGroupItem({
16
17
  active,
@@ -129,6 +130,7 @@ function FixedToolbar({
129
130
  const {
130
131
  y
131
132
  } = useScrollInfo();
133
+ useRedirectVerticalWheelToHorizontalScroll();
132
134
  const toolbarStates = useToolbarStates(editor, editorConfig?.features?.toolbarFixed?.groups);
133
135
  // Memoize the parent toolbar element
134
136
  const parentToolbarElem = useMemo(() => {
@@ -181,7 +183,8 @@ function FixedToolbar({
181
183
  event.stopPropagation();
182
184
  },
183
185
  ref: currentToolbarRef,
184
- children: isEditable && /*#__PURE__*/_jsx(React.Fragment, {
186
+ children: isEditable && /*#__PURE__*/_jsx("div", {
187
+ className: "fixed-toolbar__scroll",
185
188
  children: editorConfig?.features && editorConfig.features?.toolbarFixed?.groups.map((group, i) => {
186
189
  return /*#__PURE__*/_jsx(ToolbarGroupComponent, {
187
190
  anchorElem: anchorElem,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","useScrollInfo","useThrottledEffect","useTranslation","React","useMemo","useEditorConfigContext","ToolbarButton","ToolbarDropdown","useToolbarStates","ButtonGroupItem","active","anchorElem","editor","enabled","item","Component","_jsx","key","ChildComponent","ToolbarGroupComponent","editorConfig","group","index","toolbarStates","i18n","fieldProps","featureClientSchemaMap","schemaPath","groupState","groupStates","get","DropdownIcon","type","undefined","activeItem","activeItems","dropdownLabel","length","t","count","label","substring","_jsxs","className","items","Icon","itemsContainerClassNames","map","itemState","itemStates","features","toolbarFixed","groups","FixedToolbar","clientProps","parentWithFixedToolbar","currentToolbarRef","useRef","isEditable","y","parentToolbarElem","disableIfParentHasFixedToolbar","parentEditorElem","editorContainerRef","current","sibling","previousElementSibling","classList","contains","currentToolbarElem","currentRect","getBoundingClientRect","parentRect","overlapping","bottom","top","remove","add","onFocus","event","stopPropagation","ref","Fragment","i","getParentEditorWithFixedToolbar","editorConfigContext","parentEditor","resolvedFeatureMap","has","FixedToolbarPlugin","t0","$","currentEditor","currentEditorConfig","applyToFocusedEditor","focusedEditor","t1","t2","Symbol","for","bb0","document","body"],"sources":["../../../../../../src/features/toolbars/fixed/client/Toolbar/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { useScrollInfo, useThrottledEffect, useTranslation } from '@payloadcms/ui'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { EditorConfigContextType } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport type { SanitizedClientEditorConfig } from '../../../../../lexical/config/types.js'\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { ToolbarStates } from '../../../shared/useToolbarStates.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../../types.js'\nimport type { FixedToolbarFeatureProps } from '../../server/index.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { ToolbarButton } from '../../../shared/ToolbarButton/index.js'\nimport { ToolbarDropdown } from '../../../shared/ToolbarDropdown/index.js'\nimport { useToolbarStates } from '../../../shared/useToolbarStates.js'\nimport './index.css'\n\nfunction ButtonGroupItem({\n active,\n anchorElem,\n editor,\n enabled,\n item,\n}: {\n active: boolean\n anchorElem: HTMLElement\n editor: LexicalEditor\n enabled: boolean\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 if (!item.ChildComponent) {\n return null\n }\n\n return (\n <ToolbarButton active={active} editor={editor} enabled={enabled} item={item} key={item.key}>\n <item.ChildComponent />\n </ToolbarButton>\n )\n}\n\nfunction ToolbarGroupComponent({\n anchorElem,\n editor,\n editorConfig,\n group,\n index,\n toolbarStates,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n group: ToolbarGroup\n index: number\n toolbarStates: ToolbarStates\n}): React.ReactNode {\n const { i18n } = useTranslation<{}, string>()\n const {\n fieldProps: { featureClientSchemaMap, schemaPath },\n } = useEditorConfigContext()\n\n const groupState = toolbarStates.groupStates.get(group.key)\n\n const DropdownIcon = useMemo(() => {\n if (group.type !== 'dropdown') {\n return undefined\n }\n const activeItem = groupState?.activeItems?.[0]\n if (activeItem) {\n return activeItem.ChildComponent\n }\n return group.ChildComponent\n }, [group, groupState?.activeItems])\n\n const dropdownLabel = useMemo(() => {\n if (group.type !== 'dropdown') {\n return undefined\n }\n const activeItems = groupState?.activeItems\n if (!activeItems?.length) {\n return undefined\n }\n if (activeItems.length > 1) {\n return i18n.t('lexical:general:toolbarItemsActive', { count: activeItems.length })\n }\n const item = activeItems[0]!\n let label = item.key\n if (item.label) {\n label =\n typeof item.label === 'function'\n ? item.label({ featureClientSchemaMap, i18n, schemaPath })\n : item.label\n }\n if (label.length > 25) {\n label = label.substring(0, 25) + '...'\n }\n return label\n }, [group, groupState?.activeItems, i18n, featureClientSchemaMap, schemaPath])\n\n return (\n <div\n className={`fixed-toolbar__group fixed-toolbar__group-${group.key}`}\n data-toolbar-group-key={group.key}\n key={group.key}\n >\n {group.type === 'dropdown' && group.items.length && groupState ? (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n group={group}\n groupState={groupState}\n Icon={DropdownIcon}\n itemsContainerClassNames={['fixed-toolbar__dropdown-items']}\n label={dropdownLabel}\n />\n ) : null}\n {group.type === 'buttons' && group.items.length\n ? group.items.map((item) => {\n const itemState = toolbarStates.itemStates.get(item.key)\n return (\n <ButtonGroupItem\n active={itemState?.active ?? false}\n anchorElem={anchorElem}\n editor={editor}\n enabled={itemState?.enabled ?? true}\n item={item}\n key={item.key}\n />\n )\n })\n : null}\n {index < editorConfig.features.toolbarFixed?.groups.length - 1 && <div className=\"divider\" />}\n </div>\n )\n}\n\nfunction FixedToolbar({\n anchorElem,\n clientProps,\n editor,\n editorConfig,\n parentWithFixedToolbar,\n}: {\n anchorElem: HTMLElement\n clientProps?: FixedToolbarFeatureProps\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n parentWithFixedToolbar: EditorConfigContextType | false\n}): React.ReactNode {\n const currentToolbarRef = React.useRef<HTMLDivElement>(null)\n const isEditable = useLexicalEditable()\n\n const { y } = useScrollInfo()\n\n const toolbarStates = useToolbarStates(editor, editorConfig?.features?.toolbarFixed?.groups)\n\n // Memoize the parent toolbar element\n const parentToolbarElem = useMemo(() => {\n if (!parentWithFixedToolbar || clientProps?.disableIfParentHasFixedToolbar) {\n return null\n }\n\n const parentEditorElem = parentWithFixedToolbar.editorContainerRef.current\n let sibling = parentEditorElem.previousElementSibling\n while (sibling) {\n if (sibling.classList.contains('fixed-toolbar')) {\n return sibling\n }\n sibling = sibling.previousElementSibling\n }\n return null\n }, [clientProps?.disableIfParentHasFixedToolbar, parentWithFixedToolbar])\n\n useThrottledEffect(\n () => {\n if (!parentToolbarElem) {\n // this also checks for clientProps?.disableIfParentHasFixedToolbar indirectly, see the parentToolbarElem useMemo\n return\n }\n const currentToolbarElem = currentToolbarRef.current\n if (!currentToolbarElem) {\n return\n }\n\n const currentRect = currentToolbarElem.getBoundingClientRect()\n const parentRect = parentToolbarElem.getBoundingClientRect()\n\n // we only need to check for vertical overlap\n const overlapping = !(\n currentRect.bottom < parentRect.top || currentRect.top > parentRect.bottom\n )\n\n if (overlapping) {\n currentToolbarElem.classList.remove('fixed-toolbar')\n currentToolbarElem.classList.add('fixed-toolbar', 'fixed-toolbar--overlapping')\n parentToolbarElem.classList.remove('fixed-toolbar')\n parentToolbarElem.classList.add('fixed-toolbar', 'fixed-toolbar--hide')\n } else {\n if (!currentToolbarElem.classList.contains('fixed-toolbar--overlapping')) {\n return\n }\n currentToolbarElem.classList.remove('fixed-toolbar--overlapping')\n currentToolbarElem.classList.add('fixed-toolbar')\n parentToolbarElem.classList.remove('fixed-toolbar--hide')\n parentToolbarElem.classList.add('fixed-toolbar')\n }\n },\n 50,\n [currentToolbarRef, parentToolbarElem, y],\n )\n\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 ref={currentToolbarRef}\n >\n {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 toolbarStates={toolbarStates}\n />\n )\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nconst getParentEditorWithFixedToolbar = (\n editorConfigContext: EditorConfigContextType,\n): EditorConfigContextType | false => {\n if (editorConfigContext.parentEditor?.editorConfig) {\n if (editorConfigContext.parentEditor?.editorConfig.resolvedFeatureMap.has('toolbarFixed')) {\n return editorConfigContext.parentEditor\n } else {\n if (editorConfigContext.parentEditor) {\n return getParentEditorWithFixedToolbar(editorConfigContext.parentEditor)\n }\n }\n }\n return false\n}\n\nexport const FixedToolbarPlugin: PluginComponent<FixedToolbarFeatureProps> = ({ clientProps }) => {\n const [currentEditor] = useLexicalComposerContext()\n const editorConfigContext = useEditorConfigContext()\n const isEditable = useLexicalEditable()\n if (!isEditable) {\n return null\n }\n\n const { editorConfig: currentEditorConfig } = editorConfigContext\n\n const editor = clientProps.applyToFocusedEditor\n ? editorConfigContext.focusedEditor?.editor || currentEditor\n : currentEditor\n\n const editorConfig = clientProps.applyToFocusedEditor\n ? editorConfigContext.focusedEditor?.editorConfig || currentEditorConfig\n : currentEditorConfig\n\n const parentWithFixedToolbar = getParentEditorWithFixedToolbar(editorConfigContext)\n\n if (clientProps?.disableIfParentHasFixedToolbar) {\n if (parentWithFixedToolbar) {\n return null\n }\n }\n\n if (!editorConfig?.features?.toolbarFixed?.groups?.length) {\n return null\n }\n\n return (\n <FixedToolbar\n anchorElem={document.body}\n clientProps={clientProps}\n editor={editor}\n editorConfig={editorConfig}\n parentWithFixedToolbar={parentWithFixedToolbar}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","useScrollInfo","useThrottledEffect","useTranslation","React","useMemo","useEditorConfigContext","ToolbarButton","ToolbarDropdown","useToolbarStates","useRedirectVerticalWheelToHorizontalScroll","ButtonGroupItem","active","anchorElem","editor","enabled","item","Component","_jsx","key","ChildComponent","ToolbarGroupComponent","editorConfig","group","index","toolbarStates","i18n","fieldProps","featureClientSchemaMap","schemaPath","groupState","groupStates","get","DropdownIcon","type","undefined","activeItem","activeItems","dropdownLabel","length","t","count","label","substring","_jsxs","className","items","Icon","itemsContainerClassNames","map","itemState","itemStates","features","toolbarFixed","groups","FixedToolbar","clientProps","parentWithFixedToolbar","currentToolbarRef","useRef","isEditable","y","parentToolbarElem","disableIfParentHasFixedToolbar","parentEditorElem","editorContainerRef","current","sibling","previousElementSibling","classList","contains","currentToolbarElem","currentRect","getBoundingClientRect","parentRect","overlapping","bottom","top","remove","add","onFocus","event","stopPropagation","ref","i","getParentEditorWithFixedToolbar","editorConfigContext","parentEditor","resolvedFeatureMap","has","FixedToolbarPlugin","t0","$","currentEditor","currentEditorConfig","applyToFocusedEditor","focusedEditor","t1","t2","Symbol","for","bb0","document","body"],"sources":["../../../../../../src/features/toolbars/fixed/client/Toolbar/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { useScrollInfo, useThrottledEffect, useTranslation } from '@payloadcms/ui'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { EditorConfigContextType } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport type { SanitizedClientEditorConfig } from '../../../../../lexical/config/types.js'\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { ToolbarStates } from '../../../shared/useToolbarStates.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../../types.js'\nimport type { FixedToolbarFeatureProps } from '../../server/index.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { ToolbarButton } from '../../../shared/ToolbarButton/index.js'\nimport { ToolbarDropdown } from '../../../shared/ToolbarDropdown/index.js'\nimport { useToolbarStates } from '../../../shared/useToolbarStates.js'\nimport { useRedirectVerticalWheelToHorizontalScroll } from './horizontalWheelScroll.js'\nimport './index.css'\n\nfunction ButtonGroupItem({\n active,\n anchorElem,\n editor,\n enabled,\n item,\n}: {\n active: boolean\n anchorElem: HTMLElement\n editor: LexicalEditor\n enabled: boolean\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 if (!item.ChildComponent) {\n return null\n }\n\n return (\n <ToolbarButton active={active} editor={editor} enabled={enabled} item={item} key={item.key}>\n <item.ChildComponent />\n </ToolbarButton>\n )\n}\n\nfunction ToolbarGroupComponent({\n anchorElem,\n editor,\n editorConfig,\n group,\n index,\n toolbarStates,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n group: ToolbarGroup\n index: number\n toolbarStates: ToolbarStates\n}): React.ReactNode {\n const { i18n } = useTranslation<{}, string>()\n const {\n fieldProps: { featureClientSchemaMap, schemaPath },\n } = useEditorConfigContext()\n\n const groupState = toolbarStates.groupStates.get(group.key)\n\n const DropdownIcon = useMemo(() => {\n if (group.type !== 'dropdown') {\n return undefined\n }\n const activeItem = groupState?.activeItems?.[0]\n if (activeItem) {\n return activeItem.ChildComponent\n }\n return group.ChildComponent\n }, [group, groupState?.activeItems])\n\n const dropdownLabel = useMemo(() => {\n if (group.type !== 'dropdown') {\n return undefined\n }\n const activeItems = groupState?.activeItems\n if (!activeItems?.length) {\n return undefined\n }\n if (activeItems.length > 1) {\n return i18n.t('lexical:general:toolbarItemsActive', { count: activeItems.length })\n }\n const item = activeItems[0]!\n let label = item.key\n if (item.label) {\n label =\n typeof item.label === 'function'\n ? item.label({ featureClientSchemaMap, i18n, schemaPath })\n : item.label\n }\n if (label.length > 25) {\n label = label.substring(0, 25) + '...'\n }\n return label\n }, [group, groupState?.activeItems, i18n, featureClientSchemaMap, schemaPath])\n\n return (\n <div\n className={`fixed-toolbar__group fixed-toolbar__group-${group.key}`}\n data-toolbar-group-key={group.key}\n key={group.key}\n >\n {group.type === 'dropdown' && group.items.length && groupState ? (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n group={group}\n groupState={groupState}\n Icon={DropdownIcon}\n itemsContainerClassNames={['fixed-toolbar__dropdown-items']}\n label={dropdownLabel}\n />\n ) : null}\n {group.type === 'buttons' && group.items.length\n ? group.items.map((item) => {\n const itemState = toolbarStates.itemStates.get(item.key)\n return (\n <ButtonGroupItem\n active={itemState?.active ?? false}\n anchorElem={anchorElem}\n editor={editor}\n enabled={itemState?.enabled ?? true}\n item={item}\n key={item.key}\n />\n )\n })\n : null}\n {index < editorConfig.features.toolbarFixed?.groups.length - 1 && <div className=\"divider\" />}\n </div>\n )\n}\n\nfunction FixedToolbar({\n anchorElem,\n clientProps,\n editor,\n editorConfig,\n parentWithFixedToolbar,\n}: {\n anchorElem: HTMLElement\n clientProps?: FixedToolbarFeatureProps\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n parentWithFixedToolbar: EditorConfigContextType | false\n}): React.ReactNode {\n const currentToolbarRef = React.useRef<HTMLDivElement>(null)\n const isEditable = useLexicalEditable()\n\n const { y } = useScrollInfo()\n\n useRedirectVerticalWheelToHorizontalScroll()\n\n const toolbarStates = useToolbarStates(editor, editorConfig?.features?.toolbarFixed?.groups)\n\n // Memoize the parent toolbar element\n const parentToolbarElem = useMemo(() => {\n if (!parentWithFixedToolbar || clientProps?.disableIfParentHasFixedToolbar) {\n return null\n }\n\n const parentEditorElem = parentWithFixedToolbar.editorContainerRef.current\n let sibling = parentEditorElem.previousElementSibling\n while (sibling) {\n if (sibling.classList.contains('fixed-toolbar')) {\n return sibling\n }\n sibling = sibling.previousElementSibling\n }\n return null\n }, [clientProps?.disableIfParentHasFixedToolbar, parentWithFixedToolbar])\n\n useThrottledEffect(\n () => {\n if (!parentToolbarElem) {\n // this also checks for clientProps?.disableIfParentHasFixedToolbar indirectly, see the parentToolbarElem useMemo\n return\n }\n const currentToolbarElem = currentToolbarRef.current\n if (!currentToolbarElem) {\n return\n }\n\n const currentRect = currentToolbarElem.getBoundingClientRect()\n const parentRect = parentToolbarElem.getBoundingClientRect()\n\n // we only need to check for vertical overlap\n const overlapping = !(\n currentRect.bottom < parentRect.top || currentRect.top > parentRect.bottom\n )\n\n if (overlapping) {\n currentToolbarElem.classList.remove('fixed-toolbar')\n currentToolbarElem.classList.add('fixed-toolbar', 'fixed-toolbar--overlapping')\n parentToolbarElem.classList.remove('fixed-toolbar')\n parentToolbarElem.classList.add('fixed-toolbar', 'fixed-toolbar--hide')\n } else {\n if (!currentToolbarElem.classList.contains('fixed-toolbar--overlapping')) {\n return\n }\n currentToolbarElem.classList.remove('fixed-toolbar--overlapping')\n currentToolbarElem.classList.add('fixed-toolbar')\n parentToolbarElem.classList.remove('fixed-toolbar--hide')\n parentToolbarElem.classList.add('fixed-toolbar')\n }\n },\n 50,\n [currentToolbarRef, parentToolbarElem, y],\n )\n\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 ref={currentToolbarRef}\n >\n {isEditable && (\n <div className=\"fixed-toolbar__scroll\">\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 toolbarStates={toolbarStates}\n />\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\nconst getParentEditorWithFixedToolbar = (\n editorConfigContext: EditorConfigContextType,\n): EditorConfigContextType | false => {\n if (editorConfigContext.parentEditor?.editorConfig) {\n if (editorConfigContext.parentEditor?.editorConfig.resolvedFeatureMap.has('toolbarFixed')) {\n return editorConfigContext.parentEditor\n } else {\n if (editorConfigContext.parentEditor) {\n return getParentEditorWithFixedToolbar(editorConfigContext.parentEditor)\n }\n }\n }\n return false\n}\n\nexport const FixedToolbarPlugin: PluginComponent<FixedToolbarFeatureProps> = ({ clientProps }) => {\n const [currentEditor] = useLexicalComposerContext()\n const editorConfigContext = useEditorConfigContext()\n const isEditable = useLexicalEditable()\n if (!isEditable) {\n return null\n }\n\n const { editorConfig: currentEditorConfig } = editorConfigContext\n\n const editor = clientProps.applyToFocusedEditor\n ? editorConfigContext.focusedEditor?.editor || currentEditor\n : currentEditor\n\n const editorConfig = clientProps.applyToFocusedEditor\n ? editorConfigContext.focusedEditor?.editorConfig || currentEditorConfig\n : currentEditorConfig\n\n const parentWithFixedToolbar = getParentEditorWithFixedToolbar(editorConfigContext)\n\n if (clientProps?.disableIfParentHasFixedToolbar) {\n if (parentWithFixedToolbar) {\n return null\n }\n }\n\n if (!editorConfig?.features?.toolbarFixed?.groups?.length) {\n return null\n }\n\n return (\n <FixedToolbar\n anchorElem={document.body}\n clientProps={clientProps}\n editor={editor}\n editorConfig={editorConfig}\n parentWithFixedToolbar={parentWithFixedToolbar}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,16 +8,12 @@
8
8
  vertical-align: middle;
9
9
  position: absolute;
10
10
  top: 0;
11
- left: 0;
11
+ inset-inline-start: 0;
12
12
  z-index: 2;
13
13
  opacity: 0;
14
14
  border-radius: var(--radius-medium);
15
- transition: opacity 0.2s;
16
15
  will-change: transform;
17
- box-shadow:
18
- 0px 1px 2px 1px rgba(0, 0, 0, 0.1),
19
- 0px 4px 16px 0px rgba(0, 0, 0, 0.2),
20
- 0px -4px 8px 0px rgba(0, 0, 0, 0.1);
16
+ box-shadow: var(--elevation-300-tooltip);
21
17
  }
22
18
 
23
19
  .inline-toolbar-popup__group {
@@ -32,12 +28,4 @@
32
28
  background-color: var(--lexical-border-color);
33
29
  }
34
30
  }
35
-
36
- html[data-theme='light'] {
37
- .inline-toolbar-popup {
38
- box-shadow:
39
- 0px 1px 2px 1px rgba(0, 0, 0, 0.05),
40
- 0px 4px 8px 0px rgba(0, 0, 0, 0.1);
41
- }
42
- }
43
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/toolbars/shared/ToolbarButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAI5C,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,aAAa,GAAI,8CAM3B;IACD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAA;IAC3B,MAAM,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,gBAAgB,CAAA;CACvB,sBAmFA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/toolbars/shared/ToolbarButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAI5C,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,aAAa,iDAMvB;IACD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAA;IAC3B,MAAM,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,gBAAgB,CAAA;CACvB,sBAmFA,CAAA"}