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/ImageUpload/view/hooks.ts"],"sourcesContent":["import { DragEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport API from \"../../../lib/api.js\";\n\nexport const useUploader = ({\n onUpload,\n}: {\n onUpload: (url: string) => void;\n}) => {\n const [loading, setLoading] = useState(false);\n\n const uploadFile = useCallback(async () => {\n setLoading(true);\n try {\n const url = await API.uploadImage();\n\n onUpload(url);\n } catch (errPayload: any) {\n const error = errPayload?.response?.data?.error || \"Something went wrong\";\n // toast(error)\n console.log(\"ERROR\", error);\n }\n setLoading(false);\n }, [onUpload]);\n\n return { loading, uploadFile };\n};\n\nexport const useFileUpload = () => {\n const fileInput = useRef<HTMLInputElement>(null);\n\n const handleUploadClick = useCallback(() => {\n fileInput.current?.click();\n }, []);\n\n return { ref: fileInput, handleUploadClick };\n};\n\nexport const useDropZone = ({\n uploader,\n}: {\n uploader: (file: File) => void;\n}) => {\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [draggedInside, setDraggedInside] = useState<boolean>(false);\n\n useEffect(() => {\n const dragStartHandler = () => {\n setIsDragging(true);\n };\n\n const dragEndHandler = () => {\n setIsDragging(false);\n };\n\n document.body.addEventListener(\"dragstart\", dragStartHandler);\n document.body.addEventListener(\"dragend\", dragEndHandler);\n\n return () => {\n document.body.removeEventListener(\"dragstart\", dragStartHandler);\n document.body.removeEventListener(\"dragend\", dragEndHandler);\n };\n }, []);\n\n const onDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n setDraggedInside(false);\n if (e.dataTransfer.files.length === 0) {\n return;\n }\n\n const fileList = e.dataTransfer.files;\n\n const files: File[] = [];\n\n for (let i = 0; i < fileList.length; i += 1) {\n const item = fileList.item(i);\n if (item) {\n files.push(item);\n }\n }\n\n if (files.some((file) => file.type.indexOf(\"image\") === -1)) {\n return;\n }\n\n e.preventDefault();\n\n const filteredFiles = files.filter((f) => f.type.indexOf(\"image\") !== -1);\n\n const file = filteredFiles.length > 0 ? filteredFiles[0] : undefined;\n\n if (file) {\n uploader(file);\n }\n },\n [uploader]\n );\n\n const onDragEnter = () => {\n setDraggedInside(true);\n };\n\n const onDragLeave = () => {\n setDraggedInside(false);\n };\n\n return { isDragging, draggedInside, onDragEnter, onDragLeave, onDrop };\n};\n"],"names":["useCallback","useEffect","useRef","useState","API","useUploader","onUpload","loading","setLoading","uploadFile","url","uploadImage","errPayload","error","response","data","console","log","useFileUpload","fileInput","handleUploadClick","current","click","ref","useDropZone","uploader","isDragging","setIsDragging","draggedInside","setDraggedInside","dragStartHandler","dragEndHandler","document","body","addEventListener","removeEventListener","onDrop","e","dataTransfer","files","length","fileList","i","item","push","some","file","type","indexOf","preventDefault","filteredFiles","filter","f","undefined","onDragEnter","onDragLeave"],"mappings":"AAAA,SAAoBA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AAC5E,OAAOC,SAAS,sBAAsB;AAEtC,OAAO,MAAMC,cAAc,CAAC,EAC1BC,QAAQ,EAGT;IACC,MAAM,CAACC,SAASC,WAAW,GAAGL,SAAS;IAEvC,MAAMM,aAAaT,YAAY;QAC7BQ,WAAW;QACX,IAAI;YACF,MAAME,MAAM,MAAMN,IAAIO,WAAW;YAEjCL,SAASI;QACX,EAAE,OAAOE,YAAiB;YACxB,MAAMC,QAAQD,YAAYE,UAAUC,MAAMF,SAAS;YACnD,eAAe;YACfG,QAAQC,GAAG,CAAC,SAASJ;QACvB;QACAL,WAAW;IACb,GAAG;QAACF;KAAS;IAEb,OAAO;QAAEC;QAASE;IAAW;AAC/B,EAAE;AAEF,OAAO,MAAMS,gBAAgB;IAC3B,MAAMC,YAAYjB,OAAyB;IAE3C,MAAMkB,oBAAoBpB,YAAY;QACpCmB,UAAUE,OAAO,EAAEC;IACrB,GAAG,EAAE;IAEL,OAAO;QAAEC,KAAKJ;QAAWC;IAAkB;AAC7C,EAAE;AAEF,OAAO,MAAMI,cAAc,CAAC,EAC1BC,QAAQ,EAGT;IACC,MAAM,CAACC,YAAYC,cAAc,GAAGxB,SAAkB;IACtD,MAAM,CAACyB,eAAeC,iBAAiB,GAAG1B,SAAkB;IAE5DF,UAAU;QACR,MAAM6B,mBAAmB;YACvBH,cAAc;QAChB;QAEA,MAAMI,iBAAiB;YACrBJ,cAAc;QAChB;QAEAK,SAASC,IAAI,CAACC,gBAAgB,CAAC,aAAaJ;QAC5CE,SAASC,IAAI,CAACC,gBAAgB,CAAC,WAAWH;QAE1C,OAAO;YACLC,SAASC,IAAI,CAACE,mBAAmB,CAAC,aAAaL;YAC/CE,SAASC,IAAI,CAACE,mBAAmB,CAAC,WAAWJ;QAC/C;IACF,GAAG,EAAE;IAEL,MAAMK,SAASpC,YACb,CAACqC;QACCR,iBAAiB;QACjB,IAAIQ,EAAEC,YAAY,CAACC,KAAK,CAACC,MAAM,KAAK,GAAG;YACrC;QACF;QAEA,MAAMC,WAAWJ,EAAEC,YAAY,CAACC,KAAK;QAErC,MAAMA,QAAgB,EAAE;QAExB,IAAK,IAAIG,IAAI,GAAGA,IAAID,SAASD,MAAM,EAAEE,KAAK,EAAG;YAC3C,MAAMC,OAAOF,SAASE,IAAI,CAACD;YAC3B,IAAIC,MAAM;gBACRJ,MAAMK,IAAI,CAACD;YACb;QACF;QAEA,IAAIJ,MAAMM,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,CAACC,OAAO,CAAC,aAAa,CAAC,IAAI;YAC3D;QACF;QAEAX,EAAEY,cAAc;QAEhB,MAAMC,gBAAgBX,MAAMY,MAAM,CAAC,CAACC,IAAMA,EAAEL,IAAI,CAACC,OAAO,CAAC,aAAa,CAAC;QAEvE,MAAMF,OAAOI,cAAcV,MAAM,GAAG,IAAIU,aAAa,CAAC,EAAE,GAAGG;QAE3D,IAAIP,MAAM;YACRrB,SAASqB;QACX;IACF,GACA;QAACrB;KAAS;IAGZ,MAAM6B,cAAc;QAClBzB,iBAAiB;IACnB;IAEA,MAAM0B,cAAc;QAClB1B,iBAAiB;IACnB;IAEA,OAAO;QAAEH;QAAYE;QAAe0B;QAAaC;QAAanB;IAAO;AACvE,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/hooks.ts"],"sourcesContent":["import { DragEvent, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport API from \"../../../lib/api.js\";\r\n\r\nexport const useUploader = ({\r\n onUpload,\r\n}: {\r\n onUpload: (url: string) => void;\r\n}) => {\r\n const [loading, setLoading] = useState(false);\r\n\r\n const uploadFile = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n const url = await API.uploadImage();\r\n\r\n onUpload(url);\r\n } catch (errPayload: any) {\r\n const error = errPayload?.response?.data?.error || \"Something went wrong\";\r\n // toast(error)\r\n console.log(\"ERROR\", error);\r\n }\r\n setLoading(false);\r\n }, [onUpload]);\r\n\r\n return { loading, uploadFile };\r\n};\r\n\r\nexport const useFileUpload = () => {\r\n const fileInput = useRef<HTMLInputElement>(null);\r\n\r\n const handleUploadClick = useCallback(() => {\r\n fileInput.current?.click();\r\n }, []);\r\n\r\n return { ref: fileInput, handleUploadClick };\r\n};\r\n\r\nexport const useDropZone = ({\r\n uploader,\r\n}: {\r\n uploader: (file: File) => void;\r\n}) => {\r\n const [isDragging, setIsDragging] = useState<boolean>(false);\r\n const [draggedInside, setDraggedInside] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n const dragStartHandler = () => {\r\n setIsDragging(true);\r\n };\r\n\r\n const dragEndHandler = () => {\r\n setIsDragging(false);\r\n };\r\n\r\n document.body.addEventListener(\"dragstart\", dragStartHandler);\r\n document.body.addEventListener(\"dragend\", dragEndHandler);\r\n\r\n return () => {\r\n document.body.removeEventListener(\"dragstart\", dragStartHandler);\r\n document.body.removeEventListener(\"dragend\", dragEndHandler);\r\n };\r\n }, []);\r\n\r\n const onDrop = useCallback(\r\n (e: DragEvent<HTMLDivElement>) => {\r\n setDraggedInside(false);\r\n if (e.dataTransfer.files.length === 0) {\r\n return;\r\n }\r\n\r\n const fileList = e.dataTransfer.files;\r\n\r\n const files: File[] = [];\r\n\r\n for (let i = 0; i < fileList.length; i += 1) {\r\n const item = fileList.item(i);\r\n if (item) {\r\n files.push(item);\r\n }\r\n }\r\n\r\n if (files.some((file) => file.type.indexOf(\"image\") === -1)) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n const filteredFiles = files.filter((f) => f.type.indexOf(\"image\") !== -1);\r\n\r\n const file = filteredFiles.length > 0 ? filteredFiles[0] : undefined;\r\n\r\n if (file) {\r\n uploader(file);\r\n }\r\n },\r\n [uploader]\r\n );\r\n\r\n const onDragEnter = () => {\r\n setDraggedInside(true);\r\n };\r\n\r\n const onDragLeave = () => {\r\n setDraggedInside(false);\r\n };\r\n\r\n return { isDragging, draggedInside, onDragEnter, onDragLeave, onDrop };\r\n};\r\n"],"names":["useCallback","useEffect","useRef","useState","API","useUploader","onUpload","loading","setLoading","uploadFile","url","uploadImage","errPayload","error","response","data","console","log","useFileUpload","fileInput","handleUploadClick","current","click","ref","useDropZone","uploader","isDragging","setIsDragging","draggedInside","setDraggedInside","dragStartHandler","dragEndHandler","document","body","addEventListener","removeEventListener","onDrop","e","dataTransfer","files","length","fileList","i","item","push","some","file","type","indexOf","preventDefault","filteredFiles","filter","f","undefined","onDragEnter","onDragLeave"],"mappings":"AAAA,SAAoBA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AAC5E,OAAOC,SAAS,sBAAsB;AAEtC,OAAO,MAAMC,cAAc,CAAC,EAC1BC,QAAQ,EAGT;IACC,MAAM,CAACC,SAASC,WAAW,GAAGL,SAAS;IAEvC,MAAMM,aAAaT,YAAY;QAC7BQ,WAAW;QACX,IAAI;YACF,MAAME,MAAM,MAAMN,IAAIO,WAAW;YAEjCL,SAASI;QACX,EAAE,OAAOE,YAAiB;YACxB,MAAMC,QAAQD,YAAYE,UAAUC,MAAMF,SAAS;YACnD,eAAe;YACfG,QAAQC,GAAG,CAAC,SAASJ;QACvB;QACAL,WAAW;IACb,GAAG;QAACF;KAAS;IAEb,OAAO;QAAEC;QAASE;IAAW;AAC/B,EAAE;AAEF,OAAO,MAAMS,gBAAgB;IAC3B,MAAMC,YAAYjB,OAAyB;IAE3C,MAAMkB,oBAAoBpB,YAAY;QACpCmB,UAAUE,OAAO,EAAEC;IACrB,GAAG,EAAE;IAEL,OAAO;QAAEC,KAAKJ;QAAWC;IAAkB;AAC7C,EAAE;AAEF,OAAO,MAAMI,cAAc,CAAC,EAC1BC,QAAQ,EAGT;IACC,MAAM,CAACC,YAAYC,cAAc,GAAGxB,SAAkB;IACtD,MAAM,CAACyB,eAAeC,iBAAiB,GAAG1B,SAAkB;IAE5DF,UAAU;QACR,MAAM6B,mBAAmB;YACvBH,cAAc;QAChB;QAEA,MAAMI,iBAAiB;YACrBJ,cAAc;QAChB;QAEAK,SAASC,IAAI,CAACC,gBAAgB,CAAC,aAAaJ;QAC5CE,SAASC,IAAI,CAACC,gBAAgB,CAAC,WAAWH;QAE1C,OAAO;YACLC,SAASC,IAAI,CAACE,mBAAmB,CAAC,aAAaL;YAC/CE,SAASC,IAAI,CAACE,mBAAmB,CAAC,WAAWJ;QAC/C;IACF,GAAG,EAAE;IAEL,MAAMK,SAASpC,YACb,CAACqC;QACCR,iBAAiB;QACjB,IAAIQ,EAAEC,YAAY,CAACC,KAAK,CAACC,MAAM,KAAK,GAAG;YACrC;QACF;QAEA,MAAMC,WAAWJ,EAAEC,YAAY,CAACC,KAAK;QAErC,MAAMA,QAAgB,EAAE;QAExB,IAAK,IAAIG,IAAI,GAAGA,IAAID,SAASD,MAAM,EAAEE,KAAK,EAAG;YAC3C,MAAMC,OAAOF,SAASE,IAAI,CAACD;YAC3B,IAAIC,MAAM;gBACRJ,MAAMK,IAAI,CAACD;YACb;QACF;QAEA,IAAIJ,MAAMM,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,CAACC,OAAO,CAAC,aAAa,CAAC,IAAI;YAC3D;QACF;QAEAX,EAAEY,cAAc;QAEhB,MAAMC,gBAAgBX,MAAMY,MAAM,CAAC,CAACC,IAAMA,EAAEL,IAAI,CAACC,OAAO,CAAC,aAAa,CAAC;QAEvE,MAAMF,OAAOI,cAAcV,MAAM,GAAG,IAAIU,aAAa,CAAC,EAAE,GAAGG;QAE3D,IAAIP,MAAM;YACRrB,SAASqB;QACX;IACF,GACA;QAACrB;KAAS;IAGZ,MAAM6B,cAAc;QAClBzB,iBAAiB;IACnB;IAEA,MAAM0B,cAAc;QAClB1B,iBAAiB;IACnB;IAEA,OAAO;QAAEH;QAAYE;QAAe0B;QAAaC;QAAanB;IAAO;AACvE,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/index.tsx"],"sourcesContent":["export * from \"./ImageUpload.js\";\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/index.tsx"],"sourcesContent":["export * from \"./ImageUpload.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.tsx"],"sourcesContent":["\"use client\";\n\n// import { CustomRelationShipComponent } from '@/components/CustomRelationshipComponent'\n// import { PayloadAsyncSelect } from '@/components/PayloadAsyncSelect'\nimport { Button } from \"@payloadcms/ui/elements/Button\";\nimport { useCallback, useState } from \"react\";\n\nconst limit = 10;\nexport const ContentRelationship = ({\n setRelationship,\n cancelSelection,\n}: {\n type?: string;\n relationId?: string;\n cancelSelection: () => void;\n setRelationship: ({\n id,\n type,\n thumbnail,\n title,\n url,\n }: {\n id: string;\n type: string;\n thumbnail: string;\n title: string;\n url: string;\n }) => void;\n}) => {\n const [optionType, setOptionType] = useState(\"articles\");\n const [relationOption, setRelationOption] = useState<any>(null);\n const opts = [\n {\n label: \"Article\",\n value: \"articles\",\n },\n {\n label: \"Video\",\n value: \"video\",\n },\n {\n label: \"Audio\",\n value: \"audios\",\n },\n // {\n // label: 'Media',\n // value: 'media',\n // },\n ];\n\n const fetchContentTypes = useCallback(\n async (search: any, loadedOptions: any, { page }: any) => {\n try {\n // Perform your API call with the endpoint and inputValue\n\n return {\n options: opts,\n hasMore: opts?.length === limit,\n additional: {\n page: page + 1,\n },\n };\n } catch (error) {\n // console.error('Error fetching data:', error)\n }\n },\n []\n );\n return (\n <div className=\"w-full min-w-[300px] \">\n {/* <PayloadAsyncSelect\n fetchData={fetchContentTypes as any}\n handleChange={(val: string) => {\n setOptionType(val);\n }}\n defaultValue={opts?.find((option) => {\n return option.value === optionType;\n })}\n cacheOptions={null}\n /> */}\n\n {/* <CustomRelationShipComponent\n label={`${\n opts?.find((option) => {\n return option.value === optionType\n })?.label\n } Content`}\n collection={optionType}\n key={optionType}\n value={relationOption?.id ?? null}\n handleChange={(val: any) => {\n setRelationOption(val)\n }}\n handleInitialLoad={(val: any) => {\n setRelationOption(val)\n }}\n /> */}\n\n <div>\n <Button\n onClick={() => {\n let url = \"\";\n const topic = relationOption?.topics?.[0]?.slug ?? \"\";\n switch (optionType) {\n case \"articles\":\n url = `/${topic}/${relationOption?.slug}`;\n break;\n case \"video\":\n url = `/video/${relationOption?.slug}`;\n\n break;\n case \"audios\":\n url = `/audio/${relationOption?.slug}`;\n break;\n }\n setRelationship({\n id: relationOption?.id,\n type: optionType,\n thumbnail: relationOption?.thumbnail?.url,\n title: relationOption?.title,\n url: url,\n });\n }}\n >\n Save\n </Button>\n\n {/* <Button\n onClick={() => {\n cancelSelection()\n }}\n >\n Cancel\n </Button> */}\n </div>\n </div>\n );\n};\n"],"names":["Button","useCallback","useState","limit","ContentRelationship","setRelationship","cancelSelection","optionType","setOptionType","relationOption","setRelationOption","opts","label","value","fetchContentTypes","search","loadedOptions","page","options","hasMore","length","additional","error","div","className","onClick","url","topic","topics","slug","id","type","thumbnail","title"],"mappings":"AAAA;;AAEA,yFAAyF;AACzF,uEAAuE;AACvE,SAASA,MAAM,QAAQ,iCAAiC;AACxD,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAE9C,MAAMC,QAAQ;AACd,OAAO,MAAMC,sBAAsB,CAAC,EAClCC,eAAe,EACfC,eAAe,EAkBhB;IACC,MAAM,CAACC,YAAYC,cAAc,GAAGN,SAAS;IAC7C,MAAM,CAACO,gBAAgBC,kBAAkB,GAAGR,SAAc;IAC1D,MAAMS,OAAO;QACX;YACEC,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;KAKD;IAED,MAAMC,oBAAoBb,YACxB,OAAOc,QAAaC,eAAoB,EAAEC,IAAI,EAAO;QACnD,IAAI;YACF,yDAAyD;YAEzD,OAAO;gBACLC,SAASP;gBACTQ,SAASR,MAAMS,WAAWjB;gBAC1BkB,YAAY;oBACVJ,MAAMA,OAAO;gBACf;YACF;QACF,EAAE,OAAOK,OAAO;QACd,+CAA+C;QACjD;IACF,GACA,EAAE;IAEJ,qBACE,KAACC;QAAIC,WAAU;kBA6Bb,cAAA,KAACD;sBACC,cAAA,KAACvB;gBACCyB,SAAS;oBACP,IAAIC,MAAM;oBACV,MAAMC,QAAQlB,gBAAgBmB,QAAQ,CAAC,EAAE,EAAEC,QAAQ;oBACnD,OAAQtB;wBACN,KAAK;4BACHmB,MAAM,CAAC,CAAC,EAAEC,MAAM,CAAC,EAAElB,gBAAgBoB,MAAM;4BACzC;wBACF,KAAK;4BACHH,MAAM,CAAC,OAAO,EAAEjB,gBAAgBoB,MAAM;4BAEtC;wBACF,KAAK;4BACHH,MAAM,CAAC,OAAO,EAAEjB,gBAAgBoB,MAAM;4BACtC;oBACJ;oBACAxB,gBAAgB;wBACdyB,IAAIrB,gBAAgBqB;wBACpBC,MAAMxB;wBACNyB,WAAWvB,gBAAgBuB,WAAWN;wBACtCO,OAAOxB,gBAAgBwB;wBACvBP,KAAKA;oBACP;gBACF;0BACD;;;;AAcT,EAAE"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.tsx"],"sourcesContent":["\"use client\";\r\n\r\n// import { CustomRelationShipComponent } from '@/components/CustomRelationshipComponent'\r\n// import { PayloadAsyncSelect } from '@/components/PayloadAsyncSelect'\r\nimport { Button } from \"@payloadcms/ui/elements/Button\";\r\nimport { useCallback, useState } from \"react\";\r\n\r\nconst limit = 10;\r\nexport const ContentRelationship = ({\r\n setRelationship,\r\n cancelSelection,\r\n}: {\r\n type?: string;\r\n relationId?: string;\r\n cancelSelection: () => void;\r\n setRelationship: ({\r\n id,\r\n type,\r\n thumbnail,\r\n title,\r\n url,\r\n }: {\r\n id: string;\r\n type: string;\r\n thumbnail: string;\r\n title: string;\r\n url: string;\r\n }) => void;\r\n}) => {\r\n const [optionType, setOptionType] = useState(\"articles\");\r\n const [relationOption, setRelationOption] = useState<any>(null);\r\n const opts = [\r\n {\r\n label: \"Article\",\r\n value: \"articles\",\r\n },\r\n {\r\n label: \"Video\",\r\n value: \"video\",\r\n },\r\n {\r\n label: \"Audio\",\r\n value: \"audios\",\r\n },\r\n // {\r\n // label: 'Media',\r\n // value: 'media',\r\n // },\r\n ];\r\n\r\n const fetchContentTypes = useCallback(\r\n async (search: any, loadedOptions: any, { page }: any) => {\r\n try {\r\n // Perform your API call with the endpoint and inputValue\r\n\r\n return {\r\n options: opts,\r\n hasMore: opts?.length === limit,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n } catch (error) {\r\n // console.error('Error fetching data:', error)\r\n }\r\n },\r\n []\r\n );\r\n return (\r\n <div className=\"w-full min-w-[300px] \">\r\n {/* <PayloadAsyncSelect\r\n fetchData={fetchContentTypes as any}\r\n handleChange={(val: string) => {\r\n setOptionType(val);\r\n }}\r\n defaultValue={opts?.find((option) => {\r\n return option.value === optionType;\r\n })}\r\n cacheOptions={null}\r\n /> */}\r\n\r\n {/* <CustomRelationShipComponent\r\n label={`${\r\n opts?.find((option) => {\r\n return option.value === optionType\r\n })?.label\r\n } Content`}\r\n collection={optionType}\r\n key={optionType}\r\n value={relationOption?.id ?? null}\r\n handleChange={(val: any) => {\r\n setRelationOption(val)\r\n }}\r\n handleInitialLoad={(val: any) => {\r\n setRelationOption(val)\r\n }}\r\n /> */}\r\n\r\n <div>\r\n <Button\r\n onClick={() => {\r\n let url = \"\";\r\n const topic = relationOption?.topics?.[0]?.slug ?? \"\";\r\n switch (optionType) {\r\n case \"articles\":\r\n url = `/${topic}/${relationOption?.slug}`;\r\n break;\r\n case \"video\":\r\n url = `/video/${relationOption?.slug}`;\r\n\r\n break;\r\n case \"audios\":\r\n url = `/audio/${relationOption?.slug}`;\r\n break;\r\n }\r\n setRelationship({\r\n id: relationOption?.id,\r\n type: optionType,\r\n thumbnail: relationOption?.thumbnail?.url,\r\n title: relationOption?.title,\r\n url: url,\r\n });\r\n }}\r\n >\r\n Save\r\n </Button>\r\n\r\n {/* <Button\r\n onClick={() => {\r\n cancelSelection()\r\n }}\r\n >\r\n Cancel\r\n </Button> */}\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["Button","useCallback","useState","limit","ContentRelationship","setRelationship","cancelSelection","optionType","setOptionType","relationOption","setRelationOption","opts","label","value","fetchContentTypes","search","loadedOptions","page","options","hasMore","length","additional","error","div","className","onClick","url","topic","topics","slug","id","type","thumbnail","title"],"mappings":"AAAA;;AAEA,yFAAyF;AACzF,uEAAuE;AACvE,SAASA,MAAM,QAAQ,iCAAiC;AACxD,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAE9C,MAAMC,QAAQ;AACd,OAAO,MAAMC,sBAAsB,CAAC,EAClCC,eAAe,EACfC,eAAe,EAkBhB;IACC,MAAM,CAACC,YAAYC,cAAc,GAAGN,SAAS;IAC7C,MAAM,CAACO,gBAAgBC,kBAAkB,GAAGR,SAAc;IAC1D,MAAMS,OAAO;QACX;YACEC,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;KAKD;IAED,MAAMC,oBAAoBb,YACxB,OAAOc,QAAaC,eAAoB,EAAEC,IAAI,EAAO;QACnD,IAAI;YACF,yDAAyD;YAEzD,OAAO;gBACLC,SAASP;gBACTQ,SAASR,MAAMS,WAAWjB;gBAC1BkB,YAAY;oBACVJ,MAAMA,OAAO;gBACf;YACF;QACF,EAAE,OAAOK,OAAO;QACd,+CAA+C;QACjD;IACF,GACA,EAAE;IAEJ,qBACE,KAACC;QAAIC,WAAU;kBA6Bb,cAAA,KAACD;sBACC,cAAA,KAACvB;gBACCyB,SAAS;oBACP,IAAIC,MAAM;oBACV,MAAMC,QAAQlB,gBAAgBmB,QAAQ,CAAC,EAAE,EAAEC,QAAQ;oBACnD,OAAQtB;wBACN,KAAK;4BACHmB,MAAM,CAAC,CAAC,EAAEC,MAAM,CAAC,EAAElB,gBAAgBoB,MAAM;4BACzC;wBACF,KAAK;4BACHH,MAAM,CAAC,OAAO,EAAEjB,gBAAgBoB,MAAM;4BAEtC;wBACF,KAAK;4BACHH,MAAM,CAAC,OAAO,EAAEjB,gBAAgBoB,MAAM;4BACtC;oBACJ;oBACAxB,gBAAgB;wBACdyB,IAAIrB,gBAAgBqB;wBACpBC,MAAMxB;wBACNyB,WAAWvB,gBAAgBuB,WAAWN;wBACtCO,OAAOxB,gBAAgBwB;wBACvBP,KAAKA;oBACP;gBACF;0BACD;;;;AAcT,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/InsideLinksComponent.tsx"],"sourcesContent":["import { ExternalLinkIcon } from \"@payloadcms/ui/graphics/ExternalLink\";\nimport { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport i18next from \"i18next\";\nimport { cn } from \"../../lib/utils/index.js\";\n\nexport default ({ className, ...props }: any) => {\n return (\n <NodeViewWrapper\n className={cn(\"react-component\", className)}\n onClick={() => {\n props.editor.commands.setNodeSelection(props.getPos());\n }}\n >\n <NodeViewContent contentEditable=\"false\" className=\"socialMediaContainer\">\n {props?.node.type.spec.draggable ? (\n <div draggable=\"true\" data-drag-handle=\"\" style={{ width: \"100%\" }}>\n {/*@ts-ignore*/}\n {(!props?.node?.attrs?.id ?? \"\") ? (\n <div\n className=\"w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard\"\n draggable=\"true\"\n data-drag-handle=\"\"\n >\n <ExternalLinkIcon className=\"h-6 w-6\" />\n\n <p\n className=\"w-full flex items-center justify-start mt-0\"\n style={{\n marginTop: 0,\n }}\n >\n Add Internal Content Links\n {/* {text} */}\n </p>\n </div>\n ) : (\n <div className=\"flex justify-center items-center w-full gap-x-6\">\n <div className=\"flex justify-center items-center\">\n <div className=\"w-[32px] h-[64px] bg-blue-400\"></div>\n <img\n src={props?.node?.attrs?.thumbnail ?? \"\"}\n width={212}\n height={120}\n alt={\"\"}\n className=\"-ml-6 !w-[212px] !h-[120px] object-cover\"\n />\n </div>\n <div className=\"flex flex-col justidy-start items-start font-trt gap-y-2 \">\n <a\n className=\"text-black dark:text-white text-lg capitalize w-full\"\n // href={`https://test-payload.trtglobal.tech/en${props?.node?.attrs?.url}` ?? ''}\n //@ts-ignore\n // dir={isRTL(\"بیشتر بخوانید\" ?? \"\") ? \"rtl\" : \"ltr\"}\n dir={i18next.dir()}\n >\n بیشتر بخوانید\n </a>\n <h3\n className=\"text-2xl font-bold !mt-0 w-full\"\n dir={i18next.dir()}\n >\n {props?.node?.attrs?.title}\n </h3>\n </div>\n </div>\n )}\n </div>\n ) : null}\n </NodeViewContent>\n </NodeViewWrapper>\n );\n};\n"],"names":["ExternalLinkIcon","NodeViewContent","NodeViewWrapper","i18next","cn","className","props","onClick","editor","commands","setNodeSelection","getPos","contentEditable","node","type","spec","draggable","div","data-drag-handle","style","width","attrs","id","p","marginTop","img","src","thumbnail","height","alt","a","dir","h3","title"],"mappings":";AAAA,SAASA,gBAAgB,QAAQ,uCAAuC;AACxE,SAASC,eAAe,EAAEC,eAAe,QAAQ,gBAAgB;AACjE,OAAOC,aAAa,UAAU;AAC9B,SAASC,EAAE,QAAQ,2BAA2B;AAE9C,eAAe,CAAA,CAAC,EAAEC,SAAS,EAAE,GAAGC,OAAY;IAC1C,qBACE,KAACJ;QACCG,WAAWD,GAAG,mBAAmBC;QACjCE,SAAS;YACPD,MAAME,MAAM,CAACC,QAAQ,CAACC,gBAAgB,CAACJ,MAAMK,MAAM;QACrD;kBAEA,cAAA,KAACV;YAAgBW,iBAAgB;YAAQP,WAAU;sBAChDC,OAAOO,KAAKC,KAAKC,KAAKC,0BACrB,KAACC;gBAAID,WAAU;gBAAOE,oBAAiB;gBAAGC,OAAO;oBAAEC,OAAO;gBAAO;0BAE9D,AAAC,CAACd,OAAOO,MAAMQ,OAAOC,MAAM,mBAC3B,MAACL;oBACCZ,WAAU;oBACVW,WAAU;oBACVE,oBAAiB;;sCAEjB,KAAClB;4BAAiBK,WAAU;;sCAE5B,KAACkB;4BACClB,WAAU;4BACVc,OAAO;gCACLK,WAAW;4BACb;sCACD;;;mCAMH,MAACP;oBAAIZ,WAAU;;sCACb,MAACY;4BAAIZ,WAAU;;8CACb,KAACY;oCAAIZ,WAAU;;8CACf,KAACoB;oCACCC,KAAKpB,OAAOO,MAAMQ,OAAOM,aAAa;oCACtCP,OAAO;oCACPQ,QAAQ;oCACRC,KAAK;oCACLxB,WAAU;;;;sCAGd,MAACY;4BAAIZ,WAAU;;8CACb,KAACyB;oCACCzB,WAAU;oCACV,kFAAkF;oCAClF,YAAY;oCACZ,qDAAqD;oCACrD0B,KAAK5B,QAAQ4B,GAAG;8CACjB;;8CAGD,KAACC;oCACC3B,WAAU;oCACV0B,KAAK5B,QAAQ4B,GAAG;8CAEfzB,OAAOO,MAAMQ,OAAOY;;;;;;iBAM7B;;;AAIZ,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/InsideLinksComponent.tsx"],"sourcesContent":["import { ExternalLinkIcon } from \"@payloadcms/ui/graphics/ExternalLink\";\r\nimport { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\r\nimport i18next from \"i18next\";\r\nimport { cn } from \"../../lib/utils/index.js\";\r\n\r\nexport default ({ className, ...props }: any) => {\r\n return (\r\n <NodeViewWrapper\r\n className={cn(\"react-component\", className)}\r\n onClick={() => {\r\n props.editor.commands.setNodeSelection(props.getPos());\r\n }}\r\n >\r\n <NodeViewContent contentEditable=\"false\" className=\"socialMediaContainer\">\r\n {props?.node.type.spec.draggable ? (\r\n <div draggable=\"true\" data-drag-handle=\"\" style={{ width: \"100%\" }}>\r\n {/*@ts-ignore*/}\r\n {(!props?.node?.attrs?.id ?? \"\") ? (\r\n <div\r\n className=\"w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard\"\r\n draggable=\"true\"\r\n data-drag-handle=\"\"\r\n >\r\n <ExternalLinkIcon className=\"h-6 w-6\" />\r\n\r\n <p\r\n className=\"w-full flex items-center justify-start mt-0\"\r\n style={{\r\n marginTop: 0,\r\n }}\r\n >\r\n Add Internal Content Links\r\n {/* {text} */}\r\n </p>\r\n </div>\r\n ) : (\r\n <div className=\"flex justify-center items-center w-full gap-x-6\">\r\n <div className=\"flex justify-center items-center\">\r\n <div className=\"w-[32px] h-[64px] bg-blue-400\"></div>\r\n <img\r\n src={props?.node?.attrs?.thumbnail ?? \"\"}\r\n width={212}\r\n height={120}\r\n alt={\"\"}\r\n className=\"-ml-6 !w-[212px] !h-[120px] object-cover\"\r\n />\r\n </div>\r\n <div className=\"flex flex-col justidy-start items-start font-trt gap-y-2 \">\r\n <a\r\n className=\"text-black dark:text-white text-lg capitalize w-full\"\r\n // href={`https://test-payload.trtglobal.tech/en${props?.node?.attrs?.url}` ?? ''}\r\n //@ts-ignore\r\n // dir={isRTL(\"بیشتر بخوانید\" ?? \"\") ? \"rtl\" : \"ltr\"}\r\n dir={i18next.dir()}\r\n >\r\n بیشتر بخوانید\r\n </a>\r\n <h3\r\n className=\"text-2xl font-bold !mt-0 w-full\"\r\n dir={i18next.dir()}\r\n >\r\n {props?.node?.attrs?.title}\r\n </h3>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ) : null}\r\n </NodeViewContent>\r\n </NodeViewWrapper>\r\n );\r\n};\r\n"],"names":["ExternalLinkIcon","NodeViewContent","NodeViewWrapper","i18next","cn","className","props","onClick","editor","commands","setNodeSelection","getPos","contentEditable","node","type","spec","draggable","div","data-drag-handle","style","width","attrs","id","p","marginTop","img","src","thumbnail","height","alt","a","dir","h3","title"],"mappings":";AAAA,SAASA,gBAAgB,QAAQ,uCAAuC;AACxE,SAASC,eAAe,EAAEC,eAAe,QAAQ,gBAAgB;AACjE,OAAOC,aAAa,UAAU;AAC9B,SAASC,EAAE,QAAQ,2BAA2B;AAE9C,eAAe,CAAA,CAAC,EAAEC,SAAS,EAAE,GAAGC,OAAY;IAC1C,qBACE,KAACJ;QACCG,WAAWD,GAAG,mBAAmBC;QACjCE,SAAS;YACPD,MAAME,MAAM,CAACC,QAAQ,CAACC,gBAAgB,CAACJ,MAAMK,MAAM;QACrD;kBAEA,cAAA,KAACV;YAAgBW,iBAAgB;YAAQP,WAAU;sBAChDC,OAAOO,KAAKC,KAAKC,KAAKC,0BACrB,KAACC;gBAAID,WAAU;gBAAOE,oBAAiB;gBAAGC,OAAO;oBAAEC,OAAO;gBAAO;0BAE9D,AAAC,CAACd,OAAOO,MAAMQ,OAAOC,MAAM,mBAC3B,MAACL;oBACCZ,WAAU;oBACVW,WAAU;oBACVE,oBAAiB;;sCAEjB,KAAClB;4BAAiBK,WAAU;;sCAE5B,KAACkB;4BACClB,WAAU;4BACVc,OAAO;gCACLK,WAAW;4BACb;sCACD;;;mCAMH,MAACP;oBAAIZ,WAAU;;sCACb,MAACY;4BAAIZ,WAAU;;8CACb,KAACY;oCAAIZ,WAAU;;8CACf,KAACoB;oCACCC,KAAKpB,OAAOO,MAAMQ,OAAOM,aAAa;oCACtCP,OAAO;oCACPQ,QAAQ;oCACRC,KAAK;oCACLxB,WAAU;;;;sCAGd,MAACY;4BAAIZ,WAAU;;8CACb,KAACyB;oCACCzB,WAAU;oCACV,kFAAkF;oCAClF,YAAY;oCACZ,qDAAqD;oCACrD0B,KAAK5B,QAAQ4B,GAAG;8CACjB;;8CAGD,KAACC;oCACC3B,WAAU;oCACV0B,KAAK5B,QAAQ4B,GAAG;8CAEfzB,OAAOO,MAAMQ,OAAOY;;;;;;iBAM7B;;;AAIZ,CAAA,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/index.ts"],"sourcesContent":["export * from \"./insideLinks.js\";\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/index.ts"],"sourcesContent":["export * from \"./insideLinks.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/insideLinks.ts"],"sourcesContent":["declare module '@tiptap/core' {\n interface Commands<ReturnType> {\n insideLinks: {\n /**\n * Add an image\n */\n\n insertInsideLinks: ({\n thumbnail,\n title,\n id,\n type,\n url,\n }: {\n thumbnail?: string\n title?: string\n id?: string\n type?: string\n url?: string\n }) => ReturnType\n }\n }\n}\n\nimport { Node, mergeAttributes } from '@tiptap/core'\nimport { ReactNodeViewRenderer } from '@tiptap/react'\nimport InsideLinksComponent from './InsideLinksComponent.js'\n\nexport const InsideLinks = Node.create({\n name: 'insideLinks',\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=\"social-media-embed\"]',\n },\n ]\n },\n\n addAttributes() {\n return {\n id: {\n default: null,\n },\n url: {\n default: null,\n },\n title: {\n default: '',\n },\n thumbnail: {\n default: '',\n },\n draggable: {\n default: true,\n },\n type: { 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\": \"insideLinks\" }),\n // 0,\n // ];\n // },\n // parseHTML() {\n // return [\n // {\n // tag: 'div[data-type=\"social-media-embed\"]',\n // },\n // ];\n // },\n\n renderHTML({ node, HTMLAttributes }) {\n const { id, url, title, thumbnail, draggable } = node.attrs\n\n if (!id) {\n return [\n 'div',\n mergeAttributes(HTMLAttributes, {\n 'data-type': 'social-media-embed',\n class: 'socialMediaContainer',\n }),\n [\n 'div',\n {\n class:\n 'w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard',\n draggable: draggable ? 'true' : 'false',\n 'data-drag-handle': '',\n },\n [\n 'svg',\n {\n class: 'h-6 w-6',\n // SVG content for ExternalLinkIcon\n },\n ],\n [\n 'p',\n {\n class: 'w-full flex items-center justify-start mt-0',\n style: 'margin-top: 0;',\n },\n 'Add Internal Content Links',\n ],\n ],\n ]\n }\n\n return [\n 'div',\n mergeAttributes(HTMLAttributes, {\n 'data-type': 'social-media-embed',\n class: 'socialMediaContainer',\n }),\n [\n 'div',\n {\n class: 'flex justify-center items-center w-full gap-x-6',\n },\n [\n 'div',\n {\n class: 'flex justify-center items-center',\n },\n [\n 'div',\n {\n class: 'w-[32px] h-[64px] bg-blue-400',\n },\n ],\n [\n 'img',\n {\n src: thumbnail,\n width: '212',\n height: '120',\n alt: '',\n class: '-ml-6 !w-[212px] !h-[120px] object-cover',\n },\n ],\n ],\n [\n 'div',\n {\n class: 'flex flex-col justify-start items-start font-trt gap-y-2',\n },\n [\n 'a',\n {\n class: 'text-black dark:text-white text-lg capitalize w-full',\n href: url,\n dir: 'ltr', // Adjust based on your i18n setup\n },\n 'Read More', // Adjust based on your i18n setup\n ],\n [\n 'h3',\n {\n class: 'text-2xl font-bold !mt-0 w-full',\n dir: 'ltr', // Adjust based on your i18n setup\n },\n title,\n ],\n ],\n ],\n ]\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(InsideLinksComponent)\n },\n\n addCommands() {\n return {\n insertInsideLinks:\n ({\n thumbnail,\n title,\n id,\n type,\n url,\n }: {\n thumbnail?: string\n title?: string\n id?: string\n type?: string\n url?: string\n }) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: 'insideLinks',\n attrs: {\n thumbnail,\n title,\n id,\n type,\n url,\n },\n })\n },\n }\n },\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","InsideLinksComponent","InsideLinks","create","name","group","content","draggable","parseHTML","tag","addAttributes","id","default","url","title","thumbnail","type","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","focus","run","renderHTML","node","HTMLAttributes","attrs","class","style","src","width","height","alt","href","dir","addNodeView","addCommands","insertInsideLinks","commands","insertContent","isValidHttpUrl","string","URL","_","protocol"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/insideLinks.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n insideLinks: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertInsideLinks: ({\r\n thumbnail,\r\n title,\r\n id,\r\n type,\r\n url,\r\n }: {\r\n thumbnail?: string\r\n title?: string\r\n id?: string\r\n type?: string\r\n url?: string\r\n }) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport InsideLinksComponent from './InsideLinksComponent.js'\r\n\r\nexport const InsideLinks = Node.create({\r\n name: 'insideLinks',\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=\"social-media-embed\"]',\r\n },\r\n ]\r\n },\r\n\r\n addAttributes() {\r\n return {\r\n id: {\r\n default: null,\r\n },\r\n url: {\r\n default: null,\r\n },\r\n title: {\r\n default: '',\r\n },\r\n thumbnail: {\r\n default: '',\r\n },\r\n draggable: {\r\n default: true,\r\n },\r\n type: { 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\": \"insideLinks\" }),\r\n // 0,\r\n // ];\r\n // },\r\n // parseHTML() {\r\n // return [\r\n // {\r\n // tag: 'div[data-type=\"social-media-embed\"]',\r\n // },\r\n // ];\r\n // },\r\n\r\n renderHTML({ node, HTMLAttributes }) {\r\n const { id, url, title, thumbnail, draggable } = node.attrs\r\n\r\n if (!id) {\r\n return [\r\n 'div',\r\n mergeAttributes(HTMLAttributes, {\r\n 'data-type': 'social-media-embed',\r\n class: 'socialMediaContainer',\r\n }),\r\n [\r\n 'div',\r\n {\r\n class:\r\n 'w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard',\r\n draggable: draggable ? 'true' : 'false',\r\n 'data-drag-handle': '',\r\n },\r\n [\r\n 'svg',\r\n {\r\n class: 'h-6 w-6',\r\n // SVG content for ExternalLinkIcon\r\n },\r\n ],\r\n [\r\n 'p',\r\n {\r\n class: 'w-full flex items-center justify-start mt-0',\r\n style: 'margin-top: 0;',\r\n },\r\n 'Add Internal Content Links',\r\n ],\r\n ],\r\n ]\r\n }\r\n\r\n return [\r\n 'div',\r\n mergeAttributes(HTMLAttributes, {\r\n 'data-type': 'social-media-embed',\r\n class: 'socialMediaContainer',\r\n }),\r\n [\r\n 'div',\r\n {\r\n class: 'flex justify-center items-center w-full gap-x-6',\r\n },\r\n [\r\n 'div',\r\n {\r\n class: 'flex justify-center items-center',\r\n },\r\n [\r\n 'div',\r\n {\r\n class: 'w-[32px] h-[64px] bg-blue-400',\r\n },\r\n ],\r\n [\r\n 'img',\r\n {\r\n src: thumbnail,\r\n width: '212',\r\n height: '120',\r\n alt: '',\r\n class: '-ml-6 !w-[212px] !h-[120px] object-cover',\r\n },\r\n ],\r\n ],\r\n [\r\n 'div',\r\n {\r\n class: 'flex flex-col justify-start items-start font-trt gap-y-2',\r\n },\r\n [\r\n 'a',\r\n {\r\n class: 'text-black dark:text-white text-lg capitalize w-full',\r\n href: url,\r\n dir: 'ltr', // Adjust based on your i18n setup\r\n },\r\n 'Read More', // Adjust based on your i18n setup\r\n ],\r\n [\r\n 'h3',\r\n {\r\n class: 'text-2xl font-bold !mt-0 w-full',\r\n dir: 'ltr', // Adjust based on your i18n setup\r\n },\r\n title,\r\n ],\r\n ],\r\n ],\r\n ]\r\n },\r\n\r\n addNodeView() {\r\n return ReactNodeViewRenderer(InsideLinksComponent)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertInsideLinks:\r\n ({\r\n thumbnail,\r\n title,\r\n id,\r\n type,\r\n url,\r\n }: {\r\n thumbnail?: string\r\n title?: string\r\n id?: string\r\n type?: string\r\n url?: string\r\n }) =>\r\n ({ commands, state }) => {\r\n return commands.insertContent({\r\n type: 'insideLinks',\r\n attrs: {\r\n thumbnail,\r\n title,\r\n id,\r\n type,\r\n url,\r\n },\r\n })\r\n },\r\n }\r\n },\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","InsideLinksComponent","InsideLinks","create","name","group","content","draggable","parseHTML","tag","addAttributes","id","default","url","title","thumbnail","type","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","focus","run","renderHTML","node","HTMLAttributes","attrs","class","style","src","width","height","alt","href","dir","addNodeView","addCommands","insertInsideLinks","commands","insertContent","isValidHttpUrl","string","URL","_","protocol"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/menus/InsideLinksMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\n\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { InsideLinksEditorPanel } from \"../../../features/panels/InsideLinksEditorPanel/index.js\";\n\nexport const InsideLinksMenu = ({ editor, appendTo }: MenuProps) => {\n const shouldShow = useCallback(() => {\n const isInsideLinks = editor.isActive(\"insideLinks\");\n return isInsideLinks;\n }, [editor]);\n\n const onRelationshipSelect = useCallback(\n ({\n id,\n type,\n thumbnail,\n title,\n url,\n }: {\n id: string;\n type: string;\n thumbnail: string;\n title: string;\n url: string;\n }) => {\n editor\n .chain()\n .focus()\n .insertInsideLinks({ id, type, thumbnail, title, url })\n .run();\n },\n [editor]\n );\n\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 <p>Inside Links</p>\n <InsideLinksEditorPanel\n onRelationshipSelect={onRelationshipSelect}\n onCancel={() => {\n editor.chain().blur().run();\n }}\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 InsideLinksMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","InsideLinksEditorPanel","InsideLinksMenu","editor","appendTo","shouldShow","isInsideLinks","isActive","onRelationshipSelect","id","type","thumbnail","title","url","chain","focus","insertInsideLinks","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","p","onCancel","blur"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AAGpC,SAASC,sBAAsB,QAAQ,2DAA2D;AAElG,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC7D,MAAMC,aAAaL,YAAY;QAC7B,MAAMM,gBAAgBH,OAAOI,QAAQ,CAAC;QACtC,OAAOD;IACT,GAAG;QAACH;KAAO;IAEX,MAAMK,uBAAuBR,YAC3B,CAAC,EACCS,EAAE,EACFC,IAAI,EACJC,SAAS,EACTC,KAAK,EACLC,GAAG,EAOJ;QACCV,OACGW,KAAK,GACLC,KAAK,GACLC,iBAAiB,CAAC;YAAEP;YAAIC;YAAMC;YAAWC;YAAOC;QAAI,GACpDI,GAAG;IACR,GACA;QAACd;KAAO;IAGV,qBACE,MAACJ;QACCI,QAAQA;QACRe,WAAW,CAAC,eAAe,CAAC;QAC5Bb,YAAYA;QACZc,cAAc;YACZC,eAAe;gBAAEC,WAAW;YAAS;YACrCA,WAAW;QAIb;QACAC,aAAa;;0BAEb,KAACC;0BAAE;;0BACH,KAACtB;gBACCO,sBAAsBA;gBACtBgB,UAAU;oBACRrB,OAAOW,KAAK,GAAGW,IAAI,GAAGR,GAAG;gBAC3B;;;;AAiBR,EAAE;AAEF,eAAef,gBAAgB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/menus/InsideLinksMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport { useCallback } from \"react\";\r\n\r\nimport { MenuProps } from \"../../../features/menus/types.js\";\r\nimport { InsideLinksEditorPanel } from \"../../../features/panels/InsideLinksEditorPanel/index.js\";\r\n\r\nexport const InsideLinksMenu = ({ editor, appendTo }: MenuProps) => {\r\n const shouldShow = useCallback(() => {\r\n const isInsideLinks = editor.isActive(\"insideLinks\");\r\n return isInsideLinks;\r\n }, [editor]);\r\n\r\n const onRelationshipSelect = useCallback(\r\n ({\r\n id,\r\n type,\r\n thumbnail,\r\n title,\r\n url,\r\n }: {\r\n id: string;\r\n type: string;\r\n thumbnail: string;\r\n title: string;\r\n url: string;\r\n }) => {\r\n editor\r\n .chain()\r\n .focus()\r\n .insertInsideLinks({ id, type, thumbnail, title, url })\r\n .run();\r\n },\r\n [editor]\r\n );\r\n\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 <p>Inside Links</p>\r\n <InsideLinksEditorPanel\r\n onRelationshipSelect={onRelationshipSelect}\r\n onCancel={() => {\r\n editor.chain().blur().run();\r\n }}\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 InsideLinksMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","InsideLinksEditorPanel","InsideLinksMenu","editor","appendTo","shouldShow","isInsideLinks","isActive","onRelationshipSelect","id","type","thumbnail","title","url","chain","focus","insertInsideLinks","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","p","onCancel","blur"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AAGpC,SAASC,sBAAsB,QAAQ,2DAA2D;AAElG,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC7D,MAAMC,aAAaL,YAAY;QAC7B,MAAMM,gBAAgBH,OAAOI,QAAQ,CAAC;QACtC,OAAOD;IACT,GAAG;QAACH;KAAO;IAEX,MAAMK,uBAAuBR,YAC3B,CAAC,EACCS,EAAE,EACFC,IAAI,EACJC,SAAS,EACTC,KAAK,EACLC,GAAG,EAOJ;QACCV,OACGW,KAAK,GACLC,KAAK,GACLC,iBAAiB,CAAC;YAAEP;YAAIC;YAAMC;YAAWC;YAAOC;QAAI,GACpDI,GAAG;IACR,GACA;QAACd;KAAO;IAGV,qBACE,MAACJ;QACCI,QAAQA;QACRe,WAAW,CAAC,eAAe,CAAC;QAC5Bb,YAAYA;QACZc,cAAc;YACZC,eAAe;gBAAEC,WAAW;YAAS;YACrCA,WAAW;QAIb;QACAC,aAAa;;0BAEb,KAACC;0BAAE;;0BACH,KAACtB;gBACCO,sBAAsBA;gBACtBgB,UAAU;oBACRrB,OAAOW,KAAK,GAAGW,IAAI,GAAGR,GAAG;gBAC3B;;;;AAiBR,EAAE;AAEF,eAAef,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/menus/index.ts"],"sourcesContent":["export * from \"./InsideLinksMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/menus/index.ts"],"sourcesContent":["export * from \"./InsideLinksMenu.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Link/Link.ts"],"sourcesContent":["import { PasteRule, mergeAttributes } from '@tiptap/core'\nimport TiptapLink from '@tiptap/extension-link'\nimport { Plugin } from '@tiptap/pm/state'\nimport { EditorView } from '@tiptap/pm/view'\n\nexport const Link = TiptapLink.extend({\n inclusive: false,\n\n parseHTML() {\n return [{ tag: 'a[href]:not([data-type=\"button\"]):not([href *= \"javascript:\" i])' }]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['a', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { class: 'link' }), 0]\n },\n\n addPasteRules() {\n const twitterRegex = /^https:\\/\\/(twitter|x)\\.com\\/([a-zA-Z0-9_-]+)\\/status\\/(\\d+)/g\n const instagramRegex = /^https:\\/\\/www\\.instagram\\.com\\/p\\/([A-Za-z0-9_-]+)/g\n const instagramReelRegex = /^https:\\/\\/www\\.instagram\\.com\\/reel\\/([A-Za-z0-9_-]+)/g\n const youtubeRegex =\n /^((?:https?:)?\\/\\/)?((?:www|m)\\.)?((?:youtube(-nocookie)?\\.com|youtu.be))(\\/(?:[\\w\\-]+\\?v=|embed\\/|live\\/|v\\/)?)([\\w\\-]+)(\\S+)?/g\n const facebookRegex =\n /^https:\\/\\/(?:www\\.)?facebook\\.com\\/[a-zA-Z0-9.]+\\/(?:posts|photos|videos)\\/(?:[a-zA-Z0-9.]+\\/)?(\\d+)/g\n const tiktokRegex = /^https:\\/\\/(?:www\\.)?tiktok\\.com\\/@[\\w.-]+\\/video\\/(\\d+)/g\n\n return [\n new PasteRule({\n find: twitterRegex,\n handler: ({ commands, match, state, pasteEvent, chain }) => {\n const matchUrl = match?.[0]\n chain().selectParentNode().deleteSelection().insertTwitter(matchUrl).run()\n },\n }),\n new PasteRule({\n find: instagramRegex,\n handler: ({ commands, match, state, pasteEvent, chain }) => {\n const matchUrl = match?.[0]\n chain().selectParentNode().deleteSelection().insertInstagram(matchUrl).run()\n },\n }),\n new PasteRule({\n find: instagramReelRegex,\n handler: ({ commands, match, state, pasteEvent, chain }) => {\n const matchUrl = match?.[0]\n chain().selectParentNode().deleteSelection().insertInstagram(matchUrl).run()\n },\n }),\n new PasteRule({\n find: youtubeRegex,\n handler: ({ commands, match, state, pasteEvent, chain }) => {\n const matchUrl = match?.[0]\n chain().selectParentNode().deleteSelection().insertYoutube(matchUrl).run()\n },\n }),\n new PasteRule({\n find: facebookRegex,\n handler: ({ commands, match, state, pasteEvent, chain }) => {\n const matchUrl = match?.[0]\n chain().selectParentNode().deleteSelection().insertFacebook(matchUrl).run()\n },\n }),\n new PasteRule({\n find: tiktokRegex,\n handler: ({ commands, match, state, pasteEvent, chain }) => {\n const matchUrl = match?.[0]\n chain().selectParentNode().deleteSelection().insertTiktok(matchUrl).run()\n },\n }),\n ]\n },\n addProseMirrorPlugins() {\n const { editor } = this\n\n return [\n ...(this.parent?.() || []),\n new Plugin({\n props: {\n handleKeyDown: (view: EditorView, event: KeyboardEvent) => {\n const { selection } = editor.state\n\n if (event.key === 'Escape' && selection.empty !== true) {\n editor.commands.focus(selection.to, { scrollIntoView: false })\n }\n\n return false\n },\n },\n }),\n ]\n },\n})\n\nexport default Link\n"],"names":["PasteRule","mergeAttributes","TiptapLink","Plugin","Link","extend","inclusive","parseHTML","tag","renderHTML","HTMLAttributes","options","class","addPasteRules","twitterRegex","instagramRegex","instagramReelRegex","youtubeRegex","facebookRegex","tiktokRegex","find","handler","commands","match","state","pasteEvent","chain","matchUrl","selectParentNode","deleteSelection","insertTwitter","run","insertInstagram","insertYoutube","insertFacebook","insertTiktok","addProseMirrorPlugins","editor","parent","props","handleKeyDown","view","event","selection","key","empty","focus","to","scrollIntoView"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Link/Link.ts"],"sourcesContent":["import { PasteRule, mergeAttributes } from '@tiptap/core'\r\nimport TiptapLink from '@tiptap/extension-link'\r\nimport { Plugin } from '@tiptap/pm/state'\r\nimport { EditorView } from '@tiptap/pm/view'\r\n\r\nexport const Link = TiptapLink.extend({\r\n inclusive: false,\r\n\r\n parseHTML() {\r\n return [{ tag: 'a[href]:not([data-type=\"button\"]):not([href *= \"javascript:\" i])' }]\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return ['a', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { class: 'link' }), 0]\r\n },\r\n\r\n addPasteRules() {\r\n const twitterRegex = /^https:\\/\\/(twitter|x)\\.com\\/([a-zA-Z0-9_-]+)\\/status\\/(\\d+)/g\r\n const instagramRegex = /^https:\\/\\/www\\.instagram\\.com\\/p\\/([A-Za-z0-9_-]+)/g\r\n const instagramReelRegex = /^https:\\/\\/www\\.instagram\\.com\\/reel\\/([A-Za-z0-9_-]+)/g\r\n const youtubeRegex =\r\n /^((?:https?:)?\\/\\/)?((?:www|m)\\.)?((?:youtube(-nocookie)?\\.com|youtu.be))(\\/(?:[\\w\\-]+\\?v=|embed\\/|live\\/|v\\/)?)([\\w\\-]+)(\\S+)?/g\r\n const facebookRegex =\r\n /^https:\\/\\/(?:www\\.)?facebook\\.com\\/[a-zA-Z0-9.]+\\/(?:posts|photos|videos)\\/(?:[a-zA-Z0-9.]+\\/)?(\\d+)/g\r\n const tiktokRegex = /^https:\\/\\/(?:www\\.)?tiktok\\.com\\/@[\\w.-]+\\/video\\/(\\d+)/g\r\n\r\n return [\r\n new PasteRule({\r\n find: twitterRegex,\r\n handler: ({ commands, match, state, pasteEvent, chain }) => {\r\n const matchUrl = match?.[0]\r\n chain().selectParentNode().deleteSelection().insertTwitter(matchUrl).run()\r\n },\r\n }),\r\n new PasteRule({\r\n find: instagramRegex,\r\n handler: ({ commands, match, state, pasteEvent, chain }) => {\r\n const matchUrl = match?.[0]\r\n chain().selectParentNode().deleteSelection().insertInstagram(matchUrl).run()\r\n },\r\n }),\r\n new PasteRule({\r\n find: instagramReelRegex,\r\n handler: ({ commands, match, state, pasteEvent, chain }) => {\r\n const matchUrl = match?.[0]\r\n chain().selectParentNode().deleteSelection().insertInstagram(matchUrl).run()\r\n },\r\n }),\r\n new PasteRule({\r\n find: youtubeRegex,\r\n handler: ({ commands, match, state, pasteEvent, chain }) => {\r\n const matchUrl = match?.[0]\r\n chain().selectParentNode().deleteSelection().insertYoutube(matchUrl).run()\r\n },\r\n }),\r\n new PasteRule({\r\n find: facebookRegex,\r\n handler: ({ commands, match, state, pasteEvent, chain }) => {\r\n const matchUrl = match?.[0]\r\n chain().selectParentNode().deleteSelection().insertFacebook(matchUrl).run()\r\n },\r\n }),\r\n new PasteRule({\r\n find: tiktokRegex,\r\n handler: ({ commands, match, state, pasteEvent, chain }) => {\r\n const matchUrl = match?.[0]\r\n chain().selectParentNode().deleteSelection().insertTiktok(matchUrl).run()\r\n },\r\n }),\r\n ]\r\n },\r\n addProseMirrorPlugins() {\r\n const { editor } = this\r\n\r\n return [\r\n ...(this.parent?.() || []),\r\n new Plugin({\r\n props: {\r\n handleKeyDown: (view: EditorView, event: KeyboardEvent) => {\r\n const { selection } = editor.state\r\n\r\n if (event.key === 'Escape' && selection.empty !== true) {\r\n editor.commands.focus(selection.to, { scrollIntoView: false })\r\n }\r\n\r\n return false\r\n },\r\n },\r\n }),\r\n ]\r\n },\r\n})\r\n\r\nexport default Link\r\n"],"names":["PasteRule","mergeAttributes","TiptapLink","Plugin","Link","extend","inclusive","parseHTML","tag","renderHTML","HTMLAttributes","options","class","addPasteRules","twitterRegex","instagramRegex","instagramReelRegex","youtubeRegex","facebookRegex","tiktokRegex","find","handler","commands","match","state","pasteEvent","chain","matchUrl","selectParentNode","deleteSelection","insertTwitter","run","insertInstagram","insertYoutube","insertFacebook","insertTiktok","addProseMirrorPlugins","editor","parent","props","handleKeyDown","view","event","selection","key","empty","focus","to","scrollIntoView"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Link/index.ts"],"sourcesContent":["export * from \"./Link.js\";\n"],"names":[],"mappings":"AAAA,cAAc,YAAY"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Link/index.ts"],"sourcesContent":["export * from \"./Link.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.tsx"],"sourcesContent":["import * as Popover from \"@radix-ui/react-popover\";\nimport { Link } from \"lucide-react\";\nimport { Icon } from \"../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../features/ui/Toolbar.js\";\nimport i18next from \"i18next\";\nimport { LinkPreviewEditorPanel } from \"./LinkPreviewEditorPanel.js\";\n\nexport type EditIframeLinkPopoverProps = {\n onSetLink: (src: string) => void;\n initialSrcLink: string;\n};\n\nexport const EditLinkPreviewPopover = ({\n onSetLink,\n initialSrcLink,\n}: EditIframeLinkPopoverProps) => {\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button\n type=\"button\"\n tooltip={\n i18next.t(\"setEmbedCodeOrLink\") || \"Set Embed Code / Embed Link\"\n }\n >\n <Icon icon={Link} />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content>\n <LinkPreviewEditorPanel\n onSetLink={onSetLink}\n initialSrc={initialSrcLink ?? \"\"}\n />\n </Popover.Content>\n </Popover.Root>\n );\n};\n"],"names":["Popover","Link","Icon","Toolbar","i18next","LinkPreviewEditorPanel","EditLinkPreviewPopover","onSetLink","initialSrcLink","Root","Trigger","asChild","Button","type","tooltip","t","icon","Content","initialSrc"],"mappings":";AAAA,YAAYA,aAAa,0BAA0B;AACnD,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,IAAI,QAAQ,4BAA4B;AACjD,SAASC,OAAO,QAAQ,+BAA+B;AACvD,OAAOC,aAAa,UAAU;AAC9B,SAASC,sBAAsB,QAAQ,8BAA8B;AAOrE,OAAO,MAAMC,yBAAyB,CAAC,EACrCC,SAAS,EACTC,cAAc,EACa;IAC3B,qBACE,MAACR,QAAQS,IAAI;;0BACX,KAACT,QAAQU,OAAO;gBAACC,OAAO;0BACtB,cAAA,KAACR,QAAQS,MAAM;oBACbC,MAAK;oBACLC,SACEV,QAAQW,CAAC,CAAC,yBAAyB;8BAGrC,cAAA,KAACb;wBAAKc,MAAMf;;;;0BAGhB,KAACD,QAAQiB,OAAO;0BACd,cAAA,KAACZ;oBACCE,WAAWA;oBACXW,YAAYV,kBAAkB;;;;;AAKxC,EAAE"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.tsx"],"sourcesContent":["import * as Popover from \"@radix-ui/react-popover\";\r\nimport { Link } from \"lucide-react\";\r\nimport { Icon } from \"../../features/ui/Icon.js\";\r\nimport { Toolbar } from \"../../features/ui/Toolbar.js\";\r\nimport i18next from \"i18next\";\r\nimport { LinkPreviewEditorPanel } from \"./LinkPreviewEditorPanel.js\";\r\n\r\nexport type EditIframeLinkPopoverProps = {\r\n onSetLink: (src: string) => void;\r\n initialSrcLink: string;\r\n};\r\n\r\nexport const EditLinkPreviewPopover = ({\r\n onSetLink,\r\n initialSrcLink,\r\n}: EditIframeLinkPopoverProps) => {\r\n return (\r\n <Popover.Root>\r\n <Popover.Trigger asChild>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={\r\n i18next.t(\"setEmbedCodeOrLink\") || \"Set Embed Code / Embed Link\"\r\n }\r\n >\r\n <Icon icon={Link} />\r\n </Toolbar.Button>\r\n </Popover.Trigger>\r\n <Popover.Content>\r\n <LinkPreviewEditorPanel\r\n onSetLink={onSetLink}\r\n initialSrc={initialSrcLink ?? \"\"}\r\n />\r\n </Popover.Content>\r\n </Popover.Root>\r\n );\r\n};\r\n"],"names":["Popover","Link","Icon","Toolbar","i18next","LinkPreviewEditorPanel","EditLinkPreviewPopover","onSetLink","initialSrcLink","Root","Trigger","asChild","Button","type","tooltip","t","icon","Content","initialSrc"],"mappings":";AAAA,YAAYA,aAAa,0BAA0B;AACnD,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,IAAI,QAAQ,4BAA4B;AACjD,SAASC,OAAO,QAAQ,+BAA+B;AACvD,OAAOC,aAAa,UAAU;AAC9B,SAASC,sBAAsB,QAAQ,8BAA8B;AAOrE,OAAO,MAAMC,yBAAyB,CAAC,EACrCC,SAAS,EACTC,cAAc,EACa;IAC3B,qBACE,MAACR,QAAQS,IAAI;;0BACX,KAACT,QAAQU,OAAO;gBAACC,OAAO;0BACtB,cAAA,KAACR,QAAQS,MAAM;oBACbC,MAAK;oBACLC,SACEV,QAAQW,CAAC,CAAC,yBAAyB;8BAGrC,cAAA,KAACb;wBAAKc,MAAMf;;;;0BAGhB,KAACD,QAAQiB,OAAO;0BACd,cAAA,KAACZ;oBACCE,WAAWA;oBACXW,YAAYV,kBAAkB;;;;;AAKxC,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.tsx"],"sourcesContent":["import { Node, mergeAttributes } from '@tiptap/core';\nimport { SiteMetaData } from '../../features/BlockEditor/types.jsx';\nimport i18next from 'i18next';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n linkPreview: {\n setLinkPreview: (src?: string, metadata?: SiteMetaData) => ReturnType;\n };\n }\n}\n\nexport const LinkPreview = Node.create({\n name: 'linkPreview',\n group: 'block',\n atom: true,\n\n addAttributes() {\n return {\n href: {\n default: ''\n },\n title: { default: '' },\n description: {\n default: ''\n },\n image: {\n default: ''\n }\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'a[data-link-preview]'\n }\n ];\n },\n\n renderHTML({ node }) {\n const hasValidImage =\n node.attrs.image && node.attrs.image !== '/png/placeholder.png';\n\n const padding = hasValidImage ? 'px-4' : 'pl-6 pr-4';\n\n return [\n 'a',\n mergeAttributes({\n 'data-link-preview': '',\n href: node.attrs.href,\n target: '_blank',\n rel: 'noopener noreferrer',\n dir: i18next.dir(),\n class: `relative flex w-full ${padding} py-3 flex-col items-start gap-6 rounded bg-[#F1F1F1] border-l-0 transition-all duration-200 ease-in-out box-border mb-4 hover:bg-[#F9F9F9] hover:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_-4px_6px_-1px_rgba(0,0,0,0.06),4px_0_6px_-1px_rgba(0,0,0,0.06)] focus:bg-[#F9F9F9] focus:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_-4px_6px_-1px_rgba(0,0,0,0.06),4px_0_6px_-1px_rgba(0,0,0,0.06)] before:content-[\"\"] before:absolute before:left-0 before:top-0 before:bottom-0 before:w-[3px] before:rounded-l-md before:bg-[#01ABD9]`\n }),\n [\n 'div',\n {\n class: hasValidImage\n ? 'flex items-start w-full gap-3'\n : 'flex items-start w-full'\n },\n hasValidImage\n ? [\n 'img',\n {\n class:\n 'flex justify-center items-center rounded-md !w-20 !h-20 aspect-square flex-shrink-0 sm:rounded md:rounded-md lg:!w-[84px] lg:!h-[84px] lg:rounded xl:rounded-md',\n src: node.attrs.image\n }\n ]\n : '',\n [\n 'div',\n {\n class: 'flex flex-col items-start'\n },\n [\n 'span',\n {\n class:\n 'line-clamp-1 overflow-hidden text-[#1F2121] text-ellipsis font-[var(--font-notosans),Arial,sans-serif] text-xs font-bold leading-normal uppercase sm:text-xs sm:font-bold md:text-base md:font-medium md:leading-[15px] lg:text-base xl:text-base',\n 'data-link-preview-related': '',\n 'data-testid': 'link-preview-related'\n },\n i18next.t('related', 'RELATED')\n ],\n [\n 'strong',\n {\n class:\n 'text-[#1F2121] font-[var(--font-playfair),Georgia,serif] text-base font-extrabold leading-[26px] underline decoration-solid line-clamp-2 overflow-hidden text-ellipsis sm:text-lg sm:leading-[31px] md:text-lg md:leading-[28px] lg:text-xl lg:leading-[31px] xl:text-xl'\n },\n node.attrs.title\n ]\n ]\n ]\n ];\n },\n\n addCommands() {\n return {\n setLinkPreview:\n (src, metadata) =>\n ({ commands, state }) => {\n // Don't use placeholder image\n const imageUrl = metadata?.images?.[0] || '';\n\n return commands.insertContent({\n type: 'linkPreview',\n attrs: {\n href: src,\n title: metadata?.title,\n description: metadata?.description,\n image: imageUrl\n }\n });\n }\n };\n }\n});\n"],"names":["Node","mergeAttributes","i18next","LinkPreview","create","name","group","atom","addAttributes","href","default","title","description","image","parseHTML","tag","renderHTML","node","hasValidImage","attrs","padding","target","rel","dir","class","src","t","addCommands","setLinkPreview","metadata","commands","state","imageUrl","images","insertContent","type"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAOC,aAAa,UAAU;AAU9B,OAAO,MAAMC,cAAcH,KAAKI,MAAM,CAAC;IACrCC,MAAM;IACNC,OAAO;IACPC,MAAM;IAENC;QACE,OAAO;YACLC,MAAM;gBACJC,SAAS;YACX;YACAC,OAAO;gBAAED,SAAS;YAAG;YACrBE,aAAa;gBACXF,SAAS;YACX;YACAG,OAAO;gBACLH,SAAS;YACX;QACF;IACF;IAEAI;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,IAAI,EAAE;QACjB,MAAMC,gBACJD,KAAKE,KAAK,CAACN,KAAK,IAAII,KAAKE,KAAK,CAACN,KAAK,KAAK;QAE3C,MAAMO,UAAUF,gBAAgB,SAAS;QAEzC,OAAO;YACL;YACAjB,gBAAgB;gBACd,qBAAqB;gBACrBQ,MAAMQ,KAAKE,KAAK,CAACV,IAAI;gBACrBY,QAAQ;gBACRC,KAAK;gBACLC,KAAKrB,QAAQqB,GAAG;gBAChBC,OAAO,CAAC,qBAAqB,EAAEJ,QAAQ,kgBAAkgB,CAAC;YAC5iB;YACA;gBACE;gBACA;oBACEI,OAAON,gBACH,kCACA;gBACN;gBACAA,gBACI;oBACE;oBACA;wBACEM,OACE;wBACFC,KAAKR,KAAKE,KAAK,CAACN,KAAK;oBACvB;iBACD,GACD;gBACJ;oBACE;oBACA;wBACEW,OAAO;oBACT;oBACA;wBACE;wBACA;4BACEA,OACE;4BACF,6BAA6B;4BAC7B,eAAe;wBACjB;wBACAtB,QAAQwB,CAAC,CAAC,WAAW;qBACtB;oBACD;wBACE;wBACA;4BACEF,OACE;wBACJ;wBACAP,KAAKE,KAAK,CAACR,KAAK;qBACjB;iBACF;aACF;SACF;IACH;IAEAgB;QACE,OAAO;YACLC,gBACE,CAACH,KAAKI,WACN,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE;oBAClB,8BAA8B;oBAC9B,MAAMC,WAAWH,UAAUI,QAAQ,CAAC,EAAE,IAAI;oBAE1C,OAAOH,SAASI,aAAa,CAAC;wBAC5BC,MAAM;wBACNhB,OAAO;4BACLV,MAAMgB;4BACNd,OAAOkB,UAAUlB;4BACjBC,aAAaiB,UAAUjB;4BACvBC,OAAOmB;wBACT;oBACF;gBACF;QACJ;IACF;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.tsx"],"sourcesContent":["import { Node, mergeAttributes } from '@tiptap/core';\r\nimport { SiteMetaData } from '../../features/BlockEditor/types.jsx';\r\nimport i18next from 'i18next';\r\n\r\ndeclare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n linkPreview: {\r\n setLinkPreview: (src?: string, metadata?: SiteMetaData) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const LinkPreview = Node.create({\r\n name: 'linkPreview',\r\n group: 'block',\r\n atom: true,\r\n\r\n addAttributes() {\r\n return {\r\n href: {\r\n default: ''\r\n },\r\n title: { default: '' },\r\n description: {\r\n default: ''\r\n },\r\n image: {\r\n default: ''\r\n }\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-link-preview]'\r\n }\r\n ];\r\n },\r\n\r\n renderHTML({ node }) {\r\n const hasValidImage =\r\n node.attrs.image && node.attrs.image !== '/png/placeholder.png';\r\n\r\n const padding = hasValidImage ? 'px-4' : 'pl-6 pr-4';\r\n\r\n return [\r\n 'a',\r\n mergeAttributes({\r\n 'data-link-preview': '',\r\n href: node.attrs.href,\r\n target: '_blank',\r\n rel: 'noopener noreferrer',\r\n dir: i18next.dir(),\r\n class: `relative flex w-full ${padding} py-3 flex-col items-start gap-6 rounded bg-[#F1F1F1] border-l-0 transition-all duration-200 ease-in-out box-border mb-4 hover:bg-[#F9F9F9] hover:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_-4px_6px_-1px_rgba(0,0,0,0.06),4px_0_6px_-1px_rgba(0,0,0,0.06)] focus:bg-[#F9F9F9] focus:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_-4px_6px_-1px_rgba(0,0,0,0.06),4px_0_6px_-1px_rgba(0,0,0,0.06)] before:content-[\"\"] before:absolute before:left-0 before:top-0 before:bottom-0 before:w-[3px] before:rounded-l-md before:bg-[#01ABD9]`\r\n }),\r\n [\r\n 'div',\r\n {\r\n class: hasValidImage\r\n ? 'flex items-start w-full gap-3'\r\n : 'flex items-start w-full'\r\n },\r\n hasValidImage\r\n ? [\r\n 'img',\r\n {\r\n class:\r\n 'flex justify-center items-center rounded-md !w-20 !h-20 aspect-square flex-shrink-0 sm:rounded md:rounded-md lg:!w-[84px] lg:!h-[84px] lg:rounded xl:rounded-md',\r\n src: node.attrs.image\r\n }\r\n ]\r\n : '',\r\n [\r\n 'div',\r\n {\r\n class: 'flex flex-col items-start'\r\n },\r\n [\r\n 'span',\r\n {\r\n class:\r\n 'line-clamp-1 overflow-hidden text-[#1F2121] text-ellipsis font-[var(--font-notosans),Arial,sans-serif] text-xs font-bold leading-normal uppercase sm:text-xs sm:font-bold md:text-base md:font-medium md:leading-[15px] lg:text-base xl:text-base',\r\n 'data-link-preview-related': '',\r\n 'data-testid': 'link-preview-related'\r\n },\r\n i18next.t('related', 'RELATED')\r\n ],\r\n [\r\n 'strong',\r\n {\r\n class:\r\n 'text-[#1F2121] font-[var(--font-playfair),Georgia,serif] text-base font-extrabold leading-[26px] underline decoration-solid line-clamp-2 overflow-hidden text-ellipsis sm:text-lg sm:leading-[31px] md:text-lg md:leading-[28px] lg:text-xl lg:leading-[31px] xl:text-xl'\r\n },\r\n node.attrs.title\r\n ]\r\n ]\r\n ]\r\n ];\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setLinkPreview:\r\n (src, metadata) =>\r\n ({ commands, state }) => {\r\n // Don't use placeholder image\r\n const imageUrl = metadata?.images?.[0] || '';\r\n\r\n return commands.insertContent({\r\n type: 'linkPreview',\r\n attrs: {\r\n href: src,\r\n title: metadata?.title,\r\n description: metadata?.description,\r\n image: imageUrl\r\n }\r\n });\r\n }\r\n };\r\n }\r\n});\r\n"],"names":["Node","mergeAttributes","i18next","LinkPreview","create","name","group","atom","addAttributes","href","default","title","description","image","parseHTML","tag","renderHTML","node","hasValidImage","attrs","padding","target","rel","dir","class","src","t","addCommands","setLinkPreview","metadata","commands","state","imageUrl","images","insertContent","type"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAOC,aAAa,UAAU;AAU9B,OAAO,MAAMC,cAAcH,KAAKI,MAAM,CAAC;IACrCC,MAAM;IACNC,OAAO;IACPC,MAAM;IAENC;QACE,OAAO;YACLC,MAAM;gBACJC,SAAS;YACX;YACAC,OAAO;gBAAED,SAAS;YAAG;YACrBE,aAAa;gBACXF,SAAS;YACX;YACAG,OAAO;gBACLH,SAAS;YACX;QACF;IACF;IAEAI;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,IAAI,EAAE;QACjB,MAAMC,gBACJD,KAAKE,KAAK,CAACN,KAAK,IAAII,KAAKE,KAAK,CAACN,KAAK,KAAK;QAE3C,MAAMO,UAAUF,gBAAgB,SAAS;QAEzC,OAAO;YACL;YACAjB,gBAAgB;gBACd,qBAAqB;gBACrBQ,MAAMQ,KAAKE,KAAK,CAACV,IAAI;gBACrBY,QAAQ;gBACRC,KAAK;gBACLC,KAAKrB,QAAQqB,GAAG;gBAChBC,OAAO,CAAC,qBAAqB,EAAEJ,QAAQ,kgBAAkgB,CAAC;YAC5iB;YACA;gBACE;gBACA;oBACEI,OAAON,gBACH,kCACA;gBACN;gBACAA,gBACI;oBACE;oBACA;wBACEM,OACE;wBACFC,KAAKR,KAAKE,KAAK,CAACN,KAAK;oBACvB;iBACD,GACD;gBACJ;oBACE;oBACA;wBACEW,OAAO;oBACT;oBACA;wBACE;wBACA;4BACEA,OACE;4BACF,6BAA6B;4BAC7B,eAAe;wBACjB;wBACAtB,QAAQwB,CAAC,CAAC,WAAW;qBACtB;oBACD;wBACE;wBACA;4BACEF,OACE;wBACJ;wBACAP,KAAKE,KAAK,CAACR,KAAK;qBACjB;iBACF;aACF;SACF;IACH;IAEAgB;QACE,OAAO;YACLC,gBACE,CAACH,KAAKI,WACN,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE;oBAClB,8BAA8B;oBAC9B,MAAMC,WAAWH,UAAUI,QAAQ,CAAC,EAAE,IAAI;oBAE1C,OAAOH,SAASI,aAAa,CAAC;wBAC5BC,MAAM;wBACNhB,OAAO;4BACLV,MAAMgB;4BACNd,OAAOkB,UAAUlB;4BACjBC,aAAaiB,UAAUjB;4BACvBC,OAAOmB;wBACT;oBACF;gBACF;QACJ;IACF;AACF,GAAG"}
@@ -1,14 +1,15 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
  export type LinkPreviewEditorPanelProps = {
3
3
  initialSrc?: string;
4
4
  initialOpenInNewTab?: boolean;
5
5
  onSetLink: (src: string) => void;
6
+ isLoading?: boolean;
6
7
  };
7
- export declare const useLinkEditorState: ({ initialSrc, onSetLink, }: LinkPreviewEditorPanelProps) => {
8
+ export declare const useLinkEditorState: ({ initialSrc, onSetLink }: LinkPreviewEditorPanelProps) => {
8
9
  url: string;
9
10
  setUrl: React.Dispatch<React.SetStateAction<string>>;
10
11
  onChange: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;
11
12
  handleSubmit: (e: React.FormEvent) => void;
12
13
  };
13
- export declare const LinkPreviewEditorPanel: ({ onSetLink, initialOpenInNewTab, initialSrc, }: LinkPreviewEditorPanelProps) => React.JSX.Element;
14
+ export declare const LinkPreviewEditorPanel: ({ onSetLink, initialOpenInNewTab, initialSrc, isLoading, }: LinkPreviewEditorPanelProps) => React.JSX.Element;
14
15
  //# sourceMappingURL=LinkPreviewEditorPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkPreviewEditorPanel.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAQrD,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,kBAAkB,+BAG5B,2BAA2B;;;sBAIlB,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC;sBAS1C,KAAK,CAAC,SAAS;CAetB,CAAC;AAEF,eAAO,MAAM,sBAAsB,oDAIhC,2BAA2B,sBAiC7B,CAAC"}
1
+ {"version":3,"file":"LinkPreviewEditorPanel.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAQpD,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,kBAAkB,8BAA+B,2BAA2B;;;sBAGlD,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC;sBAOrE,KAAK,CAAC,SAAS;CAetB,CAAA;AAED,eAAO,MAAM,sBAAsB,+DAKhC,2BAA2B,sBAyC7B,CAAA"}
@@ -1,12 +1,12 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useCallback, useState } from "react";
3
- import { Link } from "lucide-react";
4
- import { Icon } from "../../features/ui/Icon.js";
5
- import { Surface } from "../../features/ui/Surface.js";
6
- import i18next from "i18next";
7
- import { Button } from "../../features/ui/Button/Button.js";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import React, { useCallback, useState } from 'react';
3
+ import { Link, Loader2 } from 'lucide-react';
4
+ import { Icon } from '../../features/ui/Icon.js';
5
+ import { Surface } from '../../features/ui/Surface.js';
6
+ import i18next from 'i18next';
7
+ import { Button } from '../../features/ui/Button/Button.js';
8
8
  export const useLinkEditorState = ({ initialSrc, onSetLink })=>{
9
- const [url, setUrl] = useState(initialSrc || "");
9
+ const [url, setUrl] = useState(initialSrc || '');
10
10
  const onChange = useCallback((event)=>{
11
11
  setUrl(event.target.value);
12
12
  }, []);
@@ -27,7 +27,7 @@ export const useLinkEditorState = ({ initialSrc, onSetLink })=>{
27
27
  handleSubmit
28
28
  };
29
29
  };
30
- export const LinkPreviewEditorPanel = ({ onSetLink, initialOpenInNewTab, initialSrc })=>{
30
+ export const LinkPreviewEditorPanel = ({ onSetLink, initialOpenInNewTab, initialSrc, isLoading = false })=>{
31
31
  const state = useLinkEditorState({
32
32
  onSetLink,
33
33
  initialOpenInNewTab,
@@ -47,9 +47,10 @@ export const LinkPreviewEditorPanel = ({ onSetLink, initialOpenInNewTab, initial
47
47
  }),
48
48
  /*#__PURE__*/ _jsx("textarea", {
49
49
  className: "flex-1 bg-transparent outline-none min-w-[16rem] min-h-[200px] text-black text-sm dark:text-white",
50
- placeholder: i18next.t("enterEmbedCode") || "Enter Embed Code",
50
+ placeholder: i18next.t('enterEmbedCode') || 'Enter Embed Code',
51
51
  value: state.url,
52
- onChange: state.onChange
52
+ onChange: state.onChange,
53
+ disabled: isLoading
53
54
  })
54
55
  ]
55
56
  }),
@@ -60,7 +61,20 @@ export const LinkPreviewEditorPanel = ({ onSetLink, initialOpenInNewTab, initial
60
61
  onClick: (e)=>{
61
62
  state.handleSubmit(e);
62
63
  },
63
- children: "Set Link"
64
+ disabled: isLoading,
65
+ children: isLoading ? /*#__PURE__*/ _jsxs("div", {
66
+ className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400",
67
+ children: [
68
+ /*#__PURE__*/ _jsx(Loader2, {
69
+ className: "w-4 h-4 animate-spin"
70
+ }),
71
+ /*#__PURE__*/ _jsx("span", {
72
+ children: i18next.t('loading') || 'Loading'
73
+ })
74
+ ]
75
+ }) : /*#__PURE__*/ _jsx(_Fragment, {
76
+ children: i18next.t('setLink') || 'Set Link'
77
+ })
64
78
  })
65
79
  ]
66
80
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { Link } from \"lucide-react\";\n\nimport { Icon } from \"../../features/ui/Icon.js\";\nimport { Surface } from \"../../features/ui/Surface.js\";\nimport i18next from \"i18next\";\nimport { Button } from \"../../features/ui/Button/Button.js\";\n\nexport type LinkPreviewEditorPanelProps = {\n initialSrc?: string;\n initialOpenInNewTab?: boolean;\n onSetLink: (src: string) => void;\n};\n\nexport const useLinkEditorState = ({\n initialSrc,\n onSetLink,\n}: LinkPreviewEditorPanelProps) => {\n const [url, setUrl] = useState(initialSrc || \"\");\n\n const onChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n setUrl(event.target.value);\n },\n []\n );\n\n // const isValidUrl = useMemo(() => /^(\\S+):(\\/\\/)?\\S+$/.test(url), [url]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n // if (isValidUrl) {\n onSetLink(url);\n // }\n },\n [url, onSetLink]\n );\n\n return {\n url,\n setUrl,\n onChange,\n handleSubmit,\n };\n};\n\nexport const LinkPreviewEditorPanel = ({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n}: LinkPreviewEditorPanelProps) => {\n const state = useLinkEditorState({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n });\n\n return (\n <Surface className=\"p-2\">\n <div className=\"flex items-center gap-2\">\n <label className=\"flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text\">\n <Icon icon={Link} className=\"flex-none text-black dark:text-white\" />\n <textarea\n className=\"flex-1 bg-transparent outline-none min-w-[16rem] min-h-[200px] text-black text-sm dark:text-white\"\n placeholder={i18next.t(\"enterEmbedCode\") || \"Enter Embed Code\"}\n value={state.url}\n onChange={state.onChange}\n />\n </label>\n <Button\n variant=\"primary\"\n buttonSize=\"small\"\n type=\"button\"\n onClick={(e) => {\n state.handleSubmit(e);\n }}\n // disabled={!state.isValidUrl}\n >\n Set Link\n </Button>\n </div>\n </Surface>\n );\n};\n"],"names":["React","useCallback","useState","Link","Icon","Surface","i18next","Button","useLinkEditorState","initialSrc","onSetLink","url","setUrl","onChange","event","target","value","handleSubmit","e","preventDefault","LinkPreviewEditorPanel","initialOpenInNewTab","state","className","div","label","icon","textarea","placeholder","t","variant","buttonSize","type","onClick"],"mappings":";AAAA,OAAOA,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AACrD,SAASC,IAAI,QAAQ,eAAe;AAEpC,SAASC,IAAI,QAAQ,4BAA4B;AACjD,SAASC,OAAO,QAAQ,+BAA+B;AACvD,OAAOC,aAAa,UAAU;AAC9B,SAASC,MAAM,QAAQ,qCAAqC;AAQ5D,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,UAAU,EACVC,SAAS,EACmB;IAC5B,MAAM,CAACC,KAAKC,OAAO,GAAGV,SAASO,cAAc;IAE7C,MAAMI,WAAWZ,YACf,CAACa;QACCF,OAAOE,MAAMC,MAAM,CAACC,KAAK;IAC3B,GACA,EAAE;IAGJ,2EAA2E;IAE3E,MAAMC,eAAehB,YACnB,CAACiB;QACCA,EAAEC,cAAc;QAChB,oBAAoB;QACpBT,UAAUC;IACV,IAAI;IACN,GACA;QAACA;QAAKD;KAAU;IAGlB,OAAO;QACLC;QACAC;QACAC;QACAI;IACF;AACF,EAAE;AAEF,OAAO,MAAMG,yBAAyB,CAAC,EACrCV,SAAS,EACTW,mBAAmB,EACnBZ,UAAU,EACkB;IAC5B,MAAMa,QAAQd,mBAAmB;QAC/BE;QACAW;QACAZ;IACF;IAEA,qBACE,KAACJ;QAAQkB,WAAU;kBACjB,cAAA,MAACC;YAAID,WAAU;;8BACb,MAACE;oBAAMF,WAAU;;sCACf,KAACnB;4BAAKsB,MAAMvB;4BAAMoB,WAAU;;sCAC5B,KAACI;4BACCJ,WAAU;4BACVK,aAAatB,QAAQuB,CAAC,CAAC,qBAAqB;4BAC5Cb,OAAOM,MAAMX,GAAG;4BAChBE,UAAUS,MAAMT,QAAQ;;;;8BAG5B,KAACN;oBACCuB,SAAQ;oBACRC,YAAW;oBACXC,MAAK;oBACLC,SAAS,CAACf;wBACRI,MAAML,YAAY,CAACC;oBACrB;8BAED;;;;;AAMT,EAAE"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react'\r\nimport { Link, Loader2 } from 'lucide-react'\r\n\r\nimport { Icon } from '../../features/ui/Icon.js'\r\nimport { Surface } from '../../features/ui/Surface.js'\r\nimport i18next from 'i18next'\r\nimport { Button } from '../../features/ui/Button/Button.js'\r\n\r\nexport type LinkPreviewEditorPanelProps = {\r\n initialSrc?: string\r\n initialOpenInNewTab?: boolean\r\n onSetLink: (src: string) => void\r\n isLoading?: boolean\r\n}\r\n\r\nexport const useLinkEditorState = ({ initialSrc, onSetLink }: LinkPreviewEditorPanelProps) => {\r\n const [url, setUrl] = useState(initialSrc || '')\r\n\r\n const onChange = useCallback((event: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n setUrl(event.target.value)\r\n }, [])\r\n\r\n // const isValidUrl = useMemo(() => /^(\\S+):(\\/\\/)?\\S+$/.test(url), [url]);\r\n\r\n const handleSubmit = useCallback(\r\n (e: React.FormEvent) => {\r\n e.preventDefault()\r\n // if (isValidUrl) {\r\n onSetLink(url)\r\n // }\r\n },\r\n [url, onSetLink],\r\n )\r\n\r\n return {\r\n url,\r\n setUrl,\r\n onChange,\r\n handleSubmit,\r\n }\r\n}\r\n\r\nexport const LinkPreviewEditorPanel = ({\r\n onSetLink,\r\n initialOpenInNewTab,\r\n initialSrc,\r\n isLoading = false,\r\n}: LinkPreviewEditorPanelProps) => {\r\n const state = useLinkEditorState({\r\n onSetLink,\r\n initialOpenInNewTab,\r\n initialSrc,\r\n })\r\n\r\n return (\r\n <Surface className='p-2'>\r\n <div className='flex items-center gap-2'>\r\n <label className='flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text'>\r\n <Icon icon={Link} className='flex-none text-black dark:text-white' />\r\n <textarea\r\n className='flex-1 bg-transparent outline-none min-w-[16rem] min-h-[200px] text-black text-sm dark:text-white'\r\n placeholder={i18next.t('enterEmbedCode') || 'Enter Embed Code'}\r\n value={state.url}\r\n onChange={state.onChange}\r\n disabled={isLoading}\r\n />\r\n </label>\r\n <Button\r\n variant='primary'\r\n buttonSize='small'\r\n type='button'\r\n onClick={(e) => {\r\n state.handleSubmit(e)\r\n }}\r\n disabled={isLoading}\r\n >\r\n {isLoading ? (\r\n <div className='flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400'>\r\n <Loader2 className='w-4 h-4 animate-spin' />\r\n <span>{i18next.t('loading') || 'Loading'}</span>\r\n </div>\r\n ) : (\r\n <>{i18next.t('setLink') || 'Set Link'}</>\r\n )}\r\n </Button>\r\n </div>\r\n </Surface>\r\n )\r\n}\r\n"],"names":["React","useCallback","useState","Link","Loader2","Icon","Surface","i18next","Button","useLinkEditorState","initialSrc","onSetLink","url","setUrl","onChange","event","target","value","handleSubmit","e","preventDefault","LinkPreviewEditorPanel","initialOpenInNewTab","isLoading","state","className","div","label","icon","textarea","placeholder","t","disabled","variant","buttonSize","type","onClick","span"],"mappings":";AAAA,OAAOA,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAO;AACpD,SAASC,IAAI,EAAEC,OAAO,QAAQ,eAAc;AAE5C,SAASC,IAAI,QAAQ,4BAA2B;AAChD,SAASC,OAAO,QAAQ,+BAA8B;AACtD,OAAOC,aAAa,UAAS;AAC7B,SAASC,MAAM,QAAQ,qCAAoC;AAS3D,OAAO,MAAMC,qBAAqB,CAAC,EAAEC,UAAU,EAAEC,SAAS,EAA+B;IACvF,MAAM,CAACC,KAAKC,OAAO,GAAGX,SAASQ,cAAc;IAE7C,MAAMI,WAAWb,YAAY,CAACc;QAC5BF,OAAOE,MAAMC,MAAM,CAACC,KAAK;IAC3B,GAAG,EAAE;IAEL,2EAA2E;IAE3E,MAAMC,eAAejB,YACnB,CAACkB;QACCA,EAAEC,cAAc;QAChB,oBAAoB;QACpBT,UAAUC;IACV,IAAI;IACN,GACA;QAACA;QAAKD;KAAU;IAGlB,OAAO;QACLC;QACAC;QACAC;QACAI;IACF;AACF,EAAC;AAED,OAAO,MAAMG,yBAAyB,CAAC,EACrCV,SAAS,EACTW,mBAAmB,EACnBZ,UAAU,EACVa,YAAY,KAAK,EACW;IAC5B,MAAMC,QAAQf,mBAAmB;QAC/BE;QACAW;QACAZ;IACF;IAEA,qBACE,KAACJ;QAAQmB,WAAU;kBACjB,cAAA,MAACC;YAAID,WAAU;;8BACb,MAACE;oBAAMF,WAAU;;sCACf,KAACpB;4BAAKuB,MAAMzB;4BAAMsB,WAAU;;sCAC5B,KAACI;4BACCJ,WAAU;4BACVK,aAAavB,QAAQwB,CAAC,CAAC,qBAAqB;4BAC5Cd,OAAOO,MAAMZ,GAAG;4BAChBE,UAAUU,MAAMV,QAAQ;4BACxBkB,UAAUT;;;;8BAGd,KAACf;oBACCyB,SAAQ;oBACRC,YAAW;oBACXC,MAAK;oBACLC,SAAS,CAACjB;wBACRK,MAAMN,YAAY,CAACC;oBACrB;oBACAa,UAAUT;8BAETA,0BACC,MAACG;wBAAID,WAAU;;0CACb,KAACrB;gCAAQqB,WAAU;;0CACnB,KAACY;0CAAM9B,QAAQwB,CAAC,CAAC,cAAc;;;uCAGjC;kCAAGxB,QAAQwB,CAAC,CAAC,cAAc;;;;;;AAMvC,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/index.ts"],"sourcesContent":["export * from \"./LinkPreview.js\";\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/index.ts"],"sourcesContent":["export * from \"./LinkPreview.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/index.ts"],"sourcesContent":["export * from \"./linkPreviewMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/index.ts"],"sourcesContent":["export * from \"./linkPreviewMenu.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
@@ -1,6 +1,6 @@
1
- import React from "react";
2
- import { MenuProps } from "../../../features/menus/types.js";
3
- import { FetchSiteMetadataType } from "src/fields/TiptapEditor/features/BlockEditor/types.jsx";
1
+ import React from 'react';
2
+ import { MenuProps } from '../../../features/menus/types.js';
3
+ import { FetchSiteMetadataType } from 'src/fields/TiptapEditor/features/BlockEditor/types.jsx';
4
4
  export declare const ILinkPreviewMenu: ({ editor, appendTo, fetchSiteMetadata, }: MenuProps & {
5
5
  fetchSiteMetadata: FetchSiteMetadataType;
6
6
  }) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"linkPreviewMenu.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAI7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F,eAAO,MAAM,gBAAgB,6CAI1B,SAAS,GAAG;IAAE,iBAAiB,EAAE,qBAAqB,CAAA;CAAE,sBAkC1D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"linkPreviewMenu.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAIpD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAI5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAA;AAE9F,eAAO,MAAM,gBAAgB,6CAI1B,SAAS,GAAG;IAAE,iBAAiB,EAAE,qBAAqB,CAAA;CAAE,sBA2C1D,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -1,22 +1,31 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { BubbleMenu as BaseBubbleMenu } from "@tiptap/react";
3
- import React, { useCallback } from "react";
4
- import { Toolbar } from "../../../features/ui/Toolbar.js";
5
- import { LinkPreviewEditorPanel } from "../LinkPreviewEditorPanel.js";
2
+ import { BubbleMenu as BaseBubbleMenu } from '@tiptap/react';
3
+ import React, { useCallback, useState } from 'react';
4
+ import { Toolbar } from '../../../features/ui/Toolbar.js';
5
+ import { LinkPreviewEditorPanel } from '../LinkPreviewEditorPanel.js';
6
6
  export const ILinkPreviewMenu = ({ editor, appendTo, fetchSiteMetadata })=>{
7
+ const [isLoading, setIsLoading] = useState(false);
7
8
  const shouldShow = useCallback(()=>{
8
- const isLinkPreview = editor.isActive("linkPreview");
9
+ const isLinkPreview = editor.isActive('linkPreview');
9
10
  return isLinkPreview;
10
11
  }, [
11
12
  editor
12
13
  ]);
13
14
  const onSetLink = useCallback(async (src)=>{
14
15
  if (fetchSiteMetadata) {
15
- const metadata = await fetchSiteMetadata(src);
16
- editor.chain().focus().setLinkPreview(src, metadata).run();
16
+ try {
17
+ setIsLoading(true);
18
+ const metadata = await fetchSiteMetadata(src);
19
+ editor.chain().focus().setLinkPreview(src, metadata).blur().setTextSelection(0).run();
20
+ } catch (error) {
21
+ console.error('Error fetching site metadata:', error);
22
+ } finally{
23
+ setIsLoading(false);
24
+ }
17
25
  }
18
26
  }, [
19
- editor
27
+ editor,
28
+ fetchSiteMetadata
20
29
  ]);
21
30
  return /*#__PURE__*/ _jsx(BaseBubbleMenu, {
22
31
  editor: editor,
@@ -24,7 +33,7 @@ export const ILinkPreviewMenu = ({ editor, appendTo, fetchSiteMetadata })=>{
24
33
  shouldShow: shouldShow,
25
34
  tippyOptions: {
26
35
  popperOptions: {
27
- placement: "top-start"
36
+ placement: 'top-start'
28
37
  }
29
38
  },
30
39
  updateDelay: 100,
@@ -32,8 +41,9 @@ export const ILinkPreviewMenu = ({ editor, appendTo, fetchSiteMetadata })=>{
32
41
  type: "button",
33
42
  children: /*#__PURE__*/ _jsx(LinkPreviewEditorPanel, {
34
43
  onSetLink: onSetLink,
44
+ isLoading: isLoading,
35
45
  // @ts-ignore
36
- initialSrcLink: editor?.getAttributes("linkPreview")?.editorValue ?? ""
46
+ initialSrcLink: editor?.getAttributes('linkPreview')?.editorValue ?? ''
37
47
  })
38
48
  })
39
49
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { useCallback } from \"react\";\nimport { sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport i18next from \"i18next\";\nimport { LinkPreviewEditorPanel } from \"../LinkPreviewEditorPanel.js\";\nimport { FetchSiteMetadataType } from \"src/fields/TiptapEditor/features/BlockEditor/types.jsx\";\n\nexport const ILinkPreviewMenu = ({\n editor,\n appendTo,\n fetchSiteMetadata,\n}: MenuProps & { fetchSiteMetadata: FetchSiteMetadataType }) => {\n const shouldShow = useCallback(() => {\n const isLinkPreview = editor.isActive(\"linkPreview\");\n return isLinkPreview;\n }, [editor]);\n\n const onSetLink = useCallback(\n async (src: string) => {\n if (fetchSiteMetadata) {\n const metadata = await fetchSiteMetadata(src);\n editor.chain().focus().setLinkPreview(src, metadata).run();\n }\n },\n [editor]\n );\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"linkPreview\"\n shouldShow={shouldShow}\n tippyOptions={{ popperOptions: { placement: \"top-start\" } }}\n updateDelay={100}\n >\n <Toolbar.Button type=\"button\">\n <LinkPreviewEditorPanel\n onSetLink={onSetLink}\n // @ts-ignore\n initialSrcLink={\n editor?.getAttributes(\"linkPreview\")?.editorValue ?? \"\"\n }\n />\n </Toolbar.Button>\n </BaseBubbleMenu>\n );\n};\n\nexport default ILinkPreviewMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","Toolbar","LinkPreviewEditorPanel","ILinkPreviewMenu","editor","appendTo","fetchSiteMetadata","shouldShow","isLinkPreview","isActive","onSetLink","src","metadata","chain","focus","setLinkPreview","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","Button","type","initialSrcLink","getAttributes","editorValue"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAASC,WAAW,QAAQ,QAAQ;AAK3C,SAASC,OAAO,QAAQ,kCAAkC;AAE1D,SAASC,sBAAsB,QAAQ,+BAA+B;AAGtE,OAAO,MAAMC,mBAAmB,CAAC,EAC/BC,MAAM,EACNC,QAAQ,EACRC,iBAAiB,EACwC;IACzD,MAAMC,aAAaP,YAAY;QAC7B,MAAMQ,gBAAgBJ,OAAOK,QAAQ,CAAC;QACtC,OAAOD;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMM,YAAYV,YAChB,OAAOW;QACL,IAAIL,mBAAmB;YACrB,MAAMM,WAAW,MAAMN,kBAAkBK;YACzCP,OAAOS,KAAK,GAAGC,KAAK,GAAGC,cAAc,CAACJ,KAAKC,UAAUI,GAAG;QAC1D;IACF,GACA;QAACZ;KAAO;IAEV,qBACE,KAACN;QACCM,QAAQA;QACRa,WAAU;QACVV,YAAYA;QACZW,cAAc;YAAEC,eAAe;gBAAEC,WAAW;YAAY;QAAE;QAC1DC,aAAa;kBAEb,cAAA,KAACpB,QAAQqB,MAAM;YAACC,MAAK;sBACnB,cAAA,KAACrB;gBACCQ,WAAWA;gBACX,aAAa;gBACbc,gBACEpB,QAAQqB,cAAc,gBAAgBC,eAAe;;;;AAMjE,EAAE;AAEF,eAAevB,iBAAiB"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from '@tiptap/react'\r\nimport React, { useCallback, useState } from 'react'\r\nimport { sticky } from 'tippy.js'\r\nimport { v4 as uuid } from 'uuid'\r\n\r\nimport { MenuProps } from '../../../features/menus/types.js'\r\nimport { Toolbar } from '../../../features/ui/Toolbar.js'\r\nimport i18next from 'i18next'\r\nimport { LinkPreviewEditorPanel } from '../LinkPreviewEditorPanel.js'\r\nimport { FetchSiteMetadataType } from 'src/fields/TiptapEditor/features/BlockEditor/types.jsx'\r\n\r\nexport const ILinkPreviewMenu = ({\r\n editor,\r\n appendTo,\r\n fetchSiteMetadata,\r\n}: MenuProps & { fetchSiteMetadata: FetchSiteMetadataType }) => {\r\n const [isLoading, setIsLoading] = useState(false)\r\n\r\n const shouldShow = useCallback(() => {\r\n const isLinkPreview = editor.isActive('linkPreview')\r\n return isLinkPreview\r\n }, [editor])\r\n\r\n const onSetLink = useCallback(\r\n async (src: string) => {\r\n if (fetchSiteMetadata) {\r\n try {\r\n setIsLoading(true)\r\n const metadata = await fetchSiteMetadata(src)\r\n editor.chain().focus().setLinkPreview(src, metadata).blur().setTextSelection(0).run()\r\n } catch (error) {\r\n console.error('Error fetching site metadata:', error)\r\n } finally {\r\n setIsLoading(false)\r\n }\r\n }\r\n },\r\n [editor, fetchSiteMetadata],\r\n )\r\n\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey=\"linkPreview\"\r\n shouldShow={shouldShow}\r\n tippyOptions={{ popperOptions: { placement: 'top-start' } }}\r\n updateDelay={100}\r\n >\r\n <Toolbar.Button type=\"button\">\r\n <LinkPreviewEditorPanel\r\n onSetLink={onSetLink}\r\n isLoading={isLoading}\r\n // @ts-ignore\r\n initialSrcLink={editor?.getAttributes('linkPreview')?.editorValue ?? ''}\r\n />\r\n </Toolbar.Button>\r\n </BaseBubbleMenu>\r\n )\r\n}\r\n\r\nexport default ILinkPreviewMenu\r\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","useState","Toolbar","LinkPreviewEditorPanel","ILinkPreviewMenu","editor","appendTo","fetchSiteMetadata","isLoading","setIsLoading","shouldShow","isLinkPreview","isActive","onSetLink","src","metadata","chain","focus","setLinkPreview","blur","setTextSelection","run","error","console","pluginKey","tippyOptions","popperOptions","placement","updateDelay","Button","type","initialSrcLink","getAttributes","editorValue"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAe;AAC5D,OAAOC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAO;AAKpD,SAASC,OAAO,QAAQ,kCAAiC;AAEzD,SAASC,sBAAsB,QAAQ,+BAA8B;AAGrE,OAAO,MAAMC,mBAAmB,CAAC,EAC/BC,MAAM,EACNC,QAAQ,EACRC,iBAAiB,EACwC;IACzD,MAAM,CAACC,WAAWC,aAAa,GAAGR,SAAS;IAE3C,MAAMS,aAAaV,YAAY;QAC7B,MAAMW,gBAAgBN,OAAOO,QAAQ,CAAC;QACtC,OAAOD;IACT,GAAG;QAACN;KAAO;IAEX,MAAMQ,YAAYb,YAChB,OAAOc;QACL,IAAIP,mBAAmB;YACrB,IAAI;gBACFE,aAAa;gBACb,MAAMM,WAAW,MAAMR,kBAAkBO;gBACzCT,OAAOW,KAAK,GAAGC,KAAK,GAAGC,cAAc,CAACJ,KAAKC,UAAUI,IAAI,GAAGC,gBAAgB,CAAC,GAAGC,GAAG;YACrF,EAAE,OAAOC,OAAO;gBACdC,QAAQD,KAAK,CAAC,iCAAiCA;YACjD,SAAU;gBACRb,aAAa;YACf;QACF;IACF,GACA;QAACJ;QAAQE;KAAkB;IAG7B,qBACE,KAACT;QACCO,QAAQA;QACRmB,WAAU;QACVd,YAAYA;QACZe,cAAc;YAAEC,eAAe;gBAAEC,WAAW;YAAY;QAAE;QAC1DC,aAAa;kBAEb,cAAA,KAAC1B,QAAQ2B,MAAM;YAACC,MAAK;sBACnB,cAAA,KAAC3B;gBACCU,WAAWA;gBACXL,WAAWA;gBACX,aAAa;gBACbuB,gBAAgB1B,QAAQ2B,cAAc,gBAAgBC,eAAe;;;;AAK/E,EAAC;AAED,eAAe7B,iBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/Column.ts"],"sourcesContent":["import { Node, mergeAttributes } from '@tiptap/core'\n\nexport const Column = Node.create({\n name: 'column',\n\n content: 'block+',\n\n isolating: true,\n\n addAttributes() {\n return {\n position: {\n default: '',\n parseHTML: element => element.getAttribute('data-position'),\n renderHTML: attributes => ({ 'data-position': attributes.position }),\n },\n }\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['div', mergeAttributes(HTMLAttributes, { 'data-type': 'column' }), 0]\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"column\"]',\n },\n ]\n },\n})\n\nexport default Column\n"],"names":["Node","mergeAttributes","Column","create","name","content","isolating","addAttributes","position","default","parseHTML","element","getAttribute","renderHTML","attributes","HTMLAttributes","tag"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAc;AAEpD,OAAO,MAAMC,SAASF,KAAKG,MAAM,CAAC;IAChCC,MAAM;IAENC,SAAS;IAETC,WAAW;IAEXC;QACE,OAAO;YACLC,UAAU;gBACRC,SAAS;gBACTC,WAAWC,CAAAA,UAAWA,QAAQC,YAAY,CAAC;gBAC3CC,YAAYC,CAAAA,aAAe,CAAA;wBAAE,iBAAiBA,WAAWN,QAAQ;oBAAC,CAAA;YACpE;QACF;IACF;IAEAK,YAAW,EAAEE,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAOd,gBAAgBc,gBAAgB;gBAAE,aAAa;YAAS;YAAI;SAAE;IAC/E;IAEAL;QACE,OAAO;YACL;gBACEM,KAAK;YACP;SACD;IACH;AACF,GAAE;AAEF,eAAed,OAAM"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/Column.ts"],"sourcesContent":["import { Node, mergeAttributes } from '@tiptap/core'\r\n\r\nexport const Column = Node.create({\r\n name: 'column',\r\n\r\n content: 'block+',\r\n\r\n isolating: true,\r\n\r\n addAttributes() {\r\n return {\r\n position: {\r\n default: '',\r\n parseHTML: element => element.getAttribute('data-position'),\r\n renderHTML: attributes => ({ 'data-position': attributes.position }),\r\n },\r\n }\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return ['div', mergeAttributes(HTMLAttributes, { 'data-type': 'column' }), 0]\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"column\"]',\r\n },\r\n ]\r\n },\r\n})\r\n\r\nexport default Column\r\n"],"names":["Node","mergeAttributes","Column","create","name","content","isolating","addAttributes","position","default","parseHTML","element","getAttribute","renderHTML","attributes","HTMLAttributes","tag"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAc;AAEpD,OAAO,MAAMC,SAASF,KAAKG,MAAM,CAAC;IAChCC,MAAM;IAENC,SAAS;IAETC,WAAW;IAEXC;QACE,OAAO;YACLC,UAAU;gBACRC,SAAS;gBACTC,WAAWC,CAAAA,UAAWA,QAAQC,YAAY,CAAC;gBAC3CC,YAAYC,CAAAA,aAAe,CAAA;wBAAE,iBAAiBA,WAAWN,QAAQ;oBAAC,CAAA;YACpE;QACF;IACF;IAEAK,YAAW,EAAEE,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAOd,gBAAgBc,gBAAgB;gBAAE,aAAa;YAAS;YAAI;SAAE;IAC/E;IAEAL;QACE,OAAO;YACL;gBACEM,KAAK;YACP;SACD;IACH;AACF,GAAE;AAEF,eAAed,OAAM"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/Columns.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\n\nexport enum ColumnLayout {\n SidebarLeft = 'sidebar-left',\n SidebarRight = 'sidebar-right',\n TwoColumn = 'two-column',\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n columns: {\n setColumns: () => ReturnType\n setLayout: (layout: ColumnLayout) => ReturnType\n }\n }\n}\n\nexport const Columns = Node.create({\n name: 'columns',\n\n group: 'columns',\n\n content: 'column column',\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n layout: {\n default: ColumnLayout.TwoColumn,\n },\n }\n },\n\n addCommands() {\n return {\n setColumns:\n () =>\n ({ commands }) =>\n commands.insertContent(\n `<div data-type=\"columns\"><div data-type=\"column\" data-position=\"left\"><p></p></div><div data-type=\"column\" data-position=\"right\"><p></p></div></div>`,\n ),\n setLayout:\n (layout: ColumnLayout) =>\n ({ commands }) =>\n commands.updateAttributes('columns', { layout }),\n }\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['div', { 'data-type': 'columns', class: `layout-${HTMLAttributes.layout}` }, 0]\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"columns\"]',\n },\n ]\n },\n})\n\nexport default Columns\n"],"names":["Node","ColumnLayout","Columns","create","name","group","content","defining","isolating","addAttributes","layout","default","addCommands","setColumns","commands","insertContent","setLayout","updateAttributes","renderHTML","HTMLAttributes","class","parseHTML","tag"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc;AAEnC,OAAO,IAAA,AAAKC,sCAAAA;;;;WAAAA;MAIX;AAWD,OAAO,MAAMC,UAAUF,KAAKG,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IAEPC,SAAS;IAETC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACLC,QAAQ;gBACNC,OAAO;YACT;QACF;IACF;IAEAC;QACE,OAAO;YACLC,YACE,IACA,CAAC,EAAEC,QAAQ,EAAE,GACXA,SAASC,aAAa,CACpB,CAAC,oJAAoJ,CAAC;YAE5JC,WACE,CAACN,SACD,CAAC,EAAEI,QAAQ,EAAE,GACXA,SAASG,gBAAgB,CAAC,WAAW;wBAAEP;oBAAO;QACpD;IACF;IAEAQ,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAO;gBAAE,aAAa;gBAAWC,OAAO,CAAC,OAAO,EAAED,eAAeT,MAAM,EAAE;YAAC;YAAG;SAAE;IACzF;IAEAW;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;AACF,GAAE;AAEF,eAAepB,QAAO"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/Columns.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\r\n\r\nexport enum ColumnLayout {\r\n SidebarLeft = 'sidebar-left',\r\n SidebarRight = 'sidebar-right',\r\n TwoColumn = 'two-column',\r\n}\r\n\r\ndeclare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n columns: {\r\n setColumns: () => ReturnType\r\n setLayout: (layout: ColumnLayout) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nexport const Columns = Node.create({\r\n name: 'columns',\r\n\r\n group: 'columns',\r\n\r\n content: 'column column',\r\n\r\n defining: true,\r\n\r\n isolating: true,\r\n\r\n addAttributes() {\r\n return {\r\n layout: {\r\n default: ColumnLayout.TwoColumn,\r\n },\r\n }\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setColumns:\r\n () =>\r\n ({ commands }) =>\r\n commands.insertContent(\r\n `<div data-type=\"columns\"><div data-type=\"column\" data-position=\"left\"><p></p></div><div data-type=\"column\" data-position=\"right\"><p></p></div></div>`,\r\n ),\r\n setLayout:\r\n (layout: ColumnLayout) =>\r\n ({ commands }) =>\r\n commands.updateAttributes('columns', { layout }),\r\n }\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return ['div', { 'data-type': 'columns', class: `layout-${HTMLAttributes.layout}` }, 0]\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"columns\"]',\r\n },\r\n ]\r\n },\r\n})\r\n\r\nexport default Columns\r\n"],"names":["Node","ColumnLayout","Columns","create","name","group","content","defining","isolating","addAttributes","layout","default","addCommands","setColumns","commands","insertContent","setLayout","updateAttributes","renderHTML","HTMLAttributes","class","parseHTML","tag"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc;AAEnC,OAAO,IAAA,AAAKC,sCAAAA;;;;WAAAA;MAIX;AAWD,OAAO,MAAMC,UAAUF,KAAKG,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IAEPC,SAAS;IAETC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACLC,QAAQ;gBACNC,OAAO;YACT;QACF;IACF;IAEAC;QACE,OAAO;YACLC,YACE,IACA,CAAC,EAAEC,QAAQ,EAAE,GACXA,SAASC,aAAa,CACpB,CAAC,oJAAoJ,CAAC;YAE5JC,WACE,CAACN,SACD,CAAC,EAAEI,QAAQ,EAAE,GACXA,SAASG,gBAAgB,CAAC,WAAW;wBAAEP;oBAAO;QACpD;IACF;IAEAQ,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAO;gBAAE,aAAa;gBAAWC,OAAO,CAAC,OAAO,EAAED,eAAeT,MAAM,EAAE;YAAC;YAAG;SAAE;IACzF;IAEAW;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;AACF,GAAE;AAEF,eAAepB,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/index.ts"],"sourcesContent":["export * from \"./Columns.js\";\nexport * from \"./Column.js\";\n"],"names":[],"mappings":"AAAA,cAAc,eAAe;AAC7B,cAAc,cAAc"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/index.ts"],"sourcesContent":["export * from \"./Columns.js\";\r\nexport * from \"./Column.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,eAAe;AAC7B,cAAc,cAAc"}