payload-richtext-tiptap 0.0.149 → 0.0.150
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.
- package/LICENSE.md +22 -22
- package/README.md +33 -33
- package/dist/src/body/StandardArticle.js.map +1 -1
- package/dist/src/client.js.map +1 -1
- package/dist/src/fields/TiptapEditor/Components.js.map +1 -1
- package/dist/src/fields/TiptapEditor/context/EditorContext.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Audio/Audio.js +5 -5
- package/dist/src/fields/TiptapEditor/extensions/Audio/Audio.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Audio/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockView.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockWidth.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/BlockquoteFigure.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Design.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/Quote.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/QuoteCaption.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Document/Document.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Document/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figcaption/Figcaption.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figcaption/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figure/Figure.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figure/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/FontSize/FontSize.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/FontSize/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Heading/Heading.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Heading/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/HorizontalRule.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Image/Image.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Image/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockView.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockViewClientside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockWidth.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/getImageActualSize.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUploader.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/hooks.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLinksComponent.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/insideLinks.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/InsideLinksMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Link/Link.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Link/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Column.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js +3 -3
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/Paragraph.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Selection/Selection.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Selection/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/CommandButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/SlashCommand.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/FacebookEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/facebook.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/instagram.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/LinkedinEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/linkedin.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbedServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/TiktokEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/TwitterEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Cell.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Header.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Row.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Table.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/TrailingNode/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Video/Video.js +5 -5
- package/dist/src/fields/TiptapEditor/extensions/Video/Video.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Video/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockViewClientside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockWidth.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/VideoPlayer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js +9 -9
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js +15 -15
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/middleware/SourceInterceptor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/util/SafeSeek.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSideRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSidebarRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/FacebookServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/IFrameServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/ImageBlockServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/InsideLinkServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/InstagramServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/LinkedinServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/RenderEmbedClientSide.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/TiktokServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/TwitterBlockServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/VideoBlockServerside.js +5 -5
- package/dist/src/fields/TiptapEditor/extensions/serverside/VideoBlockServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/YouTubeServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/getAssetsAspectRatio.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/useAppendRequiredBlocksMarkerClient.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts +2 -2
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +22 -21
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/OneLineEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorHeader.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorInfo.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/components/OneLiner.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/ContentItemMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useContentItemActions.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useData.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/LinkMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/AITextMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/TextMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ContentTypePicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditIframeLinkPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditLinkPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/SocialMediaPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuContentTypes.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuStates.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/EditorPreview.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/markdown.hook.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/ColorButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/Colorpicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/InsideLinksEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/LinkPreviewPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Button/Button.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Button/SpanButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Button/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Dropdown/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Icon.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Loader/Loader.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Loader/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Loader/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Panel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/PopoverMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Spinner/Spinner.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Spinner/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Surface.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Textarea/Textarea.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Textarea/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Toggle/Toggle.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Toggle/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Toolbar.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Tooltip/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Tooltip/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/crazy-spinner.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/scroll-area.js.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useSidebar.js.map +1 -1
- package/dist/src/fields/TiptapEditor/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/api.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/constants.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/data/initialContent.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/extract.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/tiptapSchema.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/cssVar.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/deepMerge.js +8 -8
- package/dist/src/fields/TiptapEditor/lib/utils/deepMerge.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/getRenderContainer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/isCustomNodeSelected.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/isRtl.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/isTextSelected.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/partialRequired.js.map +1 -1
- package/dist/src/fields/TiptapEditor/types.d.js.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +196 -204
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\n\nimport { SocialMediaEditorPanel } from \"../../../features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { supportedSocialMedia } from \"./constants.js\";\n\nexport const SocialMediaMenu = ({ editor, appendTo }: MenuProps) => {\n const shouldShow = useCallback(() => {\n const isInSocialMedia = supportedSocialMedia?.some((socialMedia) => {\n const hasUrl = editor?.getAttributes(socialMedia)?.url;\n return !hasUrl && editor.isActive(socialMedia);\n });\n\n return isInSocialMedia;\n // const isIframe = editor.isActive('iframe')\n // return isIframe\n }, [editor]);\n\n const onHtml = useCallback(\n (url: string, isInline?: boolean) => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n editor\n .chain()\n .focus()\n .insertFacebook(url, isInline ? \"inline-facebook\" : \"side-facebook\")\n .run();\n\n break;\n case \"instagram\":\n editor\n .chain()\n .focus()\n .insertInstagram(\n url,\n isInline ? \"inline-instagram\" : \"side-instagram\"\n )\n .run();\n\n break;\n case \"youtube\":\n editor\n .chain()\n .focus()\n .insertYoutube(url, isInline ? \"inline-youtube\" : \"side-youtube\")\n .run();\n\n break;\n case \"linkedin\":\n editor\n .chain()\n .focus()\n .insertLinkedin(url, isInline ? \"inline-linkedin\" : \"side-linkedin\")\n .run();\n\n break;\n case \"tiktok\":\n editor\n .chain()\n .focus()\n .insertTiktok(url, isInline ? \"inline-tiktok\" : \"side-tiktok\")\n .run();\n\n break;\n case \"twitter\":\n editor\n .chain()\n .focus()\n .insertTwitter(url, isInline ? \"inline-twitter\" : \"side-twitter\")\n .run();\n break;\n }\n },\n [editor]\n );\n\n const generateTexts = useCallback(() => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n return {\n placeholderText: \"https://facebook.com/...\",\n buttonText: \"Embed Facebook\",\n descriptionText: \"Works with links to Facebook posts\",\n };\n\n case \"instagram\":\n return {\n placeholderText: \"https://instagram.com/...\",\n buttonText: \"Embed Instagram\",\n descriptionText: \"Works with links to Instagram posts\",\n };\n case \"youtube\":\n return {\n placeholderText: \"https://youtube.com/...\",\n buttonText: \"Embed Youtube\",\n descriptionText: \"Works with links to Youtube videos\",\n };\n case \"linkedin\":\n return {\n placeholderText: \"https://linkedin.com/...\",\n buttonText: \"Embed Linkedin\",\n descriptionText: \"Works with links to Linkedin posts\",\n };\n case \"tiktok\":\n return {\n placeholderText: \"https://tiktok.com/...\",\n buttonText: \"Embed Tiktok\",\n descriptionText: \"Works with links to tiktok videos\",\n };\n case \"twitter\":\n return {\n placeholderText: \"https://twitter.com/...\",\n buttonText: \"Embed Twitter\",\n descriptionText: \"Works with links to Tweets\",\n };\n }\n }, [editor]);\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`socialMediaMenu`}\n shouldShow={shouldShow}\n tippyOptions={{\n popperOptions: { placement: \"bottom\" },\n placement: \"bottom\",\n // appendTo: () => {\n // return appendTo?.current\n // },\n }}\n updateDelay={100}\n >\n <SocialMediaEditorPanel\n onSetLink={onHtml}\n initialSrc=\"\"\n placeholderText={generateTexts()?.placeholderText ?? \"\"}\n buttonText={generateTexts()?.buttonText ?? \"\"}\n descriptionText={generateTexts()?.descriptionText ?? \"\"}\n />\n {/* <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} /> */}\n {/* \n <Toolbar.Wrapper>\n <to\n <Toolbar.Button\n type=\"button\"\n tooltip=\"Sidebar left\"\n active={true}\n // onClick={onColumnLeft}\n >\n <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} />\n </Toolbar.Button>\n </Toolbar.Wrapper> */}\n </BaseBubbleMenu>\n );\n};\n\nexport default SocialMediaMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","SocialMediaEditorPanel","supportedSocialMedia","SocialMediaMenu","editor","appendTo","shouldShow","isInSocialMedia","some","socialMedia","hasUrl","getAttributes","url","isActive","onHtml","isInline","find","chain","focus","insertFacebook","run","insertInstagram","insertYoutube","insertLinkedin","insertTiktok","insertTwitter","generateTexts","placeholderText","buttonText","descriptionText","pluginKey","tippyOptions","popperOptions","placement","updateDelay","onSetLink","initialSrc"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AAEpC,SAASC,sBAAsB,QAAQ,4EAA4E;AAEnH,SAASC,oBAAoB,QAAQ,iBAAiB;AAEtD,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC7D,MAAMC,aAAaN,YAAY;QAC7B,MAAMO,kBAAkBL,sBAAsBM,KAAK,CAACC;YAClD,MAAMC,SAASN,QAAQO,cAAcF,cAAcG;YACnD,OAAO,CAACF,UAAUN,OAAOS,QAAQ,CAACJ;QACpC;QAEA,OAAOF;IACP,6CAA6C;IAC7C,kBAAkB;IACpB,GAAG;QAACH;KAAO;IAEX,MAAMU,SAASd,YACb,CAACY,KAAaG;QACZ,MAAMN,cAAcP,sBAAsBc,KAAK,CAACP;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACHL,OACGa,KAAK,GACLC,KAAK,GACLC,cAAc,CAACP,KAAKG,WAAW,oBAAoB,iBACnDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLG,eAAe,CACdT,KACAG,WAAW,qBAAqB,kBAEjCK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLI,aAAa,CAACV,KAAKG,WAAW,mBAAmB,gBACjDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLK,cAAc,CAACX,KAAKG,WAAW,oBAAoB,iBACnDK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLM,YAAY,CAACZ,KAAKG,WAAW,kBAAkB,eAC/CK,GAAG;gBAEN;YACF,KAAK;gBACHhB,OACGa,KAAK,GACLC,KAAK,GACLO,aAAa,CAACb,KAAKG,WAAW,mBAAmB,gBACjDK,GAAG;gBACN;QACJ;IACF,GACA;QAAChB;KAAO;IAGV,MAAMsB,gBAAgB1B,YAAY;QAChC,MAAMS,cAAcP,sBAAsBc,KAAK,CAACP;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACH,OAAO;oBACLkB,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YAEF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;QACJ;IACF,GAAG;QAACzB;KAAO;IACX,qBACE,KAACL;QACCK,QAAQA;QACR0B,WAAW,CAAC,eAAe,CAAC;QAC5BxB,YAAYA;QACZyB,cAAc;YACZC,eAAe;gBAAEC,WAAW;YAAS;YACrCA,WAAW;QAIb;QACAC,aAAa;kBAEb,cAAA,KAACjC;YACCkC,WAAWrB;YACXsB,YAAW;YACXT,iBAAiBD,iBAAiBC,mBAAmB;YACrDC,YAAYF,iBAAiBE,cAAc;YAC3CC,iBAAiBH,iBAAiBG,mBAAmB;;;AAiB7D,EAAE;AAEF,eAAe1B,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.ts"],"sourcesContent":["export const supportedSocialMedia = [\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.ts"],"sourcesContent":["export const supportedSocialMedia = [\n 'twitter',\n 'facebook',\n 'instagram',\n 'linkedin',\n 'tiktok',\n 'youtube',\n]\n"],"names":["supportedSocialMedia"],"mappings":"AAAA,OAAO,MAAMA,uBAAuB;IAClC;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/index.ts"],"sourcesContent":["export * from \"./SocialMediaMenu.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/index.ts"],"sourcesContent":["export * from \"./SocialMediaMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Cell.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Cell.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInColumn, isRowSelected, selectRow } from \"./utils.js\";\n\nexport interface TableCellOptions {\n HTMLAttributes: Record<string, any>;\n}\n\nexport const TableCell = Node.create<TableCellOptions>({\n name: \"tableCell\",\n\n content: \"block+\", // TODO: Do not allow table in table\n\n tableRole: \"cell\",\n\n isolating: true,\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [{ tag: \"td\" }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"td\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addAttributes() {\n return {\n colspan: {\n default: 1,\n parseHTML: (element) => {\n const colspan = element.getAttribute(\"colspan\");\n const value = colspan ? parseInt(colspan, 10) : 1;\n\n return value;\n },\n },\n rowspan: {\n default: 1,\n parseHTML: (element) => {\n const rowspan = element.getAttribute(\"rowspan\");\n const value = rowspan ? parseInt(rowspan, 10) : 1;\n\n return value;\n },\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth ? [parseInt(colwidth, 10)] : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInColumn(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const rowSelected = isRowSelected(index)(selection);\n let className = \"grip-row\";\n\n if (rowSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectRow(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n"],"names":["mergeAttributes","Node","Plugin","Decoration","DecorationSet","getCellsInColumn","isRowSelected","selectRow","TableCell","create","name","content","tableRole","isolating","addOptions","HTMLAttributes","parseHTML","tag","renderHTML","options","addAttributes","colspan","default","element","getAttribute","value","parseInt","rowspan","colwidth","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","rowSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAe;AACrD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,SAAS,QAAQ,aAAa;AAMxE,OAAO,MAAMC,YAAYP,KAAKQ,MAAM,CAAmB;IACrDC,MAAM;IAENC,SAAS;IAETC,WAAW;IAEXC,WAAW;IAEXC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC;QACE,OAAO;YAAC;gBAAEC,KAAK;YAAK;SAAE;IACxB;IAEAC,YAAW,EAAEH,cAAc,EAAE;QAC3B,OAAO;YACL;YACAf,gBAAgB,IAAI,CAACmB,OAAO,CAACJ,cAAc,EAAEA;YAC7C;SACD;IACH;IAEAK;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMF,UAAUE,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQJ,UAAUK,SAASL,SAAS,MAAM;oBAEhD,OAAOI;gBACT;YACF;YACAE,SAAS;gBACPL,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMI,UAAUJ,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQE,UAAUD,SAASC,SAAS,MAAM;oBAEhD,OAAOF;gBACT;YACF;YACAG,UAAU;gBACRN,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMK,WAAWL,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQG,WAAW;wBAACF,SAASE,UAAU;qBAAI,GAAG;oBAEpD,OAAOH;gBACT;YACF;YACAI,OAAO;gBACLP,SAAS;YACX;QACF;IACF;IAEAQ;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAI9B,OAAO;gBACT+B,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAO3B,cAAcgC,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQlC,iBAAiB,GAAGiC;wBAElC,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdxC,WAAWyC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcvC,cAAcoC,OAAOJ;oCACzC,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvBjD,UAAUmC,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAEzC;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAO5C,cAAcK,MAAM,CAAC4B,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Header.ts"],"sourcesContent":["import TiptapTableHeader from \"@tiptap/extension-table-header\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Header.ts"],"sourcesContent":["import TiptapTableHeader from \"@tiptap/extension-table-header\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInRow, isColumnSelected, selectColumn } from \"./utils.js\";\n\nexport const TableHeader = TiptapTableHeader.extend({\n addAttributes() {\n return {\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth\n ? colwidth.split(\",\").map((item) => parseInt(item, 10))\n : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInRow(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const colSelected = isColumnSelected(index)(selection);\n let className = \"grip-column\";\n\n if (colSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectColumn(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n\nexport default TableHeader;\n"],"names":["TiptapTableHeader","Plugin","Decoration","DecorationSet","getCellsInRow","isColumnSelected","selectColumn","TableHeader","extend","addAttributes","colspan","default","rowspan","colwidth","parseHTML","element","getAttribute","value","split","map","item","parseInt","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","colSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr","create"],"mappings":"AAAA,OAAOA,uBAAuB,iCAAiC;AAC/D,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,QAAQ,aAAa;AAE3E,OAAO,MAAMC,cAAcP,kBAAkBQ,MAAM,CAAC;IAClDC;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;YACX;YACAC,SAAS;gBACPD,SAAS;YACX;YACAE,UAAU;gBACRF,SAAS;gBACTG,WAAW,CAACC;oBACV,MAAMF,WAAWE,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQJ,WACVA,SAASK,KAAK,CAAC,KAAKC,GAAG,CAAC,CAACC,OAASC,SAASD,MAAM,OACjD;oBAEJ,OAAOH;gBACT;YACF;YACAK,OAAO;gBACLX,SAAS;YACX;QACF;IACF;IAEAY;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAIxB,OAAO;gBACTyB,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAOrB,cAAc0B,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQ5B,cAAc,GAAG2B;wBAE/B,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdlC,WAAWmC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcjC,iBAAiB8B,OAAOJ;oCAC5C,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvB3C,aAAa6B,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAE5C;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAOtC,cAAcgD,MAAM,CAACrB,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG;AAEH,eAAepB,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Row.ts"],"sourcesContent":["import TiptapTableRow from '@tiptap/extension-table-row'\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Row.ts"],"sourcesContent":["import TiptapTableRow from '@tiptap/extension-table-row'\n\nexport const TableRow = TiptapTableRow.extend({\n allowGapCursor: false,\n content: 'tableCell*',\n})\n\nexport default TableRow\n"],"names":["TiptapTableRow","TableRow","extend","allowGapCursor","content"],"mappings":"AAAA,OAAOA,oBAAoB,8BAA6B;AAExD,OAAO,MAAMC,WAAWD,eAAeE,MAAM,CAAC;IAC5CC,gBAAgB;IAChBC,SAAS;AACX,GAAE;AAEF,eAAeH,SAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Table.ts"],"sourcesContent":["import TiptapTable from '@tiptap/extension-table'\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Table.ts"],"sourcesContent":["import TiptapTable from '@tiptap/extension-table'\n\nexport const Table = TiptapTable.configure({ resizable: true, lastColumnResizable: false })\n\nexport default Table\n"],"names":["TiptapTable","Table","configure","resizable","lastColumnResizable"],"mappings":"AAAA,OAAOA,iBAAiB,0BAAyB;AAEjD,OAAO,MAAMC,QAAQD,YAAYE,SAAS,CAAC;IAAEC,WAAW;IAAMC,qBAAqB;AAAM,GAAE;AAE3F,eAAeH,MAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/index.ts"],"sourcesContent":["export { Table } from \"./Table.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/index.ts"],"sourcesContent":["export { Table } from \"./Table.js\";\nexport { TableCell } from \"./Cell.js\";\nexport { TableRow } from \"./Row.js\";\nexport { TableHeader } from \"./Header.js\";\n"],"names":["Table","TableCell","TableRow","TableHeader"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,QAAQ,QAAQ,WAAW;AACpC,SAASC,WAAW,QAAQ,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\n\nimport { ArrowLeftToLine, ArrowRightToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\nimport { isColumnGripSelected } from \"./utils.js\";\n\nexport const TableColumnMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state) {\n return false;\n }\n\n return isColumnGripSelected({ editor, view, state, from: from || 0 });\n },\n [editor]\n );\n\n const onAddColumnBefore = useCallback(() => {\n editor.chain().focus().addColumnBefore().run();\n }, [editor]);\n\n const onAddColumnAfter = useCallback(() => {\n editor.chain().focus().addColumnAfter().run();\n }, [editor]);\n\n const onDeleteColumn = useCallback(() => {\n editor.chain().focus().deleteColumn().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableColumnMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowLeftToLine} />}\n close={false}\n label=\"Add column before\"\n onClick={onAddColumnBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowRightToLine} />}\n close={false}\n label=\"Add column after\"\n onClick={onAddColumnAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete column\"\n onClick={onDeleteColumn}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableColumnMenu.displayName = \"TableColumnMenu\";\n\nexport default TableColumnMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","ArrowLeftToLine","ArrowRightToLine","Trash","Icon","PopoverMenu","Toolbar","isColumnGripSelected","TableColumnMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddColumnBefore","chain","focus","addColumnBefore","run","onAddColumnAfter","addColumnAfter","onDeleteColumn","deleteColumn","pluginKey","updateDelay","tippyOptions","current","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AAEtD,SAASC,eAAe,EAAEC,gBAAgB,EAAEC,KAAK,QAAQ,eAAe;AAKxE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,YAAYC,iBAAiB,yCAAyC;AACtE,SAASC,OAAO,QAAQ,qCAAqC;AAC7D,SAASC,oBAAoB,QAAQ,aAAa;AAElD,OAAO,MAAMC,gCAAkBT,MAAMU,IAAI,CACvC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,OAAO;YACV,OAAO;QACT;QAEA,OAAOP,qBAAqB;YAAEG;YAAQG;YAAMC;YAAOC,MAAMA,QAAQ;QAAE;IACrE,GACA;QAACL;KAAO;IAGV,MAAMM,oBAAoBhB,YAAY;QACpCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,eAAe,GAAGC,GAAG;IAC9C,GAAG;QAACV;KAAO;IAEX,MAAMW,mBAAmBrB,YAAY;QACnCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,cAAc,GAAGF,GAAG;IAC7C,GAAG;QAACV;KAAO;IAEX,MAAMa,iBAAiBvB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,YAAY,GAAGJ,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACArB,YAAYA;kBAEZ,cAAA,MAACN,QAAQ4B,OAAO;YAACC,UAAU;;8BACzB,KAAC9B,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMrC;;oBAC3BsC,OAAO;oBACPC,OAAM;oBACNC,SAASzB;;8BAEX,KAACX,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASpB;;8BAEX,KAAChB,YAAY+B,IAAI;oBACfE,MAAMnC;oBACNoC,OAAO;oBACPC,OAAM;oBACNC,SAASlB;;;;;AAKnB,GACA;AAEFf,gBAAgBkC,WAAW,GAAG;AAE9B,eAAelC,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\n\nimport { isTableSelected } from \"../../utils.js\";\nimport Table from \"../../Table.js\";\n\nexport const isColumnGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripColumn =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-column.selected\");\n\n return !!gripColumn;\n};\n\nexport default isColumnGripSelected;\n"],"names":["isTableSelected","Table","isColumnGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripColumn","querySelector"],"mappings":"AAIA,SAASA,eAAe,QAAQ,iBAAiB;AACjD,OAAOC,WAAW,iBAAiB;AAEnC,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACT,MAAMU,IAAI,KAC3B,CAACH,QACDR,gBAAgBK,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,aACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,qBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\n\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\n\nimport { ArrowDownToLine, ArrowUpToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport { isRowGripSelected } from \"./utils.js\";\n\nexport const TableRowMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state || !from) {\n return false;\n }\n\n return isRowGripSelected({ editor, view, state, from });\n },\n [editor]\n );\n\n const onAddRowBefore = useCallback(() => {\n editor.chain().focus().addRowBefore().run();\n }, [editor]);\n\n const onAddRowAfter = useCallback(() => {\n editor.chain().focus().addRowAfter().run();\n }, [editor]);\n\n const onDeleteRow = useCallback(() => {\n editor.chain().focus().deleteRow().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableRowMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n placement: \"left\",\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowUpToLine} />}\n close={false}\n label=\"Add row before\"\n onClick={onAddRowBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowDownToLine} />}\n close={false}\n label=\"Add row after\"\n onClick={onAddRowAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete row\"\n onClick={onDeleteRow}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableRowMenu.displayName = \"TableRowMenu\";\n\nexport default TableRowMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","PopoverMenu","Toolbar","ArrowDownToLine","ArrowUpToLine","Trash","Icon","isRowGripSelected","TableRowMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddRowBefore","chain","focus","addRowBefore","run","onAddRowAfter","addRowAfter","onDeleteRow","deleteRow","pluginKey","updateDelay","tippyOptions","current","placement","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AACtD,YAAYC,iBAAiB,yCAAyC;AAEtE,SAASC,OAAO,QAAQ,qCAAqC;AAE7D,SAASC,eAAe,EAAEC,aAAa,EAAEC,KAAK,QAAQ,eAAe;AAKrE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,SAASC,iBAAiB,QAAQ,aAAa;AAE/C,OAAO,MAAMC,6BAAeT,MAAMU,IAAI,CACpC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,SAAS,CAACC,MAAM;YACnB,OAAO;QACT;QAEA,OAAOR,kBAAkB;YAAEG;YAAQG;YAAMC;YAAOC;QAAK;IACvD,GACA;QAACL;KAAO;IAGV,MAAMM,iBAAiBhB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,YAAY,GAAGC,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,MAAMW,gBAAgBrB,YAAY;QAChCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,WAAW,GAAGF,GAAG;IAC1C,GAAG;QAACV;KAAO;IAEX,MAAMa,cAAcvB,YAAY;QAC9BU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,SAAS,GAAGJ,GAAG;IACxC,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,WAAW;YACXC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACAtB,YAAYA;kBAEZ,cAAA,MAACV,QAAQiC,OAAO;YAACC,UAAU;;8BACzB,KAACnC,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMnC;;oBAC3BoC,OAAO;oBACPC,OAAM;oBACNC,SAAS1B;;8BAEX,KAACf,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASrB;;8BAEX,KAACpB,YAAYoC,IAAI;oBACfE,MAAMlC;oBACNmC,OAAO;oBACPC,OAAM;oBACNC,SAASnB;;;;;AAKnB,GACA;AAEFf,aAAamC,WAAW,GAAG;AAE3B,eAAenC,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.ts"],"sourcesContent":["import { EditorState } from \"@tiptap/pm/state\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.ts"],"sourcesContent":["import { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\nimport { Editor } from \"@tiptap/react\";\n\nimport Table from \"../../Table.js\";\nimport { isTableSelected } from \"../../utils.js\";\n\nexport const isRowGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripRow =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-row.selected\");\n\n return !!gripRow;\n};\n\nexport default isRowGripSelected;\n"],"names":["Table","isTableSelected","isRowGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripRow","querySelector"],"mappings":"AAIA,OAAOA,WAAW,iBAAiB;AACnC,SAASC,eAAe,QAAQ,iBAAiB;AAEjD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACV,MAAMW,IAAI,KAC3B,CAACH,QACDP,gBAAgBI,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,UACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/index.tsx"],"sourcesContent":["export * from \"./TableColumn/index.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/index.tsx"],"sourcesContent":["export * from \"./TableColumn/index.js\";\nexport * from \"./TableRow/index.js\";\n"],"names":[],"mappings":"AAAA,cAAc,yBAAyB;AACvC,cAAc,sBAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/utils.ts"],"sourcesContent":["// @ts-nocheck\r\nimport { findParentNode } from '@tiptap/core'\r\nimport { Selection, Transaction } from '@tiptap/pm/state'\r\nimport { CellSelection, TableMap } from '@tiptap/pm/tables'\r\nimport { Node, ResolvedPos } from '@tiptap/pm/model'\r\n\r\nexport const isRectSelected = (rect: any) => (selection: CellSelection) => {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n const start = selection.$anchorCell.start(-1)\r\n const cells = map.cellsInRect(rect)\r\n const selectedCells = map.cellsInRect(\r\n map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start),\r\n )\r\n\r\n for (let i = 0, count = cells.length; i < count; i += 1) {\r\n if (selectedCells.indexOf(cells[i]) === -1) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\nexport const findTable = (selection: Selection) =>\r\n findParentNode(node => node.type.spec.tableRole && node.type.spec.tableRole === 'table')(selection)\r\n\r\nexport const isCellSelection = (selection: any) => selection instanceof CellSelection\r\n\r\nexport const isColumnSelected = (columnIndex: number) => (selection: any) => {\r\n if (isCellSelection(selection)) {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n\r\n return isRectSelected({\r\n left: columnIndex,\r\n right: columnIndex + 1,\r\n top: 0,\r\n bottom: map.height,\r\n })(selection)\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const isRowSelected = (rowIndex: number) => (selection: any) => {\r\n if (isCellSelection(selection)) {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n\r\n return isRectSelected({\r\n left: 0,\r\n right: map.width,\r\n top: rowIndex,\r\n bottom: rowIndex + 1,\r\n })(selection)\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const isTableSelected = (selection: any) => {\r\n if (isCellSelection(selection)) {\r\n const map = TableMap.get(selection.$anchorCell.node(-1))\r\n\r\n return isRectSelected({\r\n left: 0,\r\n right: map.width,\r\n top: 0,\r\n bottom: map.height,\r\n })(selection)\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const getCellsInColumn = (columnIndex: number | number[]) => (selection: Selection) => {\r\n const table = findTable(selection)\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n const indexes = Array.isArray(columnIndex) ? columnIndex : Array.from([columnIndex])\r\n\r\n return indexes.reduce(\r\n (acc, index) => {\r\n if (index >= 0 && index <= map.width - 1) {\r\n const cells = map.cellsInRect({\r\n left: index,\r\n right: index + 1,\r\n top: 0,\r\n bottom: map.height,\r\n })\r\n\r\n return acc.concat(\r\n cells.map(nodePos => {\r\n const node = table.node.nodeAt(nodePos)\r\n const pos = nodePos + table.start\r\n\r\n return { pos, start: pos + 1, node }\r\n }),\r\n )\r\n }\r\n\r\n return acc\r\n },\r\n [] as { pos: number; start: number; node: Node | null | undefined }[],\r\n )\r\n }\r\n return null\r\n}\r\n\r\nexport const getCellsInRow = (rowIndex: number | number[]) => (selection: Selection) => {\r\n const table = findTable(selection)\r\n\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n const indexes = Array.isArray(rowIndex) ? rowIndex : Array.from([rowIndex])\r\n\r\n return indexes.reduce(\r\n (acc, index) => {\r\n if (index >= 0 && index <= map.height - 1) {\r\n const cells = map.cellsInRect({\r\n left: 0,\r\n right: map.width,\r\n top: index,\r\n bottom: index + 1,\r\n })\r\n\r\n return acc.concat(\r\n cells.map(nodePos => {\r\n const node = table.node.nodeAt(nodePos)\r\n const pos = nodePos + table.start\r\n return { pos, start: pos + 1, node }\r\n }),\r\n )\r\n }\r\n\r\n return acc\r\n },\r\n [] as { pos: number; start: number; node: Node | null | undefined }[],\r\n )\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const getCellsInTable = (selection: Selection) => {\r\n const table = findTable(selection)\r\n\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n const cells = map.cellsInRect({\r\n left: 0,\r\n right: map.width,\r\n top: 0,\r\n bottom: map.height,\r\n })\r\n\r\n return cells.map(nodePos => {\r\n const node = table.node.nodeAt(nodePos)\r\n const pos = nodePos + table.start\r\n\r\n return { pos, start: pos + 1, node }\r\n })\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\r\n for (let i = $pos.depth; i > 0; i -= 1) {\r\n const node = $pos.node(i)\r\n\r\n if (predicate(node)) {\r\n return {\r\n pos: i > 0 ? $pos.before(i) : 0,\r\n start: $pos.start(i),\r\n depth: i,\r\n node,\r\n }\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const findCellClosestToPos = ($pos: ResolvedPos) => {\r\n const predicate = (node: Node) => node.type.spec.tableRole && /cell/i.test(node.type.spec.tableRole)\r\n\r\n return findParentNodeClosestToPos($pos, predicate)\r\n}\r\n\r\nconst select = (type: 'row' | 'column') => (index: number) => (tr: Transaction) => {\r\n const table = findTable(tr.selection)\r\n const isRowSelection = type === 'row'\r\n\r\n if (table) {\r\n const map = TableMap.get(table.node)\r\n\r\n // Check if the index is valid\r\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\r\n const left = isRowSelection ? 0 : index\r\n const top = isRowSelection ? index : 0\r\n const right = isRowSelection ? map.width : index + 1\r\n const bottom = isRowSelection ? index + 1 : map.height\r\n\r\n const cellsInFirstRow = map.cellsInRect({\r\n left,\r\n top,\r\n right: isRowSelection ? right : left + 1,\r\n bottom: isRowSelection ? top + 1 : bottom,\r\n })\r\n\r\n const cellsInLastRow =\r\n bottom - top === 1\r\n ? cellsInFirstRow\r\n : map.cellsInRect({\r\n left: isRowSelection ? left : right - 1,\r\n top: isRowSelection ? bottom - 1 : top,\r\n right,\r\n bottom,\r\n })\r\n\r\n const head = table.start + cellsInFirstRow[0]\r\n const anchor = table.start + cellsInLastRow[cellsInLastRow.length - 1]\r\n const $head = tr.doc.resolve(head)\r\n const $anchor = tr.doc.resolve(anchor)\r\n\r\n // @ts-ignore\r\n return tr.setSelection(new CellSelection($anchor, $head))\r\n }\r\n }\r\n return tr\r\n}\r\n\r\nexport const selectColumn = select('column')\r\n\r\nexport const selectRow = select('row')\r\n\r\nexport const selectTable = (tr: Transaction) => {\r\n const table = findTable(tr.selection)\r\n\r\n if (table) {\r\n const { map } = TableMap.get(table.node)\r\n\r\n if (map && map.length) {\r\n const head = table.start + map[0]\r\n const anchor = table.start + map[map.length - 1]\r\n const $head = tr.doc.resolve(head)\r\n const $anchor = tr.doc.resolve(anchor)\r\n\r\n // @ts-ignore\r\n return tr.setSelection(new CellSelection($anchor, $head))\r\n }\r\n }\r\n\r\n return tr\r\n}\r\n"],"names":["findParentNode","CellSelection","TableMap","isRectSelected","rect","selection","map","get","$anchorCell","node","start","cells","cellsInRect","selectedCells","rectBetween","pos","$headCell","i","count","length","indexOf","findTable","type","spec","tableRole","isCellSelection","isColumnSelected","columnIndex","left","right","top","bottom","height","isRowSelected","rowIndex","width","isTableSelected","getCellsInColumn","table","indexes","Array","isArray","from","reduce","acc","index","concat","nodePos","nodeAt","getCellsInRow","getCellsInTable","findParentNodeClosestToPos","$pos","predicate","depth","before","findCellClosestToPos","test","select","tr","isRowSelection","cellsInFirstRow","cellsInLastRow","head","anchor","$head","doc","resolve","$anchor","setSelection","selectColumn","selectRow","selectTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/utils.ts"],"sourcesContent":["// @ts-nocheck\nimport { findParentNode } from '@tiptap/core'\nimport { Selection, Transaction } from '@tiptap/pm/state'\nimport { CellSelection, TableMap } from '@tiptap/pm/tables'\nimport { Node, ResolvedPos } from '@tiptap/pm/model'\n\nexport const isRectSelected = (rect: any) => (selection: CellSelection) => {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n const start = selection.$anchorCell.start(-1)\n const cells = map.cellsInRect(rect)\n const selectedCells = map.cellsInRect(\n map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start),\n )\n\n for (let i = 0, count = cells.length; i < count; i += 1) {\n if (selectedCells.indexOf(cells[i]) === -1) {\n return false\n }\n }\n\n return true\n}\n\nexport const findTable = (selection: Selection) =>\n findParentNode(node => node.type.spec.tableRole && node.type.spec.tableRole === 'table')(selection)\n\nexport const isCellSelection = (selection: any) => selection instanceof CellSelection\n\nexport const isColumnSelected = (columnIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: columnIndex,\n right: columnIndex + 1,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const isRowSelected = (rowIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: rowIndex,\n bottom: rowIndex + 1,\n })(selection)\n }\n\n return false\n}\n\nexport const isTableSelected = (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const getCellsInColumn = (columnIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(columnIndex) ? columnIndex : Array.from([columnIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.width - 1) {\n const cells = map.cellsInRect({\n left: index,\n right: index + 1,\n top: 0,\n bottom: map.height,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n return null\n}\n\nexport const getCellsInRow = (rowIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(rowIndex) ? rowIndex : Array.from([rowIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.height - 1) {\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: index,\n bottom: index + 1,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n\n return null\n}\n\nexport const getCellsInTable = (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })\n\n return cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n })\n }\n\n return null\n}\n\nexport const findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i)\n\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n\n return null\n}\n\nexport const findCellClosestToPos = ($pos: ResolvedPos) => {\n const predicate = (node: Node) => node.type.spec.tableRole && /cell/i.test(node.type.spec.tableRole)\n\n return findParentNodeClosestToPos($pos, predicate)\n}\n\nconst select = (type: 'row' | 'column') => (index: number) => (tr: Transaction) => {\n const table = findTable(tr.selection)\n const isRowSelection = type === 'row'\n\n if (table) {\n const map = TableMap.get(table.node)\n\n // Check if the index is valid\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\n const left = isRowSelection ? 0 : index\n const top = isRowSelection ? index : 0\n const right = isRowSelection ? map.width : index + 1\n const bottom = isRowSelection ? index + 1 : map.height\n\n const cellsInFirstRow = map.cellsInRect({\n left,\n top,\n right: isRowSelection ? right : left + 1,\n bottom: isRowSelection ? top + 1 : bottom,\n })\n\n const cellsInLastRow =\n bottom - top === 1\n ? cellsInFirstRow\n : map.cellsInRect({\n left: isRowSelection ? left : right - 1,\n top: isRowSelection ? bottom - 1 : top,\n right,\n bottom,\n })\n\n const head = table.start + cellsInFirstRow[0]\n const anchor = table.start + cellsInLastRow[cellsInLastRow.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n return tr\n}\n\nexport const selectColumn = select('column')\n\nexport const selectRow = select('row')\n\nexport const selectTable = (tr: Transaction) => {\n const table = findTable(tr.selection)\n\n if (table) {\n const { map } = TableMap.get(table.node)\n\n if (map && map.length) {\n const head = table.start + map[0]\n const anchor = table.start + map[map.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n\n return tr\n}\n"],"names":["findParentNode","CellSelection","TableMap","isRectSelected","rect","selection","map","get","$anchorCell","node","start","cells","cellsInRect","selectedCells","rectBetween","pos","$headCell","i","count","length","indexOf","findTable","type","spec","tableRole","isCellSelection","isColumnSelected","columnIndex","left","right","top","bottom","height","isRowSelected","rowIndex","width","isTableSelected","getCellsInColumn","table","indexes","Array","isArray","from","reduce","acc","index","concat","nodePos","nodeAt","getCellsInRow","getCellsInTable","findParentNodeClosestToPos","$pos","predicate","depth","before","findCellClosestToPos","test","select","tr","isRowSelection","cellsInFirstRow","cellsInLastRow","head","anchor","$head","doc","resolve","$anchor","setSelection","selectColumn","selectRow","selectTable"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/index.ts"],"sourcesContent":["export * from \"./trailing-node.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/index.ts"],"sourcesContent":["export * from \"./trailing-node.js\";\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.ts"],"sourcesContent":["import { Extension } from \"@tiptap/core\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.ts"],"sourcesContent":["import { Extension } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\n\n// @ts-ignore\nfunction nodeEqualsType({ types, node }) {\n return (\n (Array.isArray(types) && types.includes(node.type)) || node.type === types\n );\n}\n\n/**\n * Extension based on:\n * - https://github.com/ueberdosis/tiptap/blob/v1/packages/tiptap-extensions/src/extensions/TrailingNode.js\n * - https://github.com/remirror/remirror/blob/e0f1bec4a1e8073ce8f5500d62193e52321155b9/packages/prosemirror-trailing-node/src/trailing-node-plugin.ts\n */\n\nexport interface TrailingNodeOptions {\n node: string;\n notAfter: string[];\n}\n\nexport const TrailingNode = Extension.create<TrailingNodeOptions>({\n name: \"trailingNode\",\n\n addOptions() {\n return {\n node: \"paragraph\",\n notAfter: [\"paragraph\"],\n };\n },\n\n addProseMirrorPlugins() {\n const plugin = new PluginKey(this.name);\n const disabledNodes = Object.entries(this.editor.schema.nodes)\n .map(([, value]) => value)\n .filter((node) => this.options.notAfter.includes(node.name));\n\n return [\n new Plugin({\n key: plugin,\n appendTransaction: (_, __, state) => {\n const { doc, tr, schema } = state;\n const shouldInsertNodeAtEnd = plugin.getState(state);\n const endPosition = doc.content.size;\n const type = schema.nodes[this.options.node];\n\n if (!shouldInsertNodeAtEnd) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return tr.insert(endPosition, type.create());\n },\n state: {\n init: (_, state) => {\n const lastNode = state.tr.doc.lastChild;\n\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n },\n apply: (tr, value) => {\n if (!tr.docChanged) {\n return value;\n }\n\n const lastNode = tr.doc.lastChild;\n\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n },\n },\n }),\n ];\n },\n});\n"],"names":["Extension","Plugin","PluginKey","nodeEqualsType","types","node","Array","isArray","includes","type","TrailingNode","create","name","addOptions","notAfter","addProseMirrorPlugins","plugin","disabledNodes","Object","entries","editor","schema","nodes","map","value","filter","options","key","appendTransaction","_","__","state","doc","tr","shouldInsertNodeAtEnd","getState","endPosition","content","size","insert","init","lastNode","lastChild","apply","docChanged"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAe;AACzC,SAASC,MAAM,EAAEC,SAAS,QAAQ,mBAAmB;AAErD,aAAa;AACb,SAASC,eAAe,EAAEC,KAAK,EAAEC,IAAI,EAAE;IACrC,OACE,AAACC,MAAMC,OAAO,CAACH,UAAUA,MAAMI,QAAQ,CAACH,KAAKI,IAAI,KAAMJ,KAAKI,IAAI,KAAKL;AAEzE;AAaA,OAAO,MAAMM,eAAeV,UAAUW,MAAM,CAAsB;IAChEC,MAAM;IAENC;QACE,OAAO;YACLR,MAAM;YACNS,UAAU;gBAAC;aAAY;QACzB;IACF;IAEAC;QACE,MAAMC,SAAS,IAAId,UAAU,IAAI,CAACU,IAAI;QACtC,MAAMK,gBAAgBC,OAAOC,OAAO,CAAC,IAAI,CAACC,MAAM,CAACC,MAAM,CAACC,KAAK,EAC1DC,GAAG,CAAC,CAAC,GAAGC,MAAM,GAAKA,OACnBC,MAAM,CAAC,CAACpB,OAAS,IAAI,CAACqB,OAAO,CAACZ,QAAQ,CAACN,QAAQ,CAACH,KAAKO,IAAI;QAE5D,OAAO;YACL,IAAIX,OAAO;gBACT0B,KAAKX;gBACLY,mBAAmB,CAACC,GAAGC,IAAIC;oBACzB,MAAM,EAAEC,GAAG,EAAEC,EAAE,EAAEZ,MAAM,EAAE,GAAGU;oBAC5B,MAAMG,wBAAwBlB,OAAOmB,QAAQ,CAACJ;oBAC9C,MAAMK,cAAcJ,IAAIK,OAAO,CAACC,IAAI;oBACpC,MAAM7B,OAAOY,OAAOC,KAAK,CAAC,IAAI,CAACI,OAAO,CAACrB,IAAI,CAAC;oBAE5C,IAAI,CAAC6B,uBAAuB;wBAC1B;oBACF;oBAEA,6CAA6C;oBAC7C,OAAOD,GAAGM,MAAM,CAACH,aAAa3B,KAAKE,MAAM;gBAC3C;gBACAoB,OAAO;oBACLS,MAAM,CAACX,GAAGE;wBACR,MAAMU,WAAWV,MAAME,EAAE,CAACD,GAAG,CAACU,SAAS;wBAEvC,OAAO,CAACvC,eAAe;4BAAEE,MAAMoC;4BAAUrC,OAAOa;wBAAc;oBAChE;oBACA0B,OAAO,CAACV,IAAIT;wBACV,IAAI,CAACS,GAAGW,UAAU,EAAE;4BAClB,OAAOpB;wBACT;wBAEA,MAAMiB,WAAWR,GAAGD,GAAG,CAACU,SAAS;wBAEjC,OAAO,CAACvC,eAAe;4BAAEE,MAAMoC;4BAAUrC,OAAOa;wBAAc;oBAChE;gBACF;YACF;SACD;IACH;AACF,GAAG"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { mergeAttributes, Node, nodeInputRule } from "@tiptap/core";
|
|
2
|
-
/**
|
|
3
|
-
* Matches an image to a  on input.
|
|
2
|
+
/**
|
|
3
|
+
* Matches an image to a  on input.
|
|
4
4
|
*/ export const inputRegex = /(?:^|\s)(!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\))$/;
|
|
5
|
-
/**
|
|
6
|
-
* This extension allows you to insert images.
|
|
7
|
-
* @see https://www.tiptap.dev/api/nodes/image
|
|
5
|
+
/**
|
|
6
|
+
* This extension allows you to insert images.
|
|
7
|
+
* @see https://www.tiptap.dev/api/nodes/image
|
|
8
8
|
*/ export const Video = Node.create({
|
|
9
9
|
name: "video",
|
|
10
10
|
addOptions () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/Video.ts"],"sourcesContent":["import { mergeAttributes, Node, nodeInputRule } from \"@tiptap/core\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/Video.ts"],"sourcesContent":["import { mergeAttributes, Node, nodeInputRule } from \"@tiptap/core\";\n\nexport interface VideoOptions {\n /**\n * Controls if the image node should be inline or not.\n * @default false\n * @example true\n */\n inline: boolean;\n\n /**\n * Controls if base64 images are allowed. Enable this if you want to allow\n * base64 image urls in the `src` attribute.\n * @default false\n * @example true\n */\n allowBase64: boolean;\n\n /**\n * HTML attributes to add to the image element.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>;\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n video: {\n /**\n * Add an image\n * @param options The image attributes\n * @example\n * editor\n * .commands\n * .setVideo({ src: 'https://tiptap.dev/logo.png', alt: 'tiptap', title: 'tiptap logo' })\n */\n setVideo: (options: {\n src: string;\n alt?: string;\n title?: string;\n poster?: string;\n }) => ReturnType;\n };\n }\n}\n\n/**\n * Matches an image to a  on input.\n */\nexport const inputRegex =\n /(?:^|\\s)(!\\[(.+|:?)]\\((\\S+)(?:(?:\\s+)[\"'](\\S+)[\"'])?\\))$/;\n\n/**\n * This extension allows you to insert images.\n * @see https://www.tiptap.dev/api/nodes/image\n */\nexport const Video = Node.create<VideoOptions>({\n name: \"video\",\n\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n\n inline() {\n return this.options.inline;\n },\n\n group() {\n return this.options.inline ? \"inline\" : \"block\";\n },\n\n draggable: true,\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n alt: {\n default: null,\n },\n title: {\n default: null,\n },\n poster: {\n default: null,\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: this.options.allowBase64\n ? \"video[src]\"\n : 'video[src]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"video\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setVideo:\n (options) =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n attrs: options,\n });\n },\n };\n },\n\n addInputRules() {\n return [\n nodeInputRule({\n find: inputRegex,\n type: this.type,\n getAttributes: (match) => {\n const [, , alt, src, title] = match;\n\n return { src, alt, title };\n },\n }),\n ];\n },\n});\n"],"names":["mergeAttributes","Node","nodeInputRule","inputRegex","Video","create","name","addOptions","inline","allowBase64","HTMLAttributes","options","group","draggable","addAttributes","src","default","alt","title","poster","parseHTML","tag","renderHTML","addCommands","setVideo","commands","insertContent","type","attrs","addInputRules","find","getAttributes","match"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,EAAEC,aAAa,QAAQ,eAAe;AA+CpE;;CAEC,GACD,OAAO,MAAMC,aACX,2DAA2D;AAE7D;;;CAGC,GACD,OAAO,MAAMC,QAAQH,KAAKI,MAAM,CAAe;IAC7CC,MAAM;IAENC;QACE,OAAO;YACLC,QAAQ;YACRC,aAAa;YACbC,gBAAgB,CAAC;QACnB;IACF;IAEAF;QACE,OAAO,IAAI,CAACG,OAAO,CAACH,MAAM;IAC5B;IAEAI;QACE,OAAO,IAAI,CAACD,OAAO,CAACH,MAAM,GAAG,WAAW;IAC1C;IAEAK,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;YACX;YACAC,KAAK;gBACHD,SAAS;YACX;YACAE,OAAO;gBACLF,SAAS;YACX;YACAG,QAAQ;gBACNH,SAAS;YACX;QACF;IACF;IAEAI;QACE,OAAO;YACL;gBACEC,KAAK,IAAI,CAACV,OAAO,CAACF,WAAW,GACzB,eACA;YACN;SACD;IACH;IAEAa,YAAW,EAAEZ,cAAc,EAAE;QAC3B,OAAO;YACL;YACAV,gBAAgB,IAAI,CAACW,OAAO,CAACD,cAAc,EAAEA;SAC9C;IACH;IAEAa;QACE,OAAO;YACLC,UACE,CAACb,UACD,CAAC,EAAEc,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM,IAAI,CAACrB,IAAI;wBACfsB,OAAOjB;oBACT;gBACF;QACJ;IACF;IAEAkB;QACE,OAAO;YACL3B,cAAc;gBACZ4B,MAAM3B;gBACNwB,MAAM,IAAI,CAACA,IAAI;gBACfI,eAAe,CAACC;oBACd,MAAM,KAAKf,KAAKF,KAAKG,MAAM,GAAGc;oBAE9B,OAAO;wBAAEjB;wBAAKE;wBAAKC;oBAAM;gBAC3B;YACF;SACD;IACH;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/index.ts"],"sourcesContent":["export * from \"./Video.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Video/index.ts"],"sourcesContent":["export * from \"./Video.js\";\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\r\nimport { mergeAttributes, Range } from \"@tiptap/core\";\r\n\r\nimport { VideoBlockView } from \"./components/VideoBlockView.js\";\r\nimport { Video } from \"../Video/Video.js\";\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n videoBlock: {\r\n setVideoBlock: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAt: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n pos: number | Range;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\r\n setVideoBlockWidth: (width: number) => ReturnType;\r\n setVideoBlockCaption: (caption: boolean) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const VideoBlock = Video.extend({\r\n name: \"videoBlock\",\r\n\r\n group: \"block\",\r\n\r\n defining: true,\r\n\r\n isolating: true,\r\n\r\n addAttributes() {\r\n return {\r\n src: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"src\"),\r\n renderHTML: (attributes) => ({\r\n src: attributes.src,\r\n }),\r\n },\r\n title: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"title\"),\r\n renderHTML: (attributes) => ({\r\n title: attributes.title,\r\n }),\r\n },\r\n poster: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"poster\"),\r\n renderHTML: (attributes) => ({\r\n poster: attributes.poster,\r\n }),\r\n },\r\n playlistUrl: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\r\n renderHTML: (attributes) => ({\r\n \"data-playlist-url\": attributes.playlistUrl,\r\n }),\r\n },\r\n width: {\r\n default: \"100%\",\r\n parseHTML: (element) => element.getAttribute(\"data-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-width\": attributes.width,\r\n }),\r\n },\r\n actualWidth: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-width\": attributes.actualWidth,\r\n }),\r\n },\r\n actualHeight: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-height\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-height\": attributes.actualHeight,\r\n }),\r\n },\r\n align: {\r\n default: \"center\",\r\n parseHTML: (element) => element.getAttribute(\"data-align\"),\r\n renderHTML: (attributes) => ({\r\n \"data-align\": attributes.align,\r\n }),\r\n },\r\n alt: {\r\n default: undefined,\r\n parseHTML: (element) => element.getAttribute(\"alt\"),\r\n renderHTML: (attributes) => ({\r\n alt: attributes.alt,\r\n }),\r\n },\r\n caption: {\r\n default: true,\r\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\r\n renderHTML: (attributes) => ({\r\n \"data-caption\": attributes.caption,\r\n }),\r\n },\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'video[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), video[src*=\"windows.net\"]:not([src^=\"data:\"])',\r\n },\r\n ];\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n { class: \"imageBlock\" },\r\n [\"video\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\r\n [\r\n \"caption\",\r\n mergeAttributes(\r\n {\r\n class:\r\n \"text-center text-gray-400 w-full h-16 mb-2 placeholder-black p-1 text-sm border-0 rounded appearance-none\",\r\n },\r\n { defaultValue: HTMLAttributes.title || HTMLAttributes.caption }\r\n ),\r\n HTMLAttributes.title || HTMLAttributes.caption,\r\n ],\r\n ];\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setVideoBlock:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContent({\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAt:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContentAt(attrs.pos, {\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAlign:\r\n (align) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { align }),\r\n\r\n setVideoBlockWidth:\r\n (width) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", {\r\n width: `${Math.max(0, Math.min(100, width))}%`,\r\n }),\r\n\r\n setVideoBlockCaption:\r\n (caption) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { caption }),\r\n };\r\n },\r\n\r\n addNodeView() {\r\n //@ts-ignore\r\n return ReactNodeViewRenderer(VideoBlockView);\r\n },\r\n});\r\n\r\nexport default VideoBlock;\r\n"],"names":["ReactNodeViewRenderer","mergeAttributes","VideoBlockView","Video","VideoBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","title","poster","playlistUrl","width","actualWidth","actualHeight","align","alt","undefined","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setVideoBlock","attrs","commands","insertContent","type","assetId","setVideoBlockAt","insertContentAt","pos","setVideoBlockAlign","updateAttributes","setVideoBlockWidth","Math","max","min","setVideoBlockCaption","addNodeView"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { VideoBlockView } from \"./components/VideoBlockView.js\";\nimport { Video } from \"../Video/Video.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n videoBlock: {\n setVideoBlock: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n title: string;\n actualWidth?: number;\n actualHeight?: number;\n }) => ReturnType;\n setVideoBlockAt: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n title: string;\n pos: number | Range;\n actualWidth?: number;\n actualHeight?: number;\n }) => ReturnType;\n setVideoBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setVideoBlockWidth: (width: number) => ReturnType;\n setVideoBlockCaption: (caption: boolean) => ReturnType;\n };\n }\n}\n\nexport const VideoBlock = Video.extend({\n name: \"videoBlock\",\n\n group: \"block\",\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n src: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"src\"),\n renderHTML: (attributes) => ({\n src: attributes.src,\n }),\n },\n title: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"title\"),\n renderHTML: (attributes) => ({\n title: attributes.title,\n }),\n },\n poster: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"poster\"),\n renderHTML: (attributes) => ({\n poster: attributes.poster,\n }),\n },\n playlistUrl: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\n renderHTML: (attributes) => ({\n \"data-playlist-url\": attributes.playlistUrl,\n }),\n },\n width: {\n default: \"100%\",\n parseHTML: (element) => element.getAttribute(\"data-width\"),\n renderHTML: (attributes) => ({\n \"data-width\": attributes.width,\n }),\n },\n actualWidth: {\n default: 0,\n parseHTML: (element) => element.getAttribute(\"data-actual-width\"),\n renderHTML: (attributes) => ({\n \"data-actual-width\": attributes.actualWidth,\n }),\n },\n actualHeight: {\n default: 0,\n parseHTML: (element) => element.getAttribute(\"data-actual-height\"),\n renderHTML: (attributes) => ({\n \"data-actual-height\": attributes.actualHeight,\n }),\n },\n align: {\n default: \"center\",\n parseHTML: (element) => element.getAttribute(\"data-align\"),\n renderHTML: (attributes) => ({\n \"data-align\": attributes.align,\n }),\n },\n alt: {\n default: undefined,\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: true,\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\n renderHTML: (attributes) => ({\n \"data-caption\": attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'video[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), video[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"div\",\n { class: \"imageBlock\" },\n [\"video\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\n [\n \"caption\",\n mergeAttributes(\n {\n class:\n \"text-center text-gray-400 w-full h-16 mb-2 placeholder-black p-1 text-sm border-0 rounded appearance-none\",\n },\n { defaultValue: HTMLAttributes.title || HTMLAttributes.caption }\n ),\n HTMLAttributes.title || HTMLAttributes.caption,\n ],\n ];\n },\n\n addCommands() {\n return {\n setVideoBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"videoBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n title: attrs.title,\n actualWidth: attrs.actualWidth,\n actualHeight: attrs.actualHeight,\n },\n });\n },\n\n setVideoBlockAt:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContentAt(attrs.pos, {\n type: \"videoBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n title: attrs.title,\n actualWidth: attrs.actualWidth,\n actualHeight: attrs.actualHeight,\n },\n });\n },\n\n setVideoBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"videoBlock\", { align }),\n\n setVideoBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"videoBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n\n setVideoBlockCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"videoBlock\", { caption }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(VideoBlockView);\n },\n});\n\nexport default VideoBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","VideoBlockView","Video","VideoBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","title","poster","playlistUrl","width","actualWidth","actualHeight","align","alt","undefined","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setVideoBlock","attrs","commands","insertContent","type","assetId","setVideoBlockAt","insertContentAt","pos","setVideoBlockAlign","updateAttributes","setVideoBlockWidth","Math","max","min","setVideoBlockCaption","addNodeView"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { ReactNode, useCallback, useRef } from \"react\";\nimport { Instance, sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n Pencil,\n PencilOff,\n} from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { VideoBlockWidth } from \"./VideoBlockWidth.js\";\nimport i18next from \"i18next\";\n\nexport const VideoBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\n const menuRef = useRef<HTMLDivElement>(null);\n const tippyInstance = useRef<Instance | null>(null);\n\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"node-videoBlock\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isActive = editor.isActive(\"videoBlock\");\n\n return isActive;\n }, [editor]);\n\n const onAlignVideoLeft = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setVideoBlockAlign(\"left\")\n .run();\n }, [editor]);\n\n const onAlignVideoCenter = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setVideoBlockAlign(\"center\")\n .run();\n }, [editor]);\n\n const onAlignVideoRight = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setVideoBlockAlign(\"right\")\n .run();\n }, [editor]);\n\n const onHideCaption = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setVideoBlockCaption(\n editor.isActive(\"videoBlock\", { caption: false }) ? true : false\n )\n .run();\n }, [editor]);\n\n const onWidthChange = useCallback(\n (value: number) => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setVideoBlockWidth(value)\n .run();\n },\n [editor]\n );\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`videoBlockMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n onCreate: (instance: Instance) => {\n tippyInstance.current = instance;\n },\n appendTo: () => {\n return appendTo?.current;\n },\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"toggleCaption\") || \"Hide/Show caption\"}\n active={editor.isActive(\"videoBlock\", { caption: false })}\n onClick={onHideCaption}\n >\n <Icon\n icon={\n editor.isActive(\"videoBlock\", { caption: false })\n ? PencilOff\n : Pencil\n }\n />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignVideoLeft\") || \"Align video left\"}\n active={editor.isActive(\"videoBlock\", { align: \"left\" })}\n onClick={onAlignVideoLeft}\n >\n <Icon icon={AlignHorizontalDistributeStart} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignVideoCenter\") || \"Align video center\"}\n active={editor.isActive(\"videoBlock\", { align: \"center\" })}\n onClick={onAlignVideoCenter}\n >\n <Icon icon={AlignHorizontalDistributeCenter} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignVideoRight\") || \"Align video right\"}\n active={editor.isActive(\"videoBlock\", { align: \"right\" })}\n onClick={onAlignVideoRight}\n >\n <Icon icon={AlignHorizontalDistributeEnd} />\n </Toolbar.Button>\n <Toolbar.Divider />\n <VideoBlockWidth\n onChange={onWidthChange}\n value={parseInt(editor.getAttributes(\"videoBlock\").width)}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default VideoBlockMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Pencil","PencilOff","Icon","Toolbar","getRenderContainer","VideoBlockWidth","i18next","VideoBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignVideoLeft","chain","focus","undefined","scrollIntoView","setVideoBlockAlign","run","onAlignVideoCenter","onAlignVideoRight","onHideCaption","setVideoBlockCaption","caption","onWidthChange","value","setVideoBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","onClick","icon","align","Divider","onChange","parseInt","getAttributes","width"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.tsx"],"sourcesContent":["import { Node } from \"@tiptap/pm/model\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.tsx"],"sourcesContent":["import { Node } from \"@tiptap/pm/model\";\nimport { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { cn } from \"../../../lib/utils/index.js\";\nimport VideoPlayer from \"./videojs/VideoPlayer.js\";\n\ninterface VideoBlockViewProps {\n editor: Editor;\n getPos: () => number;\n node: Node & {\n attrs: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n };\n };\n updateAttributes: (attrs: Record<string, string>) => void;\n}\n\nexport type Playlist = {\n id: string;\n title: string;\n description: string;\n poster: string;\n items: Item[];\n};\n\nexport type Item = {\n src: string;\n type: string;\n label: string;\n width: number;\n height: number;\n};\n\nexport const VideoBlockView = (props: VideoBlockViewProps) => {\n const { editor, getPos, node } = props;\n const videoWrapperRef = useRef<HTMLDivElement>(null);\n const { src, poster, playlistUrl, caption, title } = node.attrs;\n const [playlistContent, setPlaylistContent] = React.useState<\n Playlist | undefined\n >();\n const [error, setError] = React.useState(\"\");\n\n useEffect(() => {\n async function getPlaylistContent() {\n try {\n const res = await fetch(playlistUrl, {\n cache: \"no-cache\",\n });\n return await res.json();\n } catch {\n setError(\"Issue with getting asset info\");\n return undefined;\n }\n }\n\n if (playlistUrl) {\n try {\n getPlaylistContent()\n .then((data) => {\n setPlaylistContent(data);\n })\n .catch((err) => {\n setError(err);\n });\n } catch (error) {\n setError(error);\n }\n }\n }, [playlistUrl]);\n\n const wrapperClassName = cn(\n node.attrs.align === \"left\" ? \"ml-0\" : \"ml-auto\",\n node.attrs.align === \"right\" ? \"mr-0\" : \"mr-auto\",\n node.attrs.align === \"center\" && \"mx-auto\"\n );\n\n const onClick = useCallback(() => {\n editor.commands.setNodeSelection(getPos());\n }, [getPos, editor.commands]);\n\n const videoJsOptions = useMemo(() => {\n if (playlistContent == undefined) return {};\n\n if (\n playlistContent.items.some(\n (item) =>\n item.type === \"application/x-mpegURL\" ||\n item.type === \"application/vnd.apple.mpegurl\"\n )\n ) {\n return {\n sources: playlistContent.items\n .filter(\n (item) =>\n item.type === \"application/x-mpegURL\" ||\n item.type === \"application/vnd.apple.mpegurl\"\n )\n .map((item) => ({\n src: item.src,\n type: item.type,\n label: item.label,\n })),\n poster: playlistContent.poster,\n };\n }\n return {\n sources: playlistContent.items.map((item) => ({\n src: item.src,\n type: item.type,\n label: item.label,\n })),\n poster: playlistContent.poster,\n };\n }, [playlistContent]);\n return (\n <NodeViewWrapper>\n <div className={wrapperClassName} style={{ width: node.attrs.width }}>\n <div ref={videoWrapperRef}>\n {error && <div>{error}</div>}\n {/* <video\n controls\n className=\"block\"\n src={src}\n poster={poster}\n title=\"\"\n onClick={onClick}\n /> */}\n {playlistContent && <VideoPlayer options={videoJsOptions} />}\n {caption && playlistContent?.title && (\n <caption className=\"text-center block text-sm text-gray-500\">\n {title || playlistContent?.title}\n </caption>\n )}\n </div>\n </div>\n </NodeViewWrapper>\n );\n};\n\nexport default VideoBlockView;\n"],"names":["NodeViewWrapper","React","useCallback","useEffect","useMemo","useRef","cn","VideoPlayer","VideoBlockView","props","editor","getPos","node","videoWrapperRef","src","poster","playlistUrl","caption","title","attrs","playlistContent","setPlaylistContent","useState","error","setError","getPlaylistContent","res","fetch","cache","json","undefined","then","data","catch","err","wrapperClassName","align","onClick","commands","setNodeSelection","videoJsOptions","items","some","item","type","sources","filter","map","label","div","className","style","width","ref","options"],"mappings":"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"}
|