payload-richtext-tiptap 0.0.156 → 0.0.157

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 (270) hide show
  1. package/LICENSE.md +22 -22
  2. package/README.md +33 -33
  3. package/dist/src/body/StandardArticle.js.map +1 -1
  4. package/dist/src/client.js.map +1 -1
  5. package/dist/src/fields/TiptapEditor/Components.js.map +1 -1
  6. package/dist/src/fields/TiptapEditor/context/EditorContext.js.map +1 -1
  7. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js.map +1 -1
  8. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js.map +1 -1
  9. package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.js.map +1 -1
  10. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js.map +1 -1
  11. package/dist/src/fields/TiptapEditor/extensions/AICommand/index.js.map +1 -1
  12. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js.map +1 -1
  13. package/dist/src/fields/TiptapEditor/extensions/Audio/Audio.js +5 -5
  14. package/dist/src/fields/TiptapEditor/extensions/Audio/Audio.js.map +1 -1
  15. package/dist/src/fields/TiptapEditor/extensions/Audio/index.js.map +1 -1
  16. package/dist/src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.js.map +1 -1
  17. package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.js.map +1 -1
  18. package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockView.js.map +1 -1
  19. package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockWidth.js.map +1 -1
  20. package/dist/src/fields/TiptapEditor/extensions/AudioBlock/index.js.map +1 -1
  21. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/BlockquoteFigure.js.map +1 -1
  22. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Design.js.map +1 -1
  23. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/Quote.js.map +1 -1
  24. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/index.js.map +1 -1
  25. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/QuoteCaption.js.map +1 -1
  26. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/index.js.map +1 -1
  27. package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/index.js.map +1 -1
  28. package/dist/src/fields/TiptapEditor/extensions/Document/Document.js.map +1 -1
  29. package/dist/src/fields/TiptapEditor/extensions/Document/index.js.map +1 -1
  30. package/dist/src/fields/TiptapEditor/extensions/Figcaption/Figcaption.js.map +1 -1
  31. package/dist/src/fields/TiptapEditor/extensions/Figcaption/index.js.map +1 -1
  32. package/dist/src/fields/TiptapEditor/extensions/Figure/Figure.js.map +1 -1
  33. package/dist/src/fields/TiptapEditor/extensions/Figure/index.js.map +1 -1
  34. package/dist/src/fields/TiptapEditor/extensions/FontSize/FontSize.js.map +1 -1
  35. package/dist/src/fields/TiptapEditor/extensions/FontSize/index.js.map +1 -1
  36. package/dist/src/fields/TiptapEditor/extensions/Heading/Heading.js.map +1 -1
  37. package/dist/src/fields/TiptapEditor/extensions/Heading/index.js.map +1 -1
  38. package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/HorizontalRule.js.map +1 -1
  39. package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/index.js.map +1 -1
  40. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.js.map +1 -1
  41. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js.map +1 -1
  42. package/dist/src/fields/TiptapEditor/extensions/Iframe/index.js.map +1 -1
  43. package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.js.map +1 -1
  44. package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/index.js.map +1 -1
  45. package/dist/src/fields/TiptapEditor/extensions/Image/Image.js.map +1 -1
  46. package/dist/src/fields/TiptapEditor/extensions/Image/index.js.map +1 -1
  47. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.js.map +1 -1
  48. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.js.map +1 -1
  49. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockView.js.map +1 -1
  50. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockViewClientside.js.map +1 -1
  51. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockWidth.js.map +1 -1
  52. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/index.js.map +1 -1
  53. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js.map +1 -1
  54. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/getImageActualSize.js.map +1 -1
  55. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/index.js.map +1 -1
  56. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
  57. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUploader.js.map +1 -1
  58. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/hooks.js.map +1 -1
  59. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/index.js.map +1 -1
  60. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.js.map +1 -1
  61. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLinksComponent.js.map +1 -1
  62. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/index.js.map +1 -1
  63. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/insideLinks.js.map +1 -1
  64. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/InsideLinksMenu.js.map +1 -1
  65. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/index.js.map +1 -1
  66. package/dist/src/fields/TiptapEditor/extensions/Link/Link.js.map +1 -1
  67. package/dist/src/fields/TiptapEditor/extensions/Link/index.js.map +1 -1
  68. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.js.map +1 -1
  69. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.js.map +1 -1
  70. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.d.ts +4 -3
  71. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.d.ts.map +1 -1
  72. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.js +26 -12
  73. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.js.map +1 -1
  74. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/index.js.map +1 -1
  75. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/index.js.map +1 -1
  76. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.d.ts +3 -3
  77. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.d.ts.map +1 -1
  78. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.js +20 -10
  79. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.js.map +1 -1
  80. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Column.js.map +1 -1
  81. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js.map +1 -1
  82. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/index.js.map +1 -1
  83. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.js.map +1 -1
  84. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/index.js.map +1 -1
  85. package/dist/src/fields/TiptapEditor/extensions/Paragraph/Paragraph.js.map +1 -1
  86. package/dist/src/fields/TiptapEditor/extensions/Paragraph/index.js.map +1 -1
  87. package/dist/src/fields/TiptapEditor/extensions/Selection/Selection.js.map +1 -1
  88. package/dist/src/fields/TiptapEditor/extensions/Selection/index.js.map +1 -1
  89. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/CommandButton.js.map +1 -1
  90. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
  91. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/SlashCommand.js.map +1 -1
  92. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
  93. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/index.js.map +1 -1
  94. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/types.js.map +1 -1
  95. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/FacebookEmbed.js.map +1 -1
  96. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/facebook.js.map +1 -1
  97. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/index.js.map +1 -1
  98. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.js.map +1 -1
  99. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/index.js.map +1 -1
  100. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/instagram.js.map +1 -1
  101. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/LinkedinEmbed.js.map +1 -1
  102. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/index.js.map +1 -1
  103. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/linkedin.js.map +1 -1
  104. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.js.map +1 -1
  105. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbedServerside.js.map +1 -1
  106. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/TiktokEmbed.js.map +1 -1
  107. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/index.js.map +1 -1
  108. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.js.map +1 -1
  109. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/TwitterEmbed.js.map +1 -1
  110. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/index.js.map +1 -1
  111. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.js.map +1 -1
  112. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.js.map +1 -1
  113. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.js.map +1 -1
  114. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.js.map +1 -1
  115. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/index.js.map +1 -1
  116. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.js.map +1 -1
  117. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.js.map +1 -1
  118. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/index.js.map +1 -1
  119. package/dist/src/fields/TiptapEditor/extensions/Table/Cell.js.map +1 -1
  120. package/dist/src/fields/TiptapEditor/extensions/Table/Header.js.map +1 -1
  121. package/dist/src/fields/TiptapEditor/extensions/Table/Row.js.map +1 -1
  122. package/dist/src/fields/TiptapEditor/extensions/Table/Table.js.map +1 -1
  123. package/dist/src/fields/TiptapEditor/extensions/Table/index.js.map +1 -1
  124. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.js.map +1 -1
  125. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.js.map +1 -1
  126. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.js.map +1 -1
  127. package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.js.map +1 -1
  128. package/dist/src/fields/TiptapEditor/extensions/Table/menus/index.js.map +1 -1
  129. package/dist/src/fields/TiptapEditor/extensions/Table/utils.js.map +1 -1
  130. package/dist/src/fields/TiptapEditor/extensions/TrailingNode/index.js.map +1 -1
  131. package/dist/src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.js.map +1 -1
  132. package/dist/src/fields/TiptapEditor/extensions/Video/Video.js +5 -5
  133. package/dist/src/fields/TiptapEditor/extensions/Video/Video.js.map +1 -1
  134. package/dist/src/fields/TiptapEditor/extensions/Video/index.js.map +1 -1
  135. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.js.map +1 -1
  136. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.js.map +1 -1
  137. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.js.map +1 -1
  138. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockViewClientside.js.map +1 -1
  139. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockWidth.js.map +1 -1
  140. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/VideoPlayer.js.map +1 -1
  141. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js +9 -9
  142. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js.map +1 -1
  143. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js +15 -15
  144. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js.map +1 -1
  145. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.js.map +1 -1
  146. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/index.js.map +1 -1
  147. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/middleware/SourceInterceptor.js.map +1 -1
  148. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/util/SafeSeek.js.map +1 -1
  149. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/index.js.map +1 -1
  150. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
  151. package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
  152. package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.js.map +1 -1
  153. package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSideRenderer.js.map +1 -1
  154. package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSidebarRenderer.js.map +1 -1
  155. package/dist/src/fields/TiptapEditor/extensions/serverside/FacebookServerside.js.map +1 -1
  156. package/dist/src/fields/TiptapEditor/extensions/serverside/IFrameServerside.js.map +1 -1
  157. package/dist/src/fields/TiptapEditor/extensions/serverside/ImageBlockServerside.js.map +1 -1
  158. package/dist/src/fields/TiptapEditor/extensions/serverside/InsideLinkServerside.js.map +1 -1
  159. package/dist/src/fields/TiptapEditor/extensions/serverside/InstagramServerside.js.map +1 -1
  160. package/dist/src/fields/TiptapEditor/extensions/serverside/LinkedinServerside.js.map +1 -1
  161. package/dist/src/fields/TiptapEditor/extensions/serverside/RenderEmbedClientSide.js.map +1 -1
  162. package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js.map +1 -1
  163. package/dist/src/fields/TiptapEditor/extensions/serverside/TiktokServerside.js.map +1 -1
  164. package/dist/src/fields/TiptapEditor/extensions/serverside/TwitterBlockServerside.js.map +1 -1
  165. package/dist/src/fields/TiptapEditor/extensions/serverside/VideoBlockServerside.js +5 -5
  166. package/dist/src/fields/TiptapEditor/extensions/serverside/VideoBlockServerside.js.map +1 -1
  167. package/dist/src/fields/TiptapEditor/extensions/serverside/YouTubeServerside.js.map +1 -1
  168. package/dist/src/fields/TiptapEditor/extensions/serverside/getAssetsAspectRatio.js.map +1 -1
  169. package/dist/src/fields/TiptapEditor/extensions/serverside/index.js.map +1 -1
  170. package/dist/src/fields/TiptapEditor/extensions/serverside/useAppendRequiredBlocksMarkerClient.js.map +1 -1
  171. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
  172. package/dist/src/fields/TiptapEditor/features/BlockEditor/OneLineEditor.js.map +1 -1
  173. package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorHeader.js.map +1 -1
  174. package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorInfo.js.map +1 -1
  175. package/dist/src/fields/TiptapEditor/features/BlockEditor/components/OneLiner.js.map +1 -1
  176. package/dist/src/fields/TiptapEditor/features/BlockEditor/index.js.map +1 -1
  177. package/dist/src/fields/TiptapEditor/features/BlockEditor/types.js.map +1 -1
  178. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/ContentItemMenu.js.map +1 -1
  179. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useContentItemActions.js.map +1 -1
  180. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useData.js.map +1 -1
  181. package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/index.js.map +1 -1
  182. package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/LinkMenu.js.map +1 -1
  183. package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/index.js.map +1 -1
  184. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/AITextMenu.js.map +1 -1
  185. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/TextMenu.js.map +1 -1
  186. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ContentTypePicker.js.map +1 -1
  187. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditIframeLinkPopover.js.map +1 -1
  188. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditLinkPopover.js.map +1 -1
  189. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.js.map +1 -1
  190. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.js.map +1 -1
  191. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/SocialMediaPopover.js.map +1 -1
  192. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.js.map +1 -1
  193. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js.map +1 -1
  194. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js.map +1 -1
  195. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.js.map +1 -1
  196. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuContentTypes.js.map +1 -1
  197. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuStates.js.map +1 -1
  198. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/index.js.map +1 -1
  199. package/dist/src/fields/TiptapEditor/features/menus/index.js.map +1 -1
  200. package/dist/src/fields/TiptapEditor/features/menus/types.js.map +1 -1
  201. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
  202. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.js.map +1 -1
  203. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js.map +1 -1
  204. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/EditorPreview.js.map +1 -1
  205. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/index.js.map +1 -1
  206. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/markdown.hook.js.map +1 -1
  207. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.js.map +1 -1
  208. package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/ColorButton.js.map +1 -1
  209. package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/Colorpicker.js.map +1 -1
  210. package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/index.js.map +1 -1
  211. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js.map +1 -1
  212. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/index.js.map +1 -1
  213. package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/InsideLinksEditorPanel.js.map +1 -1
  214. package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/index.js.map +1 -1
  215. package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.d.ts +1 -1
  216. package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.d.ts.map +1 -1
  217. package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.js +9 -9
  218. package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.js.map +1 -1
  219. package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/index.js.map +1 -1
  220. package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/LinkPreviewPanel.js.map +1 -1
  221. package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/index.js.map +1 -1
  222. package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js.map +1 -1
  223. package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/index.js.map +1 -1
  224. package/dist/src/fields/TiptapEditor/features/panels/index.js.map +1 -1
  225. package/dist/src/fields/TiptapEditor/features/ui/Button/Button.js.map +1 -1
  226. package/dist/src/fields/TiptapEditor/features/ui/Button/SpanButton.js.map +1 -1
  227. package/dist/src/fields/TiptapEditor/features/ui/Button/index.js.map +1 -1
  228. package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js.map +1 -1
  229. package/dist/src/fields/TiptapEditor/features/ui/Dropdown/index.js.map +1 -1
  230. package/dist/src/fields/TiptapEditor/features/ui/Icon.js.map +1 -1
  231. package/dist/src/fields/TiptapEditor/features/ui/Loader/Loader.js.map +1 -1
  232. package/dist/src/fields/TiptapEditor/features/ui/Loader/index.js.map +1 -1
  233. package/dist/src/fields/TiptapEditor/features/ui/Loader/types.js.map +1 -1
  234. package/dist/src/fields/TiptapEditor/features/ui/Panel/index.js.map +1 -1
  235. package/dist/src/fields/TiptapEditor/features/ui/PopoverMenu.js.map +1 -1
  236. package/dist/src/fields/TiptapEditor/features/ui/Spinner/Spinner.js.map +1 -1
  237. package/dist/src/fields/TiptapEditor/features/ui/Spinner/index.js.map +1 -1
  238. package/dist/src/fields/TiptapEditor/features/ui/Surface.js.map +1 -1
  239. package/dist/src/fields/TiptapEditor/features/ui/Textarea/Textarea.js.map +1 -1
  240. package/dist/src/fields/TiptapEditor/features/ui/Textarea/index.js.map +1 -1
  241. package/dist/src/fields/TiptapEditor/features/ui/Toggle/Toggle.js.map +1 -1
  242. package/dist/src/fields/TiptapEditor/features/ui/Toggle/index.js.map +1 -1
  243. package/dist/src/fields/TiptapEditor/features/ui/Toolbar.js.map +1 -1
  244. package/dist/src/fields/TiptapEditor/features/ui/Tooltip/index.js.map +1 -1
  245. package/dist/src/fields/TiptapEditor/features/ui/Tooltip/types.js.map +1 -1
  246. package/dist/src/fields/TiptapEditor/features/ui/crazy-spinner.js.map +1 -1
  247. package/dist/src/fields/TiptapEditor/features/ui/scroll-area.js.map +1 -1
  248. package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
  249. package/dist/src/fields/TiptapEditor/hooks/useSidebar.js.map +1 -1
  250. package/dist/src/fields/TiptapEditor/index.js.map +1 -1
  251. package/dist/src/fields/TiptapEditor/lib/api.js.map +1 -1
  252. package/dist/src/fields/TiptapEditor/lib/constants.js.map +1 -1
  253. package/dist/src/fields/TiptapEditor/lib/data/initialContent.js.map +1 -1
  254. package/dist/src/fields/TiptapEditor/lib/extract.js.map +1 -1
  255. package/dist/src/fields/TiptapEditor/lib/tiptapSchema.js.map +1 -1
  256. package/dist/src/fields/TiptapEditor/lib/utils/cssVar.js.map +1 -1
  257. package/dist/src/fields/TiptapEditor/lib/utils/deepMerge.js +8 -8
  258. package/dist/src/fields/TiptapEditor/lib/utils/deepMerge.js.map +1 -1
  259. package/dist/src/fields/TiptapEditor/lib/utils/getRenderContainer.js.map +1 -1
  260. package/dist/src/fields/TiptapEditor/lib/utils/index.js.map +1 -1
  261. package/dist/src/fields/TiptapEditor/lib/utils/isCustomNodeSelected.js.map +1 -1
  262. package/dist/src/fields/TiptapEditor/lib/utils/isRtl.js.map +1 -1
  263. package/dist/src/fields/TiptapEditor/lib/utils/isTextSelected.js.map +1 -1
  264. package/dist/src/fields/TiptapEditor/lib/utils/partialRequired.js.map +1 -1
  265. package/dist/src/fields/TiptapEditor/types.d.js.map +1 -1
  266. package/dist/src/index.js.map +1 -1
  267. package/dist/src/mobile.css +1 -1
  268. package/dist/src/styles.css +1 -1
  269. package/dist/tsconfig.tsbuildinfo +1 -1
  270. package/package.json +209 -201
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.ts"],"sourcesContent":["declare module '@tiptap/core' {\n interface Commands<ReturnType> {\n twitter: {\n /**\n * Add an image\n */\n\n insertTwitter: (url?: string, className?: string) => ReturnType\n }\n }\n}\n\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\nimport { ReactNodeViewRenderer } from '@tiptap/react'\nimport TwitterEmbed from './TwitterEmbed.js'\n\nexport const Twitter = Node.create({\n name: 'twitter',\n\n group: 'block',\n content: 'inline*',\n draggable: true,\n\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"twitter\"]',\n },\n ]\n },\n\n addAttributes() {\n return {\n url: { default: null },\n src: { default: null },\n class: { default: null },\n }\n },\n\n addKeyboardShortcuts() {\n return {\n 'Mod-Enter': () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run()\n },\n }\n },\n\n // renderHTML({ HTMLAttributes }) {\n // return [\n // \"div\",\n // mergeAttributes(HTMLAttributes, { \"data-type\": \"twitter\" }),\n // 0,\n // ];\n // },\n renderHTML({ HTMLAttributes }) {\n return [\n \"div\",\n mergeAttributes(HTMLAttributes, {\n \"data-type\": \"twitter\",\n class: `react-renderer node-twitter ${HTMLAttributes.class ?? \"\"}`,\n }), [\n 'div',\n mergeAttributes(\n { class: 'socialMediaContainer' },\n ),\n ['div', mergeAttributes({ class: 'rsme-embed rsme-twitter-embed', style: 'overflow: hidden; width: 325px; border-radius: 12px;' }),\n\n [\n 'blockquote',\n { class: 'twitter-tweet' },\n ['a', { href: convertYoutubeUrlToEmbed(HTMLAttributes.url) ?? HTMLAttributes.src }, ''],\n ],\n [\n 'script',\n {\n async: true,\n src: 'https://platform.twitter.com/widgets.js',\n charset: 'utf-8',\n },\n ],\n ]\n ]\n ]\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TwitterEmbed)\n },\n\n addCommands() {\n return {\n insertTwitter:\n (url, className) =>\n ({ commands, state }) => {\n let formattedUrl = url\n if (url) {\n\n formattedUrl = convertYoutubeUrlToEmbed(url)\n }\n return commands.insertContent({\n type: 'twitter',\n attrs: {\n url: url,\n class: className,\n src: formattedUrl,\n },\n })\n },\n }\n },\n})\n\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\n if (!url) return undefined;\n try {\n let formattedUrl\n const tweetMatch = url.match(/(?:twitter\\.com|x\\.com)\\/([^\\/]+)\\/status\\/(\\d+)/)\n if (tweetMatch) {\n const [_, username, tweetId] = tweetMatch\n formattedUrl = `https://twitter.com/${username}/status/${tweetId}`\n }\n return formattedUrl ? formattedUrl : undefined;\n } catch {\n return undefined;\n }\n}\nfunction isValidHttpUrl(string: string) {\n let url\n\n try {\n url = new URL(string)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Twitter","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","src","class","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","href","convertYoutubeUrlToEmbed","async","charset","addNodeView","addCommands","insertTwitter","className","commands","formattedUrl","insertContent","attrs","undefined","tweetMatch","match","_","username","tweetId","isValidHttpUrl","string","URL","protocol"],"mappings":"AAYA,SAASA,IAAI,EAA4BC,eAAe,QAAQ,eAAc;AAC9E,SAASC,qBAAqB,QAAQ,gBAAe;AACrD,OAAOC,kBAAkB,oBAAmB;AAE5C,OAAO,MAAMC,UAAUJ,KAAKK,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrBC,KAAK;gBAAED,SAAS;YAAK;YACrBE,OAAO;gBAAEF,SAAS;YAAK;QACzB;IACF;IAEAG;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAClB,IAAI;gBACtB,GACCmB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEA,mCAAmC;IACnC,aAAa;IACb,aAAa;IACb,mEAAmE;IACnE,SAAS;IACT,OAAO;IACP,KAAK;IACLC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACA3B,gBAAgB2B,gBAAgB;gBAC9B,aAAa;gBACbZ,OAAO,CAAC,4BAA4B,EAAEY,eAAeZ,KAAK,IAAI,IAAI;YACpE;YAAI;gBACF;gBACAf,gBACE;oBAAEe,OAAO;gBAAuB;gBAElC;oBAAC;oBAAOf,gBAAgB;wBAAEe,OAAO;wBAAiCa,OAAO;oBAAuD;oBAE9H;wBACE;wBACA;4BAAEb,OAAO;wBAAgB;wBACzB;4BAAC;4BAAK;gCAAEc,MAAMC,yBAAyBH,eAAef,GAAG,KAAKe,eAAeb,GAAG;4BAAC;4BAAG;yBAAG;qBACxF;oBACD;wBACE;wBACA;4BACEiB,OAAO;4BACPjB,KAAK;4BACLkB,SAAS;wBACX;qBACD;iBACF;aACF;SACF;IACH;IAEAC;QACE,OAAOhC,sBAAsBC;IAC/B;IAEAgC;QACE,OAAO;YACLC,eACE,CAACvB,KAAKwB,YACJ,CAAC,EAAEC,QAAQ,EAAEjB,KAAK,EAAE;oBAClB,IAAIkB,eAAe1B;oBACnB,IAAIA,KAAK;wBAEP0B,eAAeR,yBAAyBlB;oBAC1C;oBACA,OAAOyB,SAASE,aAAa,CAAC;wBAC5BhB,MAAM;wBACNiB,OAAO;4BACL5B,KAAKA;4BACLG,OAAOqB;4BACPtB,KAAKwB;wBACP;oBACF;gBACF;QACN;IACF;AACF,GAAE;AAEF,SAASR,yBAAyBlB,GAAW;IAC3C,IAAI,CAACA,KAAK,OAAO6B;IACjB,IAAI;QACF,IAAIH;QACJ,MAAMI,aAAa9B,IAAI+B,KAAK,CAAC;QAC7B,IAAID,YAAY;YACd,MAAM,CAACE,GAAGC,UAAUC,QAAQ,GAAGJ;YAC/BJ,eAAe,CAAC,oBAAoB,EAAEO,SAAS,QAAQ,EAAEC,SAAS;QACpE;QACA,OAAOR,eAAeA,eAAeG;IACvC,EAAE,OAAM;QACN,OAAOA;IACT;AACF;AACA,SAASM,eAAeC,MAAc;IACpC,IAAIpC;IAEJ,IAAI;QACFA,MAAM,IAAIqC,IAAID;IAChB,EAAE,OAAOJ,GAAG;QACV,OAAO;IACT;IAEA,OAAOhC,IAAIsC,QAAQ,KAAK,WAAWtC,IAAIsC,QAAQ,KAAK;AACtD"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n twitter: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertTwitter: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport TwitterEmbed from './TwitterEmbed.js'\r\n\r\nexport const Twitter = Node.create({\r\n name: 'twitter',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"twitter\"]',\r\n },\r\n ]\r\n },\r\n\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n src: { default: null },\r\n class: { default: null },\r\n }\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n // renderHTML({ HTMLAttributes }) {\r\n // return [\r\n // \"div\",\r\n // mergeAttributes(HTMLAttributes, { \"data-type\": \"twitter\" }),\r\n // 0,\r\n // ];\r\n // },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"twitter\",\r\n class: `react-renderer node-twitter ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-twitter-embed', style: 'overflow: hidden; width: 325px; border-radius: 12px;' }),\r\n\r\n [\r\n 'blockquote',\r\n { class: 'twitter-tweet' },\r\n ['a', { href: convertYoutubeUrlToEmbed(HTMLAttributes.url) ?? HTMLAttributes.src }, ''],\r\n ],\r\n [\r\n 'script',\r\n {\r\n async: true,\r\n src: 'https://platform.twitter.com/widgets.js',\r\n charset: 'utf-8',\r\n },\r\n ],\r\n ]\r\n ]\r\n ]\r\n },\r\n\r\n addNodeView() {\r\n return ReactNodeViewRenderer(TwitterEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertTwitter:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n let formattedUrl = url\r\n if (url) {\r\n\r\n formattedUrl = convertYoutubeUrlToEmbed(url)\r\n }\r\n return commands.insertContent({\r\n type: 'twitter',\r\n attrs: {\r\n url: url,\r\n class: className,\r\n src: formattedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n let formattedUrl\r\n const tweetMatch = url.match(/(?:twitter\\.com|x\\.com)\\/([^\\/]+)\\/status\\/(\\d+)/)\r\n if (tweetMatch) {\r\n const [_, username, tweetId] = tweetMatch\r\n formattedUrl = `https://twitter.com/${username}/status/${tweetId}`\r\n }\r\n return formattedUrl ? formattedUrl : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Twitter","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","src","class","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","href","convertYoutubeUrlToEmbed","async","charset","addNodeView","addCommands","insertTwitter","className","commands","formattedUrl","insertContent","attrs","undefined","tweetMatch","match","_","username","tweetId","isValidHttpUrl","string","URL","protocol"],"mappings":"AAYA,SAASA,IAAI,EAA4BC,eAAe,QAAQ,eAAc;AAC9E,SAASC,qBAAqB,QAAQ,gBAAe;AACrD,OAAOC,kBAAkB,oBAAmB;AAE5C,OAAO,MAAMC,UAAUJ,KAAKK,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrBC,KAAK;gBAAED,SAAS;YAAK;YACrBE,OAAO;gBAAEF,SAAS;YAAK;QACzB;IACF;IAEAG;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAClB,IAAI;gBACtB,GACCmB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEA,mCAAmC;IACnC,aAAa;IACb,aAAa;IACb,mEAAmE;IACnE,SAAS;IACT,OAAO;IACP,KAAK;IACLC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACA3B,gBAAgB2B,gBAAgB;gBAC9B,aAAa;gBACbZ,OAAO,CAAC,4BAA4B,EAAEY,eAAeZ,KAAK,IAAI,IAAI;YACpE;YAAI;gBACF;gBACAf,gBACE;oBAAEe,OAAO;gBAAuB;gBAElC;oBAAC;oBAAOf,gBAAgB;wBAAEe,OAAO;wBAAiCa,OAAO;oBAAuD;oBAE9H;wBACE;wBACA;4BAAEb,OAAO;wBAAgB;wBACzB;4BAAC;4BAAK;gCAAEc,MAAMC,yBAAyBH,eAAef,GAAG,KAAKe,eAAeb,GAAG;4BAAC;4BAAG;yBAAG;qBACxF;oBACD;wBACE;wBACA;4BACEiB,OAAO;4BACPjB,KAAK;4BACLkB,SAAS;wBACX;qBACD;iBACF;aACF;SACF;IACH;IAEAC;QACE,OAAOhC,sBAAsBC;IAC/B;IAEAgC;QACE,OAAO;YACLC,eACE,CAACvB,KAAKwB,YACJ,CAAC,EAAEC,QAAQ,EAAEjB,KAAK,EAAE;oBAClB,IAAIkB,eAAe1B;oBACnB,IAAIA,KAAK;wBAEP0B,eAAeR,yBAAyBlB;oBAC1C;oBACA,OAAOyB,SAASE,aAAa,CAAC;wBAC5BhB,MAAM;wBACNiB,OAAO;4BACL5B,KAAKA;4BACLG,OAAOqB;4BACPtB,KAAKwB;wBACP;oBACF;gBACF;QACN;IACF;AACF,GAAE;AAEF,SAASR,yBAAyBlB,GAAW;IAC3C,IAAI,CAACA,KAAK,OAAO6B;IACjB,IAAI;QACF,IAAIH;QACJ,MAAMI,aAAa9B,IAAI+B,KAAK,CAAC;QAC7B,IAAID,YAAY;YACd,MAAM,CAACE,GAAGC,UAAUC,QAAQ,GAAGJ;YAC/BJ,eAAe,CAAC,oBAAoB,EAAEO,SAAS,QAAQ,EAAEC,SAAS;QACpE;QACA,OAAOR,eAAeA,eAAeG;IACvC,EAAE,OAAM;QACN,OAAOA;IACT;AACF;AACA,SAASM,eAAeC,MAAc;IACpC,IAAIpC;IAEJ,IAAI;QACFA,MAAM,IAAIqC,IAAID;IAChB,EAAE,OAAOJ,GAAG;QACV,OAAO;IACT;IAEA,OAAOhC,IAAIsC,QAAQ,KAAK,WAAWtC,IAAIsC,QAAQ,KAAK;AACtD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.tsx"],"sourcesContent":["import { Youtube } from \"lucide-react\";\nimport { YouTubeEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Youtube}\n text={\"Embed a Youtube Video\"}\n >\n <YouTubeEmbed url={props?.node?.attrs?.url ?? \"\"} />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Youtube","YouTubeEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs"],"mappings":";AAAA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,YAAY,QAAQ,2BAA2B;AACxD,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMJ;QACNK,MAAM;kBAEN,cAAA,KAACJ;YAAaK,KAAKH,OAAOI,MAAMC,OAAOF,OAAO;;;AAGpD,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.tsx"],"sourcesContent":["import { Youtube } from \"lucide-react\";\r\nimport { YouTubeEmbed } from \"react-social-media-embed\";\r\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\r\n\r\nexport default (props: { node: { attrs: { url?: string } } }) => {\r\n return (\r\n <SocialMediaEmbed\r\n props={props}\r\n Icon={Youtube}\r\n text={\"Embed a Youtube Video\"}\r\n >\r\n <YouTubeEmbed url={props?.node?.attrs?.url ?? \"\"} />\r\n </SocialMediaEmbed>\r\n );\r\n};\r\n"],"names":["Youtube","YouTubeEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs"],"mappings":";AAAA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,YAAY,QAAQ,2BAA2B;AACxD,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMJ;QACNK,MAAM;kBAEN,cAAA,KAACJ;YAAaK,KAAKH,OAAOI,MAAMC,OAAOF,OAAO;;;AAGpD,CAAA,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.ts"],"sourcesContent":["export * from \"./youtube.js\";\n"],"names":[],"mappings":"AAAA,cAAc,eAAe"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.ts"],"sourcesContent":["export * from \"./youtube.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.ts"],"sourcesContent":["declare module '@tiptap/core' {\n interface Commands<ReturnType> {\n youtube: {\n /**\n * Add an image\n */\n\n insertYoutube: (url?: string, className?: string) => ReturnType\n }\n }\n}\n\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\nimport { ReactNodeViewRenderer } from '@tiptap/react'\nimport YoutubeEmbed from './YoutubeEmbed.js'\n\nexport const Youtube = Node.create({\n name: 'youtube',\n\n group: 'block',\n content: 'inline*',\n draggable: true,\n\n // content: 'inline*',\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"youtube\"]',\n },\n ]\n },\n addAttributes() {\n return {\n url: { default: null },\n class: { default: null },\n src: {\n default: null,\n },\n width: {\n default: '560',\n },\n height: {\n default: '315',\n },\n frameborder: {\n default: '0',\n },\n allowfullscreen: {\n default: true,\n },\n }\n },\n\n addKeyboardShortcuts() {\n return {\n 'Mod-Enter': () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run()\n },\n }\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"div\",\n mergeAttributes(HTMLAttributes, {\n \"data-type\": \"youtube\",\n class: `react-renderer node-youtube ${HTMLAttributes.class ?? \"\"}`,\n }), [\n 'div',\n mergeAttributes(\n { class: 'socialMediaContainer' },\n ),\n ['div', mergeAttributes({ class: 'rsme-embed rsme-youtube-embed', style: 'overflow: hidden; border-radius: 0px;' }),\n ['div', { class: 'youtube-iframe' },\n ['iframe', mergeAttributes(HTMLAttributes, { src: convertYoutubeUrlToEmbed(HTMLAttributes.url) },)],\n ]\n ]\n ]\n ]\n },\n addNodeView() {\n return ReactNodeViewRenderer(YoutubeEmbed)\n },\n\n addCommands() {\n return {\n insertYoutube:\n (url, className) =>\n ({ commands, state }) => {\n let embedUrl = ''\n\n if (url) {\n embedUrl = convertYoutubeUrlToEmbed(url)\n }\n\n return commands.insertContent({\n type: 'youtube',\n attrs: {\n url,\n class: className,\n src: embedUrl,\n },\n })\n },\n }\n },\n})\n\n\n\n\n\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\n if (!url) return undefined;\n try {\n // Extract video ID from various YouTube URL formats\n const urlObj = new URL(url)\n let videoId = ''\n\n if (urlObj.hostname === 'youtu.be') {\n // Handle youtu.be format\n videoId = urlObj.pathname.slice(1)\n } else {\n // Handle youtube.com formats\n const searchParams = new URLSearchParams(urlObj.search)\n videoId = searchParams.get('v') || ''\n\n if (!videoId) {\n // Try extracting from pathname for embed URLs\n const matches = urlObj.pathname.match(/\\/embed\\/([^/?]+)/)\n if (matches) {\n videoId = matches[1]\n }\n }\n }\n\n return videoId ? `https://www.youtube.com/embed/${videoId}` : undefined;\n } catch {\n return undefined;\n }\n}\nfunction isValidHttpUrl(string: string) {\n let url\n\n try {\n url = new URL(string)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","YoutubeEmbed","Youtube","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","class","src","width","height","frameborder","allowfullscreen","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","convertYoutubeUrlToEmbed","addNodeView","addCommands","insertYoutube","className","commands","embedUrl","insertContent","attrs","undefined","urlObj","URL","videoId","hostname","pathname","slice","searchParams","URLSearchParams","search","get","matches","match","isValidHttpUrl","string","_","protocol"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n youtube: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertYoutube: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport YoutubeEmbed from './YoutubeEmbed.js'\r\n\r\nexport const Youtube = Node.create({\r\n name: 'youtube',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"youtube\"]',\r\n },\r\n ]\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n class: { default: null },\r\n src: {\r\n default: null,\r\n },\r\n width: {\r\n default: '560',\r\n },\r\n height: {\r\n default: '315',\r\n },\r\n frameborder: {\r\n default: '0',\r\n },\r\n allowfullscreen: {\r\n default: true,\r\n },\r\n }\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"youtube\",\r\n class: `react-renderer node-youtube ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-youtube-embed', style: 'overflow: hidden; border-radius: 0px;' }),\r\n ['div', { class: 'youtube-iframe' },\r\n ['iframe', mergeAttributes(HTMLAttributes, { src: convertYoutubeUrlToEmbed(HTMLAttributes.url) },)],\r\n ]\r\n ]\r\n ]\r\n ]\r\n },\r\n addNodeView() {\r\n return ReactNodeViewRenderer(YoutubeEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertYoutube:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n let embedUrl = ''\r\n\r\n if (url) {\r\n embedUrl = convertYoutubeUrlToEmbed(url)\r\n }\r\n\r\n return commands.insertContent({\r\n type: 'youtube',\r\n attrs: {\r\n url,\r\n class: className,\r\n src: embedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\n\r\n\r\n\r\n\r\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n // Extract video ID from various YouTube URL formats\r\n const urlObj = new URL(url)\r\n let videoId = ''\r\n\r\n if (urlObj.hostname === 'youtu.be') {\r\n // Handle youtu.be format\r\n videoId = urlObj.pathname.slice(1)\r\n } else {\r\n // Handle youtube.com formats\r\n const searchParams = new URLSearchParams(urlObj.search)\r\n videoId = searchParams.get('v') || ''\r\n\r\n if (!videoId) {\r\n // Try extracting from pathname for embed URLs\r\n const matches = urlObj.pathname.match(/\\/embed\\/([^/?]+)/)\r\n if (matches) {\r\n videoId = matches[1]\r\n }\r\n }\r\n }\r\n\r\n return videoId ? `https://www.youtube.com/embed/${videoId}` : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","YoutubeEmbed","Youtube","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","class","src","width","height","frameborder","allowfullscreen","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","convertYoutubeUrlToEmbed","addNodeView","addCommands","insertYoutube","className","commands","embedUrl","insertContent","attrs","undefined","urlObj","URL","videoId","hostname","pathname","slice","searchParams","URLSearchParams","search","get","matches","match","isValidHttpUrl","string","_","protocol"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/index.ts"],"sourcesContent":["export { Twitter } from \"./Twitter/index.js\";\nexport { Tiktok } from \"./Tiktok/index.js\";\nexport { Facebook } from \"./Facebook/index.js\";\nexport { Instagram } from \"./Instagram/index.js\";\nexport { Youtube } from \"./Youtube/index.js\";\nexport { Linkedin } from \"./Linkedin/index.js\";\n"],"names":["Twitter","Tiktok","Facebook","Instagram","Youtube","Linkedin"],"mappings":"AAAA,SAASA,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,QAAQ,QAAQ,sBAAsB"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/index.ts"],"sourcesContent":["export { Twitter } from \"./Twitter/index.js\";\r\nexport { Tiktok } from \"./Tiktok/index.js\";\r\nexport { Facebook } from \"./Facebook/index.js\";\r\nexport { Instagram } from \"./Instagram/index.js\";\r\nexport { Youtube } from \"./Youtube/index.js\";\r\nexport { Linkedin } from \"./Linkedin/index.js\";\r\n"],"names":["Twitter","Tiktok","Facebook","Instagram","Youtube","Linkedin"],"mappings":"AAAA,SAASA,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,QAAQ,QAAQ,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\n\nimport { SocialMediaEditorPanel } from \"../../../features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { supportedSocialMedia } from \"./constants.js\";\n\nexport const SocialMediaMenu = ({ editor, appendTo }: MenuProps) => {\n const shouldShow = useCallback(() => {\n const isInSocialMedia = supportedSocialMedia?.some((socialMedia) => {\n const hasUrl = editor?.getAttributes(socialMedia)?.url;\n return !hasUrl && editor.isActive(socialMedia);\n });\n\n return isInSocialMedia;\n // const isIframe = editor.isActive('iframe')\n // return isIframe\n }, [editor]);\n\n const onHtml = useCallback(\n (url: string, isInline?: boolean) => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n editor\n .chain()\n .focus()\n .insertFacebook(url, isInline ? \"inline-facebook\" : \"side-facebook\")\n .run();\n\n break;\n case \"instagram\":\n editor\n .chain()\n .focus()\n .insertInstagram(\n url,\n isInline ? \"inline-instagram\" : \"side-instagram\"\n )\n .run();\n\n break;\n case \"youtube\":\n editor\n .chain()\n .focus()\n .insertYoutube(url, isInline ? \"inline-youtube\" : \"side-youtube\")\n .run();\n\n break;\n case \"linkedin\":\n editor\n .chain()\n .focus()\n .insertLinkedin(url, isInline ? \"inline-linkedin\" : \"side-linkedin\")\n .run();\n\n break;\n case \"tiktok\":\n editor\n .chain()\n .focus()\n .insertTiktok(url, isInline ? \"inline-tiktok\" : \"side-tiktok\")\n .run();\n\n break;\n case \"twitter\":\n editor\n .chain()\n .focus()\n .insertTwitter(url, isInline ? \"inline-twitter\" : \"side-twitter\")\n .run();\n break;\n }\n },\n [editor]\n );\n\n const generateTexts = useCallback(() => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n return {\n placeholderText: \"https://facebook.com/...\",\n buttonText: \"Embed Facebook\",\n descriptionText: \"Works with links to Facebook posts\",\n };\n\n case \"instagram\":\n return {\n placeholderText: \"https://instagram.com/...\",\n buttonText: \"Embed Instagram\",\n descriptionText: \"Works with links to Instagram posts\",\n };\n case \"youtube\":\n return {\n placeholderText: \"https://youtube.com/...\",\n buttonText: \"Embed Youtube\",\n descriptionText: \"Works with links to Youtube videos\",\n };\n case \"linkedin\":\n return {\n placeholderText: \"https://linkedin.com/...\",\n buttonText: \"Embed Linkedin\",\n descriptionText: \"Works with links to Linkedin posts\",\n };\n case \"tiktok\":\n return {\n placeholderText: \"https://tiktok.com/...\",\n buttonText: \"Embed Tiktok\",\n descriptionText: \"Works with links to tiktok videos\",\n };\n case \"twitter\":\n return {\n placeholderText: \"https://twitter.com/...\",\n buttonText: \"Embed Twitter\",\n descriptionText: \"Works with links to Tweets\",\n };\n }\n }, [editor]);\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`socialMediaMenu`}\n shouldShow={shouldShow}\n tippyOptions={{\n popperOptions: { placement: \"bottom\" },\n placement: \"bottom\",\n // appendTo: () => {\n // return appendTo?.current\n // },\n }}\n updateDelay={100}\n >\n <SocialMediaEditorPanel\n onSetLink={onHtml}\n initialSrc=\"\"\n placeholderText={generateTexts()?.placeholderText ?? \"\"}\n buttonText={generateTexts()?.buttonText ?? \"\"}\n descriptionText={generateTexts()?.descriptionText ?? \"\"}\n />\n {/* <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} /> */}\n {/* \n <Toolbar.Wrapper>\n <to\n <Toolbar.Button\n type=\"button\"\n tooltip=\"Sidebar left\"\n active={true}\n // onClick={onColumnLeft}\n >\n <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} />\n </Toolbar.Button>\n </Toolbar.Wrapper> */}\n </BaseBubbleMenu>\n );\n};\n\nexport default SocialMediaMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","SocialMediaEditorPanel","supportedSocialMedia","SocialMediaMenu","editor","appendTo","shouldShow","isInSocialMedia","some","socialMedia","hasUrl","getAttributes","url","isActive","onHtml","isInline","find","chain","focus","insertFacebook","run","insertInstagram","insertYoutube","insertLinkedin","insertTiktok","insertTwitter","generateTexts","placeholderText","buttonText","descriptionText","pluginKey","tippyOptions","popperOptions","placement","updateDelay","onSetLink","initialSrc"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AAEpC,SAASC,sBAAsB,QAAQ,4EAA4E;AAEnH,SAASC,oBAAoB,QAAQ,iBAAiB;AAEtD,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC7D,MAAMC,aAAaN,YAAY;QAC7B,MAAMO,kBAAkBL,sBAAsBM,KAAK,CAACC;YAClD,MAAMC,SAASN,QAAQO,cAAcF,cAAcG;YACnD,OAAO,CAACF,UAAUN,OAAOS,QAAQ,CAACJ;QACpC;QAEA,OAAOF;IACP,6CAA6C;IAC7C,kBAAkB;IACpB,GAAG;QAACH;KAAO;IAEX,MAAMU,SAASd,YACb,CAACY,KAAaG;QACZ,MAAMN,cAAcP,sBAAsBc,KAAK,CAACP;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACHL,OACGa,KAAK,GACLC,KAAK,GACLC,cAAc,CAACP,KAAKG,WAAW,oBAAoB,iBACnDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLG,eAAe,CACdT,KACAG,WAAW,qBAAqB,kBAEjCK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLI,aAAa,CAACV,KAAKG,WAAW,mBAAmB,gBACjDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLK,cAAc,CAACX,KAAKG,WAAW,oBAAoB,iBACnDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLM,YAAY,CAACZ,KAAKG,WAAW,kBAAkB,eAC/CK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLO,aAAa,CAACb,KAAKG,WAAW,mBAAmB,gBACjDK,GAAG;gBACN;QACJ;IACF,GACA;QAAChB;KAAO;IAGV,MAAMsB,gBAAgB1B,YAAY;QAChC,MAAMS,cAAcP,sBAAsBc,KAAK,CAACP;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACH,OAAO;oBACLkB,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YAEF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;QACJ;IACF,GAAG;QAACzB;KAAO;IACX,qBACE,KAACL;QACCK,QAAQA;QACR0B,WAAW,CAAC,eAAe,CAAC;QAC5BxB,YAAYA;QACZyB,cAAc;YACZC,eAAe;gBAAEC,WAAW;YAAS;YACrCA,WAAW;QAIb;QACAC,aAAa;kBAEb,cAAA,KAACjC;YACCkC,WAAWrB;YACXsB,YAAW;YACXT,iBAAiBD,iBAAiBC,mBAAmB;YACrDC,YAAYF,iBAAiBE,cAAc;YAC3CC,iBAAiBH,iBAAiBG,mBAAmB;;;AAiB7D,EAAE;AAEF,eAAe1B,gBAAgB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport { useCallback } from \"react\";\r\n\r\nimport { SocialMediaEditorPanel } from \"../../../features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js\";\r\nimport { MenuProps } from \"../../../features/menus/types.js\";\r\nimport { supportedSocialMedia } from \"./constants.js\";\r\n\r\nexport const SocialMediaMenu = ({ editor, appendTo }: MenuProps) => {\r\n const shouldShow = useCallback(() => {\r\n const isInSocialMedia = supportedSocialMedia?.some((socialMedia) => {\r\n const hasUrl = editor?.getAttributes(socialMedia)?.url;\r\n return !hasUrl && editor.isActive(socialMedia);\r\n });\r\n\r\n return isInSocialMedia;\r\n // const isIframe = editor.isActive('iframe')\r\n // return isIframe\r\n }, [editor]);\r\n\r\n const onHtml = useCallback(\r\n (url: string, isInline?: boolean) => {\r\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\r\n return editor.isActive(socialMedia);\r\n });\r\n switch (socialMedia) {\r\n case \"facebook\":\r\n editor\r\n .chain()\r\n .focus()\r\n .insertFacebook(url, isInline ? \"inline-facebook\" : \"side-facebook\")\r\n .run();\r\n\r\n break;\r\n case \"instagram\":\r\n editor\r\n .chain()\r\n .focus()\r\n .insertInstagram(\r\n url,\r\n isInline ? \"inline-instagram\" : \"side-instagram\"\r\n )\r\n .run();\r\n\r\n break;\r\n case \"youtube\":\r\n editor\r\n .chain()\r\n .focus()\r\n .insertYoutube(url, isInline ? \"inline-youtube\" : \"side-youtube\")\r\n .run();\r\n\r\n break;\r\n case \"linkedin\":\r\n editor\r\n .chain()\r\n .focus()\r\n .insertLinkedin(url, isInline ? \"inline-linkedin\" : \"side-linkedin\")\r\n .run();\r\n\r\n break;\r\n case \"tiktok\":\r\n editor\r\n .chain()\r\n .focus()\r\n .insertTiktok(url, isInline ? \"inline-tiktok\" : \"side-tiktok\")\r\n .run();\r\n\r\n break;\r\n case \"twitter\":\r\n editor\r\n .chain()\r\n .focus()\r\n .insertTwitter(url, isInline ? \"inline-twitter\" : \"side-twitter\")\r\n .run();\r\n break;\r\n }\r\n },\r\n [editor]\r\n );\r\n\r\n const generateTexts = useCallback(() => {\r\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\r\n return editor.isActive(socialMedia);\r\n });\r\n switch (socialMedia) {\r\n case \"facebook\":\r\n return {\r\n placeholderText: \"https://facebook.com/...\",\r\n buttonText: \"Embed Facebook\",\r\n descriptionText: \"Works with links to Facebook posts\",\r\n };\r\n\r\n case \"instagram\":\r\n return {\r\n placeholderText: \"https://instagram.com/...\",\r\n buttonText: \"Embed Instagram\",\r\n descriptionText: \"Works with links to Instagram posts\",\r\n };\r\n case \"youtube\":\r\n return {\r\n placeholderText: \"https://youtube.com/...\",\r\n buttonText: \"Embed Youtube\",\r\n descriptionText: \"Works with links to Youtube videos\",\r\n };\r\n case \"linkedin\":\r\n return {\r\n placeholderText: \"https://linkedin.com/...\",\r\n buttonText: \"Embed Linkedin\",\r\n descriptionText: \"Works with links to Linkedin posts\",\r\n };\r\n case \"tiktok\":\r\n return {\r\n placeholderText: \"https://tiktok.com/...\",\r\n buttonText: \"Embed Tiktok\",\r\n descriptionText: \"Works with links to tiktok videos\",\r\n };\r\n case \"twitter\":\r\n return {\r\n placeholderText: \"https://twitter.com/...\",\r\n buttonText: \"Embed Twitter\",\r\n descriptionText: \"Works with links to Tweets\",\r\n };\r\n }\r\n }, [editor]);\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey={`socialMediaMenu`}\r\n shouldShow={shouldShow}\r\n tippyOptions={{\r\n popperOptions: { placement: \"bottom\" },\r\n placement: \"bottom\",\r\n // appendTo: () => {\r\n // return appendTo?.current\r\n // },\r\n }}\r\n updateDelay={100}\r\n >\r\n <SocialMediaEditorPanel\r\n onSetLink={onHtml}\r\n initialSrc=\"\"\r\n placeholderText={generateTexts()?.placeholderText ?? \"\"}\r\n buttonText={generateTexts()?.buttonText ?? \"\"}\r\n descriptionText={generateTexts()?.descriptionText ?? \"\"}\r\n />\r\n {/* <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} /> */}\r\n {/* \r\n <Toolbar.Wrapper>\r\n <to\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip=\"Sidebar left\"\r\n active={true}\r\n // onClick={onColumnLeft}\r\n >\r\n <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} />\r\n </Toolbar.Button>\r\n </Toolbar.Wrapper> */}\r\n </BaseBubbleMenu>\r\n );\r\n};\r\n\r\nexport default SocialMediaMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","SocialMediaEditorPanel","supportedSocialMedia","SocialMediaMenu","editor","appendTo","shouldShow","isInSocialMedia","some","socialMedia","hasUrl","getAttributes","url","isActive","onHtml","isInline","find","chain","focus","insertFacebook","run","insertInstagram","insertYoutube","insertLinkedin","insertTiktok","insertTwitter","generateTexts","placeholderText","buttonText","descriptionText","pluginKey","tippyOptions","popperOptions","placement","updateDelay","onSetLink","initialSrc"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AAEpC,SAASC,sBAAsB,QAAQ,4EAA4E;AAEnH,SAASC,oBAAoB,QAAQ,iBAAiB;AAEtD,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC7D,MAAMC,aAAaN,YAAY;QAC7B,MAAMO,kBAAkBL,sBAAsBM,KAAK,CAACC;YAClD,MAAMC,SAASN,QAAQO,cAAcF,cAAcG;YACnD,OAAO,CAACF,UAAUN,OAAOS,QAAQ,CAACJ;QACpC;QAEA,OAAOF;IACP,6CAA6C;IAC7C,kBAAkB;IACpB,GAAG;QAACH;KAAO;IAEX,MAAMU,SAASd,YACb,CAACY,KAAaG;QACZ,MAAMN,cAAcP,sBAAsBc,KAAK,CAACP;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACHL,OACGa,KAAK,GACLC,KAAK,GACLC,cAAc,CAACP,KAAKG,WAAW,oBAAoB,iBACnDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLG,eAAe,CACdT,KACAG,WAAW,qBAAqB,kBAEjCK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLI,aAAa,CAACV,KAAKG,WAAW,mBAAmB,gBACjDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLK,cAAc,CAACX,KAAKG,WAAW,oBAAoB,iBACnDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLM,YAAY,CAACZ,KAAKG,WAAW,kBAAkB,eAC/CK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLO,aAAa,CAACb,KAAKG,WAAW,mBAAmB,gBACjDK,GAAG;gBACN;QACJ;IACF,GACA;QAAChB;KAAO;IAGV,MAAMsB,gBAAgB1B,YAAY;QAChC,MAAMS,cAAcP,sBAAsBc,KAAK,CAACP;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACH,OAAO;oBACLkB,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YAEF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;QACJ;IACF,GAAG;QAACzB;KAAO;IACX,qBACE,KAACL;QACCK,QAAQA;QACR0B,WAAW,CAAC,eAAe,CAAC;QAC5BxB,YAAYA;QACZyB,cAAc;YACZC,eAAe;gBAAEC,WAAW;YAAS;YACrCA,WAAW;QAIb;QACAC,aAAa;kBAEb,cAAA,KAACjC;YACCkC,WAAWrB;YACXsB,YAAW;YACXT,iBAAiBD,iBAAiBC,mBAAmB;YACrDC,YAAYF,iBAAiBE,cAAc;YAC3CC,iBAAiBH,iBAAiBG,mBAAmB;;;AAiB7D,EAAE;AAEF,eAAe1B,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.ts"],"sourcesContent":["export const supportedSocialMedia = [\n 'twitter',\n 'facebook',\n 'instagram',\n 'linkedin',\n 'tiktok',\n 'youtube',\n]\n"],"names":["supportedSocialMedia"],"mappings":"AAAA,OAAO,MAAMA,uBAAuB;IAClC;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.ts"],"sourcesContent":["export const supportedSocialMedia = [\r\n 'twitter',\r\n 'facebook',\r\n 'instagram',\r\n 'linkedin',\r\n 'tiktok',\r\n 'youtube',\r\n]\r\n"],"names":["supportedSocialMedia"],"mappings":"AAAA,OAAO,MAAMA,uBAAuB;IAClC;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/index.ts"],"sourcesContent":["export * from \"./SocialMediaMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/index.ts"],"sourcesContent":["export * from \"./SocialMediaMenu.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Cell.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInColumn, isRowSelected, selectRow } from \"./utils.js\";\n\nexport interface TableCellOptions {\n HTMLAttributes: Record<string, any>;\n}\n\nexport const TableCell = Node.create<TableCellOptions>({\n name: \"tableCell\",\n\n content: \"block+\", // TODO: Do not allow table in table\n\n tableRole: \"cell\",\n\n isolating: true,\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [{ tag: \"td\" }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"td\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addAttributes() {\n return {\n colspan: {\n default: 1,\n parseHTML: (element) => {\n const colspan = element.getAttribute(\"colspan\");\n const value = colspan ? parseInt(colspan, 10) : 1;\n\n return value;\n },\n },\n rowspan: {\n default: 1,\n parseHTML: (element) => {\n const rowspan = element.getAttribute(\"rowspan\");\n const value = rowspan ? parseInt(rowspan, 10) : 1;\n\n return value;\n },\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth ? [parseInt(colwidth, 10)] : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInColumn(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const rowSelected = isRowSelected(index)(selection);\n let className = \"grip-row\";\n\n if (rowSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectRow(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n"],"names":["mergeAttributes","Node","Plugin","Decoration","DecorationSet","getCellsInColumn","isRowSelected","selectRow","TableCell","create","name","content","tableRole","isolating","addOptions","HTMLAttributes","parseHTML","tag","renderHTML","options","addAttributes","colspan","default","element","getAttribute","value","parseInt","rowspan","colwidth","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","rowSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAe;AACrD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,SAAS,QAAQ,aAAa;AAMxE,OAAO,MAAMC,YAAYP,KAAKQ,MAAM,CAAmB;IACrDC,MAAM;IAENC,SAAS;IAETC,WAAW;IAEXC,WAAW;IAEXC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC;QACE,OAAO;YAAC;gBAAEC,KAAK;YAAK;SAAE;IACxB;IAEAC,YAAW,EAAEH,cAAc,EAAE;QAC3B,OAAO;YACL;YACAf,gBAAgB,IAAI,CAACmB,OAAO,CAACJ,cAAc,EAAEA;YAC7C;SACD;IACH;IAEAK;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMF,UAAUE,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQJ,UAAUK,SAASL,SAAS,MAAM;oBAEhD,OAAOI;gBACT;YACF;YACAE,SAAS;gBACPL,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMI,UAAUJ,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQE,UAAUD,SAASC,SAAS,MAAM;oBAEhD,OAAOF;gBACT;YACF;YACAG,UAAU;gBACRN,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMK,WAAWL,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQG,WAAW;wBAACF,SAASE,UAAU;qBAAI,GAAG;oBAEpD,OAAOH;gBACT;YACF;YACAI,OAAO;gBACLP,SAAS;YACX;QACF;IACF;IAEAQ;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAI9B,OAAO;gBACT+B,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAO3B,cAAcgC,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQlC,iBAAiB,GAAGiC;wBAElC,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdxC,WAAWyC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcvC,cAAcoC,OAAOJ;oCACzC,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvBjD,UAAUmC,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAEzC;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAO5C,cAAcK,MAAM,CAAC4B,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Cell.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\r\nimport { Plugin } from \"@tiptap/pm/state\";\r\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\r\n\r\nimport { getCellsInColumn, isRowSelected, selectRow } from \"./utils.js\";\r\n\r\nexport interface TableCellOptions {\r\n HTMLAttributes: Record<string, any>;\r\n}\r\n\r\nexport const TableCell = Node.create<TableCellOptions>({\r\n name: \"tableCell\",\r\n\r\n content: \"block+\", // TODO: Do not allow table in table\r\n\r\n tableRole: \"cell\",\r\n\r\n isolating: true,\r\n\r\n addOptions() {\r\n return {\r\n HTMLAttributes: {},\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [{ tag: \"td\" }];\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"td\",\r\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\r\n 0,\r\n ];\r\n },\r\n\r\n addAttributes() {\r\n return {\r\n colspan: {\r\n default: 1,\r\n parseHTML: (element) => {\r\n const colspan = element.getAttribute(\"colspan\");\r\n const value = colspan ? parseInt(colspan, 10) : 1;\r\n\r\n return value;\r\n },\r\n },\r\n rowspan: {\r\n default: 1,\r\n parseHTML: (element) => {\r\n const rowspan = element.getAttribute(\"rowspan\");\r\n const value = rowspan ? parseInt(rowspan, 10) : 1;\r\n\r\n return value;\r\n },\r\n },\r\n colwidth: {\r\n default: null,\r\n parseHTML: (element) => {\r\n const colwidth = element.getAttribute(\"colwidth\");\r\n const value = colwidth ? [parseInt(colwidth, 10)] : null;\r\n\r\n return value;\r\n },\r\n },\r\n style: {\r\n default: null,\r\n },\r\n };\r\n },\r\n\r\n addProseMirrorPlugins() {\r\n const { isEditable } = this.editor;\r\n\r\n return [\r\n new Plugin({\r\n props: {\r\n decorations: (state) => {\r\n if (!isEditable) {\r\n return DecorationSet.empty;\r\n }\r\n\r\n const { doc, selection } = state;\r\n const decorations: Decoration[] = [];\r\n const cells = getCellsInColumn(0)(selection);\r\n\r\n if (cells) {\r\n cells.forEach(({ pos }: { pos: number }, index: number) => {\r\n decorations.push(\r\n Decoration.widget(pos + 1, () => {\r\n const rowSelected = isRowSelected(index)(selection);\r\n let className = \"grip-row\";\r\n\r\n if (rowSelected) {\r\n className += \" selected\";\r\n }\r\n\r\n if (index === 0) {\r\n className += \" first\";\r\n }\r\n\r\n if (index === cells.length - 1) {\r\n className += \" last\";\r\n }\r\n\r\n const grip = document.createElement(\"a\");\r\n\r\n grip.className = className;\r\n grip.addEventListener(\"mousedown\", (event) => {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n\r\n this.editor.view.dispatch(\r\n selectRow(index)(this.editor.state.tr)\r\n );\r\n });\r\n\r\n return grip;\r\n })\r\n );\r\n });\r\n }\r\n\r\n return DecorationSet.create(doc, decorations);\r\n },\r\n },\r\n }),\r\n ];\r\n },\r\n});\r\n"],"names":["mergeAttributes","Node","Plugin","Decoration","DecorationSet","getCellsInColumn","isRowSelected","selectRow","TableCell","create","name","content","tableRole","isolating","addOptions","HTMLAttributes","parseHTML","tag","renderHTML","options","addAttributes","colspan","default","element","getAttribute","value","parseInt","rowspan","colwidth","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","rowSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAe;AACrD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,SAAS,QAAQ,aAAa;AAMxE,OAAO,MAAMC,YAAYP,KAAKQ,MAAM,CAAmB;IACrDC,MAAM;IAENC,SAAS;IAETC,WAAW;IAEXC,WAAW;IAEXC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC;QACE,OAAO;YAAC;gBAAEC,KAAK;YAAK;SAAE;IACxB;IAEAC,YAAW,EAAEH,cAAc,EAAE;QAC3B,OAAO;YACL;YACAf,gBAAgB,IAAI,CAACmB,OAAO,CAACJ,cAAc,EAAEA;YAC7C;SACD;IACH;IAEAK;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMF,UAAUE,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQJ,UAAUK,SAASL,SAAS,MAAM;oBAEhD,OAAOI;gBACT;YACF;YACAE,SAAS;gBACPL,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMI,UAAUJ,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQE,UAAUD,SAASC,SAAS,MAAM;oBAEhD,OAAOF;gBACT;YACF;YACAG,UAAU;gBACRN,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMK,WAAWL,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQG,WAAW;wBAACF,SAASE,UAAU;qBAAI,GAAG;oBAEpD,OAAOH;gBACT;YACF;YACAI,OAAO;gBACLP,SAAS;YACX;QACF;IACF;IAEAQ;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAI9B,OAAO;gBACT+B,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAO3B,cAAcgC,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQlC,iBAAiB,GAAGiC;wBAElC,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdxC,WAAWyC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcvC,cAAcoC,OAAOJ;oCACzC,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvBjD,UAAUmC,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAEzC;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAO5C,cAAcK,MAAM,CAAC4B,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Header.ts"],"sourcesContent":["import TiptapTableHeader from \"@tiptap/extension-table-header\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInRow, isColumnSelected, selectColumn } from \"./utils.js\";\n\nexport const TableHeader = TiptapTableHeader.extend({\n addAttributes() {\n return {\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth\n ? colwidth.split(\",\").map((item) => parseInt(item, 10))\n : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInRow(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const colSelected = isColumnSelected(index)(selection);\n let className = \"grip-column\";\n\n if (colSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectColumn(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n\nexport default TableHeader;\n"],"names":["TiptapTableHeader","Plugin","Decoration","DecorationSet","getCellsInRow","isColumnSelected","selectColumn","TableHeader","extend","addAttributes","colspan","default","rowspan","colwidth","parseHTML","element","getAttribute","value","split","map","item","parseInt","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","colSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr","create"],"mappings":"AAAA,OAAOA,uBAAuB,iCAAiC;AAC/D,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,QAAQ,aAAa;AAE3E,OAAO,MAAMC,cAAcP,kBAAkBQ,MAAM,CAAC;IAClDC;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;YACX;YACAC,SAAS;gBACPD,SAAS;YACX;YACAE,UAAU;gBACRF,SAAS;gBACTG,WAAW,CAACC;oBACV,MAAMF,WAAWE,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQJ,WACVA,SAASK,KAAK,CAAC,KAAKC,GAAG,CAAC,CAACC,OAASC,SAASD,MAAM,OACjD;oBAEJ,OAAOH;gBACT;YACF;YACAK,OAAO;gBACLX,SAAS;YACX;QACF;IACF;IAEAY;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAIxB,OAAO;gBACTyB,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAOrB,cAAc0B,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQ5B,cAAc,GAAG2B;wBAE/B,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdlC,WAAWmC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcjC,iBAAiB8B,OAAOJ;oCAC5C,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvB3C,aAAa6B,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAE5C;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAOtC,cAAcgD,MAAM,CAACrB,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG;AAEH,eAAepB,YAAY"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Header.ts"],"sourcesContent":["import TiptapTableHeader from \"@tiptap/extension-table-header\";\r\nimport { Plugin } from \"@tiptap/pm/state\";\r\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\r\n\r\nimport { getCellsInRow, isColumnSelected, selectColumn } from \"./utils.js\";\r\n\r\nexport const TableHeader = TiptapTableHeader.extend({\r\n addAttributes() {\r\n return {\r\n colspan: {\r\n default: 1,\r\n },\r\n rowspan: {\r\n default: 1,\r\n },\r\n colwidth: {\r\n default: null,\r\n parseHTML: (element) => {\r\n const colwidth = element.getAttribute(\"colwidth\");\r\n const value = colwidth\r\n ? colwidth.split(\",\").map((item) => parseInt(item, 10))\r\n : null;\r\n\r\n return value;\r\n },\r\n },\r\n style: {\r\n default: null,\r\n },\r\n };\r\n },\r\n\r\n addProseMirrorPlugins() {\r\n const { isEditable } = this.editor;\r\n\r\n return [\r\n new Plugin({\r\n props: {\r\n decorations: (state) => {\r\n if (!isEditable) {\r\n return DecorationSet.empty;\r\n }\r\n\r\n const { doc, selection } = state;\r\n const decorations: Decoration[] = [];\r\n const cells = getCellsInRow(0)(selection);\r\n\r\n if (cells) {\r\n cells.forEach(({ pos }: { pos: number }, index: number) => {\r\n decorations.push(\r\n Decoration.widget(pos + 1, () => {\r\n const colSelected = isColumnSelected(index)(selection);\r\n let className = \"grip-column\";\r\n\r\n if (colSelected) {\r\n className += \" selected\";\r\n }\r\n\r\n if (index === 0) {\r\n className += \" first\";\r\n }\r\n\r\n if (index === cells.length - 1) {\r\n className += \" last\";\r\n }\r\n\r\n const grip = document.createElement(\"a\");\r\n\r\n grip.className = className;\r\n grip.addEventListener(\"mousedown\", (event) => {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n\r\n this.editor.view.dispatch(\r\n selectColumn(index)(this.editor.state.tr)\r\n );\r\n });\r\n\r\n return grip;\r\n })\r\n );\r\n });\r\n }\r\n\r\n return DecorationSet.create(doc, decorations);\r\n },\r\n },\r\n }),\r\n ];\r\n },\r\n});\r\n\r\nexport default TableHeader;\r\n"],"names":["TiptapTableHeader","Plugin","Decoration","DecorationSet","getCellsInRow","isColumnSelected","selectColumn","TableHeader","extend","addAttributes","colspan","default","rowspan","colwidth","parseHTML","element","getAttribute","value","split","map","item","parseInt","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","colSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr","create"],"mappings":"AAAA,OAAOA,uBAAuB,iCAAiC;AAC/D,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,QAAQ,aAAa;AAE3E,OAAO,MAAMC,cAAcP,kBAAkBQ,MAAM,CAAC;IAClDC;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;YACX;YACAC,SAAS;gBACPD,SAAS;YACX;YACAE,UAAU;gBACRF,SAAS;gBACTG,WAAW,CAACC;oBACV,MAAMF,WAAWE,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQJ,WACVA,SAASK,KAAK,CAAC,KAAKC,GAAG,CAAC,CAACC,OAASC,SAASD,MAAM,OACjD;oBAEJ,OAAOH;gBACT;YACF;YACAK,OAAO;gBACLX,SAAS;YACX;QACF;IACF;IAEAY;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAIxB,OAAO;gBACTyB,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAOrB,cAAc0B,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQ5B,cAAc,GAAG2B;wBAE/B,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdlC,WAAWmC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcjC,iBAAiB8B,OAAOJ;oCAC5C,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvB3C,aAAa6B,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAE5C;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAOtC,cAAcgD,MAAM,CAACrB,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG;AAEH,eAAepB,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Row.ts"],"sourcesContent":["import TiptapTableRow from '@tiptap/extension-table-row'\n\nexport const TableRow = TiptapTableRow.extend({\n allowGapCursor: false,\n content: 'tableCell*',\n})\n\nexport default TableRow\n"],"names":["TiptapTableRow","TableRow","extend","allowGapCursor","content"],"mappings":"AAAA,OAAOA,oBAAoB,8BAA6B;AAExD,OAAO,MAAMC,WAAWD,eAAeE,MAAM,CAAC;IAC5CC,gBAAgB;IAChBC,SAAS;AACX,GAAE;AAEF,eAAeH,SAAQ"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Row.ts"],"sourcesContent":["import TiptapTableRow from '@tiptap/extension-table-row'\r\n\r\nexport const TableRow = TiptapTableRow.extend({\r\n allowGapCursor: false,\r\n content: 'tableCell*',\r\n})\r\n\r\nexport default TableRow\r\n"],"names":["TiptapTableRow","TableRow","extend","allowGapCursor","content"],"mappings":"AAAA,OAAOA,oBAAoB,8BAA6B;AAExD,OAAO,MAAMC,WAAWD,eAAeE,MAAM,CAAC;IAC5CC,gBAAgB;IAChBC,SAAS;AACX,GAAE;AAEF,eAAeH,SAAQ"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Table.ts"],"sourcesContent":["import TiptapTable from '@tiptap/extension-table'\n\nexport const Table = TiptapTable.configure({ resizable: true, lastColumnResizable: false })\n\nexport default Table\n"],"names":["TiptapTable","Table","configure","resizable","lastColumnResizable"],"mappings":"AAAA,OAAOA,iBAAiB,0BAAyB;AAEjD,OAAO,MAAMC,QAAQD,YAAYE,SAAS,CAAC;IAAEC,WAAW;IAAMC,qBAAqB;AAAM,GAAE;AAE3F,eAAeH,MAAK"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Table.ts"],"sourcesContent":["import TiptapTable from '@tiptap/extension-table'\r\n\r\nexport const Table = TiptapTable.configure({ resizable: true, lastColumnResizable: false })\r\n\r\nexport default Table\r\n"],"names":["TiptapTable","Table","configure","resizable","lastColumnResizable"],"mappings":"AAAA,OAAOA,iBAAiB,0BAAyB;AAEjD,OAAO,MAAMC,QAAQD,YAAYE,SAAS,CAAC;IAAEC,WAAW;IAAMC,qBAAqB;AAAM,GAAE;AAE3F,eAAeH,MAAK"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/index.ts"],"sourcesContent":["export { Table } from \"./Table.js\";\nexport { TableCell } from \"./Cell.js\";\nexport { TableRow } from \"./Row.js\";\nexport { TableHeader } from \"./Header.js\";\n"],"names":["Table","TableCell","TableRow","TableHeader"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,QAAQ,QAAQ,WAAW;AACpC,SAASC,WAAW,QAAQ,cAAc"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/index.ts"],"sourcesContent":["export { Table } from \"./Table.js\";\r\nexport { TableCell } from \"./Cell.js\";\r\nexport { TableRow } from \"./Row.js\";\r\nexport { TableHeader } from \"./Header.js\";\r\n"],"names":["Table","TableCell","TableRow","TableHeader"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,QAAQ,QAAQ,WAAW;AACpC,SAASC,WAAW,QAAQ,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\n\nimport { ArrowLeftToLine, ArrowRightToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\nimport { isColumnGripSelected } from \"./utils.js\";\n\nexport const TableColumnMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state) {\n return false;\n }\n\n return isColumnGripSelected({ editor, view, state, from: from || 0 });\n },\n [editor]\n );\n\n const onAddColumnBefore = useCallback(() => {\n editor.chain().focus().addColumnBefore().run();\n }, [editor]);\n\n const onAddColumnAfter = useCallback(() => {\n editor.chain().focus().addColumnAfter().run();\n }, [editor]);\n\n const onDeleteColumn = useCallback(() => {\n editor.chain().focus().deleteColumn().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableColumnMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowLeftToLine} />}\n close={false}\n label=\"Add column before\"\n onClick={onAddColumnBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowRightToLine} />}\n close={false}\n label=\"Add column after\"\n onClick={onAddColumnAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete column\"\n onClick={onDeleteColumn}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableColumnMenu.displayName = \"TableColumnMenu\";\n\nexport default TableColumnMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","ArrowLeftToLine","ArrowRightToLine","Trash","Icon","PopoverMenu","Toolbar","isColumnGripSelected","TableColumnMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddColumnBefore","chain","focus","addColumnBefore","run","onAddColumnAfter","addColumnAfter","onDeleteColumn","deleteColumn","pluginKey","updateDelay","tippyOptions","current","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AAEtD,SAASC,eAAe,EAAEC,gBAAgB,EAAEC,KAAK,QAAQ,eAAe;AAKxE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,YAAYC,iBAAiB,yCAAyC;AACtE,SAASC,OAAO,QAAQ,qCAAqC;AAC7D,SAASC,oBAAoB,QAAQ,aAAa;AAElD,OAAO,MAAMC,gCAAkBT,MAAMU,IAAI,CACvC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,OAAO;YACV,OAAO;QACT;QAEA,OAAOP,qBAAqB;YAAEG;YAAQG;YAAMC;YAAOC,MAAMA,QAAQ;QAAE;IACrE,GACA;QAACL;KAAO;IAGV,MAAMM,oBAAoBhB,YAAY;QACpCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,eAAe,GAAGC,GAAG;IAC9C,GAAG;QAACV;KAAO;IAEX,MAAMW,mBAAmBrB,YAAY;QACnCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,cAAc,GAAGF,GAAG;IAC7C,GAAG;QAACV;KAAO;IAEX,MAAMa,iBAAiBvB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,YAAY,GAAGJ,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACArB,YAAYA;kBAEZ,cAAA,MAACN,QAAQ4B,OAAO;YAACC,UAAU;;8BACzB,KAAC9B,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMrC;;oBAC3BsC,OAAO;oBACPC,OAAM;oBACNC,SAASzB;;8BAEX,KAACX,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASpB;;8BAEX,KAAChB,YAAY+B,IAAI;oBACfE,MAAMnC;oBACNoC,OAAO;oBACPC,OAAM;oBACNC,SAASlB;;;;;AAKnB,GACA;AAEFf,gBAAgBkC,WAAW,GAAG;AAE9B,eAAelC,gBAAgB"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport React, { ReactNode, useCallback } from \"react\";\r\n\r\nimport { ArrowLeftToLine, ArrowRightToLine, Trash } from \"lucide-react\";\r\nimport {\r\n MenuProps,\r\n ShouldShowProps,\r\n} from \"../../../../features/menus/types.js\";\r\nimport { Icon } from \"../../../../features/ui/Icon.js\";\r\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\r\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\r\nimport { isColumnGripSelected } from \"./utils.js\";\r\n\r\nexport const TableColumnMenu = React.memo(\r\n ({ editor, appendTo }: MenuProps): ReactNode => {\r\n const shouldShow = useCallback(\r\n ({ view, state, from }: ShouldShowProps) => {\r\n if (!state) {\r\n return false;\r\n }\r\n\r\n return isColumnGripSelected({ editor, view, state, from: from || 0 });\r\n },\r\n [editor]\r\n );\r\n\r\n const onAddColumnBefore = useCallback(() => {\r\n editor.chain().focus().addColumnBefore().run();\r\n }, [editor]);\r\n\r\n const onAddColumnAfter = useCallback(() => {\r\n editor.chain().focus().addColumnAfter().run();\r\n }, [editor]);\r\n\r\n const onDeleteColumn = useCallback(() => {\r\n editor.chain().focus().deleteColumn().run();\r\n }, [editor]);\r\n\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey=\"tableColumnMenu\"\r\n updateDelay={0}\r\n tippyOptions={{\r\n appendTo: () => {\r\n return appendTo?.current;\r\n },\r\n offset: [0, 15],\r\n popperOptions: {\r\n modifiers: [{ name: \"flip\", enabled: false }],\r\n },\r\n }}\r\n shouldShow={shouldShow}\r\n >\r\n <Toolbar.Wrapper isVertical>\r\n <PopoverMenu.Item\r\n iconComponent={<Icon icon={ArrowLeftToLine} />}\r\n close={false}\r\n label=\"Add column before\"\r\n onClick={onAddColumnBefore}\r\n />\r\n <PopoverMenu.Item\r\n iconComponent={<Icon icon={ArrowRightToLine} />}\r\n close={false}\r\n label=\"Add column after\"\r\n onClick={onAddColumnAfter}\r\n />\r\n <PopoverMenu.Item\r\n icon={Trash}\r\n close={false}\r\n label=\"Delete column\"\r\n onClick={onDeleteColumn}\r\n />\r\n </Toolbar.Wrapper>\r\n </BaseBubbleMenu>\r\n );\r\n }\r\n);\r\n\r\nTableColumnMenu.displayName = \"TableColumnMenu\";\r\n\r\nexport default TableColumnMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","ArrowLeftToLine","ArrowRightToLine","Trash","Icon","PopoverMenu","Toolbar","isColumnGripSelected","TableColumnMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddColumnBefore","chain","focus","addColumnBefore","run","onAddColumnAfter","addColumnAfter","onDeleteColumn","deleteColumn","pluginKey","updateDelay","tippyOptions","current","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AAEtD,SAASC,eAAe,EAAEC,gBAAgB,EAAEC,KAAK,QAAQ,eAAe;AAKxE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,YAAYC,iBAAiB,yCAAyC;AACtE,SAASC,OAAO,QAAQ,qCAAqC;AAC7D,SAASC,oBAAoB,QAAQ,aAAa;AAElD,OAAO,MAAMC,gCAAkBT,MAAMU,IAAI,CACvC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,OAAO;YACV,OAAO;QACT;QAEA,OAAOP,qBAAqB;YAAEG;YAAQG;YAAMC;YAAOC,MAAMA,QAAQ;QAAE;IACrE,GACA;QAACL;KAAO;IAGV,MAAMM,oBAAoBhB,YAAY;QACpCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,eAAe,GAAGC,GAAG;IAC9C,GAAG;QAACV;KAAO;IAEX,MAAMW,mBAAmBrB,YAAY;QACnCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,cAAc,GAAGF,GAAG;IAC7C,GAAG;QAACV;KAAO;IAEX,MAAMa,iBAAiBvB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,YAAY,GAAGJ,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACArB,YAAYA;kBAEZ,cAAA,MAACN,QAAQ4B,OAAO;YAACC,UAAU;;8BACzB,KAAC9B,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMrC;;oBAC3BsC,OAAO;oBACPC,OAAM;oBACNC,SAASzB;;8BAEX,KAACX,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASpB;;8BAEX,KAAChB,YAAY+B,IAAI;oBACfE,MAAMnC;oBACNoC,OAAO;oBACPC,OAAM;oBACNC,SAASlB;;;;;AAKnB,GACA;AAEFf,gBAAgBkC,WAAW,GAAG;AAE9B,eAAelC,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\n\nimport { isTableSelected } from \"../../utils.js\";\nimport Table from \"../../Table.js\";\n\nexport const isColumnGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripColumn =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-column.selected\");\n\n return !!gripColumn;\n};\n\nexport default isColumnGripSelected;\n"],"names":["isTableSelected","Table","isColumnGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripColumn","querySelector"],"mappings":"AAIA,SAASA,eAAe,QAAQ,iBAAiB;AACjD,OAAOC,WAAW,iBAAiB;AAEnC,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACT,MAAMU,IAAI,KAC3B,CAACH,QACDR,gBAAgBK,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,aACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,qBAAqB"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\r\nimport { EditorState } from \"@tiptap/pm/state\";\r\nimport { EditorView } from \"@tiptap/pm/view\";\r\n\r\nimport { isTableSelected } from \"../../utils.js\";\r\nimport Table from \"../../Table.js\";\r\n\r\nexport const isColumnGripSelected = ({\r\n editor,\r\n view,\r\n state,\r\n from,\r\n}: {\r\n editor: Editor;\r\n view: EditorView;\r\n state: EditorState;\r\n from: number;\r\n}) => {\r\n const domAtPos = view.domAtPos(from).node as HTMLElement;\r\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\r\n const node = nodeDOM || domAtPos;\r\n\r\n if (\r\n !editor.isActive(Table.name) ||\r\n !node ||\r\n isTableSelected(state.selection)\r\n ) {\r\n return false;\r\n }\r\n\r\n let container = node;\r\n\r\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\r\n container = container.parentElement!;\r\n }\r\n\r\n const gripColumn =\r\n container &&\r\n container.querySelector &&\r\n container.querySelector(\"a.grip-column.selected\");\r\n\r\n return !!gripColumn;\r\n};\r\n\r\nexport default isColumnGripSelected;\r\n"],"names":["isTableSelected","Table","isColumnGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripColumn","querySelector"],"mappings":"AAIA,SAASA,eAAe,QAAQ,iBAAiB;AACjD,OAAOC,WAAW,iBAAiB;AAEnC,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACT,MAAMU,IAAI,KAC3B,CAACH,QACDR,gBAAgBK,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,aACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,qBAAqB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\n\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\n\nimport { ArrowDownToLine, ArrowUpToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport { isRowGripSelected } from \"./utils.js\";\n\nexport const TableRowMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state || !from) {\n return false;\n }\n\n return isRowGripSelected({ editor, view, state, from });\n },\n [editor]\n );\n\n const onAddRowBefore = useCallback(() => {\n editor.chain().focus().addRowBefore().run();\n }, [editor]);\n\n const onAddRowAfter = useCallback(() => {\n editor.chain().focus().addRowAfter().run();\n }, [editor]);\n\n const onDeleteRow = useCallback(() => {\n editor.chain().focus().deleteRow().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableRowMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n placement: \"left\",\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowUpToLine} />}\n close={false}\n label=\"Add row before\"\n onClick={onAddRowBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowDownToLine} />}\n close={false}\n label=\"Add row after\"\n onClick={onAddRowAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete row\"\n onClick={onDeleteRow}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableRowMenu.displayName = \"TableRowMenu\";\n\nexport default TableRowMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","PopoverMenu","Toolbar","ArrowDownToLine","ArrowUpToLine","Trash","Icon","isRowGripSelected","TableRowMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddRowBefore","chain","focus","addRowBefore","run","onAddRowAfter","addRowAfter","onDeleteRow","deleteRow","pluginKey","updateDelay","tippyOptions","current","placement","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AACtD,YAAYC,iBAAiB,yCAAyC;AAEtE,SAASC,OAAO,QAAQ,qCAAqC;AAE7D,SAASC,eAAe,EAAEC,aAAa,EAAEC,KAAK,QAAQ,eAAe;AAKrE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,SAASC,iBAAiB,QAAQ,aAAa;AAE/C,OAAO,MAAMC,6BAAeT,MAAMU,IAAI,CACpC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,SAAS,CAACC,MAAM;YACnB,OAAO;QACT;QAEA,OAAOR,kBAAkB;YAAEG;YAAQG;YAAMC;YAAOC;QAAK;IACvD,GACA;QAACL;KAAO;IAGV,MAAMM,iBAAiBhB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,YAAY,GAAGC,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,MAAMW,gBAAgBrB,YAAY;QAChCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,WAAW,GAAGF,GAAG;IAC1C,GAAG;QAACV;KAAO;IAEX,MAAMa,cAAcvB,YAAY;QAC9BU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,SAAS,GAAGJ,GAAG;IACxC,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,WAAW;YACXC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACAtB,YAAYA;kBAEZ,cAAA,MAACV,QAAQiC,OAAO;YAACC,UAAU;;8BACzB,KAACnC,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMnC;;oBAC3BoC,OAAO;oBACPC,OAAM;oBACNC,SAAS1B;;8BAEX,KAACf,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASrB;;8BAEX,KAACpB,YAAYoC,IAAI;oBACfE,MAAMlC;oBACNmC,OAAO;oBACPC,OAAM;oBACNC,SAASnB;;;;;AAKnB,GACA;AAEFf,aAAamC,WAAW,GAAG;AAE3B,eAAenC,aAAa"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport React, { ReactNode, useCallback } from \"react\";\r\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\r\n\r\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\r\n\r\nimport { ArrowDownToLine, ArrowUpToLine, Trash } from \"lucide-react\";\r\nimport {\r\n MenuProps,\r\n ShouldShowProps,\r\n} from \"../../../../features/menus/types.js\";\r\nimport { Icon } from \"../../../../features/ui/Icon.js\";\r\nimport { isRowGripSelected } from \"./utils.js\";\r\n\r\nexport const TableRowMenu = React.memo(\r\n ({ editor, appendTo }: MenuProps): ReactNode => {\r\n const shouldShow = useCallback(\r\n ({ view, state, from }: ShouldShowProps) => {\r\n if (!state || !from) {\r\n return false;\r\n }\r\n\r\n return isRowGripSelected({ editor, view, state, from });\r\n },\r\n [editor]\r\n );\r\n\r\n const onAddRowBefore = useCallback(() => {\r\n editor.chain().focus().addRowBefore().run();\r\n }, [editor]);\r\n\r\n const onAddRowAfter = useCallback(() => {\r\n editor.chain().focus().addRowAfter().run();\r\n }, [editor]);\r\n\r\n const onDeleteRow = useCallback(() => {\r\n editor.chain().focus().deleteRow().run();\r\n }, [editor]);\r\n\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey=\"tableRowMenu\"\r\n updateDelay={0}\r\n tippyOptions={{\r\n appendTo: () => {\r\n return appendTo?.current;\r\n },\r\n placement: \"left\",\r\n offset: [0, 15],\r\n popperOptions: {\r\n modifiers: [{ name: \"flip\", enabled: false }],\r\n },\r\n }}\r\n shouldShow={shouldShow}\r\n >\r\n <Toolbar.Wrapper isVertical>\r\n <PopoverMenu.Item\r\n iconComponent={<Icon icon={ArrowUpToLine} />}\r\n close={false}\r\n label=\"Add row before\"\r\n onClick={onAddRowBefore}\r\n />\r\n <PopoverMenu.Item\r\n iconComponent={<Icon icon={ArrowDownToLine} />}\r\n close={false}\r\n label=\"Add row after\"\r\n onClick={onAddRowAfter}\r\n />\r\n <PopoverMenu.Item\r\n icon={Trash}\r\n close={false}\r\n label=\"Delete row\"\r\n onClick={onDeleteRow}\r\n />\r\n </Toolbar.Wrapper>\r\n </BaseBubbleMenu>\r\n );\r\n }\r\n);\r\n\r\nTableRowMenu.displayName = \"TableRowMenu\";\r\n\r\nexport default TableRowMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","PopoverMenu","Toolbar","ArrowDownToLine","ArrowUpToLine","Trash","Icon","isRowGripSelected","TableRowMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddRowBefore","chain","focus","addRowBefore","run","onAddRowAfter","addRowAfter","onDeleteRow","deleteRow","pluginKey","updateDelay","tippyOptions","current","placement","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AACtD,YAAYC,iBAAiB,yCAAyC;AAEtE,SAASC,OAAO,QAAQ,qCAAqC;AAE7D,SAASC,eAAe,EAAEC,aAAa,EAAEC,KAAK,QAAQ,eAAe;AAKrE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,SAASC,iBAAiB,QAAQ,aAAa;AAE/C,OAAO,MAAMC,6BAAeT,MAAMU,IAAI,CACpC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,SAAS,CAACC,MAAM;YACnB,OAAO;QACT;QAEA,OAAOR,kBAAkB;YAAEG;YAAQG;YAAMC;YAAOC;QAAK;IACvD,GACA;QAACL;KAAO;IAGV,MAAMM,iBAAiBhB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,YAAY,GAAGC,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,MAAMW,gBAAgBrB,YAAY;QAChCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,WAAW,GAAGF,GAAG;IAC1C,GAAG;QAACV;KAAO;IAEX,MAAMa,cAAcvB,YAAY;QAC9BU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,SAAS,GAAGJ,GAAG;IACxC,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,WAAW;YACXC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACAtB,YAAYA;kBAEZ,cAAA,MAACV,QAAQiC,OAAO;YAACC,UAAU;;8BACzB,KAACnC,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMnC;;oBAC3BoC,OAAO;oBACPC,OAAM;oBACNC,SAAS1B;;8BAEX,KAACf,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASrB;;8BAEX,KAACpB,YAAYoC,IAAI;oBACfE,MAAMlC;oBACNmC,OAAO;oBACPC,OAAM;oBACNC,SAASnB;;;;;AAKnB,GACA;AAEFf,aAAamC,WAAW,GAAG;AAE3B,eAAenC,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.ts"],"sourcesContent":["import { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\nimport { Editor } from \"@tiptap/react\";\n\nimport Table from \"../../Table.js\";\nimport { isTableSelected } from \"../../utils.js\";\n\nexport const isRowGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripRow =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-row.selected\");\n\n return !!gripRow;\n};\n\nexport default isRowGripSelected;\n"],"names":["Table","isTableSelected","isRowGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripRow","querySelector"],"mappings":"AAIA,OAAOA,WAAW,iBAAiB;AACnC,SAASC,eAAe,QAAQ,iBAAiB;AAEjD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACV,MAAMW,IAAI,KAC3B,CAACH,QACDP,gBAAgBI,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,UACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,kBAAkB"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.ts"],"sourcesContent":["import { EditorState } from \"@tiptap/pm/state\";\r\nimport { EditorView } from \"@tiptap/pm/view\";\r\nimport { Editor } from \"@tiptap/react\";\r\n\r\nimport Table from \"../../Table.js\";\r\nimport { isTableSelected } from \"../../utils.js\";\r\n\r\nexport const isRowGripSelected = ({\r\n editor,\r\n view,\r\n state,\r\n from,\r\n}: {\r\n editor: Editor;\r\n view: EditorView;\r\n state: EditorState;\r\n from: number;\r\n}) => {\r\n const domAtPos = view.domAtPos(from).node as HTMLElement;\r\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\r\n const node = nodeDOM || domAtPos;\r\n\r\n if (\r\n !editor.isActive(Table.name) ||\r\n !node ||\r\n isTableSelected(state.selection)\r\n ) {\r\n return false;\r\n }\r\n\r\n let container = node;\r\n\r\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\r\n container = container.parentElement!;\r\n }\r\n\r\n const gripRow =\r\n container &&\r\n container.querySelector &&\r\n container.querySelector(\"a.grip-row.selected\");\r\n\r\n return !!gripRow;\r\n};\r\n\r\nexport default isRowGripSelected;\r\n"],"names":["Table","isTableSelected","isRowGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripRow","querySelector"],"mappings":"AAIA,OAAOA,WAAW,iBAAiB;AACnC,SAASC,eAAe,QAAQ,iBAAiB;AAEjD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACV,MAAMW,IAAI,KAC3B,CAACH,QACDP,gBAAgBI,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,UACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/index.tsx"],"sourcesContent":["export * from \"./TableColumn/index.js\";\nexport * from \"./TableRow/index.js\";\n"],"names":[],"mappings":"AAAA,cAAc,yBAAyB;AACvC,cAAc,sBAAsB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/index.tsx"],"sourcesContent":["export * from \"./TableColumn/index.js\";\r\nexport * from \"./TableRow/index.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,yBAAyB;AACvC,cAAc,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/utils.ts"],"sourcesContent":["// @ts-nocheck\nimport { findParentNode } from '@tiptap/core'\nimport { Selection, Transaction } from '@tiptap/pm/state'\nimport { CellSelection, TableMap } from '@tiptap/pm/tables'\nimport { Node, ResolvedPos } from '@tiptap/pm/model'\n\nexport const isRectSelected = (rect: any) => (selection: CellSelection) => {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n const start = selection.$anchorCell.start(-1)\n const cells = map.cellsInRect(rect)\n const selectedCells = map.cellsInRect(\n map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start),\n )\n\n for (let i = 0, count = cells.length; i < count; i += 1) {\n if (selectedCells.indexOf(cells[i]) === -1) {\n return false\n }\n }\n\n return true\n}\n\nexport const findTable = (selection: Selection) =>\n findParentNode(node => node.type.spec.tableRole && node.type.spec.tableRole === 'table')(selection)\n\nexport const isCellSelection = (selection: any) => selection instanceof CellSelection\n\nexport const isColumnSelected = (columnIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: columnIndex,\n right: columnIndex + 1,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const isRowSelected = (rowIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: rowIndex,\n bottom: rowIndex + 1,\n })(selection)\n }\n\n return false\n}\n\nexport const isTableSelected = (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const getCellsInColumn = (columnIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(columnIndex) ? columnIndex : Array.from([columnIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.width - 1) {\n const cells = map.cellsInRect({\n left: index,\n right: index + 1,\n top: 0,\n bottom: map.height,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n return null\n}\n\nexport const getCellsInRow = (rowIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(rowIndex) ? rowIndex : Array.from([rowIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.height - 1) {\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: index,\n bottom: index + 1,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n\n return null\n}\n\nexport const getCellsInTable = (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })\n\n return cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n })\n }\n\n return null\n}\n\nexport const findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i)\n\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n\n return null\n}\n\nexport const findCellClosestToPos = ($pos: ResolvedPos) => {\n const predicate = (node: Node) => node.type.spec.tableRole && /cell/i.test(node.type.spec.tableRole)\n\n return findParentNodeClosestToPos($pos, predicate)\n}\n\nconst select = (type: 'row' | 'column') => (index: number) => (tr: Transaction) => {\n const table = findTable(tr.selection)\n const isRowSelection = type === 'row'\n\n if (table) {\n const map = TableMap.get(table.node)\n\n // Check if the index is valid\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\n const left = isRowSelection ? 0 : index\n const top = isRowSelection ? index : 0\n const right = isRowSelection ? map.width : index + 1\n const bottom = isRowSelection ? index + 1 : map.height\n\n const cellsInFirstRow = map.cellsInRect({\n left,\n top,\n right: isRowSelection ? right : left + 1,\n bottom: isRowSelection ? top + 1 : bottom,\n })\n\n const cellsInLastRow =\n bottom - top === 1\n ? cellsInFirstRow\n : map.cellsInRect({\n left: isRowSelection ? left : right - 1,\n top: isRowSelection ? bottom - 1 : top,\n right,\n bottom,\n })\n\n const head = table.start + cellsInFirstRow[0]\n const anchor = table.start + cellsInLastRow[cellsInLastRow.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n return tr\n}\n\nexport const selectColumn = select('column')\n\nexport const selectRow = select('row')\n\nexport const selectTable = (tr: Transaction) => {\n const table = findTable(tr.selection)\n\n if (table) {\n const { map } = TableMap.get(table.node)\n\n if (map && map.length) {\n const head = table.start + map[0]\n const anchor = table.start + map[map.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n\n return tr\n}\n"],"names":["findParentNode","CellSelection","TableMap","isRectSelected","rect","selection","map","get","$anchorCell","node","start","cells","cellsInRect","selectedCells","rectBetween","pos","$headCell","i","count","length","indexOf","findTable","type","spec","tableRole","isCellSelection","isColumnSelected","columnIndex","left","right","top","bottom","height","isRowSelected","rowIndex","width","isTableSelected","getCellsInColumn","table","indexes","Array","isArray","from","reduce","acc","index","concat","nodePos","nodeAt","getCellsInRow","getCellsInTable","findParentNodeClosestToPos","$pos","predicate","depth","before","findCellClosestToPos","test","select","tr","isRowSelection","cellsInFirstRow","cellsInLastRow","head","anchor","$head","doc","resolve","$anchor","setSelection","selectColumn","selectRow","selectTable"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/utils.ts"],"sourcesContent":["// @ts-nocheck\r\nimport { findParentNode } from '@tiptap/core'\r\nimport { Selection, Transaction } from '@tiptap/pm/state'\r\nimport { CellSelection, TableMap } from '@tiptap/pm/tables'\r\nimport { Node, ResolvedPos } from '@tiptap/pm/model'\r\n\r\nexport const isRectSelected = (rect: any) => (selection: CellSelection) => {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n const start = selection.$anchorCell.start(-1)\r\n const cells = map.cellsInRect(rect)\r\n const selectedCells = map.cellsInRect(\r\n map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start),\r\n )\r\n\r\n for (let i = 0, count = cells.length; i < count; i += 1) {\r\n if (selectedCells.indexOf(cells[i]) === -1) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\nexport const findTable = (selection: Selection) =>\r\n findParentNode(node => node.type.spec.tableRole && node.type.spec.tableRole === 'table')(selection)\r\n\r\nexport const isCellSelection = (selection: any) => selection instanceof CellSelection\r\n\r\nexport const isColumnSelected = (columnIndex: number) => (selection: any) => {\r\n if (isCellSelection(selection)) {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n\r\n return isRectSelected({\r\n left: columnIndex,\r\n right: columnIndex + 1,\r\n top: 0,\r\n bottom: map.height,\r\n })(selection)\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const isRowSelected = (rowIndex: number) => (selection: any) => {\r\n if (isCellSelection(selection)) {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n\r\n return isRectSelected({\r\n left: 0,\r\n right: map.width,\r\n top: rowIndex,\r\n bottom: rowIndex + 1,\r\n })(selection)\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const isTableSelected = (selection: any) => {\r\n if (isCellSelection(selection)) {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n\r\n return isRectSelected({\r\n left: 0,\r\n right: map.width,\r\n top: 0,\r\n bottom: map.height,\r\n })(selection)\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const getCellsInColumn = (columnIndex: number | number[]) => (selection: Selection) => {\r\n const table = findTable(selection)\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n const indexes = Array.isArray(columnIndex) ? columnIndex : Array.from([columnIndex])\r\n\r\n return indexes.reduce(\r\n (acc, index) => {\r\n if (index >= 0 && index <= map.width - 1) {\r\n const cells = map.cellsInRect({\r\n left: index,\r\n right: index + 1,\r\n top: 0,\r\n bottom: map.height,\r\n })\r\n\r\n return acc.concat(\r\n cells.map(nodePos => {\r\n const node = table.node.nodeAt(nodePos)\r\n const pos = nodePos + table.start\r\n\r\n return { pos, start: pos + 1, node }\r\n }),\r\n )\r\n }\r\n\r\n return acc\r\n },\r\n [] as { pos: number; start: number; node: Node | null | undefined }[],\r\n )\r\n }\r\n return null\r\n}\r\n\r\nexport const getCellsInRow = (rowIndex: number | number[]) => (selection: Selection) => {\r\n const table = findTable(selection)\r\n\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n const indexes = Array.isArray(rowIndex) ? rowIndex : Array.from([rowIndex])\r\n\r\n return indexes.reduce(\r\n (acc, index) => {\r\n if (index >= 0 && index <= map.height - 1) {\r\n const cells = map.cellsInRect({\r\n left: 0,\r\n right: map.width,\r\n top: index,\r\n bottom: index + 1,\r\n })\r\n\r\n return acc.concat(\r\n cells.map(nodePos => {\r\n const node = table.node.nodeAt(nodePos)\r\n const pos = nodePos + table.start\r\n return { pos, start: pos + 1, node }\r\n }),\r\n )\r\n }\r\n\r\n return acc\r\n },\r\n [] as { pos: number; start: number; node: Node | null | undefined }[],\r\n )\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const getCellsInTable = (selection: Selection) => {\r\n const table = findTable(selection)\r\n\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n const cells = map.cellsInRect({\r\n left: 0,\r\n right: map.width,\r\n top: 0,\r\n bottom: map.height,\r\n })\r\n\r\n return cells.map(nodePos => {\r\n const node = table.node.nodeAt(nodePos)\r\n const pos = nodePos + table.start\r\n\r\n return { pos, start: pos + 1, node }\r\n })\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\r\n for (let i = $pos.depth; i > 0; i -= 1) {\r\n const node = $pos.node(i)\r\n\r\n if (predicate(node)) {\r\n return {\r\n pos: i > 0 ? $pos.before(i) : 0,\r\n start: $pos.start(i),\r\n depth: i,\r\n node,\r\n }\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const findCellClosestToPos = ($pos: ResolvedPos) => {\r\n const predicate = (node: Node) => node.type.spec.tableRole && /cell/i.test(node.type.spec.tableRole)\r\n\r\n return findParentNodeClosestToPos($pos, predicate)\r\n}\r\n\r\nconst select = (type: 'row' | 'column') => (index: number) => (tr: Transaction) => {\r\n const table = findTable(tr.selection)\r\n const isRowSelection = type === 'row'\r\n\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n\r\n // Check if the index is valid\r\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\r\n const left = isRowSelection ? 0 : index\r\n const top = isRowSelection ? index : 0\r\n const right = isRowSelection ? map.width : index + 1\r\n const bottom = isRowSelection ? index + 1 : map.height\r\n\r\n const cellsInFirstRow = map.cellsInRect({\r\n left,\r\n top,\r\n right: isRowSelection ? right : left + 1,\r\n bottom: isRowSelection ? top + 1 : bottom,\r\n })\r\n\r\n const cellsInLastRow =\r\n bottom - top === 1\r\n ? cellsInFirstRow\r\n : map.cellsInRect({\r\n left: isRowSelection ? left : right - 1,\r\n top: isRowSelection ? bottom - 1 : top,\r\n right,\r\n bottom,\r\n })\r\n\r\n const head = table.start + cellsInFirstRow[0]\r\n const anchor = table.start + cellsInLastRow[cellsInLastRow.length - 1]\r\n const $head = tr.doc.resolve(head)\r\n const $anchor = tr.doc.resolve(anchor)\r\n\r\n // @ts-ignore\r\n return tr.setSelection(new CellSelection($anchor, $head))\r\n }\r\n }\r\n return tr\r\n}\r\n\r\nexport const selectColumn = select('column')\r\n\r\nexport const selectRow = select('row')\r\n\r\nexport const selectTable = (tr: Transaction) => {\r\n const table = findTable(tr.selection)\r\n\r\n if (table) {\r\n const { map } = TableMap.get(table.node)\r\n\r\n if (map && map.length) {\r\n const head = table.start + map[0]\r\n const anchor = table.start + map[map.length - 1]\r\n const $head = tr.doc.resolve(head)\r\n const $anchor = tr.doc.resolve(anchor)\r\n\r\n // @ts-ignore\r\n return tr.setSelection(new CellSelection($anchor, $head))\r\n }\r\n }\r\n\r\n return tr\r\n}\r\n"],"names":["findParentNode","CellSelection","TableMap","isRectSelected","rect","selection","map","get","$anchorCell","node","start","cells","cellsInRect","selectedCells","rectBetween","pos","$headCell","i","count","length","indexOf","findTable","type","spec","tableRole","isCellSelection","isColumnSelected","columnIndex","left","right","top","bottom","height","isRowSelected","rowIndex","width","isTableSelected","getCellsInColumn","table","indexes","Array","isArray","from","reduce","acc","index","concat","nodePos","nodeAt","getCellsInRow","getCellsInTable","findParentNodeClosestToPos","$pos","predicate","depth","before","findCellClosestToPos","test","select","tr","isRowSelection","cellsInFirstRow","cellsInLastRow","head","anchor","$head","doc","resolve","$anchor","setSelection","selectColumn","selectRow","selectTable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/index.ts"],"sourcesContent":["export * from \"./trailing-node.js\";\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/index.ts"],"sourcesContent":["export * from \"./trailing-node.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.ts"],"sourcesContent":["import { Extension } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\n\n// @ts-ignore\nfunction nodeEqualsType({ types, node }) {\n return (\n (Array.isArray(types) && types.includes(node.type)) || node.type === types\n );\n}\n\n/**\n * Extension based on:\n * - https://github.com/ueberdosis/tiptap/blob/v1/packages/tiptap-extensions/src/extensions/TrailingNode.js\n * - https://github.com/remirror/remirror/blob/e0f1bec4a1e8073ce8f5500d62193e52321155b9/packages/prosemirror-trailing-node/src/trailing-node-plugin.ts\n */\n\nexport interface TrailingNodeOptions {\n node: string;\n notAfter: string[];\n}\n\nexport const TrailingNode = Extension.create<TrailingNodeOptions>({\n name: \"trailingNode\",\n\n addOptions() {\n return {\n node: \"paragraph\",\n notAfter: [\"paragraph\"],\n };\n },\n\n addProseMirrorPlugins() {\n const plugin = new PluginKey(this.name);\n const disabledNodes = Object.entries(this.editor.schema.nodes)\n .map(([, value]) => value)\n .filter((node) => this.options.notAfter.includes(node.name));\n\n return [\n new Plugin({\n key: plugin,\n appendTransaction: (_, __, state) => {\n const { doc, tr, schema } = state;\n const shouldInsertNodeAtEnd = plugin.getState(state);\n const endPosition = doc.content.size;\n const type = schema.nodes[this.options.node];\n\n if (!shouldInsertNodeAtEnd) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return tr.insert(endPosition, type.create());\n },\n state: {\n init: (_, state) => {\n const lastNode = state.tr.doc.lastChild;\n\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n },\n apply: (tr, value) => {\n if (!tr.docChanged) {\n return value;\n }\n\n const lastNode = tr.doc.lastChild;\n\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n },\n },\n }),\n ];\n },\n});\n"],"names":["Extension","Plugin","PluginKey","nodeEqualsType","types","node","Array","isArray","includes","type","TrailingNode","create","name","addOptions","notAfter","addProseMirrorPlugins","plugin","disabledNodes","Object","entries","editor","schema","nodes","map","value","filter","options","key","appendTransaction","_","__","state","doc","tr","shouldInsertNodeAtEnd","getState","endPosition","content","size","insert","init","lastNode","lastChild","apply","docChanged"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAe;AACzC,SAASC,MAAM,EAAEC,SAAS,QAAQ,mBAAmB;AAErD,aAAa;AACb,SAASC,eAAe,EAAEC,KAAK,EAAEC,IAAI,EAAE;IACrC,OACE,AAACC,MAAMC,OAAO,CAACH,UAAUA,MAAMI,QAAQ,CAACH,KAAKI,IAAI,KAAMJ,KAAKI,IAAI,KAAKL;AAEzE;AAaA,OAAO,MAAMM,eAAeV,UAAUW,MAAM,CAAsB;IAChEC,MAAM;IAENC;QACE,OAAO;YACLR,MAAM;YACNS,UAAU;gBAAC;aAAY;QACzB;IACF;IAEAC;QACE,MAAMC,SAAS,IAAId,UAAU,IAAI,CAACU,IAAI;QACtC,MAAMK,gBAAgBC,OAAOC,OAAO,CAAC,IAAI,CAACC,MAAM,CAACC,MAAM,CAACC,KAAK,EAC1DC,GAAG,CAAC,CAAC,GAAGC,MAAM,GAAKA,OACnBC,MAAM,CAAC,CAACpB,OAAS,IAAI,CAACqB,OAAO,CAACZ,QAAQ,CAACN,QAAQ,CAACH,KAAKO,IAAI;QAE5D,OAAO;YACL,IAAIX,OAAO;gBACT0B,KAAKX;gBACLY,mBAAmB,CAACC,GAAGC,IAAIC;oBACzB,MAAM,EAAEC,GAAG,EAAEC,EAAE,EAAEZ,MAAM,EAAE,GAAGU;oBAC5B,MAAMG,wBAAwBlB,OAAOmB,QAAQ,CAACJ;oBAC9C,MAAMK,cAAcJ,IAAIK,OAAO,CAACC,IAAI;oBACpC,MAAM7B,OAAOY,OAAOC,KAAK,CAAC,IAAI,CAACI,OAAO,CAACrB,IAAI,CAAC;oBAE5C,IAAI,CAAC6B,uBAAuB;wBAC1B;oBACF;oBAEA,6CAA6C;oBAC7C,OAAOD,GAAGM,MAAM,CAACH,aAAa3B,KAAKE,MAAM;gBAC3C;gBACAoB,OAAO;oBACLS,MAAM,CAACX,GAAGE;wBACR,MAAMU,WAAWV,MAAME,EAAE,CAACD,GAAG,CAACU,SAAS;wBAEvC,OAAO,CAACvC,eAAe;4BAAEE,MAAMoC;4BAAUrC,OAAOa;wBAAc;oBAChE;oBACA0B,OAAO,CAACV,IAAIT;wBACV,IAAI,CAACS,GAAGW,UAAU,EAAE;4BAClB,OAAOpB;wBACT;wBAEA,MAAMiB,WAAWR,GAAGD,GAAG,CAACU,SAAS;wBAEjC,OAAO,CAACvC,eAAe;4BAAEE,MAAMoC;4BAAUrC,OAAOa;wBAAc;oBAChE;gBACF;YACF;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.ts"],"sourcesContent":["import { Extension } from \"@tiptap/core\";\r\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\r\n\r\n// @ts-ignore\r\nfunction nodeEqualsType({ types, node }) {\r\n return (\r\n (Array.isArray(types) && types.includes(node.type)) || node.type === types\r\n );\r\n}\r\n\r\n/**\r\n * Extension based on:\r\n * - https://github.com/ueberdosis/tiptap/blob/v1/packages/tiptap-extensions/src/extensions/TrailingNode.js\r\n * - https://github.com/remirror/remirror/blob/e0f1bec4a1e8073ce8f5500d62193e52321155b9/packages/prosemirror-trailing-node/src/trailing-node-plugin.ts\r\n */\r\n\r\nexport interface TrailingNodeOptions {\r\n node: string;\r\n notAfter: string[];\r\n}\r\n\r\nexport const TrailingNode = Extension.create<TrailingNodeOptions>({\r\n name: \"trailingNode\",\r\n\r\n addOptions() {\r\n return {\r\n node: \"paragraph\",\r\n notAfter: [\"paragraph\"],\r\n };\r\n },\r\n\r\n addProseMirrorPlugins() {\r\n const plugin = new PluginKey(this.name);\r\n const disabledNodes = Object.entries(this.editor.schema.nodes)\r\n .map(([, value]) => value)\r\n .filter((node) => this.options.notAfter.includes(node.name));\r\n\r\n return [\r\n new Plugin({\r\n key: plugin,\r\n appendTransaction: (_, __, state) => {\r\n const { doc, tr, schema } = state;\r\n const shouldInsertNodeAtEnd = plugin.getState(state);\r\n const endPosition = doc.content.size;\r\n const type = schema.nodes[this.options.node];\r\n\r\n if (!shouldInsertNodeAtEnd) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n return tr.insert(endPosition, type.create());\r\n },\r\n state: {\r\n init: (_, state) => {\r\n const lastNode = state.tr.doc.lastChild;\r\n\r\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\r\n },\r\n apply: (tr, value) => {\r\n if (!tr.docChanged) {\r\n return value;\r\n }\r\n\r\n const lastNode = tr.doc.lastChild;\r\n\r\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\r\n },\r\n },\r\n }),\r\n ];\r\n },\r\n});\r\n"],"names":["Extension","Plugin","PluginKey","nodeEqualsType","types","node","Array","isArray","includes","type","TrailingNode","create","name","addOptions","notAfter","addProseMirrorPlugins","plugin","disabledNodes","Object","entries","editor","schema","nodes","map","value","filter","options","key","appendTransaction","_","__","state","doc","tr","shouldInsertNodeAtEnd","getState","endPosition","content","size","insert","init","lastNode","lastChild","apply","docChanged"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAe;AACzC,SAASC,MAAM,EAAEC,SAAS,QAAQ,mBAAmB;AAErD,aAAa;AACb,SAASC,eAAe,EAAEC,KAAK,EAAEC,IAAI,EAAE;IACrC,OACE,AAACC,MAAMC,OAAO,CAACH,UAAUA,MAAMI,QAAQ,CAACH,KAAKI,IAAI,KAAMJ,KAAKI,IAAI,KAAKL;AAEzE;AAaA,OAAO,MAAMM,eAAeV,UAAUW,MAAM,CAAsB;IAChEC,MAAM;IAENC;QACE,OAAO;YACLR,MAAM;YACNS,UAAU;gBAAC;aAAY;QACzB;IACF;IAEAC;QACE,MAAMC,SAAS,IAAId,UAAU,IAAI,CAACU,IAAI;QACtC,MAAMK,gBAAgBC,OAAOC,OAAO,CAAC,IAAI,CAACC,MAAM,CAACC,MAAM,CAACC,KAAK,EAC1DC,GAAG,CAAC,CAAC,GAAGC,MAAM,GAAKA,OACnBC,MAAM,CAAC,CAACpB,OAAS,IAAI,CAACqB,OAAO,CAACZ,QAAQ,CAACN,QAAQ,CAACH,KAAKO,IAAI;QAE5D,OAAO;YACL,IAAIX,OAAO;gBACT0B,KAAKX;gBACLY,mBAAmB,CAACC,GAAGC,IAAIC;oBACzB,MAAM,EAAEC,GAAG,EAAEC,EAAE,EAAEZ,MAAM,EAAE,GAAGU;oBAC5B,MAAMG,wBAAwBlB,OAAOmB,QAAQ,CAACJ;oBAC9C,MAAMK,cAAcJ,IAAIK,OAAO,CAACC,IAAI;oBACpC,MAAM7B,OAAOY,OAAOC,KAAK,CAAC,IAAI,CAACI,OAAO,CAACrB,IAAI,CAAC;oBAE5C,IAAI,CAAC6B,uBAAuB;wBAC1B;oBACF;oBAEA,6CAA6C;oBAC7C,OAAOD,GAAGM,MAAM,CAACH,aAAa3B,KAAKE,MAAM;gBAC3C;gBACAoB,OAAO;oBACLS,MAAM,CAACX,GAAGE;wBACR,MAAMU,WAAWV,MAAME,EAAE,CAACD,GAAG,CAACU,SAAS;wBAEvC,OAAO,CAACvC,eAAe;4BAAEE,MAAMoC;4BAAUrC,OAAOa;wBAAc;oBAChE;oBACA0B,OAAO,CAACV,IAAIT;wBACV,IAAI,CAACS,GAAGW,UAAU,EAAE;4BAClB,OAAOpB;wBACT;wBAEA,MAAMiB,WAAWR,GAAGD,GAAG,CAACU,SAAS;wBAEjC,OAAO,CAACvC,eAAe;4BAAEE,MAAMoC;4BAAUrC,OAAOa;wBAAc;oBAChE;gBACF;YACF;SACD;IACH;AACF,GAAG"}
@@ -1,10 +1,10 @@
1
1
  import { mergeAttributes, Node, nodeInputRule } from "@tiptap/core";
2
- /**
3
- * Matches an image to a ![image](src "title") on input.
2
+ /**
3
+ * Matches an image to a ![image](src "title") on input.
4
4
  */ export const inputRegex = /(?:^|\s)(!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\))$/;
