payload-richtext-tiptap 0.0.40 → 0.0.42

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 (258) hide show
  1. package/README.md +4 -47
  2. package/dist/src/fields/TiptapEditor/Components.d.ts.map +1 -1
  3. package/dist/src/fields/TiptapEditor/Components.js +3 -3
  4. package/dist/src/fields/TiptapEditor/Components.js.map +1 -1
  5. package/dist/src/fields/TiptapEditor/context/EditorContext.js.map +1 -1
  6. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.d.ts +4 -0
  7. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.d.ts.map +1 -0
  8. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js +208 -0
  9. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js.map +1 -0
  10. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.d.ts +5 -0
  11. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.d.ts.map +1 -0
  12. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js +123 -0
  13. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js.map +1 -0
  14. package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.d.ts +10 -0
  15. package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.d.ts.map +1 -0
  16. package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.js +29 -0
  17. package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.js.map +1 -0
  18. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.d.ts +5 -0
  19. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.d.ts.map +1 -0
  20. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.js +123 -0
  21. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.js.map +1 -0
  22. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.d.ts +4 -0
  23. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.d.ts.map +1 -0
  24. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js +260 -0
  25. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js.map +1 -0
  26. package/dist/src/fields/TiptapEditor/extensions/AICommand/index.d.ts +2 -0
  27. package/dist/src/fields/TiptapEditor/extensions/AICommand/index.d.ts.map +1 -0
  28. package/dist/src/fields/TiptapEditor/extensions/AICommand/index.js +3 -0
  29. package/dist/src/fields/TiptapEditor/extensions/AICommand/index.js.map +1 -0
  30. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.d.ts +22 -0
  31. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.d.ts.map +1 -0
  32. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js +3 -0
  33. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js.map +1 -0
  34. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/BlockquoteFigure.js.map +1 -1
  35. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Design.js.map +1 -1
  36. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/Quote.js.map +1 -1
  37. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/index.js.map +1 -1
  38. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/QuoteCaption.js.map +1 -1
  39. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/index.js.map +1 -1
  40. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/index.js.map +1 -1
  41. package/dist/src/fields/TiptapEditor/extensions/Document/Document.js.map +1 -1
  42. package/dist/src/fields/TiptapEditor/extensions/Document/index.js.map +1 -1
  43. package/dist/src/fields/TiptapEditor/extensions/Figcaption/Figcaption.js.map +1 -1
  44. package/dist/src/fields/TiptapEditor/extensions/Figcaption/index.js.map +1 -1
  45. package/dist/src/fields/TiptapEditor/extensions/Figure/Figure.js.map +1 -1
  46. package/dist/src/fields/TiptapEditor/extensions/Figure/index.js.map +1 -1
  47. package/dist/src/fields/TiptapEditor/extensions/FontSize/FontSize.js.map +1 -1
  48. package/dist/src/fields/TiptapEditor/extensions/FontSize/index.js.map +1 -1
  49. package/dist/src/fields/TiptapEditor/extensions/Heading/Heading.js.map +1 -1
  50. package/dist/src/fields/TiptapEditor/extensions/Heading/index.js.map +1 -1
  51. package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/HorizontalRule.js.map +1 -1
  52. package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/index.js.map +1 -1
  53. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js.map +1 -1
  54. package/dist/src/fields/TiptapEditor/extensions/Iframe/index.js.map +1 -1
  55. package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.js.map +1 -1
  56. package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/index.js.map +1 -1
  57. package/dist/src/fields/TiptapEditor/extensions/Image/Image.js.map +1 -1
  58. package/dist/src/fields/TiptapEditor/extensions/Image/index.js.map +1 -1
  59. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.js.map +1 -1
  60. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.js.map +1 -1
  61. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockView.js.map +1 -1
  62. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockWidth.js.map +1 -1
  63. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/index.js.map +1 -1
  64. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.d.ts.map +1 -1
  65. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js +3 -2
  66. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js.map +1 -1
  67. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/index.js.map +1 -1
  68. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.d.ts +2 -2
  69. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.d.ts.map +1 -1
  70. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js +38 -21
  71. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
  72. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUploader.js.map +1 -1
  73. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/hooks.js.map +1 -1
  74. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/index.js.map +1 -1
  75. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.js.map +1 -1
  76. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLinksComponent.js.map +1 -1
  77. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/index.js.map +1 -1
  78. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/insideLinks.js.map +1 -1
  79. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/InsideLinksMenu.js.map +1 -1
  80. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/index.js.map +1 -1
  81. package/dist/src/fields/TiptapEditor/extensions/Link/Link.js.map +1 -1
  82. package/dist/src/fields/TiptapEditor/extensions/Link/index.js.map +1 -1
  83. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Column.js.map +1 -1
  84. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js.map +1 -1
  85. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/index.js.map +1 -1
  86. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.js.map +1 -1
  87. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/index.js.map +1 -1
  88. package/dist/src/fields/TiptapEditor/extensions/Paragraph/Paragraph.js.map +1 -1
  89. package/dist/src/fields/TiptapEditor/extensions/Paragraph/index.js.map +1 -1
  90. package/dist/src/fields/TiptapEditor/extensions/Selection/Selection.js.map +1 -1
  91. package/dist/src/fields/TiptapEditor/extensions/Selection/index.js.map +1 -1
  92. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/CommandButton.js.map +1 -1
  93. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
  94. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/SlashCommand.js.map +1 -1
  95. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
  96. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/index.js.map +1 -1
  97. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/types.js.map +1 -1
  98. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/FacebookEmbed.js.map +1 -1
  99. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/facebook.js.map +1 -1
  100. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/index.js.map +1 -1
  101. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.js.map +1 -1
  102. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/index.js.map +1 -1
  103. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/instagram.js.map +1 -1
  104. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/LinkedinEmbed.js.map +1 -1
  105. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/index.js.map +1 -1
  106. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/linkedin.js.map +1 -1
  107. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.js.map +1 -1
  108. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/TiktokEmbed.js.map +1 -1
  109. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/index.js.map +1 -1
  110. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.js.map +1 -1
  111. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/TwitterEmbed.js.map +1 -1
  112. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/index.js.map +1 -1
  113. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.js.map +1 -1
  114. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.js.map +1 -1
  115. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.js.map +1 -1
  116. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.js.map +1 -1
  117. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/index.js.map +1 -1
  118. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.js.map +1 -1
  119. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.js.map +1 -1
  120. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/index.js.map +1 -1
  121. package/dist/src/fields/TiptapEditor/extensions/Table/Cell.js.map +1 -1
  122. package/dist/src/fields/TiptapEditor/extensions/Table/Header.js.map +1 -1
  123. package/dist/src/fields/TiptapEditor/extensions/Table/Row.js.map +1 -1
  124. package/dist/src/fields/TiptapEditor/extensions/Table/Table.js.map +1 -1
  125. package/dist/src/fields/TiptapEditor/extensions/Table/index.js.map +1 -1
  126. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.js.map +1 -1
  127. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.js.map +1 -1
  128. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.js.map +1 -1
  129. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.js.map +1 -1
  130. package/dist/src/fields/TiptapEditor/extensions/Table/menus/index.js.map +1 -1
  131. package/dist/src/fields/TiptapEditor/extensions/Table/utils.js.map +1 -1
  132. package/dist/src/fields/TiptapEditor/extensions/TableOfContentsNode/TableOfContentsNode.js.map +1 -1
  133. package/dist/src/fields/TiptapEditor/extensions/TableOfContentsNode/index.js.map +1 -1
  134. package/dist/src/fields/TiptapEditor/extensions/TrailingNode/index.js.map +1 -1
  135. package/dist/src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.js.map +1 -1
  136. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +3 -1
  137. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
  138. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js +22 -15
  139. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
  140. package/dist/src/fields/TiptapEditor/extensions/index.d.ts +1 -0
  141. package/dist/src/fields/TiptapEditor/extensions/index.d.ts.map +1 -1
  142. package/dist/src/fields/TiptapEditor/extensions/index.js +1 -0
  143. package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
  144. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts +4 -1
  145. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
  146. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +3 -2
  147. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
  148. package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorHeader.js.map +1 -1
  149. package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorInfo.js.map +1 -1
  150. package/dist/src/fields/TiptapEditor/features/BlockEditor/index.js.map +1 -1
  151. package/dist/src/fields/TiptapEditor/features/BlockEditor/types.js.map +1 -1
  152. package/dist/src/fields/TiptapEditor/features/Sidebar/Sidebar.js.map +1 -1
  153. package/dist/src/fields/TiptapEditor/features/Sidebar/index.js.map +1 -1
  154. package/dist/src/fields/TiptapEditor/features/TableOfContents/TableOfContents.js.map +1 -1
  155. package/dist/src/fields/TiptapEditor/features/TableOfContents/index.js.map +1 -1
  156. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/ContentItemMenu.js.map +1 -1
  157. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useContentItemActions.js.map +1 -1
  158. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useData.js.map +1 -1
  159. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/index.js.map +1 -1
  160. package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/LinkMenu.js.map +1 -1
  161. package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/index.js.map +1 -1
  162. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/TextMenu.js.map +1 -1
  163. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ContentTypePicker.js.map +1 -1
  164. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditIframeLinkPopover.js.map +1 -1
  165. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditLinkPopover.js.map +1 -1
  166. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.js.map +1 -1
  167. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.js.map +1 -1
  168. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/SocialMediaPopover.js.map +1 -1
  169. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.js.map +1 -1
  170. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.d.ts +8 -0
  171. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.d.ts.map +1 -0
  172. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js +94 -0
  173. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js.map +1 -0
  174. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js.map +1 -1
  175. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.js.map +1 -1
  176. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuContentTypes.js.map +1 -1
  177. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuStates.js.map +1 -1
  178. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/index.js.map +1 -1
  179. package/dist/src/fields/TiptapEditor/features/menus/index.js.map +1 -1
  180. package/dist/src/fields/TiptapEditor/features/menus/types.js.map +1 -1
  181. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts +7 -0
  182. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts.map +1 -0
  183. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js +193 -0
  184. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -0
  185. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.d.ts +2 -0
  186. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.d.ts.map +1 -0
  187. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.js +3 -0
  188. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.js.map +1 -0
  189. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.d.ts.map +1 -1
  190. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js +29 -17
  191. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js.map +1 -1
  192. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/index.js.map +1 -1
  193. package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/ColorButton.js.map +1 -1
  194. package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/Colorpicker.js.map +1 -1
  195. package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/index.js.map +1 -1
  196. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js.map +1 -1
  197. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/index.js.map +1 -1
  198. package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/InsideLinksEditorPanel.js.map +1 -1
  199. package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/index.js.map +1 -1
  200. package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.js.map +1 -1
  201. package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/index.js.map +1 -1
  202. package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/LinkPreviewPanel.js.map +1 -1
  203. package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/index.js.map +1 -1
  204. package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js.map +1 -1
  205. package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/index.js.map +1 -1
  206. package/dist/src/fields/TiptapEditor/features/panels/index.js.map +1 -1
  207. package/dist/src/fields/TiptapEditor/features/ui/Button/Button.js.map +1 -1
  208. package/dist/src/fields/TiptapEditor/features/ui/Button/index.js.map +1 -1
  209. package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js.map +1 -1
  210. package/dist/src/fields/TiptapEditor/features/ui/Dropdown/index.js.map +1 -1
  211. package/dist/src/fields/TiptapEditor/features/ui/Icon.js.map +1 -1
  212. package/dist/src/fields/TiptapEditor/features/ui/Loader/Loader.js.map +1 -1
  213. package/dist/src/fields/TiptapEditor/features/ui/Loader/index.js.map +1 -1
  214. package/dist/src/fields/TiptapEditor/features/ui/Loader/types.js.map +1 -1
  215. package/dist/src/fields/TiptapEditor/features/ui/Panel/index.js.map +1 -1
  216. package/dist/src/fields/TiptapEditor/features/ui/PopoverMenu.js.map +1 -1
  217. package/dist/src/fields/TiptapEditor/features/ui/Spinner/Spinner.js.map +1 -1
  218. package/dist/src/fields/TiptapEditor/features/ui/Spinner/index.js.map +1 -1
  219. package/dist/src/fields/TiptapEditor/features/ui/Surface.js.map +1 -1
  220. package/dist/src/fields/TiptapEditor/features/ui/Textarea/Textarea.js.map +1 -1
  221. package/dist/src/fields/TiptapEditor/features/ui/Textarea/index.js.map +1 -1
  222. package/dist/src/fields/TiptapEditor/features/ui/Toggle/Toggle.js.map +1 -1
  223. package/dist/src/fields/TiptapEditor/features/ui/Toggle/index.js.map +1 -1
  224. package/dist/src/fields/TiptapEditor/features/ui/Toolbar.js.map +1 -1
  225. package/dist/src/fields/TiptapEditor/features/ui/Tooltip/index.js.map +1 -1
  226. package/dist/src/fields/TiptapEditor/features/ui/Tooltip/types.js.map +1 -1
  227. package/dist/src/fields/TiptapEditor/features/ui/crazy-spinner.js.map +1 -1
  228. package/dist/src/fields/TiptapEditor/features/ui/scroll-area.js.map +1 -1
  229. package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.d.ts +3 -1
  230. package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.d.ts.map +1 -1
  231. package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js +4 -3
  232. package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
  233. package/dist/src/fields/TiptapEditor/hooks/useSidebar.js.map +1 -1
  234. package/dist/src/fields/TiptapEditor/index.js.map +1 -1
  235. package/dist/src/fields/TiptapEditor/lib/api.js.map +1 -1
  236. package/dist/src/fields/TiptapEditor/lib/constants.js.map +1 -1
  237. package/dist/src/fields/TiptapEditor/lib/data/initialContent.js.map +1 -1
  238. package/dist/src/fields/TiptapEditor/lib/extract.d.ts +3 -0
  239. package/dist/src/fields/TiptapEditor/lib/extract.d.ts.map +1 -0
  240. package/dist/src/fields/TiptapEditor/lib/extract.js +28 -0
  241. package/dist/src/fields/TiptapEditor/lib/extract.js.map +1 -0
  242. package/dist/src/fields/TiptapEditor/lib/utils/cssVar.js.map +1 -1
  243. package/dist/src/fields/TiptapEditor/lib/utils/deepMerge.js.map +1 -1
  244. package/dist/src/fields/TiptapEditor/lib/utils/getRenderContainer.js.map +1 -1
  245. package/dist/src/fields/TiptapEditor/lib/utils/index.js.map +1 -1
  246. package/dist/src/fields/TiptapEditor/lib/utils/isCustomNodeSelected.js.map +1 -1
  247. package/dist/src/fields/TiptapEditor/lib/utils/isRtl.js.map +1 -1
  248. package/dist/src/fields/TiptapEditor/lib/utils/isTextSelected.js.map +1 -1
  249. package/dist/src/fields/TiptapEditor/lib/utils/partialRequired.js.map +1 -1
  250. package/dist/src/fields/TiptapEditor/types.d.js +3 -0
  251. package/dist/src/fields/TiptapEditor/types.d.js.map +1 -0
  252. package/dist/src/index.d.ts +1 -0
  253. package/dist/src/index.d.ts.map +1 -1
  254. package/dist/src/index.js +1 -0
  255. package/dist/src/index.js.map +1 -1
  256. package/dist/src/styles.css +0 -4
  257. package/dist/tsconfig.tsbuildinfo +1 -1
  258. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.tsx"],"sourcesContent":["import * as Dropdown from \"@radix-ui/react-dropdown-menu\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useCallback } from \"react\";\nimport { DropdownButton } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Surface } from \"../../../ui/Surface.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nconst FONT_SIZES = [\n { label: \"Smaller\", value: \"12px\" },\n { label: \"Small\", value: \"14px\" },\n { label: \"Medium\", value: \"\" },\n { label: \"Large\", value: \"18px\" },\n { label: \"Extra Large\", value: \"24px\" },\n];\n\nexport type FontSizePickerProps = {\n onChange: (value: string) => void; // eslint-disable-line no-unused-vars\n value: string;\n};\n\nexport const FontSizePicker = ({ onChange, value }: FontSizePickerProps) => {\n const currentValue = FONT_SIZES.find((size) => size.value === value);\n const currentSizeLabel = currentValue?.label.split(\" \")[0] || \"Medium\";\n\n const selectSize = useCallback(\n (size: string) => () => onChange(size),\n [onChange]\n );\n\n return (\n <Dropdown.Root>\n <Dropdown.Trigger asChild>\n <Toolbar.Button type=\"button\" active={!!currentValue?.value}>\n {currentSizeLabel}\n <Icon icon={ChevronDown} className=\"w-2 h-2\" />\n </Toolbar.Button>\n </Dropdown.Trigger>\n <Dropdown.Content asChild>\n <Surface className=\"flex flex-col gap-1 px-2 py-4\">\n {FONT_SIZES.map((size) => (\n <DropdownButton\n isActive={value === size.value}\n onClick={selectSize(size.value)}\n key={`${size.label}_${size.value}`}\n >\n <span style={{ fontSize: size.value }}>{size.label}</span>\n </DropdownButton>\n ))}\n </Surface>\n </Dropdown.Content>\n </Dropdown.Root>\n );\n};\n"],"names":["Dropdown","ChevronDown","useCallback","DropdownButton","Icon","Surface","Toolbar","FONT_SIZES","label","value","FontSizePicker","onChange","currentValue","find","size","currentSizeLabel","split","selectSize","Root","Trigger","asChild","Button","type","active","icon","className","Content","map","isActive","onClick","span","style","fontSize"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,YAAYA,cAAc,gCAAgC;AAC1D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,WAAW,QAAQ,QAAQ;AACpC,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,aAAa;IACjB;QAAEC,OAAO;QAAWC,OAAO;IAAO;IAClC;QAAED,OAAO;QAASC,OAAO;IAAO;IAChC;QAAED,OAAO;QAAUC,OAAO;IAAG;IAC7B;QAAED,OAAO;QAASC,OAAO;IAAO;IAChC;QAAED,OAAO;QAAeC,OAAO;IAAO;CACvC;AAOD,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,QAAQ,EAAEF,KAAK,EAAuB;IACrE,MAAMG,eAAeL,WAAWM,IAAI,CAAC,CAACC,OAASA,KAAKL,KAAK,KAAKA;IAC9D,MAAMM,mBAAmBH,cAAcJ,MAAMQ,MAAM,IAAI,CAAC,EAAE,IAAI;IAE9D,MAAMC,aAAaf,YACjB,CAACY,OAAiB,IAAMH,SAASG,OACjC;QAACH;KAAS;IAGZ,qBACE,MAACX,SAASkB,IAAI;;0BACZ,KAAClB,SAASmB,OAAO;gBAACC,OAAO;0BACvB,cAAA,MAACd,QAAQe,MAAM;oBAACC,MAAK;oBAASC,QAAQ,CAAC,CAACX,cAAcH;;wBACnDM;sCACD,KAACX;4BAAKoB,MAAMvB;4BAAawB,WAAU;;;;;0BAGvC,KAACzB,SAAS0B,OAAO;gBAACN,OAAO;0BACvB,cAAA,KAACf;oBAAQoB,WAAU;8BAChBlB,WAAWoB,GAAG,CAAC,CAACb,qBACf,KAACX;4BACCyB,UAAUnB,UAAUK,KAAKL,KAAK;4BAC9BoB,SAASZ,WAAWH,KAAKL,KAAK;sCAG9B,cAAA,KAACqB;gCAAKC,OAAO;oCAAEC,UAAUlB,KAAKL,KAAK;gCAAC;0CAAIK,KAAKN,KAAK;;2BAF7C,CAAC,EAAEM,KAAKN,KAAK,CAAC,CAAC,EAAEM,KAAKL,KAAK,CAAC,CAAC;;;;;AAShD,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.tsx"],"sourcesContent":["import * as Dropdown from \"@radix-ui/react-dropdown-menu\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useCallback } from \"react\";\nimport { DropdownButton } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Surface } from \"../../../ui/Surface.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nconst FONT_SIZES = [\n { label: \"Smaller\", value: \"12px\" },\n { label: \"Small\", value: \"14px\" },\n { label: \"Medium\", value: \"\" },\n { label: \"Large\", value: \"18px\" },\n { label: \"Extra Large\", value: \"24px\" },\n];\n\nexport type FontSizePickerProps = {\n onChange: (value: string) => void; // eslint-disable-line no-unused-vars\n value: string;\n};\n\nexport const FontSizePicker = ({ onChange, value }: FontSizePickerProps) => {\n const currentValue = FONT_SIZES.find((size) => size.value === value);\n const currentSizeLabel = currentValue?.label.split(\" \")[0] || \"Medium\";\n\n const selectSize = useCallback(\n (size: string) => () => onChange(size),\n [onChange]\n );\n\n return (\n <Dropdown.Root>\n <Dropdown.Trigger asChild>\n <Toolbar.Button type=\"button\" active={!!currentValue?.value}>\n {currentSizeLabel}\n <Icon icon={ChevronDown} className=\"w-2 h-2\" />\n </Toolbar.Button>\n </Dropdown.Trigger>\n <Dropdown.Content asChild>\n <Surface className=\"flex flex-col gap-1 px-2 py-4\">\n {FONT_SIZES.map((size) => (\n <DropdownButton\n isActive={value === size.value}\n onClick={selectSize(size.value)}\n key={`${size.label}_${size.value}`}\n >\n <span style={{ fontSize: size.value }}>{size.label}</span>\n </DropdownButton>\n ))}\n </Surface>\n </Dropdown.Content>\n </Dropdown.Root>\n );\n};\n"],"names":["Dropdown","ChevronDown","useCallback","DropdownButton","Icon","Surface","Toolbar","FONT_SIZES","label","value","FontSizePicker","onChange","currentValue","find","size","currentSizeLabel","split","selectSize","Root","Trigger","asChild","Button","type","active","icon","className","Content","map","isActive","onClick","span","style","fontSize"],"mappings":";AAAA,YAAYA,cAAc,gCAAgC;AAC1D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,WAAW,QAAQ,QAAQ;AACpC,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,aAAa;IACjB;QAAEC,OAAO;QAAWC,OAAO;IAAO;IAClC;QAAED,OAAO;QAASC,OAAO;IAAO;IAChC;QAAED,OAAO;QAAUC,OAAO;IAAG;IAC7B;QAAED,OAAO;QAASC,OAAO;IAAO;IAChC;QAAED,OAAO;QAAeC,OAAO;IAAO;CACvC;AAOD,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,QAAQ,EAAEF,KAAK,EAAuB;IACrE,MAAMG,eAAeL,WAAWM,IAAI,CAAC,CAACC,OAASA,KAAKL,KAAK,KAAKA;IAC9D,MAAMM,mBAAmBH,cAAcJ,MAAMQ,MAAM,IAAI,CAAC,EAAE,IAAI;IAE9D,MAAMC,aAAaf,YACjB,CAACY,OAAiB,IAAMH,SAASG,OACjC;QAACH;KAAS;IAGZ,qBACE,MAACX,SAASkB,IAAI;;0BACZ,KAAClB,SAASmB,OAAO;gBAACC,OAAO;0BACvB,cAAA,MAACd,QAAQe,MAAM;oBAACC,MAAK;oBAASC,QAAQ,CAAC,CAACX,cAAcH;;wBACnDM;sCACD,KAACX;4BAAKoB,MAAMvB;4BAAawB,WAAU;;;;;0BAGvC,KAACzB,SAAS0B,OAAO;gBAACN,OAAO;0BACvB,cAAA,KAACf;oBAAQoB,WAAU;8BAChBlB,WAAWoB,GAAG,CAAC,CAACb,qBACf,KAACX;4BACCyB,UAAUnB,UAAUK,KAAKL,KAAK;4BAC9BoB,SAASZ,WAAWH,KAAKL,KAAK;sCAG9B,cAAA,KAACqB;gCAAKC,OAAO;oCAAEC,UAAUlB,KAAKL,KAAK;gCAAC;0CAAIK,KAAKN,KAAK;;2BAF7C,CAAC,EAAEM,KAAKN,KAAK,CAAC,CAAC,EAAEM,KAAKL,KAAK,CAAC,CAAC;;;;;AAShD,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/SocialMediaPopover.tsx"],"sourcesContent":["import * as Popover from \"@radix-ui/react-popover\";\nimport { Link } from \"lucide-react\";\nimport { IframeLinkEditorPanel } from \"../../../panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nexport type SocialMediaPopoverProps = {\n onSetLink: (src: string) => void;\n initialSrcLink: string;\n};\n\nexport const SocialMediaPopover = ({\n onSetLink,\n initialSrcLink,\n}: SocialMediaPopoverProps) => {\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button type=\"button\" tooltip=\"Embed Link\">\n <Icon icon={Link} />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content>\n <IframeLinkEditorPanel\n onSetLink={onSetLink}\n initialSrc={initialSrcLink ?? \"\"}\n />\n </Popover.Content>\n </Popover.Root>\n );\n};\n"],"names":["Popover","Link","IframeLinkEditorPanel","Icon","Toolbar","SocialMediaPopover","onSetLink","initialSrcLink","Root","Trigger","asChild","Button","type","tooltip","icon","Content","initialSrc"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,YAAYA,aAAa,0BAA0B;AACnD,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,qBAAqB,QAAQ,iEAAiE;AACvG,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AAOjD,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,SAAS,EACTC,cAAc,EACU;IACxB,qBACE,MAACP,QAAQQ,IAAI;;0BACX,KAACR,QAAQS,OAAO;gBAACC,OAAO;0BACtB,cAAA,KAACN,QAAQO,MAAM;oBAACC,MAAK;oBAASC,SAAQ;8BACpC,cAAA,KAACV;wBAAKW,MAAMb;;;;0BAGhB,KAACD,QAAQe,OAAO;0BACd,cAAA,KAACb;oBACCI,WAAWA;oBACXU,YAAYT,kBAAkB;;;;;AAKxC,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/SocialMediaPopover.tsx"],"sourcesContent":["import * as Popover from \"@radix-ui/react-popover\";\nimport { Link } from \"lucide-react\";\nimport { IframeLinkEditorPanel } from \"../../../panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nexport type SocialMediaPopoverProps = {\n onSetLink: (src: string) => void;\n initialSrcLink: string;\n};\n\nexport const SocialMediaPopover = ({\n onSetLink,\n initialSrcLink,\n}: SocialMediaPopoverProps) => {\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button type=\"button\" tooltip=\"Embed Link\">\n <Icon icon={Link} />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content>\n <IframeLinkEditorPanel\n onSetLink={onSetLink}\n initialSrc={initialSrcLink ?? \"\"}\n />\n </Popover.Content>\n </Popover.Root>\n );\n};\n"],"names":["Popover","Link","IframeLinkEditorPanel","Icon","Toolbar","SocialMediaPopover","onSetLink","initialSrcLink","Root","Trigger","asChild","Button","type","tooltip","icon","Content","initialSrc"],"mappings":";AAAA,YAAYA,aAAa,0BAA0B;AACnD,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,qBAAqB,QAAQ,iEAAiE;AACvG,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AAOjD,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,SAAS,EACTC,cAAc,EACU;IACxB,qBACE,MAACP,QAAQQ,IAAI;;0BACX,KAACR,QAAQS,OAAO;gBAACC,OAAO;0BACtB,cAAA,KAACN,QAAQO,MAAM;oBAACC,MAAK;oBAASC,SAAQ;8BACpC,cAAA,KAACV;wBAAKW,MAAMb;;;;0BAGhB,KAACD,QAAQe,OAAO;0BACd,cAAA,KAACb;oBACCI,WAAWA;oBACXU,YAAYT,kBAAkB;;;;;AAKxC,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.tsx"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { Check, TextQuote, TrashIcon } from \"lucide-react\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nconst AICompletionCommands = ({\n completion,\n onDiscard,\n editor,\n}: {\n editor: Editor;\n completion: string;\n onDiscard: () => void;\n}) => {\n return (\n <>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n value=\"replace\"\n onClick={() => {\n const selection = editor.view.state.selection;\n\n editor\n .chain()\n .focus()\n .insertContentAt(\n {\n from: selection.from,\n to: selection.to,\n },\n completion\n )\n .run();\n }}\n >\n <Check className=\"h-4 w-4 text-muted-foreground\" />\n Replace selection\n </Toolbar.Button>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start\"\n value=\"insert\"\n onClick={() => {\n const selection = editor.view.state.selection;\n editor\n .chain()\n .focus()\n .insertContentAt(selection.to + 1, completion)\n .run();\n }}\n >\n <TextQuote className=\"h-4 w-4 text-muted-foreground\" />\n Insert below\n </Toolbar.Button>\n <Toolbar.Divider horizontal />\n\n <Toolbar.Button\n onClick={onDiscard}\n value=\"thrash\"\n className=\"w-full text-red-500 bg-red-500 dark:text-red-500 hover:bg-red-500 dark:hover:text-red-500 dark:hover:bg-red-500 bg-opacity-10 hover:bg-opacity-20 dark:hover:bg-opacity-20\"\n >\n <TrashIcon className=\"h-4 w-4 text-muted-foreground\" />\n Discard\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AICompletionCommands;\n"],"names":["Check","TextQuote","TrashIcon","Toolbar","AICompletionCommands","completion","onDiscard","editor","Button","className","value","onClick","selection","view","state","chain","focus","insertContentAt","from","to","run","Divider","horizontal"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AACA,SAASA,KAAK,EAAEC,SAAS,EAAEC,SAAS,QAAQ,eAAe;AAC3D,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,uBAAuB,CAAC,EAC5BC,UAAU,EACVC,SAAS,EACTC,MAAM,EAKP;IACC,qBACE;;0BACE,MAACJ,QAAQK,MAAM;gBACbC,WAAU;gBACVC,OAAM;gBACNC,SAAS;oBACP,MAAMC,YAAYL,OAAOM,IAAI,CAACC,KAAK,CAACF,SAAS;oBAE7CL,OACGQ,KAAK,GACLC,KAAK,GACLC,eAAe,CACd;wBACEC,MAAMN,UAAUM,IAAI;wBACpBC,IAAIP,UAAUO,EAAE;oBAClB,GACAd,YAEDe,GAAG;gBACR;;kCAEA,KAACpB;wBAAMS,WAAU;;oBAAkC;;;0BAGrD,MAACN,QAAQK,MAAM;gBACbC,WAAU;gBACVC,OAAM;gBACNC,SAAS;oBACP,MAAMC,YAAYL,OAAOM,IAAI,CAACC,KAAK,CAACF,SAAS;oBAC7CL,OACGQ,KAAK,GACLC,KAAK,GACLC,eAAe,CAACL,UAAUO,EAAE,GAAG,GAAGd,YAClCe,GAAG;gBACR;;kCAEA,KAACnB;wBAAUQ,WAAU;;oBAAkC;;;0BAGzD,KAACN,QAAQkB,OAAO;gBAACC,UAAU;;0BAE3B,MAACnB,QAAQK,MAAM;gBACbG,SAASL;gBACTI,OAAM;gBACND,WAAU;;kCAEV,KAACP;wBAAUO,WAAU;;oBAAkC;;;;;AAK/D;AAEA,eAAeL,qBAAqB"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.tsx"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { Check, TextQuote, TrashIcon } from \"lucide-react\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nconst AICompletionCommands = ({\n completion,\n onDiscard,\n editor,\n}: {\n editor: Editor;\n completion: string;\n onDiscard: () => void;\n}) => {\n return (\n <>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n value=\"replace\"\n onClick={() => {\n const selection = editor.view.state.selection;\n\n editor\n .chain()\n .focus()\n .insertContentAt(\n {\n from: selection.from,\n to: selection.to,\n },\n completion\n )\n .run();\n }}\n >\n <Check className=\"h-4 w-4 text-muted-foreground\" />\n Replace selection\n </Toolbar.Button>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start\"\n value=\"insert\"\n onClick={() => {\n const selection = editor.view.state.selection;\n editor\n .chain()\n .focus()\n .insertContentAt(selection.to + 1, completion)\n .run();\n }}\n >\n <TextQuote className=\"h-4 w-4 text-muted-foreground\" />\n Insert below\n </Toolbar.Button>\n <Toolbar.Divider horizontal />\n\n <Toolbar.Button\n onClick={onDiscard}\n value=\"thrash\"\n className=\"w-full text-red-500 bg-red-500 dark:text-red-500 hover:bg-red-500 dark:hover:text-red-500 dark:hover:bg-red-500 bg-opacity-10 hover:bg-opacity-20 dark:hover:bg-opacity-20\"\n >\n <TrashIcon className=\"h-4 w-4 text-muted-foreground\" />\n Discard\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AICompletionCommands;\n"],"names":["Check","TextQuote","TrashIcon","Toolbar","AICompletionCommands","completion","onDiscard","editor","Button","className","value","onClick","selection","view","state","chain","focus","insertContentAt","from","to","run","Divider","horizontal"],"mappings":";AACA,SAASA,KAAK,EAAEC,SAAS,EAAEC,SAAS,QAAQ,eAAe;AAC3D,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,uBAAuB,CAAC,EAC5BC,UAAU,EACVC,SAAS,EACTC,MAAM,EAKP;IACC,qBACE;;0BACE,MAACJ,QAAQK,MAAM;gBACbC,WAAU;gBACVC,OAAM;gBACNC,SAAS;oBACP,MAAMC,YAAYL,OAAOM,IAAI,CAACC,KAAK,CAACF,SAAS;oBAE7CL,OACGQ,KAAK,GACLC,KAAK,GACLC,eAAe,CACd;wBACEC,MAAMN,UAAUM,IAAI;wBACpBC,IAAIP,UAAUO,EAAE;oBAClB,GACAd,YAEDe,GAAG;gBACR;;kCAEA,KAACpB;wBAAMS,WAAU;;oBAAkC;;;0BAGrD,MAACN,QAAQK,MAAM;gBACbC,WAAU;gBACVC,OAAM;gBACNC,SAAS;oBACP,MAAMC,YAAYL,OAAOM,IAAI,CAACC,KAAK,CAACF,SAAS;oBAC7CL,OACGQ,KAAK,GACLC,KAAK,GACLC,eAAe,CAACL,UAAUO,EAAE,GAAG,GAAGd,YAClCe,GAAG;gBACR;;kCAEA,KAACnB;wBAAUQ,WAAU;;oBAAkC;;;0BAGzD,KAACN,QAAQkB,OAAO;gBAACC,UAAU;;0BAE3B,MAACnB,QAAQK,MAAM;gBACbG,SAASL;gBACTI,OAAM;gBACND,WAAU;;kCAEV,KAACP;wBAAUO,WAAU;;oBAAkC;;;;;AAK/D;AAEA,eAAeL,qBAAqB"}