5
- /**
6
- * This extension allows you to insert images.
7
- * @see https://www.tiptap.dev/api/nodes/image
5
+ /**
6
+ * This extension allows you to insert images.
7
+ * @see https://www.tiptap.dev/api/nodes/image
8
8
  */ export const Video = Node.create({
9
9
  name: "video",
10
10
  addOptions () {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/Video.ts"],"sourcesContent":["import { mergeAttributes, Node, nodeInputRule } from \"@tiptap/core\";\n\nexport interface VideoOptions {\n /**\n * Controls if the image node should be inline or not.\n * @default false\n * @example true\n */\n inline: boolean;\n\n /**\n * Controls if base64 images are allowed. Enable this if you want to allow\n * base64 image urls in the `src` attribute.\n * @default false\n * @example true\n */\n allowBase64: boolean;\n\n /**\n * HTML attributes to add to the image element.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>;\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n video: {\n /**\n * Add an image\n * @param options The image attributes\n * @example\n * editor\n * .commands\n * .setVideo({ src: 'https://tiptap.dev/logo.png', alt: 'tiptap', title: 'tiptap logo' })\n */\n setVideo: (options: {\n src: string;\n alt?: string;\n title?: string;\n poster?: string;\n }) => ReturnType;\n };\n }\n}\n\n/**\n * Matches an image to a ![image](src \"title\") on input.\n */\nexport const inputRegex =\n /(?:^|\\s)(!\\[(.+|:?)]\\((\\S+)(?:(?:\\s+)[\"'](\\S+)[\"'])?\\))$/;\n\n/**\n * This extension allows you to insert images.\n * @see https://www.tiptap.dev/api/nodes/image\n */\nexport const Video = Node.create<VideoOptions>({\n name: \"video\",\n\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n\n inline() {\n return this.options.inline;\n },\n\n group() {\n return this.options.inline ? \"inline\" : \"block\";\n },\n\n draggable: true,\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n alt: {\n default: null,\n },\n title: {\n default: null,\n },\n poster: {\n default: null,\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: this.options.allowBase64\n ? \"video[src]\"\n : 'video[src]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"video\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setVideo:\n (options) =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n attrs: options,\n });\n },\n };\n },\n\n addInputRules() {\n return [\n nodeInputRule({\n find: inputRegex,\n type: this.type,\n getAttributes: (match) => {\n const [, , alt, src, title] = match;\n\n return { src, alt, title };\n },\n }),\n ];\n },\n});\n"],"names":["mergeAttributes","Node","nodeInputRule","inputRegex","Video","create","name","addOptions","inline","allowBase64","HTMLAttributes","options","group","draggable","addAttributes","src","default","alt","title","poster","parseHTML","tag","renderHTML","addCommands","setVideo","commands","insertContent","type","attrs","addInputRules","find","getAttributes","match"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,EAAEC,aAAa,QAAQ,eAAe;AA+CpE;;CAEC,GACD,OAAO,MAAMC,aACX,2DAA2D;AAE7D;;;CAGC,GACD,OAAO,MAAMC,QAAQH,KAAKI,MAAM,CAAe;IAC7CC,MAAM;IAENC;QACE,OAAO;YACLC,QAAQ;YACRC,aAAa;YACbC,gBAAgB,CAAC;QACnB;IACF;IAEAF;QACE,OAAO,IAAI,CAACG,OAAO,CAACH,MAAM;IAC5B;IAEAI;QACE,OAAO,IAAI,CAACD,OAAO,CAACH,MAAM,GAAG,WAAW;IAC1C;IAEAK,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;YACX;YACAC,KAAK;gBACHD,SAAS;YACX;YACAE,OAAO;gBACLF,SAAS;YACX;YACAG,QAAQ;gBACNH,SAAS;YACX;QACF;IACF;IAEAI;QACE,OAAO;YACL;gBACEC,KAAK,IAAI,CAACV,OAAO,CAACF,WAAW,GACzB,eACA;YACN;SACD;IACH;IAEAa,YAAW,EAAEZ,cAAc,EAAE;QAC3B,OAAO;YACL;YACAV,gBAAgB,IAAI,CAACW,OAAO,CAACD,cAAc,EAAEA;SAC9C;IACH;IAEAa;QACE,OAAO;YACLC,UACE,CAACb,UACD,CAAC,EAAEc,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM,IAAI,CAACrB,IAAI;wBACfsB,OAAOjB;oBACT;gBACF;QACJ;IACF;IAEAkB;QACE,OAAO;YACL3B,cAAc;gBACZ4B,MAAM3B;gBACNwB,MAAM,IAAI,CAACA,IAAI;gBACfI,eAAe,CAACC;oBACd,MAAM,KAAKf,KAAKF,KAAKG,MAAM,GAAGc;oBAE9B,OAAO;wBAAEjB;wBAAKE;wBAAKC;oBAAM;gBAC3B;YACF;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/Video.ts"],"sourcesContent":["import { mergeAttributes, Node, nodeInputRule } from \"@tiptap/core\";\r\n\r\nexport interface VideoOptions {\r\n /**\r\n * Controls if the image node should be inline or not.\r\n * @default false\r\n * @example true\r\n */\r\n inline: boolean;\r\n\r\n /**\r\n * Controls if base64 images are allowed. Enable this if you want to allow\r\n * base64 image urls in the `src` attribute.\r\n * @default false\r\n * @example true\r\n */\r\n allowBase64: boolean;\r\n\r\n /**\r\n * HTML attributes to add to the image element.\r\n * @default {}\r\n * @example { class: 'foo' }\r\n */\r\n HTMLAttributes: Record<string, any>;\r\n}\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n video: {\r\n /**\r\n * Add an image\r\n * @param options The image attributes\r\n * @example\r\n * editor\r\n * .commands\r\n * .setVideo({ src: 'https://tiptap.dev/logo.png', alt: 'tiptap', title: 'tiptap logo' })\r\n */\r\n setVideo: (options: {\r\n src: string;\r\n alt?: string;\r\n title?: string;\r\n poster?: string;\r\n }) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Matches an image to a ![image](src \"title\") on input.\r\n */\r\nexport const inputRegex =\r\n /(?:^|\\s)(!\\[(.+|:?)]\\((\\S+)(?:(?:\\s+)[\"'](\\S+)[\"'])?\\))$/;\r\n\r\n/**\r\n * This extension allows you to insert images.\r\n * @see https://www.tiptap.dev/api/nodes/image\r\n */\r\nexport const Video = Node.create<VideoOptions>({\r\n name: \"video\",\r\n\r\n addOptions() {\r\n return {\r\n inline: false,\r\n allowBase64: false,\r\n HTMLAttributes: {},\r\n };\r\n },\r\n\r\n inline() {\r\n return this.options.inline;\r\n },\r\n\r\n group() {\r\n return this.options.inline ? \"inline\" : \"block\";\r\n },\r\n\r\n draggable: true,\r\n\r\n addAttributes() {\r\n return {\r\n src: {\r\n default: null,\r\n },\r\n alt: {\r\n default: null,\r\n },\r\n title: {\r\n default: null,\r\n },\r\n poster: {\r\n default: null,\r\n },\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: this.options.allowBase64\r\n ? \"video[src]\"\r\n : 'video[src]:not([src^=\"data:\"])',\r\n },\r\n ];\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"video\",\r\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\r\n ];\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setVideo:\r\n (options) =>\r\n ({ commands }) => {\r\n return commands.insertContent({\r\n type: this.name,\r\n attrs: options,\r\n });\r\n },\r\n };\r\n },\r\n\r\n addInputRules() {\r\n return [\r\n nodeInputRule({\r\n find: inputRegex,\r\n type: this.type,\r\n getAttributes: (match) => {\r\n const [, , alt, src, title] = match;\r\n\r\n return { src, alt, title };\r\n },\r\n }),\r\n ];\r\n },\r\n});\r\n"],"names":["mergeAttributes","Node","nodeInputRule","inputRegex","Video","create","name","addOptions","inline","allowBase64","HTMLAttributes","options","group","draggable","addAttributes","src","default","alt","title","poster","parseHTML","tag","renderHTML","addCommands","setVideo","commands","insertContent","type","attrs","addInputRules","find","getAttributes","match"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,EAAEC,aAAa,QAAQ,eAAe;AA+CpE;;CAEC,GACD,OAAO,MAAMC,aACX,2DAA2D;AAE7D;;;CAGC,GACD,OAAO,MAAMC,QAAQH,KAAKI,MAAM,CAAe;IAC7CC,MAAM;IAENC;QACE,OAAO;YACLC,QAAQ;YACRC,aAAa;YACbC,gBAAgB,CAAC;QACnB;IACF;IAEAF;QACE,OAAO,IAAI,CAACG,OAAO,CAACH,MAAM;IAC5B;IAEAI;QACE,OAAO,IAAI,CAACD,OAAO,CAACH,MAAM,GAAG,WAAW;IAC1C;IAEAK,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;YACX;YACAC,KAAK;gBACHD,SAAS;YACX;YACAE,OAAO;gBACLF,SAAS;YACX;YACAG,QAAQ;gBACNH,SAAS;YACX;QACF;IACF;IAEAI;QACE,OAAO;YACL;gBACEC,KAAK,IAAI,CAACV,OAAO,CAACF,WAAW,GACzB,eACA;YACN;SACD;IACH;IAEAa,YAAW,EAAEZ,cAAc,EAAE;QAC3B,OAAO;YACL;YACAV,gBAAgB,IAAI,CAACW,OAAO,CAACD,cAAc,EAAEA;SAC9C;IACH;IAEAa;QACE,OAAO;YACLC,UACE,CAACb,UACD,CAAC,EAAEc,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM,IAAI,CAACrB,IAAI;wBACfsB,OAAOjB;oBACT;gBACF;QACJ;IACF;IAEAkB;QACE,OAAO;YACL3B,cAAc;gBACZ4B,MAAM3B;gBACNwB,MAAM,IAAI,CAACA,IAAI;gBACfI,eAAe,CAACC;oBACd,MAAM,KAAKf,KAAKF,KAAKG,MAAM,GAAGc;oBAE9B,OAAO;wBAAEjB;wBAAKE;wBAAKC;oBAAM;gBAC3B;YACF;SACD;IACH;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/index.ts"],"sourcesContent":["export * from \"./Video.js\";\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/index.ts"],"sourcesContent":["export * from \"./Video.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { VideoBlockView } from \"./components/VideoBlockView.js\";\nimport { Video } from \"../Video/Video.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n videoBlock: {\n setVideoBlock: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n title: string;\n actualWidth?: number;\n actualHeight?: number;\n }) => ReturnType;\n setVideoBlockAt: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n title: string;\n pos: number | Range;\n actualWidth?: number;\n actualHeight?: number;\n }) => ReturnType;\n setVideoBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setVideoBlockWidth: (width: number) => ReturnType;\n setVideoBlockCaption: (caption: boolean) => ReturnType;\n };\n }\n}\n\nexport const VideoBlock = Video.extend({\n name: \"videoBlock\",\n\n group: \"block\",\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n src: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"src\"),\n renderHTML: (attributes) => ({\n src: attributes.src,\n }),\n },\n title: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"title\"),\n renderHTML: (attributes) => ({\n title: attributes.title,\n }),\n },\n poster: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"poster\"),\n renderHTML: (attributes) => ({\n poster: attributes.poster,\n }),\n },\n playlistUrl: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\n renderHTML: (attributes) => ({\n \"data-playlist-url\": attributes.playlistUrl,\n }),\n },\n width: {\n default: \"100%\",\n parseHTML: (element) => element.getAttribute(\"data-width\"),\n renderHTML: (attributes) => ({\n \"data-width\": attributes.width,\n }),\n },\n actualWidth: {\n default: 0,\n parseHTML: (element) => element.getAttribute(\"data-actual-width\"),\n renderHTML: (attributes) => ({\n \"data-actual-width\": attributes.actualWidth,\n }),\n },\n actualHeight: {\n default: 0,\n parseHTML: (element) => element.getAttribute(\"data-actual-height\"),\n renderHTML: (attributes) => ({\n \"data-actual-height\": attributes.actualHeight,\n }),\n },\n align: {\n default: \"center\",\n parseHTML: (element) => element.getAttribute(\"data-align\"),\n renderHTML: (attributes) => ({\n \"data-align\": attributes.align,\n }),\n },\n alt: {\n default: undefined,\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: true,\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\n renderHTML: (attributes) => ({\n \"data-caption\": attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'video[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), video[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"div\",\n { class: \"imageBlock\" },\n [\"video\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\n [\n \"caption\",\n mergeAttributes(\n {\n class:\n \"text-center text-gray-400 w-full h-16 mb-2 placeholder-black p-1 text-sm border-0 rounded appearance-none\",\n },\n { defaultValue: HTMLAttributes.title || HTMLAttributes.caption }\n ),\n HTMLAttributes.title || HTMLAttributes.caption,\n ],\n ];\n },\n\n addCommands() {\n return {\n setVideoBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"videoBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n title: attrs.title,\n actualWidth: attrs.actualWidth,\n actualHeight: attrs.actualHeight,\n },\n });\n },\n\n setVideoBlockAt:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContentAt(attrs.pos, {\n type: \"videoBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n title: attrs.title,\n actualWidth: attrs.actualWidth,\n actualHeight: attrs.actualHeight,\n },\n });\n },\n\n setVideoBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"videoBlock\", { align }),\n\n setVideoBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"videoBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n\n setVideoBlockCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"videoBlock\", { caption }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(VideoBlockView);\n },\n});\n\nexport default VideoBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","VideoBlockView","Video","VideoBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","title","poster","playlistUrl","width","actualWidth","actualHeight","align","alt","undefined","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setVideoBlock","attrs","commands","insertContent","type","assetId","setVideoBlockAt","insertContentAt","pos","setVideoBlockAlign","updateAttributes","setVideoBlockWidth","Math","max","min","setVideoBlockCaption","addNodeView"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\r\nimport { mergeAttributes, Range } from \"@tiptap/core\";\r\n\r\nimport { VideoBlockView } from \"./components/VideoBlockView.js\";\r\nimport { Video } from \"../Video/Video.js\";\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n videoBlock: {\r\n setVideoBlock: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAt: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n pos: number | Range;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\r\n setVideoBlockWidth: (width: number) => ReturnType;\r\n setVideoBlockCaption: (caption: boolean) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const VideoBlock = Video.extend({\r\n name: \"videoBlock\",\r\n\r\n group: \"block\",\r\n\r\n defining: true,\r\n\r\n isolating: true,\r\n\r\n addAttributes() {\r\n return {\r\n src: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"src\"),\r\n renderHTML: (attributes) => ({\r\n src: attributes.src,\r\n }),\r\n },\r\n title: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"title\"),\r\n renderHTML: (attributes) => ({\r\n title: attributes.title,\r\n }),\r\n },\r\n poster: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"poster\"),\r\n renderHTML: (attributes) => ({\r\n poster: attributes.poster,\r\n }),\r\n },\r\n playlistUrl: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\r\n renderHTML: (attributes) => ({\r\n \"data-playlist-url\": attributes.playlistUrl,\r\n }),\r\n },\r\n width: {\r\n default: \"100%\",\r\n parseHTML: (element) => element.getAttribute(\"data-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-width\": attributes.width,\r\n }),\r\n },\r\n actualWidth: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-width\": attributes.actualWidth,\r\n }),\r\n },\r\n actualHeight: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-height\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-height\": attributes.actualHeight,\r\n }),\r\n },\r\n align: {\r\n default: \"center\",\r\n parseHTML: (element) => element.getAttribute(\"data-align\"),\r\n renderHTML: (attributes) => ({\r\n \"data-align\": attributes.align,\r\n }),\r\n },\r\n alt: {\r\n default: undefined,\r\n parseHTML: (element) => element.getAttribute(\"alt\"),\r\n renderHTML: (attributes) => ({\r\n alt: attributes.alt,\r\n }),\r\n },\r\n caption: {\r\n default: true,\r\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\r\n renderHTML: (attributes) => ({\r\n \"data-caption\": attributes.caption,\r\n }),\r\n },\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'video[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), video[src*=\"windows.net\"]:not([src^=\"data:\"])',\r\n },\r\n ];\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n { class: \"imageBlock\" },\r\n [\"video\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\r\n [\r\n \"caption\",\r\n mergeAttributes(\r\n {\r\n class:\r\n \"text-center text-gray-400 w-full h-16 mb-2 placeholder-black p-1 text-sm border-0 rounded appearance-none\",\r\n },\r\n { defaultValue: HTMLAttributes.title || HTMLAttributes.caption }\r\n ),\r\n HTMLAttributes.title || HTMLAttributes.caption,\r\n ],\r\n ];\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setVideoBlock:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContent({\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAt:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContentAt(attrs.pos, {\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAlign:\r\n (align) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { align }),\r\n\r\n setVideoBlockWidth:\r\n (width) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", {\r\n width: `${Math.max(0, Math.min(100, width))}%`,\r\n }),\r\n\r\n setVideoBlockCaption:\r\n (caption) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { caption }),\r\n };\r\n },\r\n\r\n addNodeView() {\r\n //@ts-ignore\r\n return ReactNodeViewRenderer(VideoBlockView);\r\n },\r\n});\r\n\r\nexport default VideoBlock;\r\n"],"names":["ReactNodeViewRenderer","mergeAttributes","VideoBlockView","Video","VideoBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","title","poster","playlistUrl","width","actualWidth","actualHeight","align","alt","undefined","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setVideoBlock","attrs","commands","insertContent","type","assetId","setVideoBlockAt","insertContentAt","pos","setVideoBlockAlign","updateAttributes","setVideoBlockWidth","Math","max","min","setVideoBlockCaption","addNodeView"],"mappings":"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"}