@@ -0,0 +1,8 @@
1
+ import { Editor } from "@tiptap/react";
2
+ interface AIDraftSelectorCommandsProps {
3
+ editor: Editor;
4
+ onSelect: (value: string) => void;
5
+ }
6
+ declare const AIDraftSelectorCommands: ({ onSelect, editor, }: AIDraftSelectorCommandsProps) => import("react").JSX.Element;
7
+ export default AIDraftSelectorCommands;
8
+ //# sourceMappingURL=ai-draft-selector-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-draft-selector-commands.d.ts","sourceRoot":"","sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAqEvC,UAAU,4BAA4B;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,uBAAuB,0BAG1B,4BAA4B,gCAkC9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useLocale } from "@payloadcms/ui/providers/Locale";
3
+ import { useAssistant } from "ai/react";
4
+ import { ArrowDownWideNarrow, CheckCheck, RefreshCcwDot, WrapText } from "lucide-react";
5
+ import { DropdownCategoryTitle } from "../../../ui/Dropdown/Dropdown.js";
6
+ import { Toolbar } from "../../../ui/Toolbar.js";
7
+ const draftPromptOptions = [
8
+ // {
9
+ // value: 'translate',
10
+ // label: 'Translate text',
11
+ // icon: WrapText,
12
+ // },
13
+ {
14
+ value: "brainstorm",
15
+ label: "Brainstorm Ideas...",
16
+ icon: WrapText,
17
+ prompt: "Brainstorm ideas on "
18
+ },
19
+ {
20
+ value: "blog",
21
+ label: "Blog post...",
22
+ icon: WrapText,
23
+ prompt: "Write a blog post about "
24
+ },
25
+ {
26
+ value: "outline",
27
+ label: "Outline...",
28
+ icon: RefreshCcwDot,
29
+ prompt: "Write an outline about "
30
+ },
31
+ {
32
+ value: "social",
33
+ label: "Social Media post...",
34
+ icon: CheckCheck,
35
+ prompt: "Write a social media post about "
36
+ },
37
+ {
38
+ value: "press",
39
+ label: "Press release...",
40
+ icon: ArrowDownWideNarrow,
41
+ prompt: "Write a press release about "
42
+ },
43
+ {
44
+ value: "creative",
45
+ label: "Creative Story...",
46
+ icon: WrapText,
47
+ prompt: "Write a creative story about "
48
+ },
49
+ {
50
+ value: "essay",
51
+ label: "Essay...",
52
+ icon: WrapText,
53
+ prompt: "Write an essay about "
54
+ }
55
+ ];
56
+ const AIDraftSelectorCommands = ({ onSelect, editor })=>{
57
+ const { status, messages, input, submitMessage, handleInputChange } = useAssistant({
58
+ api: "/api/assistant"
59
+ });
60
+ const { code } = useLocale();
61
+ return /*#__PURE__*/ _jsxs(_Fragment, {
62
+ children: [
63
+ /*#__PURE__*/ _jsx(DropdownCategoryTitle, {
64
+ children: "Draft with AI"
65
+ }),
66
+ /*#__PURE__*/ _jsx(Toolbar.Divider, {
67
+ horizontal: true
68
+ }),
69
+ draftPromptOptions.map((option)=>/*#__PURE__*/ _jsxs(Toolbar.Button, {
70
+ // onSelect={(value) => {
71
+ // const slice = editor.state.selection.content()
72
+ // const text = editor.storage.markdown.serializer.serialize(slice.content)
73
+ // onSelect(text, option.value)
74
+ // }}
75
+ onClick: ()=>{
76
+ const { from, to, empty } = editor.state.selection;
77
+ // const content = editor.state.doc.textBetween(from, to, " ");
78
+ onSelect(option.prompt);
79
+ },
80
+ className: " gap-2 px-4 w-full flex justify-start",
81
+ value: option.value,
82
+ children: [
83
+ /*#__PURE__*/ _jsx(option.icon, {
84
+ className: "h-4 w-4 text-blue-500"
85
+ }),
86
+ option.label
87
+ ]
88
+ }, option.value))
89
+ ]
90
+ });
91
+ };
92
+ export default AIDraftSelectorCommands;
93
+
94
+ //# sourceMappingURL=ai-draft-selector-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.tsx"],"sourcesContent":["import { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor } from \"@tiptap/react\";\nimport { useAssistant } from \"ai/react\";\nimport {\n ArrowDownWideNarrow,\n CheckCheck,\n RefreshCcwDot,\n WrapText,\n} from \"lucide-react\";\nimport { DropdownCategoryTitle } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nconst draftPromptOptions = [\n // {\n // value: 'translate',\n // label: 'Translate text',\n // icon: WrapText,\n // },\n {\n value: \"brainstorm\",\n label: \"Brainstorm Ideas...\",\n\n icon: WrapText,\n prompt: \"Brainstorm ideas on \",\n },\n {\n value: \"blog\",\n label: \"Blog post...\",\n\n icon: WrapText,\n prompt: \"Write a blog post about \",\n },\n {\n value: \"outline\",\n label: \"Outline...\",\n\n icon: RefreshCcwDot,\n prompt: \"Write an outline about \",\n },\n\n {\n value: \"social\",\n label: \"Social Media post...\",\n\n icon: CheckCheck,\n prompt: \"Write a social media post about \",\n },\n {\n value: \"press\",\n label: \"Press release...\",\n\n icon: ArrowDownWideNarrow,\n prompt: \"Write a press release about \",\n },\n {\n value: \"creative\",\n label: \"Creative Story...\",\n\n icon: WrapText,\n prompt: \"Write a creative story about \",\n },\n {\n value: \"essay\",\n label: \"Essay...\",\n\n icon: WrapText,\n prompt: \"Write an essay about \",\n },\n];\n\ninterface AIDraftSelectorCommandsProps {\n editor: Editor;\n onSelect: (value: string) => void;\n}\n\nconst AIDraftSelectorCommands = ({\n onSelect,\n editor,\n}: AIDraftSelectorCommandsProps) => {\n const { status, messages, input, submitMessage, handleInputChange } =\n useAssistant({\n api: \"/api/assistant\",\n });\n const { code } = useLocale();\n\n return (\n <>\n <DropdownCategoryTitle>Draft with AI</DropdownCategoryTitle>\n <Toolbar.Divider horizontal />\n\n {draftPromptOptions.map((option) => (\n <Toolbar.Button\n // onSelect={(value) => {\n // const slice = editor.state.selection.content()\n // const text = editor.storage.markdown.serializer.serialize(slice.content)\n // onSelect(text, option.value)\n // }}\n onClick={() => {\n const { from, to, empty } = editor.state.selection;\n // const content = editor.state.doc.textBetween(from, to, \" \");\n onSelect(option.prompt);\n }}\n className=\" gap-2 px-4 w-full flex justify-start\"\n key={option.value}\n value={option.value}\n >\n <option.icon className=\"h-4 w-4 text-blue-500\" />\n {option.label}\n </Toolbar.Button>\n ))}\n </>\n );\n};\n\nexport default AIDraftSelectorCommands;\n"],"names":["useLocale","useAssistant","ArrowDownWideNarrow","CheckCheck","RefreshCcwDot","WrapText","DropdownCategoryTitle","Toolbar","draftPromptOptions","value","label","icon","prompt","AIDraftSelectorCommands","onSelect","editor","status","messages","input","submitMessage","handleInputChange","api","code","Divider","horizontal","map","option","Button","onClick","from","to","empty","state","selection","className"],"mappings":";AAAA,SAASA,SAAS,QAAQ,kCAAkC;AAE5D,SAASC,YAAY,QAAQ,WAAW;AACxC,SACEC,mBAAmB,EACnBC,UAAU,EACVC,aAAa,EACbC,QAAQ,QACH,eAAe;AACtB,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,qBAAqB;IACzB,IAAI;IACJ,wBAAwB;IACxB,6BAA6B;IAC7B,oBAAoB;IACpB,KAAK;IACL;QACEC,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMP;QACNQ,QAAQ;IACV;IAEA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMR;QACNS,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMT;QACNU,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;CACD;AAOD,MAAMC,0BAA0B,CAAC,EAC/BC,QAAQ,EACRC,MAAM,EACuB;IAC7B,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,aAAa,EAAEC,iBAAiB,EAAE,GACjEnB,aAAa;QACXoB,KAAK;IACP;IACF,MAAM,EAAEC,IAAI,EAAE,GAAGtB;IAEjB,qBACE;;0BACE,KAACM;0BAAsB;;0BACvB,KAACC,QAAQgB,OAAO;gBAACC,UAAU;;YAE1BhB,mBAAmBiB,GAAG,CAAC,CAACC,uBACvB,MAACnB,QAAQoB,MAAM;oBACb,yBAAyB;oBACzB,mDAAmD;oBACnD,6EAA6E;oBAC7E,iCAAiC;oBACjC,KAAK;oBACLC,SAAS;wBACP,MAAM,EAAEC,IAAI,EAAEC,EAAE,EAAEC,KAAK,EAAE,GAAGhB,OAAOiB,KAAK,CAACC,SAAS;wBAClD,+DAA+D;wBAC/DnB,SAASY,OAAOd,MAAM;oBACxB;oBACAsB,WAAU;oBAEVzB,OAAOiB,OAAOjB,KAAK;;sCAEnB,KAACiB,OAAOf,IAAI;4BAACuB,WAAU;;wBACtBR,OAAOhB,KAAK;;mBAJRgB,OAAOjB,KAAK;;;AAS3B;AAEA,eAAeI,wBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.tsx"],"sourcesContent":["import { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { Editor } from \"@tiptap/react\";\nimport { useAssistant } from \"ai/react\";\nimport {\n ArrowDownWideNarrow,\n CheckCheck,\n ChevronDown,\n Languages,\n RefreshCcwDot,\n StepForward,\n WrapText,\n} from \"lucide-react\";\nimport { languages } from \"../../../../lib/constants.js\";\nimport { getPrevText } from \"../../../../lib/utils/index.js\";\nimport { DropdownCategoryTitle } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Surface } from \"../../../ui/Surface.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\nconst options = [\n // {\n // value: 'translate',\n // label: 'Translate text',\n // icon: WrapText,\n // },\n {\n value: \"summarize\",\n label: \"Summarize text\",\n icon: WrapText,\n },\n {\n value: \"rewrite\",\n label: \"Rewrite into Axios\",\n icon: WrapText,\n },\n {\n value: \"improve\",\n label: \"Improve writing\",\n icon: RefreshCcwDot,\n },\n\n {\n value: \"fix\",\n label: \"Fix grammar\",\n icon: CheckCheck,\n },\n {\n value: \"shorter\",\n label: \"Make shorter\",\n icon: ArrowDownWideNarrow,\n },\n {\n value: \"longer\",\n label: \"Make longer\",\n icon: WrapText,\n },\n];\n\ninterface AISelectorCommandsProps {\n editor: Editor;\n onSelect: (\n value: string,\n options: { option: string; language?: string }\n ) => void;\n}\n\nconst AISelectorCommands = ({ onSelect, editor }: AISelectorCommandsProps) => {\n const { status, messages, input, submitMessage, handleInputChange } =\n useAssistant({\n api: \"/api/assistant\",\n });\n const { code } = useLocale();\n\n return (\n <>\n <DropdownCategoryTitle>Edit or review selection</DropdownCategoryTitle>\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n type=\"button\"\n // active={!!states.currentHighlight}\n tooltip=\"Highlight text\"\n >\n <Icon icon={Languages} className=\"h-4 w-4 text-blue-500\" />\n Translate text\n <Icon icon={ChevronDown} className=\"h-4 w-4 text-blue-500\" />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" sideOffset={8} asChild>\n <Surface className=\"flex flex-col min-w-[15rem] p-2 max-h-[20rem] overflow-auto\">\n <DropdownCategoryTitle>Languages</DropdownCategoryTitle>\n\n {languages.map((lang) => (\n <Toolbar.Button\n onClick={() => {\n const { from, to, empty } = editor.state.selection;\n const content = editor.state.doc.textBetween(from, to, \" \");\n onSelect(content, {\n option: \"translate\",\n language: lang.value,\n });\n }}\n className=\"gap-2 px-4 w-full flex justify-start \"\n key={lang.value}\n >\n {lang.label}\n </Toolbar.Button>\n ))}\n </Surface>\n </Popover.Content>\n </Popover.Root>\n\n {options.map((option) => (\n <Toolbar.Button\n // onSelect={(value) => {\n // const slice = editor.state.selection.content()\n // const text = editor.storage.markdown.serializer.serialize(slice.content)\n // onSelect(text, option.value)\n // }}\n onClick={() => {\n const { from, to, empty } = editor.state.selection;\n const content = editor.state.doc.textBetween(from, to, \" \");\n onSelect(content, { option: option.value, language: code ?? \"en\" });\n }}\n className=\" gap-2 px-4 w-full flex justify-start\"\n key={option.value}\n value={option.value}\n >\n <option.icon className=\"h-4 w-4 text-blue-500\" />\n {option.label}\n </Toolbar.Button>\n ))}\n <Toolbar.Divider horizontal />\n <DropdownCategoryTitle>Use AI to do more</DropdownCategoryTitle>\n <Toolbar.Button\n onClick={() => {\n const text = getPrevText(editor, { chars: 5000 });\n onSelect(text, { option: \"continue\", language: code ?? \"en\" });\n }}\n value=\"continue\"\n className=\"gap-2 px-4 w-full flex justify-start\"\n >\n <StepForward className=\"h-4 w-4 text-blue-500\" />\n Continue writing\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AISelectorCommands;\n"],"names":["useLocale","Popover","useAssistant","ArrowDownWideNarrow","CheckCheck","ChevronDown","Languages","RefreshCcwDot","StepForward","WrapText","languages","getPrevText","DropdownCategoryTitle","Icon","Surface","Toolbar","options","value","label","icon","AISelectorCommands","onSelect","editor","status","messages","input","submitMessage","handleInputChange","api","code","Root","Trigger","asChild","Button","className","type","tooltip","Content","side","align","sideOffset","map","lang","onClick","from","to","empty","state","selection","content","doc","textBetween","option","language","Divider","horizontal","text","chars"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.tsx"],"sourcesContent":["import { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { Editor } from \"@tiptap/react\";\nimport { useAssistant } from \"ai/react\";\nimport {\n ArrowDownWideNarrow,\n CheckCheck,\n ChevronDown,\n Languages,\n RefreshCcwDot,\n StepForward,\n WrapText,\n} from \"lucide-react\";\nimport { languages } from \"../../../../lib/constants.js\";\nimport { getPrevText } from \"../../../../lib/utils/index.js\";\nimport { DropdownCategoryTitle } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Surface } from \"../../../ui/Surface.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\nconst options = [\n // {\n // value: 'translate',\n // label: 'Translate text',\n // icon: WrapText,\n // },\n {\n value: \"summarize\",\n label: \"Summarize text\",\n icon: WrapText,\n },\n {\n value: \"rewrite\",\n label: \"Rewrite into Axios\",\n icon: WrapText,\n },\n {\n value: \"improve\",\n label: \"Improve writing\",\n icon: RefreshCcwDot,\n },\n\n {\n value: \"fix\",\n label: \"Fix grammar\",\n icon: CheckCheck,\n },\n {\n value: \"shorter\",\n label: \"Make shorter\",\n icon: ArrowDownWideNarrow,\n },\n {\n value: \"longer\",\n label: \"Make longer\",\n icon: WrapText,\n },\n];\n\ninterface AISelectorCommandsProps {\n editor: Editor;\n onSelect: (\n value: string,\n options: { option: string; language?: string }\n ) => void;\n}\n\nconst AISelectorCommands = ({ onSelect, editor }: AISelectorCommandsProps) => {\n const { status, messages, input, submitMessage, handleInputChange } =\n useAssistant({\n api: \"/api/assistant\",\n });\n const { code } = useLocale();\n\n return (\n <>\n <DropdownCategoryTitle>Edit or review selection</DropdownCategoryTitle>\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n type=\"button\"\n // active={!!states.currentHighlight}\n tooltip=\"Highlight text\"\n >\n <Icon icon={Languages} className=\"h-4 w-4 text-blue-500\" />\n Translate text\n <Icon icon={ChevronDown} className=\"h-4 w-4 text-blue-500\" />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" sideOffset={8} asChild>\n <Surface className=\"flex flex-col min-w-[15rem] p-2 max-h-[20rem] overflow-auto\">\n <DropdownCategoryTitle>Languages</DropdownCategoryTitle>\n\n {languages.map((lang) => (\n <Toolbar.Button\n onClick={() => {\n const { from, to, empty } = editor.state.selection;\n const content = editor.state.doc.textBetween(from, to, \" \");\n onSelect(content, {\n option: \"translate\",\n language: lang.value,\n });\n }}\n className=\"gap-2 px-4 w-full flex justify-start \"\n key={lang.value}\n >\n {lang.label}\n </Toolbar.Button>\n ))}\n </Surface>\n </Popover.Content>\n </Popover.Root>\n\n {options.map((option) => (\n <Toolbar.Button\n // onSelect={(value) => {\n // const slice = editor.state.selection.content()\n // const text = editor.storage.markdown.serializer.serialize(slice.content)\n // onSelect(text, option.value)\n // }}\n onClick={() => {\n const { from, to, empty } = editor.state.selection;\n const content = editor.state.doc.textBetween(from, to, \" \");\n onSelect(content, { option: option.value, language: code ?? \"en\" });\n }}\n className=\" gap-2 px-4 w-full flex justify-start\"\n key={option.value}\n value={option.value}\n >\n <option.icon className=\"h-4 w-4 text-blue-500\" />\n {option.label}\n </Toolbar.Button>\n ))}\n <Toolbar.Divider horizontal />\n <DropdownCategoryTitle>Use AI to do more</DropdownCategoryTitle>\n <Toolbar.Button\n onClick={() => {\n const text = getPrevText(editor, { chars: 5000 });\n onSelect(text, { option: \"continue\", language: code ?? \"en\" });\n }}\n value=\"continue\"\n className=\"gap-2 px-4 w-full flex justify-start\"\n >\n <StepForward className=\"h-4 w-4 text-blue-500\" />\n Continue writing\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AISelectorCommands;\n"],"names":["useLocale","Popover","useAssistant","ArrowDownWideNarrow","CheckCheck","ChevronDown","Languages","RefreshCcwDot","StepForward","WrapText","languages","getPrevText","DropdownCategoryTitle","Icon","Surface","Toolbar","options","value","label","icon","AISelectorCommands","onSelect","editor","status","messages","input","submitMessage","handleInputChange","api","code","Root","Trigger","asChild","Button","className","type","tooltip","Content","side","align","sideOffset","map","lang","onClick","from","to","empty","state","selection","content","doc","textBetween","option","language","Divider","horizontal","text","chars"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.ts"],"sourcesContent":["import { Editor } from '@tiptap/react'\nimport { useCallback } from 'react'\n\nexport const useTextmenuCommands = (editor: Editor) => {\n const onBold = useCallback(() => editor.chain().focus().toggleBold().run(), [editor])\n const onItalic = useCallback(() => editor.chain().focus().toggleItalic().run(), [editor])\n const onStrike = useCallback(() => editor.chain().focus().toggleStrike().run(), [editor])\n const onUnderline = useCallback(() => editor.chain().focus().toggleUnderline().run(), [editor])\n const onCode = useCallback(() => editor.chain().focus().toggleCode().run(), [editor])\n const onCodeBlock = useCallback(() => editor.chain().focus().toggleCodeBlock().run(), [editor])\n\n const onSubscript = useCallback(() => editor.chain().focus().toggleSubscript().run(), [editor])\n const onSuperscript = useCallback(\n () => editor.chain().focus().toggleSuperscript().run(),\n [editor],\n )\n const onAlignLeft = useCallback(() => editor.chain().focus().setTextAlign('left').run(), [editor])\n const onAlignCenter = useCallback(\n () => editor.chain().focus().setTextAlign('center').run(),\n [editor],\n )\n const onAlignRight = useCallback(\n () => editor.chain().focus().setTextAlign('right').run(),\n [editor],\n )\n const onAlignJustify = useCallback(\n () => editor.chain().focus().setTextAlign('justify').run(),\n [editor],\n )\n\n const onChangeColor = useCallback(\n (color: string) => editor.chain().setColor(color).run(),\n [editor],\n )\n const onClearColor = useCallback(() => editor.chain().focus().unsetColor().run(), [editor])\n\n const onChangeHighlight = useCallback(\n (color: string) => editor.chain().setHighlight({ color }).run(),\n [editor],\n )\n const onClearHighlight = useCallback(\n () => editor.chain().focus().unsetHighlight().run(),\n [editor],\n )\n\n const onLink = useCallback(\n (url: string, inNewTab?: boolean) =>\n editor\n .chain()\n .focus()\n .setLink({ href: url, target: inNewTab ? '_blank' : '' })\n .run(),\n [editor],\n )\n\n const onSetFont = useCallback(\n (font: string) => {\n if (!font || font.length === 0) {\n return editor.chain().focus().unsetFontFamily().run()\n }\n return editor.chain().focus().setFontFamily(font).run()\n },\n [editor],\n )\n\n const onSetFontSize = useCallback(\n (fontSize: string) => {\n if (!fontSize || fontSize.length === 0) {\n return editor.chain().focus().unsetFontSize().run()\n }\n return editor.chain().focus().setFontSize(fontSize).run()\n },\n [editor],\n )\n\n // AI Commands\n const onCompleteSentence = useCallback(() => {\n // TODO\n }, [editor])\n const onEmojify = useCallback(() => {\n // TODO\n }, [editor])\n const onFixSpelling = useCallback(() => {\n // TODO\n }, [editor])\n const onMakeLonger = useCallback(() => {\n // TODO\n }, [editor])\n const onMakeShorter = useCallback(() => {\n // TODO\n }, [editor])\n const onSimplify = useCallback(() => {\n // TODO\n }, [editor])\n const onTldr = useCallback(() => {\n // TODO\n }, [editor])\n const onTone = useCallback(() => {\n // TODO\n }, [editor])\n const onTranslate = useCallback(() => {\n // TODO\n }, [editor])\n\n const onClearFormatting = useCallback(() => {\n editor.chain().focus().clearNodes().unsetAllMarks().run()\n }, [editor])\n\n return {\n onBold,\n onItalic,\n onStrike,\n onUnderline,\n onCode,\n onCodeBlock,\n onSubscript,\n onSuperscript,\n onAlignLeft,\n onAlignCenter,\n onAlignRight,\n onAlignJustify,\n onChangeColor,\n onClearColor,\n onChangeHighlight,\n onClearHighlight,\n onSetFont,\n onSetFontSize,\n onLink,\n onCompleteSentence,\n onEmojify,\n onFixSpelling,\n onMakeLonger,\n onMakeShorter,\n onSimplify,\n onTldr,\n onTone,\n onTranslate,\n onClearFormatting,\n }\n}\n"],"names":["useCallback","useTextmenuCommands","editor","onBold","chain","focus","toggleBold","run","onItalic","toggleItalic","onStrike","toggleStrike","onUnderline","toggleUnderline","onCode","toggleCode","onCodeBlock","toggleCodeBlock","onSubscript","toggleSubscript","onSuperscript","toggleSuperscript","onAlignLeft","setTextAlign","onAlignCenter","onAlignRight","onAlignJustify","onChangeColor","color","setColor","onClearColor","unsetColor","onChangeHighlight","setHighlight","onClearHighlight","unsetHighlight","onLink","url","inNewTab","setLink","href","target","onSetFont","font","length","unsetFontFamily","setFontFamily","onSetFontSize","fontSize","unsetFontSize","setFontSize","onCompleteSentence","onEmojify","onFixSpelling","onMakeLonger","onMakeShorter","onSimplify","onTldr","onTone","onTranslate","onClearFormatting","clearNodes","unsetAllMarks"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.ts"],"sourcesContent":["import { Editor } from '@tiptap/react'\nimport { useCallback } from 'react'\n\nexport const useTextmenuCommands = (editor: Editor) => {\n const onBold = useCallback(() => editor.chain().focus().toggleBold().run(), [editor])\n const onItalic = useCallback(() => editor.chain().focus().toggleItalic().run(), [editor])\n const onStrike = useCallback(() => editor.chain().focus().toggleStrike().run(), [editor])\n const onUnderline = useCallback(() => editor.chain().focus().toggleUnderline().run(), [editor])\n const onCode = useCallback(() => editor.chain().focus().toggleCode().run(), [editor])\n const onCodeBlock = useCallback(() => editor.chain().focus().toggleCodeBlock().run(), [editor])\n\n const onSubscript = useCallback(() => editor.chain().focus().toggleSubscript().run(), [editor])\n const onSuperscript = useCallback(\n () => editor.chain().focus().toggleSuperscript().run(),\n [editor],\n )\n const onAlignLeft = useCallback(() => editor.chain().focus().setTextAlign('left').run(), [editor])\n const onAlignCenter = useCallback(\n () => editor.chain().focus().setTextAlign('center').run(),\n [editor],\n )\n const onAlignRight = useCallback(\n () => editor.chain().focus().setTextAlign('right').run(),\n [editor],\n )\n const onAlignJustify = useCallback(\n () => editor.chain().focus().setTextAlign('justify').run(),\n [editor],\n )\n\n const onChangeColor = useCallback(\n (color: string) => editor.chain().setColor(color).run(),\n [editor],\n )\n const onClearColor = useCallback(() => editor.chain().focus().unsetColor().run(), [editor])\n\n const onChangeHighlight = useCallback(\n (color: string) => editor.chain().setHighlight({ color }).run(),\n [editor],\n )\n const onClearHighlight = useCallback(\n () => editor.chain().focus().unsetHighlight().run(),\n [editor],\n )\n\n const onLink = useCallback(\n (url: string, inNewTab?: boolean) =>\n editor\n .chain()\n .focus()\n .setLink({ href: url, target: inNewTab ? '_blank' : '' })\n .run(),\n [editor],\n )\n\n const onSetFont = useCallback(\n (font: string) => {\n if (!font || font.length === 0) {\n return editor.chain().focus().unsetFontFamily().run()\n }\n return editor.chain().focus().setFontFamily(font).run()\n },\n [editor],\n )\n\n const onSetFontSize = useCallback(\n (fontSize: string) => {\n if (!fontSize || fontSize.length === 0) {\n return editor.chain().focus().unsetFontSize().run()\n }\n return editor.chain().focus().setFontSize(fontSize).run()\n },\n [editor],\n )\n\n // AI Commands\n const onCompleteSentence = useCallback(() => {\n // TODO\n }, [editor])\n const onEmojify = useCallback(() => {\n // TODO\n }, [editor])\n const onFixSpelling = useCallback(() => {\n // TODO\n }, [editor])\n const onMakeLonger = useCallback(() => {\n // TODO\n }, [editor])\n const onMakeShorter = useCallback(() => {\n // TODO\n }, [editor])\n const onSimplify = useCallback(() => {\n // TODO\n }, [editor])\n const onTldr = useCallback(() => {\n // TODO\n }, [editor])\n const onTone = useCallback(() => {\n // TODO\n }, [editor])\n const onTranslate = useCallback(() => {\n // TODO\n }, [editor])\n\n const onClearFormatting = useCallback(() => {\n editor.chain().focus().clearNodes().unsetAllMarks().run()\n }, [editor])\n\n return {\n onBold,\n onItalic,\n onStrike,\n onUnderline,\n onCode,\n onCodeBlock,\n onSubscript,\n onSuperscript,\n onAlignLeft,\n onAlignCenter,\n onAlignRight,\n onAlignJustify,\n onChangeColor,\n onClearColor,\n onChangeHighlight,\n onClearHighlight,\n onSetFont,\n onSetFontSize,\n onLink,\n onCompleteSentence,\n onEmojify,\n onFixSpelling,\n onMakeLonger,\n onMakeShorter,\n onSimplify,\n onTldr,\n onTone,\n onTranslate,\n onClearFormatting,\n }\n}\n"],"names":["useCallback","useTextmenuCommands","editor","onBold","chain","focus","toggleBold","run","onItalic","toggleItalic","onStrike","toggleStrike","onUnderline","toggleUnderline","onCode","toggleCode","onCodeBlock","toggleCodeBlock","onSubscript","toggleSubscript","onSuperscript","toggleSuperscript","onAlignLeft","setTextAlign","onAlignCenter","onAlignRight","onAlignJustify","onChangeColor","color","setColor","onClearColor","unsetColor","onChangeHighlight","setHighlight","onClearHighlight","unsetHighlight","onLink","url","inNewTab","setLink","href","target","onSetFont","font","length","unsetFontFamily","setFontFamily","onSetFontSize","fontSize","unsetFontSize","setFontSize","onCompleteSentence","onEmojify","onFixSpelling","onMakeLonger","onMakeShorter","onSimplify","onTldr","onTone","onTranslate","onClearFormatting","clearNodes","unsetAllMarks"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuContentTypes.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { useMemo } from \"react\";\nimport { ContentPickerOptions } from \"../components/ContentTypePicker.js\";\nimport {\n Pilcrow,\n Heading1,\n Heading2,\n Heading3,\n List,\n ListOrdered,\n ListTodo,\n} from \"lucide-react\";\n\nexport const useTextmenuContentTypes = (editor: Editor) => {\n const options = useMemo<ContentPickerOptions>(() => {\n return [\n {\n type: \"category\",\n label: \"Hierarchy\",\n id: \"hierarchy\",\n },\n {\n icon: Pilcrow,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setParagraph()\n .run(),\n id: \"paragraph\",\n disabled: () => !editor.can().setParagraph(),\n isActive: () =>\n editor.isActive(\"paragraph\") &&\n !editor.isActive(\"orderedList\") &&\n !editor.isActive(\"bulletList\") &&\n !editor.isActive(\"taskList\"),\n label: \"Paragraph\",\n type: \"option\",\n },\n {\n icon: Heading1,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setHeading({ level: 1 })\n .run(),\n id: \"heading1\",\n disabled: () => !editor.can().setHeading({ level: 1 }),\n isActive: () => editor.isActive(\"heading\", { level: 1 }),\n label: \"Heading 1\",\n type: \"option\",\n },\n {\n icon: Heading2,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setHeading({ level: 2 })\n .run(),\n id: \"heading2\",\n disabled: () => !editor.can().setHeading({ level: 2 }),\n isActive: () => editor.isActive(\"heading\", { level: 2 }),\n label: \"Heading 2\",\n type: \"option\",\n },\n {\n icon: Heading3,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setHeading({ level: 3 })\n .run(),\n id: \"heading3\",\n disabled: () => !editor.can().setHeading({ level: 3 }),\n isActive: () => editor.isActive(\"heading\", { level: 3 }),\n label: \"Heading 3\",\n type: \"option\",\n },\n {\n type: \"category\",\n label: \"Lists\",\n id: \"lists\",\n },\n {\n icon: List,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n id: \"bulletList\",\n disabled: () => !editor.can().toggleBulletList(),\n isActive: () => editor.isActive(\"bulletList\"),\n label: \"Bullet list\",\n type: \"option\",\n },\n {\n icon: ListOrdered,\n onClick: () => editor.chain().focus().toggleOrderedList().run(),\n id: \"orderedList\",\n disabled: () => !editor.can().toggleOrderedList(),\n isActive: () => editor.isActive(\"orderedList\"),\n label: \"Numbered list\",\n type: \"option\",\n },\n // {\n // icon: ListTodo,\n // onClick: () => editor.chain().focus().toggleTaskList().run(),\n // id: 'todoList',\n // disabled: () => !editor.can().toggleTaskList(),\n // isActive: () => editor.isActive('taskList'),\n // label: 'Todo list',\n // type: 'option',\n // },\n ];\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor, editor.state]);\n\n return options;\n};\n"],"names":["useMemo","Pilcrow","Heading1","Heading2","Heading3","List","ListOrdered","useTextmenuContentTypes","editor","options","type","label","id","icon","onClick","chain","focus","lift","liftListItem","setParagraph","run","disabled","can","isActive","setHeading","level","toggleBulletList","toggleOrderedList","state"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,OAAO,QAAQ,QAAQ;AAEhC,SACEC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,IAAI,EACJC,WAAW,QAEN,eAAe;AAEtB,OAAO,MAAMC,0BAA0B,CAACC;IACtC,MAAMC,UAAUT,QAA8B;QAC5C,OAAO;YACL;gBACEU,MAAM;gBACNC,OAAO;gBACPC,IAAI;YACN;YACA;gBACEC,MAAMZ;gBACNa,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbC,YAAY,GACZC,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGH,YAAY;gBAC1CI,UAAU,IACRf,OAAOe,QAAQ,CAAC,gBAChB,CAACf,OAAOe,QAAQ,CAAC,kBACjB,CAACf,OAAOe,QAAQ,CAAC,iBACjB,CAACf,OAAOe,QAAQ,CAAC;gBACnBZ,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMX;gBACNY,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbM,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GACtBL,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGE,UAAU,CAAC;wBAAEC,OAAO;oBAAE;gBACpDF,UAAU,IAAMf,OAAOe,QAAQ,CAAC,WAAW;wBAAEE,OAAO;oBAAE;gBACtDd,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMV;gBACNW,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbM,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GACtBL,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGE,UAAU,CAAC;wBAAEC,OAAO;oBAAE;gBACpDF,UAAU,IAAMf,OAAOe,QAAQ,CAAC,WAAW;wBAAEE,OAAO;oBAAE;gBACtDd,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMT;gBACNU,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbM,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GACtBL,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGE,UAAU,CAAC;wBAAEC,OAAO;oBAAE;gBACpDF,UAAU,IAAMf,OAAOe,QAAQ,CAAC,WAAW;wBAAEE,OAAO;oBAAE;gBACtDd,OAAO;gBACPD,MAAM;YACR;YACA;gBACEA,MAAM;gBACNC,OAAO;gBACPC,IAAI;YACN;YACA;gBACEC,MAAMR;gBACNS,SAAS,IAAMN,OAAOO,KAAK,GAAGC,KAAK,GAAGU,gBAAgB,GAAGN,GAAG;gBAC5DR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGI,gBAAgB;gBAC9CH,UAAU,IAAMf,OAAOe,QAAQ,CAAC;gBAChCZ,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMP;gBACNQ,SAAS,IAAMN,OAAOO,KAAK,GAAGC,KAAK,GAAGW,iBAAiB,GAAGP,GAAG;gBAC7DR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGK,iBAAiB;gBAC/CJ,UAAU,IAAMf,OAAOe,QAAQ,CAAC;gBAChCZ,OAAO;gBACPD,MAAM;YACR;SAUD;IACD,uDAAuD;IACzD,GAAG;QAACF;QAAQA,OAAOoB,KAAK;KAAC;IAEzB,OAAOnB;AACT,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuContentTypes.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { useMemo } from \"react\";\nimport { ContentPickerOptions } from \"../components/ContentTypePicker.js\";\nimport {\n Pilcrow,\n Heading1,\n Heading2,\n Heading3,\n List,\n ListOrdered,\n ListTodo,\n} from \"lucide-react\";\n\nexport const useTextmenuContentTypes = (editor: Editor) => {\n const options = useMemo<ContentPickerOptions>(() => {\n return [\n {\n type: \"category\",\n label: \"Hierarchy\",\n id: \"hierarchy\",\n },\n {\n icon: Pilcrow,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setParagraph()\n .run(),\n id: \"paragraph\",\n disabled: () => !editor.can().setParagraph(),\n isActive: () =>\n editor.isActive(\"paragraph\") &&\n !editor.isActive(\"orderedList\") &&\n !editor.isActive(\"bulletList\") &&\n !editor.isActive(\"taskList\"),\n label: \"Paragraph\",\n type: \"option\",\n },\n {\n icon: Heading1,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setHeading({ level: 1 })\n .run(),\n id: \"heading1\",\n disabled: () => !editor.can().setHeading({ level: 1 }),\n isActive: () => editor.isActive(\"heading\", { level: 1 }),\n label: \"Heading 1\",\n type: \"option\",\n },\n {\n icon: Heading2,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setHeading({ level: 2 })\n .run(),\n id: \"heading2\",\n disabled: () => !editor.can().setHeading({ level: 2 }),\n isActive: () => editor.isActive(\"heading\", { level: 2 }),\n label: \"Heading 2\",\n type: \"option\",\n },\n {\n icon: Heading3,\n onClick: () =>\n editor\n .chain()\n .focus()\n .lift(\"taskItem\")\n .liftListItem(\"listItem\")\n .setHeading({ level: 3 })\n .run(),\n id: \"heading3\",\n disabled: () => !editor.can().setHeading({ level: 3 }),\n isActive: () => editor.isActive(\"heading\", { level: 3 }),\n label: \"Heading 3\",\n type: \"option\",\n },\n {\n type: \"category\",\n label: \"Lists\",\n id: \"lists\",\n },\n {\n icon: List,\n onClick: () => editor.chain().focus().toggleBulletList().run(),\n id: \"bulletList\",\n disabled: () => !editor.can().toggleBulletList(),\n isActive: () => editor.isActive(\"bulletList\"),\n label: \"Bullet list\",\n type: \"option\",\n },\n {\n icon: ListOrdered,\n onClick: () => editor.chain().focus().toggleOrderedList().run(),\n id: \"orderedList\",\n disabled: () => !editor.can().toggleOrderedList(),\n isActive: () => editor.isActive(\"orderedList\"),\n label: \"Numbered list\",\n type: \"option\",\n },\n // {\n // icon: ListTodo,\n // onClick: () => editor.chain().focus().toggleTaskList().run(),\n // id: 'todoList',\n // disabled: () => !editor.can().toggleTaskList(),\n // isActive: () => editor.isActive('taskList'),\n // label: 'Todo list',\n // type: 'option',\n // },\n ];\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor, editor.state]);\n\n return options;\n};\n"],"names":["useMemo","Pilcrow","Heading1","Heading2","Heading3","List","ListOrdered","useTextmenuContentTypes","editor","options","type","label","id","icon","onClick","chain","focus","lift","liftListItem","setParagraph","run","disabled","can","isActive","setHeading","level","toggleBulletList","toggleOrderedList","state"],"mappings":"AACA,SAASA,OAAO,QAAQ,QAAQ;AAEhC,SACEC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,IAAI,EACJC,WAAW,QAEN,eAAe;AAEtB,OAAO,MAAMC,0BAA0B,CAACC;IACtC,MAAMC,UAAUT,QAA8B;QAC5C,OAAO;YACL;gBACEU,MAAM;gBACNC,OAAO;gBACPC,IAAI;YACN;YACA;gBACEC,MAAMZ;gBACNa,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbC,YAAY,GACZC,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGH,YAAY;gBAC1CI,UAAU,IACRf,OAAOe,QAAQ,CAAC,gBAChB,CAACf,OAAOe,QAAQ,CAAC,kBACjB,CAACf,OAAOe,QAAQ,CAAC,iBACjB,CAACf,OAAOe,QAAQ,CAAC;gBACnBZ,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMX;gBACNY,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbM,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GACtBL,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGE,UAAU,CAAC;wBAAEC,OAAO;oBAAE;gBACpDF,UAAU,IAAMf,OAAOe,QAAQ,CAAC,WAAW;wBAAEE,OAAO;oBAAE;gBACtDd,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMV;gBACNW,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbM,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GACtBL,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGE,UAAU,CAAC;wBAAEC,OAAO;oBAAE;gBACpDF,UAAU,IAAMf,OAAOe,QAAQ,CAAC,WAAW;wBAAEE,OAAO;oBAAE;gBACtDd,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMT;gBACNU,SAAS,IACPN,OACGO,KAAK,GACLC,KAAK,GACLC,IAAI,CAAC,YACLC,YAAY,CAAC,YACbM,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GACtBL,GAAG;gBACRR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGE,UAAU,CAAC;wBAAEC,OAAO;oBAAE;gBACpDF,UAAU,IAAMf,OAAOe,QAAQ,CAAC,WAAW;wBAAEE,OAAO;oBAAE;gBACtDd,OAAO;gBACPD,MAAM;YACR;YACA;gBACEA,MAAM;gBACNC,OAAO;gBACPC,IAAI;YACN;YACA;gBACEC,MAAMR;gBACNS,SAAS,IAAMN,OAAOO,KAAK,GAAGC,KAAK,GAAGU,gBAAgB,GAAGN,GAAG;gBAC5DR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGI,gBAAgB;gBAC9CH,UAAU,IAAMf,OAAOe,QAAQ,CAAC;gBAChCZ,OAAO;gBACPD,MAAM;YACR;YACA;gBACEG,MAAMP;gBACNQ,SAAS,IAAMN,OAAOO,KAAK,GAAGC,KAAK,GAAGW,iBAAiB,GAAGP,GAAG;gBAC7DR,IAAI;gBACJS,UAAU,IAAM,CAACb,OAAOc,GAAG,GAAGK,iBAAiB;gBAC/CJ,UAAU,IAAMf,OAAOe,QAAQ,CAAC;gBAChCZ,OAAO;gBACPD,MAAM;YACR;SAUD;IACD,uDAAuD;IACzD,GAAG;QAACF;QAAQA,OAAOoB,KAAK;KAAC;IAEzB,OAAOnB;AACT,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuStates.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { useCallback, useMemo } from \"react\";\nimport { ShouldShowProps } from \"../../types.js\";\nimport {\n isCustomNodeSelected,\n isTextSelected,\n} from \"../../../../lib/utils/index.js\";\nimport { supportedSocialMedia } from \"../../../../extensions/SocialMedia/menus/constants.js\";\n\nexport const useTextmenuStates = (editor: Editor) => {\n const shouldShow = useCallback(\n ({ view, from }: ShouldShowProps) => {\n const isInSocialMedia = supportedSocialMedia?.some((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n if (!view || isInSocialMedia || editor.isActive(\"insideLinks\")) {\n return false;\n }\n\n const domAtPos = view.domAtPos(from || 0).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from || 0) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (isCustomNodeSelected(editor, node)) {\n return false;\n }\n\n return isTextSelected({ editor });\n },\n [editor]\n );\n\n return {\n isBold: editor.isActive(\"bold\"),\n isItalic: editor.isActive(\"italic\"),\n isStrike: editor.isActive(\"strike\"),\n isUnderline: editor.isActive(\"underline\"),\n isCode: editor.isActive(\"code\"),\n isSubscript: editor.isActive(\"subscript\"),\n isSuperscript: editor.isActive(\"superscript\"),\n isAlignLeft: editor.isActive({ textAlign: \"left\" }),\n isAlignCenter: editor.isActive({ textAlign: \"center\" }),\n isAlignRight: editor.isActive({ textAlign: \"right\" }),\n isAlignJustify: editor.isActive({ textAlign: \"justify\" }),\n currentColor: editor.getAttributes(\"textStyle\")?.color || undefined,\n currentHighlight: editor.getAttributes(\"highlight\")?.color || undefined,\n currentFont: editor.getAttributes(\"textStyle\")?.fontFamily || undefined,\n currentSize: editor.getAttributes(\"textStyle\")?.fontSize || undefined,\n shouldShow,\n };\n};\n"],"names":["useCallback","isCustomNodeSelected","isTextSelected","supportedSocialMedia","useTextmenuStates","editor","shouldShow","view","from","isInSocialMedia","some","socialMedia","isActive","domAtPos","node","nodeDOM","isBold","isItalic","isStrike","isUnderline","isCode","isSubscript","isSuperscript","isAlignLeft","textAlign","isAlignCenter","isAlignRight","isAlignJustify","currentColor","getAttributes","color","undefined","currentHighlight","currentFont","fontFamily","currentSize","fontSize"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,WAAW,QAAiB,QAAQ;AAE7C,SACEC,oBAAoB,EACpBC,cAAc,QACT,iCAAiC;AACxC,SAASC,oBAAoB,QAAQ,wDAAwD;AAE7F,OAAO,MAAMC,oBAAoB,CAACC;IAChC,MAAMC,aAAaN,YACjB,CAAC,EAAEO,IAAI,EAAEC,IAAI,EAAmB;QAC9B,MAAMC,kBAAkBN,sBAAsBO,KAAK,CAACC;YAClD,OAAON,OAAOO,QAAQ,CAACD;QACzB;QACA,IAAI,CAACJ,QAAQE,mBAAmBJ,OAAOO,QAAQ,CAAC,gBAAgB;YAC9D,OAAO;QACT;QAEA,MAAMC,WAAWN,KAAKM,QAAQ,CAACL,QAAQ,GAAGM,IAAI;QAC9C,MAAMC,UAAUR,KAAKQ,OAAO,CAACP,QAAQ;QACrC,MAAMM,OAAOC,WAAWF;QAExB,IAAIZ,qBAAqBI,QAAQS,OAAO;YACtC,OAAO;QACT;QAEA,OAAOZ,eAAe;YAAEG;QAAO;IACjC,GACA;QAACA;KAAO;IAGV,OAAO;QACLW,QAAQX,OAAOO,QAAQ,CAAC;QACxBK,UAAUZ,OAAOO,QAAQ,CAAC;QAC1BM,UAAUb,OAAOO,QAAQ,CAAC;QAC1BO,aAAad,OAAOO,QAAQ,CAAC;QAC7BQ,QAAQf,OAAOO,QAAQ,CAAC;QACxBS,aAAahB,OAAOO,QAAQ,CAAC;QAC7BU,eAAejB,OAAOO,QAAQ,CAAC;QAC/BW,aAAalB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAO;QACjDC,eAAepB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAS;QACrDE,cAAcrB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAQ;QACnDG,gBAAgBtB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAU;QACvDI,cAAcvB,OAAOwB,aAAa,CAAC,cAAcC,SAASC;QAC1DC,kBAAkB3B,OAAOwB,aAAa,CAAC,cAAcC,SAASC;QAC9DE,aAAa5B,OAAOwB,aAAa,CAAC,cAAcK,cAAcH;QAC9DI,aAAa9B,OAAOwB,aAAa,CAAC,cAAcO,YAAYL;QAC5DzB;IACF;AACF,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuStates.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { useCallback, useMemo } from \"react\";\nimport { ShouldShowProps } from \"../../types.js\";\nimport {\n isCustomNodeSelected,\n isTextSelected,\n} from \"../../../../lib/utils/index.js\";\nimport { supportedSocialMedia } from \"../../../../extensions/SocialMedia/menus/constants.js\";\n\nexport const useTextmenuStates = (editor: Editor) => {\n const shouldShow = useCallback(\n ({ view, from }: ShouldShowProps) => {\n const isInSocialMedia = supportedSocialMedia?.some((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n if (!view || isInSocialMedia || editor.isActive(\"insideLinks\")) {\n return false;\n }\n\n const domAtPos = view.domAtPos(from || 0).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from || 0) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (isCustomNodeSelected(editor, node)) {\n return false;\n }\n\n return isTextSelected({ editor });\n },\n [editor]\n );\n\n return {\n isBold: editor.isActive(\"bold\"),\n isItalic: editor.isActive(\"italic\"),\n isStrike: editor.isActive(\"strike\"),\n isUnderline: editor.isActive(\"underline\"),\n isCode: editor.isActive(\"code\"),\n isSubscript: editor.isActive(\"subscript\"),\n isSuperscript: editor.isActive(\"superscript\"),\n isAlignLeft: editor.isActive({ textAlign: \"left\" }),\n isAlignCenter: editor.isActive({ textAlign: \"center\" }),\n isAlignRight: editor.isActive({ textAlign: \"right\" }),\n isAlignJustify: editor.isActive({ textAlign: \"justify\" }),\n currentColor: editor.getAttributes(\"textStyle\")?.color || undefined,\n currentHighlight: editor.getAttributes(\"highlight\")?.color || undefined,\n currentFont: editor.getAttributes(\"textStyle\")?.fontFamily || undefined,\n currentSize: editor.getAttributes(\"textStyle\")?.fontSize || undefined,\n shouldShow,\n };\n};\n"],"names":["useCallback","isCustomNodeSelected","isTextSelected","supportedSocialMedia","useTextmenuStates","editor","shouldShow","view","from","isInSocialMedia","some","socialMedia","isActive","domAtPos","node","nodeDOM","isBold","isItalic","isStrike","isUnderline","isCode","isSubscript","isSuperscript","isAlignLeft","textAlign","isAlignCenter","isAlignRight","isAlignJustify","currentColor","getAttributes","color","undefined","currentHighlight","currentFont","fontFamily","currentSize","fontSize"],"mappings":"AACA,SAASA,WAAW,QAAiB,QAAQ;AAE7C,SACEC,oBAAoB,EACpBC,cAAc,QACT,iCAAiC;AACxC,SAASC,oBAAoB,QAAQ,wDAAwD;AAE7F,OAAO,MAAMC,oBAAoB,CAACC;IAChC,MAAMC,aAAaN,YACjB,CAAC,EAAEO,IAAI,EAAEC,IAAI,EAAmB;QAC9B,MAAMC,kBAAkBN,sBAAsBO,KAAK,CAACC;YAClD,OAAON,OAAOO,QAAQ,CAACD;QACzB;QACA,IAAI,CAACJ,QAAQE,mBAAmBJ,OAAOO,QAAQ,CAAC,gBAAgB;YAC9D,OAAO;QACT;QAEA,MAAMC,WAAWN,KAAKM,QAAQ,CAACL,QAAQ,GAAGM,IAAI;QAC9C,MAAMC,UAAUR,KAAKQ,OAAO,CAACP,QAAQ;QACrC,MAAMM,OAAOC,WAAWF;QAExB,IAAIZ,qBAAqBI,QAAQS,OAAO;YACtC,OAAO;QACT;QAEA,OAAOZ,eAAe;YAAEG;QAAO;IACjC,GACA;QAACA;KAAO;IAGV,OAAO;QACLW,QAAQX,OAAOO,QAAQ,CAAC;QACxBK,UAAUZ,OAAOO,QAAQ,CAAC;QAC1BM,UAAUb,OAAOO,QAAQ,CAAC;QAC1BO,aAAad,OAAOO,QAAQ,CAAC;QAC7BQ,QAAQf,OAAOO,QAAQ,CAAC;QACxBS,aAAahB,OAAOO,QAAQ,CAAC;QAC7BU,eAAejB,OAAOO,QAAQ,CAAC;QAC/BW,aAAalB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAO;QACjDC,eAAepB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAS;QACrDE,cAAcrB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAQ;QACnDG,gBAAgBtB,OAAOO,QAAQ,CAAC;YAAEY,WAAW;QAAU;QACvDI,cAAcvB,OAAOwB,aAAa,CAAC,cAAcC,SAASC;QAC1DC,kBAAkB3B,OAAOwB,aAAa,CAAC,cAAcC,SAASC;QAC9DE,aAAa5B,OAAOwB,aAAa,CAAC,cAAcK,cAAcH;QAC9DI,aAAa9B,OAAOwB,aAAa,CAAC,cAAcO,YAAYL;QAC5DzB;IACF;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/index.tsx"],"sourcesContent":["export * from \"./TextMenu.js\";\n"],"names":[],"rangeMappings":"","mappings":"AAAA,cAAc,gBAAgB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/index.tsx"],"sourcesContent":["export * from \"./TextMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/menus/index.ts"],"sourcesContent":["export * from \"./LinkMenu/index.js\";\nexport * from \"./TextMenu/index.js\";\nexport * from \"./ContentItemMenu/index.js\";\n"],"names":[],"rangeMappings":";;","mappings":"AAAA,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,6BAA6B"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/menus/index.ts"],"sourcesContent":["export * from \"./LinkMenu/index.js\";\nexport * from \"./TextMenu/index.js\";\nexport * from \"./ContentItemMenu/index.js\";\n"],"names":[],"mappings":"AAAA,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,6BAA6B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/menus/types.ts"],"sourcesContent":["import React from 'react'\nimport { Editor as CoreEditor } from '@tiptap/core'\nimport { Editor } from '@tiptap/react'\nimport { EditorState } from '@tiptap/pm/state'\nimport { EditorView } from '@tiptap/pm/view'\n\nexport interface MenuProps {\n editor: Editor\n appendTo?: React.RefObject<any>\n shouldHide?: boolean\n}\n\nexport interface ShouldShowProps {\n editor?: CoreEditor\n view: EditorView\n state?: EditorState\n oldState?: EditorState\n from?: number\n to?: number\n}\n"],"names":["React"],"rangeMappings":"","mappings":"AAAA,OAAOA,WAAW,QAAO"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/menus/types.ts"],"sourcesContent":["import React from 'react'\nimport { Editor as CoreEditor } from '@tiptap/core'\nimport { Editor } from '@tiptap/react'\nimport { EditorState } from '@tiptap/pm/state'\nimport { EditorView } from '@tiptap/pm/view'\n\nexport interface MenuProps {\n editor: Editor\n appendTo?: React.RefObject<any>\n shouldHide?: boolean\n}\n\nexport interface ShouldShowProps {\n editor?: CoreEditor\n view: EditorView\n state?: EditorState\n oldState?: EditorState\n from?: number\n to?: number\n}\n"],"names":["React"],"mappings":"AAAA,OAAOA,WAAW,QAAO"}
@@ -0,0 +1,7 @@
1
+ import { Editor } from "@tiptap/react";
2
+ export type AICommandPanelProps = {
3
+ editor: Editor;
4
+ onOpenChange: (value: boolean) => void;
5
+ };
6
+ export declare const AICommandPanel: ({ editor, onOpenChange, }: AICommandPanelProps) => import("react").JSX.Element;
7
+ //# sourceMappingURL=AICommandPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AICommandPanel.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAA4B,MAAM,eAAe,CAAC;AAiBjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,cAAc,8BAGxB,mBAAmB,gCAiMrB,CAAC"}
@@ -0,0 +1,193 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useLocale } from "@payloadcms/ui/providers/Locale";
4
+ import { useEditor } from "@tiptap/react";
5
+ import { useCompletion } from "ai/react";
6
+ import { ArrowRight, Sparkles } from "lucide-react";
7
+ import { useCallback, useEffect, useRef, useState } from "react";
8
+ import TextareaAutosize from "react-textarea-autosize";
9
+ import { Markdown } from "tiptap-markdown";
10
+ import { getPrevText } from "../../../lib/utils/index.js";
11
+ import { isRTL } from "../../../lib/utils/isRtl.js";
12
+ import AICompletionCommands from "../../menus/TextMenu/components/ai-completion-command.js";
13
+ import { Surface } from "../../ui/Surface.js";
14
+ import { Toolbar } from "../../ui/Toolbar.js";
15
+ import CrazySpinner from "../../ui/crazy-spinner.js";
16
+ import { ScrollArea } from "../../ui/scroll-area.js";
17
+ import AIDraftSelectorCommands from "../../menus/TextMenu/components/ai-draft-selector-commands.js";
18
+ import StarterKit from "@tiptap/starter-kit";
19
+ export const AICommandPanel = ({ editor, onOpenChange })=>{
20
+ const [inputValue, setInputValue] = useState("");
21
+ const { code } = useLocale();
22
+ const { view } = editor;
23
+ const editorNode = view.dom;
24
+ const boundigClient = editorNode.getBoundingClientRect();
25
+ const inputRef = useRef(null);
26
+ // const { status, messages, input, submitMessage, handleInputChange } = useAssistant({
27
+ // // id: "novel",
28
+ // api: "/api/assistant",
29
+ // onResponse: (response) => {
30
+ // if (response.status === 429) {
31
+ // toast.error("You have reached your request limit for the day.");
32
+ // return;
33
+ // }
34
+ // },
35
+ // onError: (e) => {
36
+ // toast.error(e.message);
37
+ // },
38
+ // });
39
+ const { completion, complete, isLoading } = useCompletion({
40
+ // id: "novel",
41
+ api: "/api/generate",
42
+ onResponse: (response)=>{
43
+ if (response.status === 429) {
44
+ console.log("You have reached your request limit for the day.");
45
+ return;
46
+ }
47
+ },
48
+ onError: (e)=>{
49
+ console.log("ERROR", e.message);
50
+ }
51
+ });
52
+ const hasCompletion = completion.length > 0;
53
+ const handleClick = useCallback(()=>{
54
+ if (completion) {
55
+ return complete(completion, {
56
+ body: {
57
+ option: "zap",
58
+ command: inputValue,
59
+ language: code ?? "en"
60
+ }
61
+ }).then(()=>setInputValue(""));
62
+ }
63
+ const text = getPrevText(editor, {
64
+ chars: 5000
65
+ });
66
+ complete(text, {
67
+ body: {
68
+ option: "zap",
69
+ command: inputValue,
70
+ language: code ?? "en"
71
+ }
72
+ }).then(()=>setInputValue(""));
73
+ }, [
74
+ code,
75
+ inputValue
76
+ ]);
77
+ useEffect(()=>{
78
+ if (!isLoading && completion) {
79
+ const selection = editor.state.selection;
80
+ editor.chain().focus().insertContentAt(selection.to - 1, completion).insertContentAt(selection.to, " ").run();
81
+ }
82
+ }, [
83
+ completion,
84
+ isLoading
85
+ ]);
86
+ const editorMarkdown = useEditor({
87
+ content: completion ?? "",
88
+ autofocus: true,
89
+ onCreate: ({ editor })=>{
90
+ // provider?.on('synced', () => {
91
+ // if (editor.isEmpty) {
92
+ // editor.commands.setContent(initialContent)
93
+ // }
94
+ // })
95
+ },
96
+ extensions: [
97
+ StarterKit,
98
+ Markdown
99
+ ],
100
+ editorProps: {
101
+ attributes: {
102
+ autocomplete: "off",
103
+ autocorrect: "off",
104
+ autocapitalize: "off",
105
+ class: "min-h-full"
106
+ }
107
+ }
108
+ }, []);
109
+ return /*#__PURE__*/ _jsx(Surface, {
110
+ className: `p-2 min-w-[20rem] flex flex-col gap-2 `,
111
+ style: {
112
+ width: boundigClient?.width
113
+ },
114
+ children: /*#__PURE__*/ _jsxs(_Fragment, {
115
+ children: [
116
+ hasCompletion && /*#__PURE__*/ _jsx("div", {
117
+ className: "flex w-full",
118
+ children: /*#__PURE__*/ _jsx(ScrollArea, {
119
+ children: /*#__PURE__*/ _jsx("div", {
120
+ className: "prose p-2 px-4 prose-sm",
121
+ dir: isRTL(completion) ? "rtl" : "ltr"
122
+ })
123
+ })
124
+ }),
125
+ isLoading && /*#__PURE__*/ _jsxs("div", {
126
+ className: "flex h-12 w-full items-center px-4 text-sm font-medium text-muted-foreground text-blue-500",
127
+ style: {
128
+ width: boundigClient?.width
129
+ },
130
+ children: [
131
+ /*#__PURE__*/ _jsx(Sparkles, {
132
+ className: "mr-2 h-4 w-4 shrink-0 "
133
+ }),
134
+ "AI is thinking",
135
+ /*#__PURE__*/ _jsx("div", {
136
+ className: "ml-2 mt-1",
137
+ children: /*#__PURE__*/ _jsx(CrazySpinner, {})
138
+ })
139
+ ]
140
+ }),
141
+ !isLoading && /*#__PURE__*/ _jsxs(_Fragment, {
142
+ children: [
143
+ /*#__PURE__*/ _jsxs("div", {
144
+ className: "flex justify-between items-center ",
145
+ children: [
146
+ /*#__PURE__*/ _jsx(Sparkles, {
147
+ className: "mr-2 h-4 w-4 shrink-0 text-blue-500 "
148
+ }),
149
+ /*#__PURE__*/ _jsx(TextareaAutosize, {
150
+ ref: inputRef,
151
+ className: "w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none",
152
+ value: inputValue,
153
+ onChange: (e)=>{
154
+ setInputValue(e.target.value);
155
+ },
156
+ placeholder: hasCompletion ? "Tell AI what to do next" : "Ask AI to edit or generate...",
157
+ autoFocus: true,
158
+ // onFocus={() => {
159
+ // addAIHighlight(editor)}}
160
+ onKeyDown: (e)=>{
161
+ if (e.key === "Enter") handleClick();
162
+ }
163
+ }),
164
+ /*#__PURE__*/ _jsx(Toolbar.Button, {
165
+ // size="icon"
166
+ // className="absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 rounded-full bg-zinc-100 hover:bg-zinc-150"
167
+ onClick: handleClick,
168
+ children: /*#__PURE__*/ _jsx(ArrowRight, {})
169
+ })
170
+ ]
171
+ }),
172
+ hasCompletion ? /*#__PURE__*/ _jsx(AICompletionCommands, {
173
+ editor: editor,
174
+ onDiscard: ()=>{
175
+ editor.chain().unsetHighlight().focus().run();
176
+ onOpenChange(false);
177
+ },
178
+ completion: completion
179
+ }) : /*#__PURE__*/ _jsx(AIDraftSelectorCommands, {
180
+ editor: editor,
181
+ onSelect: (value)=>{
182
+ setInputValue(value);
183
+ inputRef.current.focus();
184
+ }
185
+ })
186
+ ]
187
+ })
188
+ ]
189
+ })
190
+ });
191
+ };
192
+
193
+ //# sourceMappingURL=AICommandPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor, EditorContent, useEditor } from \"@tiptap/react\";\nimport { useCompletion } from \"ai/react\";\nimport { ArrowRight, Sparkles } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport { Markdown } from \"tiptap-markdown\";\nimport { getPrevText } from \"../../../lib/utils/index.js\";\nimport { isRTL } from \"../../../lib/utils/isRtl.js\";\nimport AICompletionCommands from \"../../menus/TextMenu/components/ai-completion-command.js\";\nimport AISelectorCommands from \"../../menus/TextMenu/components/ai-selector-commands.js\";\nimport { Surface } from \"../../ui/Surface.js\";\nimport { Toolbar } from \"../../ui/Toolbar.js\";\nimport CrazySpinner from \"../../ui/crazy-spinner.js\";\nimport { ScrollArea } from \"../../ui/scroll-area.js\";\nimport AIDraftSelectorCommands from \"../../menus/TextMenu/components/ai-draft-selector-commands.js\";\nimport StarterKit from \"@tiptap/starter-kit\";\nexport type AICommandPanelProps = {\n editor: Editor;\n onOpenChange: (value: boolean) => void;\n};\n\nexport const AICommandPanel = ({\n editor,\n onOpenChange,\n}: AICommandPanelProps) => {\n const [inputValue, setInputValue] = useState(\"\");\n const { code } = useLocale();\n const { view } = editor;\n\n const editorNode = view.dom as HTMLElement;\n const boundigClient = editorNode.getBoundingClientRect();\n const inputRef = useRef<HTMLTextAreaElement>(null);\n\n // const { status, messages, input, submitMessage, handleInputChange } = useAssistant({\n // // id: \"novel\",\n // api: \"/api/assistant\",\n // onResponse: (response) => {\n // if (response.status === 429) {\n // toast.error(\"You have reached your request limit for the day.\");\n // return;\n // }\n // },\n // onError: (e) => {\n // toast.error(e.message);\n // },\n // });\n\n const { completion, complete, isLoading } = useCompletion({\n // id: \"novel\",\n api: \"/api/generate\",\n onResponse: (response) => {\n if (response.status === 429) {\n console.log(\"You have reached your request limit for the day.\");\n\n return;\n }\n },\n\n onError: (e) => {\n console.log(\"ERROR\", e.message);\n },\n });\n\n const hasCompletion = completion.length > 0;\n const handleClick = useCallback(() => {\n if (completion) {\n return complete(completion, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }\n const text = getPrevText(editor, { chars: 5000 });\n\n complete(text, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }, [code, inputValue]);\n\n useEffect(() => {\n if (!isLoading && completion) {\n const selection = editor.state.selection;\n editor\n .chain()\n .focus()\n .insertContentAt(selection.to - 1, completion)\n .insertContentAt(selection.to, \" \")\n .run();\n }\n }, [completion, isLoading]);\n\n const editorMarkdown = useEditor(\n {\n content: completion ?? \"\",\n autofocus: true,\n onCreate: ({ editor }) => {\n // provider?.on('synced', () => {\n // if (editor.isEmpty) {\n // editor.commands.setContent(initialContent)\n // }\n // })\n },\n\n extensions: [StarterKit, Markdown],\n editorProps: {\n attributes: {\n autocomplete: \"off\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n class: \"min-h-full\",\n },\n },\n },\n []\n );\n return (\n <Surface\n className={`p-2 min-w-[20rem] flex flex-col gap-2 `}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {hasCompletion && (\n <div className=\"flex w-full\">\n <ScrollArea>\n <div\n className=\"prose p-2 px-4 prose-sm\"\n dir={isRTL(completion) ? \"rtl\" : \"ltr\"}\n >\n {/* <Markdown>{completion}</Markdown> */}\n </div>\n </ScrollArea>\n </div>\n )}\n\n {isLoading && (\n <div\n className=\"flex h-12 w-full items-center px-4 text-sm font-medium text-muted-foreground text-blue-500\"\n style={{\n width: boundigClient?.width,\n }}\n >\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 \" />\n AI is thinking\n <div className=\"ml-2 mt-1\">\n <CrazySpinner />\n </div>\n </div>\n )}\n\n {!isLoading && (\n <>\n <div className=\"flex justify-between items-center \">\n {/* <CommandInput\n value={inputValue}\n onValueChange={setInputValue}\n autoFocus\n placeholder={\n hasCompletion ? 'Tell AI what to do next' : 'Ask AI to edit or generate...'\n }\n // onFocus={() => addAIHighlight(editor)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleClick()\n }}\n /> */}\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 text-blue-500 \" />\n <TextareaAutosize\n ref={inputRef}\n className=\"w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none\"\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n }}\n placeholder={\n hasCompletion\n ? \"Tell AI what to do next\"\n : \"Ask AI to edit or generate...\"\n }\n autoFocus\n // onFocus={() => {\n // addAIHighlight(editor)}}\n\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleClick();\n }}\n />\n <Toolbar.Button\n // size=\"icon\"\n\n // className=\"absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 rounded-full bg-zinc-100 hover:bg-zinc-150\"\n onClick={handleClick}\n >\n <ArrowRight />\n </Toolbar.Button>\n </div>\n {hasCompletion ? (\n <AICompletionCommands\n editor={editor}\n onDiscard={() => {\n editor.chain().unsetHighlight().focus().run();\n onOpenChange(false);\n }}\n completion={completion}\n />\n ) : (\n <AIDraftSelectorCommands\n editor={editor}\n onSelect={(value) => {\n setInputValue(value);\n inputRef.current.focus();\n }}\n />\n )}\n </>\n )}\n </>\n </Surface>\n );\n};\n"],"names":["useLocale","useEditor","useCompletion","ArrowRight","Sparkles","useCallback","useEffect","useRef","useState","TextareaAutosize","Markdown","getPrevText","isRTL","AICompletionCommands","Surface","Toolbar","CrazySpinner","ScrollArea","AIDraftSelectorCommands","StarterKit","AICommandPanel","editor","onOpenChange","inputValue","setInputValue","code","view","editorNode","dom","boundigClient","getBoundingClientRect","inputRef","completion","complete","isLoading","api","onResponse","response","status","console","log","onError","e","message","hasCompletion","length","handleClick","body","option","command","language","then","text","chars","selection","state","chain","focus","insertContentAt","to","run","editorMarkdown","content","autofocus","onCreate","extensions","editorProps","attributes","autocomplete","autocorrect","autocapitalize","class","className","style","width","div","dir","ref","value","onChange","target","placeholder","autoFocus","onKeyDown","key","Button","onClick","onDiscard","unsetHighlight","onSelect","current"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./AICommandPanel.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./AICommandPanel.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/index.tsx"],"sourcesContent":["export * from \"./AICommandPanel.js\";\n"],"names":[],"mappings":"AAAA,cAAc,sBAAsB"}