payload-richtext-tiptap 0.0.156 → 0.0.157
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.d.ts +4 -3
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.js +26 -12
- 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.d.ts +3 -3
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.js +20 -10
- 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.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.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.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.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.d.ts +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.js +9 -9
- 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/src/mobile.css +1 -1
- package/dist/src/styles.css +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +209 -201
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/Quote.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\n\nexport const Quote = Node.create({\n name: 'quote',\n\n content: 'paragraph+',\n\n defining: true,\n\n marks: '',\n\n parseHTML() {\n return [\n {\n tag: 'blockquote',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['blockquote', HTMLAttributes, 0]\n },\n\n addKeyboardShortcuts() {\n return {\n Backspace: () => false,\n }\n },\n})\n\nexport default Quote\n"],"names":["Node","Quote","create","name","content","defining","marks","parseHTML","tag","renderHTML","HTMLAttributes","addKeyboardShortcuts","Backspace"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc;AAEnC,OAAO,MAAMC,QAAQD,KAAKE,MAAM,CAAC;IAC/BC,MAAM;IAENC,SAAS;IAETC,UAAU;IAEVC,OAAO;IAEPC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAcA;YAAgB;SAAE;IAC1C;IAEAC;QACE,OAAO;YACLC,WAAW,IAAM;QACnB;IACF;AACF,GAAE;AAEF,eAAeX,MAAK"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/Quote.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\r\n\r\nexport const Quote = Node.create({\r\n name: 'quote',\r\n\r\n content: 'paragraph+',\r\n\r\n defining: true,\r\n\r\n marks: '',\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'blockquote',\r\n },\r\n ]\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return ['blockquote', HTMLAttributes, 0]\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n Backspace: () => false,\r\n }\r\n },\r\n})\r\n\r\nexport default Quote\r\n"],"names":["Node","Quote","create","name","content","defining","marks","parseHTML","tag","renderHTML","HTMLAttributes","addKeyboardShortcuts","Backspace"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc;AAEnC,OAAO,MAAMC,QAAQD,KAAKE,MAAM,CAAC;IAC/BC,MAAM;IAENC,SAAS;IAETC,UAAU;IAEVC,OAAO;IAEPC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAcA;YAAgB;SAAE;IAC1C;IAEAC;QACE,OAAO;YACLC,WAAW,IAAM;QACnB;IACF;AACF,GAAE;AAEF,eAAeX,MAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/index.ts"],"sourcesContent":["export * from \"./Quote.js\";\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/index.ts"],"sourcesContent":["export * from \"./Quote.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
|
package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/QuoteCaption.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/QuoteCaption.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\n\nexport const QuoteCaption = Node.create({\n name: 'quoteCaption',\n\n group: 'block',\n\n content: 'text*',\n\n defining: true,\n\n isolating: true,\n\n parseHTML() {\n return [\n {\n tag: 'figcaption',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['figcaption', HTMLAttributes, 0]\n },\n\n addKeyboardShortcuts() {\n return {\n // On Enter at the end of line, create new paragraph and focus\n Enter: ({ editor }) => {\n const {\n state: {\n selection: { $from, empty },\n },\n } = editor\n\n if (!empty || $from.parent.type !== this.type) {\n return false\n }\n\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2\n\n if (!isAtEnd) {\n return false\n }\n\n const pos = editor.state.selection.$from.end()\n\n return editor.chain().focus(pos).insertContentAt(pos, { type: 'paragraph' }).run()\n },\n }\n },\n})\n\nexport default QuoteCaption\n"],"names":["Node","QuoteCaption","create","name","group","content","defining","isolating","parseHTML","tag","renderHTML","HTMLAttributes","addKeyboardShortcuts","Enter","editor","state","selection","$from","empty","parent","type","isAtEnd","parentOffset","nodeSize","pos","end","chain","focus","insertContentAt","run"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc;AAEnC,OAAO,MAAMC,eAAeD,KAAKE,MAAM,CAAC;IACtCC,MAAM;IAENC,OAAO;IAEPC,SAAS;IAETC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAcA;YAAgB;SAAE;IAC1C;IAEAC;QACE,OAAO;YACL,8DAA8D;YAC9DC,OAAO,CAAC,EAAEC,MAAM,EAAE;gBAChB,MAAM,EACJC,OAAO,EACLC,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAE,EAC5B,EACF,GAAGJ;gBAEJ,IAAI,CAACI,SAASD,MAAME,MAAM,CAACC,IAAI,KAAK,IAAI,CAACA,IAAI,EAAE;oBAC7C,OAAO;gBACT;gBAEA,MAAMC,UAAUJ,MAAMK,YAAY,KAAKL,MAAME,MAAM,CAACI,QAAQ,GAAG;gBAE/D,IAAI,CAACF,SAAS;oBACZ,OAAO;gBACT;gBAEA,MAAMG,MAAMV,OAAOC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACQ,GAAG;gBAE5C,OAAOX,OAAOY,KAAK,GAAGC,KAAK,CAACH,KAAKI,eAAe,CAACJ,KAAK;oBAAEJ,MAAM;gBAAY,GAAGS,GAAG;YAClF;QACF;IACF;AACF,GAAE;AAEF,eAAe5B,aAAY"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/QuoteCaption.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\r\n\r\nexport const QuoteCaption = Node.create({\r\n name: 'quoteCaption',\r\n\r\n group: 'block',\r\n\r\n content: 'text*',\r\n\r\n defining: true,\r\n\r\n isolating: true,\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'figcaption',\r\n },\r\n ]\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return ['figcaption', HTMLAttributes, 0]\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n // On Enter at the end of line, create new paragraph and focus\r\n Enter: ({ editor }) => {\r\n const {\r\n state: {\r\n selection: { $from, empty },\r\n },\r\n } = editor\r\n\r\n if (!empty || $from.parent.type !== this.type) {\r\n return false\r\n }\r\n\r\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2\r\n\r\n if (!isAtEnd) {\r\n return false\r\n }\r\n\r\n const pos = editor.state.selection.$from.end()\r\n\r\n return editor.chain().focus(pos).insertContentAt(pos, { type: 'paragraph' }).run()\r\n },\r\n }\r\n },\r\n})\r\n\r\nexport default QuoteCaption\r\n"],"names":["Node","QuoteCaption","create","name","group","content","defining","isolating","parseHTML","tag","renderHTML","HTMLAttributes","addKeyboardShortcuts","Enter","editor","state","selection","$from","empty","parent","type","isAtEnd","parentOffset","nodeSize","pos","end","chain","focus","insertContentAt","run"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc;AAEnC,OAAO,MAAMC,eAAeD,KAAKE,MAAM,CAAC;IACtCC,MAAM;IAENC,OAAO;IAEPC,SAAS;IAETC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAcA;YAAgB;SAAE;IAC1C;IAEAC;QACE,OAAO;YACL,8DAA8D;YAC9DC,OAAO,CAAC,EAAEC,MAAM,EAAE;gBAChB,MAAM,EACJC,OAAO,EACLC,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAE,EAC5B,EACF,GAAGJ;gBAEJ,IAAI,CAACI,SAASD,MAAME,MAAM,CAACC,IAAI,KAAK,IAAI,CAACA,IAAI,EAAE;oBAC7C,OAAO;gBACT;gBAEA,MAAMC,UAAUJ,MAAMK,YAAY,KAAKL,MAAME,MAAM,CAACI,QAAQ,GAAG;gBAE/D,IAAI,CAACF,SAAS;oBACZ,OAAO;gBACT;gBAEA,MAAMG,MAAMV,OAAOC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACQ,GAAG;gBAE5C,OAAOX,OAAOY,KAAK,GAAGC,KAAK,CAACH,KAAKI,eAAe,CAACJ,KAAK;oBAAEJ,MAAM;gBAAY,GAAGS,GAAG;YAClF;QACF;IACF;AACF,GAAE;AAEF,eAAe5B,aAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/index.ts"],"sourcesContent":["export * from \"./QuoteCaption.js\";\n"],"names":[],"mappings":"AAAA,cAAc,oBAAoB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/index.ts"],"sourcesContent":["export * from \"./QuoteCaption.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,oBAAoB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/index.ts"],"sourcesContent":["export * from \"./BlockquoteFigure.js\";\n"],"names":[],"mappings":"AAAA,cAAc,wBAAwB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/index.ts"],"sourcesContent":["export * from \"./BlockquoteFigure.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,wBAAwB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Document/Document.ts"],"sourcesContent":["import { Document as TiptapDocument } from \"@tiptap/extension-document\";\n\nexport const Document = TiptapDocument.extend({\n content: \"(block)+\",\n});\n\nexport default Document;\n"],"names":["Document","TiptapDocument","extend","content"],"mappings":"AAAA,SAASA,YAAYC,cAAc,QAAQ,6BAA6B;AAExE,OAAO,MAAMD,WAAWC,eAAeC,MAAM,CAAC;IAC5CC,SAAS;AACX,GAAG;AAEH,eAAeH,SAAS"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Document/Document.ts"],"sourcesContent":["import { Document as TiptapDocument } from \"@tiptap/extension-document\";\r\n\r\nexport const Document = TiptapDocument.extend({\r\n content: \"(block)+\",\r\n});\r\n\r\nexport default Document;\r\n"],"names":["Document","TiptapDocument","extend","content"],"mappings":"AAAA,SAASA,YAAYC,cAAc,QAAQ,6BAA6B;AAExE,OAAO,MAAMD,WAAWC,eAAeC,MAAM,CAAC;IAC5CC,SAAS;AACX,GAAG;AAEH,eAAeH,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Document/index.ts"],"sourcesContent":["export * from \"./Document.js\";\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Document/index.ts"],"sourcesContent":["export * from \"./Document.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figcaption/Figcaption.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\n\nimport { Image } from \"../Image/Image.js\";\n\nexport const Figcaption = Node.create({\n name: \"figcaption\",\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n content: \"inline*\",\n\n selectable: false,\n\n draggable: false,\n\n marks: \"link\",\n\n parseHTML() {\n return [\n {\n tag: \"figcaption\",\n },\n ];\n },\n\n addKeyboardShortcuts() {\n return {\n // On Enter at the end of line, create new paragraph and focus\n Enter: ({ editor }) => {\n const {\n state: {\n selection: { $from, empty },\n },\n } = editor;\n\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n\n if (!isAtEnd) {\n return false;\n }\n\n const pos = editor.state.selection.$from.end();\n\n return editor\n .chain()\n .focus(pos)\n .insertContentAt(pos, { type: \"paragraph\" })\n .run();\n },\n\n // On Backspace at the beginning of line,\n // dont delete content of image before\n Backspace: ({ editor }) => {\n const {\n state: {\n selection: { $from, empty },\n },\n } = editor;\n\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n\n const isAtStart = $from.parentOffset === 0;\n\n if (!isAtStart) {\n return false;\n }\n\n // if the node before is of type image, don't do anything\n const nodeBefore = editor.state.doc.nodeAt($from.pos - 2);\n if (nodeBefore?.type.name === Image.name) {\n return true;\n }\n\n return false;\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"figcaption\", mergeAttributes(HTMLAttributes), 0];\n },\n});\n\nexport default Figcaption;\n"],"names":["mergeAttributes","Node","Image","Figcaption","create","name","addOptions","HTMLAttributes","content","selectable","draggable","marks","parseHTML","tag","addKeyboardShortcuts","Enter","editor","state","selection","$from","empty","parent","type","isAtEnd","parentOffset","nodeSize","pos","end","chain","focus","insertContentAt","run","Backspace","isAtStart","nodeBefore","doc","nodeAt","renderHTML"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAe;AAErD,SAASC,KAAK,QAAQ,oBAAoB;AAE1C,OAAO,MAAMC,aAAaF,KAAKG,MAAM,CAAC;IACpCC,MAAM;IAENC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC,SAAS;IAETC,YAAY;IAEZC,WAAW;IAEXC,OAAO;IAEPC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACL,8DAA8D;YAC9DC,OAAO,CAAC,EAAEC,MAAM,EAAE;gBAChB,MAAM,EACJC,OAAO,EACLC,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAE,EAC5B,EACF,GAAGJ;gBAEJ,IAAI,CAACI,SAASD,MAAME,MAAM,CAACC,IAAI,KAAK,IAAI,CAACA,IAAI,EAAE;oBAC7C,OAAO;gBACT;gBAEA,MAAMC,UAAUJ,MAAMK,YAAY,KAAKL,MAAME,MAAM,CAACI,QAAQ,GAAG;gBAE/D,IAAI,CAACF,SAAS;oBACZ,OAAO;gBACT;gBAEA,MAAMG,MAAMV,OAAOC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACQ,GAAG;gBAE5C,OAAOX,OACJY,KAAK,GACLC,KAAK,CAACH,KACNI,eAAe,CAACJ,KAAK;oBAAEJ,MAAM;gBAAY,GACzCS,GAAG;YACR;YAEA,yCAAyC;YACzC,sCAAsC;YACtCC,WAAW,CAAC,EAAEhB,MAAM,EAAE;gBACpB,MAAM,EACJC,OAAO,EACLC,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAE,EAC5B,EACF,GAAGJ;gBAEJ,IAAI,CAACI,SAASD,MAAME,MAAM,CAACC,IAAI,KAAK,IAAI,CAACA,IAAI,EAAE;oBAC7C,OAAO;gBACT;gBAEA,MAAMW,YAAYd,MAAMK,YAAY,KAAK;gBAEzC,IAAI,CAACS,WAAW;oBACd,OAAO;gBACT;gBAEA,yDAAyD;gBACzD,MAAMC,aAAalB,OAAOC,KAAK,CAACkB,GAAG,CAACC,MAAM,CAACjB,MAAMO,GAAG,GAAG;gBACvD,IAAIQ,YAAYZ,KAAKjB,SAASH,MAAMG,IAAI,EAAE;oBACxC,OAAO;gBACT;gBAEA,OAAO;YACT;QACF;IACF;IAEAgC,YAAW,EAAE9B,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAcP,gBAAgBO;YAAiB;SAAE;IAC3D;AACF,GAAG;AAEH,eAAeJ,WAAW"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figcaption/Figcaption.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\r\n\r\nimport { Image } from \"../Image/Image.js\";\r\n\r\nexport const Figcaption = Node.create({\r\n name: \"figcaption\",\r\n\r\n addOptions() {\r\n return {\r\n HTMLAttributes: {},\r\n };\r\n },\r\n\r\n content: \"inline*\",\r\n\r\n selectable: false,\r\n\r\n draggable: false,\r\n\r\n marks: \"link\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: \"figcaption\",\r\n },\r\n ];\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n // On Enter at the end of line, create new paragraph and focus\r\n Enter: ({ editor }) => {\r\n const {\r\n state: {\r\n selection: { $from, empty },\r\n },\r\n } = editor;\r\n\r\n if (!empty || $from.parent.type !== this.type) {\r\n return false;\r\n }\r\n\r\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\r\n\r\n if (!isAtEnd) {\r\n return false;\r\n }\r\n\r\n const pos = editor.state.selection.$from.end();\r\n\r\n return editor\r\n .chain()\r\n .focus(pos)\r\n .insertContentAt(pos, { type: \"paragraph\" })\r\n .run();\r\n },\r\n\r\n // On Backspace at the beginning of line,\r\n // dont delete content of image before\r\n Backspace: ({ editor }) => {\r\n const {\r\n state: {\r\n selection: { $from, empty },\r\n },\r\n } = editor;\r\n\r\n if (!empty || $from.parent.type !== this.type) {\r\n return false;\r\n }\r\n\r\n const isAtStart = $from.parentOffset === 0;\r\n\r\n if (!isAtStart) {\r\n return false;\r\n }\r\n\r\n // if the node before is of type image, don't do anything\r\n const nodeBefore = editor.state.doc.nodeAt($from.pos - 2);\r\n if (nodeBefore?.type.name === Image.name) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n };\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\"figcaption\", mergeAttributes(HTMLAttributes), 0];\r\n },\r\n});\r\n\r\nexport default Figcaption;\r\n"],"names":["mergeAttributes","Node","Image","Figcaption","create","name","addOptions","HTMLAttributes","content","selectable","draggable","marks","parseHTML","tag","addKeyboardShortcuts","Enter","editor","state","selection","$from","empty","parent","type","isAtEnd","parentOffset","nodeSize","pos","end","chain","focus","insertContentAt","run","Backspace","isAtStart","nodeBefore","doc","nodeAt","renderHTML"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAe;AAErD,SAASC,KAAK,QAAQ,oBAAoB;AAE1C,OAAO,MAAMC,aAAaF,KAAKG,MAAM,CAAC;IACpCC,MAAM;IAENC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC,SAAS;IAETC,YAAY;IAEZC,WAAW;IAEXC,OAAO;IAEPC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACL,8DAA8D;YAC9DC,OAAO,CAAC,EAAEC,MAAM,EAAE;gBAChB,MAAM,EACJC,OAAO,EACLC,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAE,EAC5B,EACF,GAAGJ;gBAEJ,IAAI,CAACI,SAASD,MAAME,MAAM,CAACC,IAAI,KAAK,IAAI,CAACA,IAAI,EAAE;oBAC7C,OAAO;gBACT;gBAEA,MAAMC,UAAUJ,MAAMK,YAAY,KAAKL,MAAME,MAAM,CAACI,QAAQ,GAAG;gBAE/D,IAAI,CAACF,SAAS;oBACZ,OAAO;gBACT;gBAEA,MAAMG,MAAMV,OAAOC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACQ,GAAG;gBAE5C,OAAOX,OACJY,KAAK,GACLC,KAAK,CAACH,KACNI,eAAe,CAACJ,KAAK;oBAAEJ,MAAM;gBAAY,GACzCS,GAAG;YACR;YAEA,yCAAyC;YACzC,sCAAsC;YACtCC,WAAW,CAAC,EAAEhB,MAAM,EAAE;gBACpB,MAAM,EACJC,OAAO,EACLC,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAE,EAC5B,EACF,GAAGJ;gBAEJ,IAAI,CAACI,SAASD,MAAME,MAAM,CAACC,IAAI,KAAK,IAAI,CAACA,IAAI,EAAE;oBAC7C,OAAO;gBACT;gBAEA,MAAMW,YAAYd,MAAMK,YAAY,KAAK;gBAEzC,IAAI,CAACS,WAAW;oBACd,OAAO;gBACT;gBAEA,yDAAyD;gBACzD,MAAMC,aAAalB,OAAOC,KAAK,CAACkB,GAAG,CAACC,MAAM,CAACjB,MAAMO,GAAG,GAAG;gBACvD,IAAIQ,YAAYZ,KAAKjB,SAASH,MAAMG,IAAI,EAAE;oBACxC,OAAO;gBACT;gBAEA,OAAO;YACT;QACF;IACF;IAEAgC,YAAW,EAAE9B,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAcP,gBAAgBO;YAAiB;SAAE;IAC3D;AACF,GAAG;AAEH,eAAeJ,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figcaption/index.ts"],"sourcesContent":["export * from \"./Figcaption.js\";\n"],"names":[],"mappings":"AAAA,cAAc,kBAAkB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figcaption/index.ts"],"sourcesContent":["export * from \"./Figcaption.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figure/Figure.ts"],"sourcesContent":["import { mergeAttributes, Node } from '@tiptap/core'\nimport { Plugin } from '@tiptap/pm/state'\n\nexport const Figure = Node.create({\n name: 'figure',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n }\n },\n\n group: 'block',\n\n content: 'block figcaption',\n\n draggable: true,\n\n defining: true,\n\n selectable: true,\n\n parseHTML() {\n return [\n {\n tag: `figure[data-type=\"${this.name}\"]`,\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['figure', mergeAttributes(HTMLAttributes, { 'data-type': this.name }), 0]\n },\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n props: {\n handleDOMEvents: {\n // Prevent dragging child nodes from figure\n dragstart: (view, event) => {\n if (!event.target) {\n return false\n }\n\n const pos = view.posAtDOM(event.target as HTMLElement, 0)\n const $pos = view.state.doc.resolve(pos)\n\n if ($pos.parent.type.name === this.type.name) {\n event.preventDefault()\n }\n\n return false\n },\n },\n },\n }),\n ]\n },\n})\n\nexport default Figure\n"],"names":["mergeAttributes","Node","Plugin","Figure","create","name","addOptions","HTMLAttributes","group","content","draggable","defining","selectable","parseHTML","tag","renderHTML","addProseMirrorPlugins","props","handleDOMEvents","dragstart","view","event","target","pos","posAtDOM","$pos","state","doc","resolve","parent","type","preventDefault"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAc;AACpD,SAASC,MAAM,QAAQ,mBAAkB;AAEzC,OAAO,MAAMC,SAASF,KAAKG,MAAM,CAAC;IAChCC,MAAM;IAENC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC,OAAO;IAEPC,SAAS;IAETC,WAAW;IAEXC,UAAU;IAEVC,YAAY;IAEZC;QACE,OAAO;YACL;gBACEC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAACT,IAAI,CAAC,EAAE,CAAC;YACzC;SACD;IACH;IAEAU,YAAW,EAAER,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAUP,gBAAgBO,gBAAgB;gBAAE,aAAa,IAAI,CAACF,IAAI;YAAC;YAAI;SAAE;IACnF;IAEAW;QACE,OAAO;YACL,IAAId,OAAO;gBACTe,OAAO;oBACLC,iBAAiB;wBACf,2CAA2C;wBAC3CC,WAAW,CAACC,MAAMC;4BAChB,IAAI,CAACA,MAAMC,MAAM,EAAE;gCACjB,OAAO;4BACT;4BAEA,MAAMC,MAAMH,KAAKI,QAAQ,CAACH,MAAMC,MAAM,EAAiB;4BACvD,MAAMG,OAAOL,KAAKM,KAAK,CAACC,GAAG,CAACC,OAAO,CAACL;4BAEpC,IAAIE,KAAKI,MAAM,CAACC,IAAI,CAACzB,IAAI,KAAK,IAAI,CAACyB,IAAI,CAACzB,IAAI,EAAE;gCAC5CgB,MAAMU,cAAc;4BACtB;4BAEA,OAAO;wBACT;oBACF;gBACF;YACF;SACD;IACH;AACF,GAAE;AAEF,eAAe5B,OAAM"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figure/Figure.ts"],"sourcesContent":["import { mergeAttributes, Node } from '@tiptap/core'\r\nimport { Plugin } from '@tiptap/pm/state'\r\n\r\nexport const Figure = Node.create({\r\n name: 'figure',\r\n\r\n addOptions() {\r\n return {\r\n HTMLAttributes: {},\r\n }\r\n },\r\n\r\n group: 'block',\r\n\r\n content: 'block figcaption',\r\n\r\n draggable: true,\r\n\r\n defining: true,\r\n\r\n selectable: true,\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: `figure[data-type=\"${this.name}\"]`,\r\n },\r\n ]\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return ['figure', mergeAttributes(HTMLAttributes, { 'data-type': this.name }), 0]\r\n },\r\n\r\n addProseMirrorPlugins() {\r\n return [\r\n new Plugin({\r\n props: {\r\n handleDOMEvents: {\r\n // Prevent dragging child nodes from figure\r\n dragstart: (view, event) => {\r\n if (!event.target) {\r\n return false\r\n }\r\n\r\n const pos = view.posAtDOM(event.target as HTMLElement, 0)\r\n const $pos = view.state.doc.resolve(pos)\r\n\r\n if ($pos.parent.type.name === this.type.name) {\r\n event.preventDefault()\r\n }\r\n\r\n return false\r\n },\r\n },\r\n },\r\n }),\r\n ]\r\n },\r\n})\r\n\r\nexport default Figure\r\n"],"names":["mergeAttributes","Node","Plugin","Figure","create","name","addOptions","HTMLAttributes","group","content","draggable","defining","selectable","parseHTML","tag","renderHTML","addProseMirrorPlugins","props","handleDOMEvents","dragstart","view","event","target","pos","posAtDOM","$pos","state","doc","resolve","parent","type","preventDefault"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAc;AACpD,SAASC,MAAM,QAAQ,mBAAkB;AAEzC,OAAO,MAAMC,SAASF,KAAKG,MAAM,CAAC;IAChCC,MAAM;IAENC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC,OAAO;IAEPC,SAAS;IAETC,WAAW;IAEXC,UAAU;IAEVC,YAAY;IAEZC;QACE,OAAO;YACL;gBACEC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAACT,IAAI,CAAC,EAAE,CAAC;YACzC;SACD;IACH;IAEAU,YAAW,EAAER,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAUP,gBAAgBO,gBAAgB;gBAAE,aAAa,IAAI,CAACF,IAAI;YAAC;YAAI;SAAE;IACnF;IAEAW;QACE,OAAO;YACL,IAAId,OAAO;gBACTe,OAAO;oBACLC,iBAAiB;wBACf,2CAA2C;wBAC3CC,WAAW,CAACC,MAAMC;4BAChB,IAAI,CAACA,MAAMC,MAAM,EAAE;gCACjB,OAAO;4BACT;4BAEA,MAAMC,MAAMH,KAAKI,QAAQ,CAACH,MAAMC,MAAM,EAAiB;4BACvD,MAAMG,OAAOL,KAAKM,KAAK,CAACC,GAAG,CAACC,OAAO,CAACL;4BAEpC,IAAIE,KAAKI,MAAM,CAACC,IAAI,CAACzB,IAAI,KAAK,IAAI,CAACyB,IAAI,CAACzB,IAAI,EAAE;gCAC5CgB,MAAMU,cAAc;4BACtB;4BAEA,OAAO;wBACT;oBACF;gBACF;YACF;SACD;IACH;AACF,GAAE;AAEF,eAAe5B,OAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figure/index.ts"],"sourcesContent":["export * from \"./Figure.js\";\n"],"names":[],"mappings":"AAAA,cAAc,cAAc"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Figure/index.ts"],"sourcesContent":["export * from \"./Figure.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/FontSize/FontSize.ts"],"sourcesContent":["import { Extension } from '@tiptap/core'\nimport '@tiptap/extension-text-style'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n fontSize: {\n setFontSize: (size: string) => ReturnType\n unsetFontSize: () => ReturnType\n }\n }\n}\n\nexport const FontSize = Extension.create({\n name: 'fontSize',\n\n addOptions() {\n return {\n types: ['textStyle'],\n }\n },\n\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph'],\n attributes: {\n class: {},\n },\n },\n {\n types: this.options.types,\n attributes: {\n fontSize: {\n parseHTML: element => element.style.fontSize.replace(/['\"]+/g, ''),\n renderHTML: attributes => {\n if (!attributes.fontSize) {\n return {}\n }\n\n return {\n style: `font-size: ${attributes.fontSize}`,\n }\n },\n },\n },\n },\n ]\n },\n\n addCommands() {\n return {\n setFontSize:\n (fontSize: string) =>\n ({ chain }) =>\n chain().setMark('textStyle', { fontSize }).run(),\n unsetFontSize:\n () =>\n ({ chain }) =>\n chain().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run(),\n }\n },\n})\n\nexport default FontSize\n"],"names":["Extension","FontSize","create","name","addOptions","types","addGlobalAttributes","attributes","class","options","fontSize","parseHTML","element","style","replace","renderHTML","addCommands","setFontSize","chain","setMark","run","unsetFontSize","removeEmptyTextStyle"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAc;AACxC,OAAO,+BAA8B;AAWrC,OAAO,MAAMC,WAAWD,UAAUE,MAAM,CAAC;IACvCC,MAAM;IAENC;QACE,OAAO;YACLC,OAAO;gBAAC;aAAY;QACtB;IACF;IAEAC;QACE,OAAO;YACL;gBACED,OAAO;oBAAC;iBAAY;gBACpBE,YAAY;oBACVC,OAAO,CAAC;gBACV;YACF;YACA;gBACEH,OAAO,IAAI,CAACI,OAAO,CAACJ,KAAK;gBACzBE,YAAY;oBACVG,UAAU;wBACRC,WAAWC,CAAAA,UAAWA,QAAQC,KAAK,CAACH,QAAQ,CAACI,OAAO,CAAC,UAAU;wBAC/DC,YAAYR,CAAAA;4BACV,IAAI,CAACA,WAAWG,QAAQ,EAAE;gCACxB,OAAO,CAAC;4BACV;4BAEA,OAAO;gCACLG,OAAO,CAAC,WAAW,EAAEN,WAAWG,QAAQ,EAAE;4BAC5C;wBACF;oBACF;gBACF;YACF;SACD;IACH;IAEAM;QACE,OAAO;YACLC,aACE,CAACP,WACD,CAAC,EAAEQ,KAAK,EAAE,GACRA,QAAQC,OAAO,CAAC,aAAa;wBAAET;oBAAS,GAAGU,GAAG;YAClDC,eACE,IACA,CAAC,EAAEH,KAAK,EAAE,GACRA,QAAQC,OAAO,CAAC,aAAa;wBAAET,UAAU;oBAAK,GAAGY,oBAAoB,GAAGF,GAAG;QACjF;IACF;AACF,GAAE;AAEF,eAAenB,SAAQ"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/FontSize/FontSize.ts"],"sourcesContent":["import { Extension } from '@tiptap/core'\r\nimport '@tiptap/extension-text-style'\r\n\r\ndeclare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n fontSize: {\r\n setFontSize: (size: string) => ReturnType\r\n unsetFontSize: () => ReturnType\r\n }\r\n }\r\n}\r\n\r\nexport const FontSize = Extension.create({\r\n name: 'fontSize',\r\n\r\n addOptions() {\r\n return {\r\n types: ['textStyle'],\r\n }\r\n },\r\n\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: ['paragraph'],\r\n attributes: {\r\n class: {},\r\n },\r\n },\r\n {\r\n types: this.options.types,\r\n attributes: {\r\n fontSize: {\r\n parseHTML: element => element.style.fontSize.replace(/['\"]+/g, ''),\r\n renderHTML: attributes => {\r\n if (!attributes.fontSize) {\r\n return {}\r\n }\r\n\r\n return {\r\n style: `font-size: ${attributes.fontSize}`,\r\n }\r\n },\r\n },\r\n },\r\n },\r\n ]\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setFontSize:\r\n (fontSize: string) =>\r\n ({ chain }) =>\r\n chain().setMark('textStyle', { fontSize }).run(),\r\n unsetFontSize:\r\n () =>\r\n ({ chain }) =>\r\n chain().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run(),\r\n }\r\n },\r\n})\r\n\r\nexport default FontSize\r\n"],"names":["Extension","FontSize","create","name","addOptions","types","addGlobalAttributes","attributes","class","options","fontSize","parseHTML","element","style","replace","renderHTML","addCommands","setFontSize","chain","setMark","run","unsetFontSize","removeEmptyTextStyle"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAc;AACxC,OAAO,+BAA8B;AAWrC,OAAO,MAAMC,WAAWD,UAAUE,MAAM,CAAC;IACvCC,MAAM;IAENC;QACE,OAAO;YACLC,OAAO;gBAAC;aAAY;QACtB;IACF;IAEAC;QACE,OAAO;YACL;gBACED,OAAO;oBAAC;iBAAY;gBACpBE,YAAY;oBACVC,OAAO,CAAC;gBACV;YACF;YACA;gBACEH,OAAO,IAAI,CAACI,OAAO,CAACJ,KAAK;gBACzBE,YAAY;oBACVG,UAAU;wBACRC,WAAWC,CAAAA,UAAWA,QAAQC,KAAK,CAACH,QAAQ,CAACI,OAAO,CAAC,UAAU;wBAC/DC,YAAYR,CAAAA;4BACV,IAAI,CAACA,WAAWG,QAAQ,EAAE;gCACxB,OAAO,CAAC;4BACV;4BAEA,OAAO;gCACLG,OAAO,CAAC,WAAW,EAAEN,WAAWG,QAAQ,EAAE;4BAC5C;wBACF;oBACF;gBACF;YACF;SACD;IACH;IAEAM;QACE,OAAO;YACLC,aACE,CAACP,WACD,CAAC,EAAEQ,KAAK,EAAE,GACRA,QAAQC,OAAO,CAAC,aAAa;wBAAET;oBAAS,GAAGU,GAAG;YAClDC,eACE,IACA,CAAC,EAAEH,KAAK,EAAE,GACRA,QAAQC,OAAO,CAAC,aAAa;wBAAET,UAAU;oBAAK,GAAGY,oBAAoB,GAAGF,GAAG;QACjF;IACF;AACF,GAAE;AAEF,eAAenB,SAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/FontSize/index.ts"],"sourcesContent":["export * from \"./FontSize.js\";\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/FontSize/index.ts"],"sourcesContent":["export * from \"./FontSize.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Heading/Heading.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core'\nimport TiptapHeading from '@tiptap/extension-heading'\nimport type { Level } from '@tiptap/extension-heading'\n\nexport const Heading = TiptapHeading.extend({\n renderHTML({ node, HTMLAttributes }) {\n const nodeLevel = parseInt(node.attrs.level, 10) as Level\n const hasLevel = this.options.levels.includes(nodeLevel)\n const level = hasLevel ? nodeLevel : this.options.levels[0]\n\n return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n },\n})\n\nexport default Heading\n"],"names":["mergeAttributes","TiptapHeading","Heading","extend","renderHTML","node","HTMLAttributes","nodeLevel","parseInt","attrs","level","hasLevel","options","levels","includes"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAc;AAC9C,OAAOC,mBAAmB,4BAA2B;AAGrD,OAAO,MAAMC,UAAUD,cAAcE,MAAM,CAAC;IAC1CC,YAAW,EAAEC,IAAI,EAAEC,cAAc,EAAE;QACjC,MAAMC,YAAYC,SAASH,KAAKI,KAAK,CAACC,KAAK,EAAE;QAC7C,MAAMC,WAAW,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,QAAQ,CAACP;QAC9C,MAAMG,QAAQC,WAAWJ,YAAY,IAAI,CAACK,OAAO,CAACC,MAAM,CAAC,EAAE;QAE3D,OAAO;YAAC,CAAC,CAAC,EAAEH,OAAO;YAAEV,gBAAgB,IAAI,CAACY,OAAO,CAACN,cAAc,EAAEA;YAAiB;SAAE;IACvF;AACF,GAAE;AAEF,eAAeJ,QAAO"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Heading/Heading.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core'\r\nimport TiptapHeading from '@tiptap/extension-heading'\r\nimport type { Level } from '@tiptap/extension-heading'\r\n\r\nexport const Heading = TiptapHeading.extend({\r\n renderHTML({ node, HTMLAttributes }) {\r\n const nodeLevel = parseInt(node.attrs.level, 10) as Level\r\n const hasLevel = this.options.levels.includes(nodeLevel)\r\n const level = hasLevel ? nodeLevel : this.options.levels[0]\r\n\r\n return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\r\n },\r\n})\r\n\r\nexport default Heading\r\n"],"names":["mergeAttributes","TiptapHeading","Heading","extend","renderHTML","node","HTMLAttributes","nodeLevel","parseInt","attrs","level","hasLevel","options","levels","includes"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAc;AAC9C,OAAOC,mBAAmB,4BAA2B;AAGrD,OAAO,MAAMC,UAAUD,cAAcE,MAAM,CAAC;IAC1CC,YAAW,EAAEC,IAAI,EAAEC,cAAc,EAAE;QACjC,MAAMC,YAAYC,SAASH,KAAKI,KAAK,CAACC,KAAK,EAAE;QAC7C,MAAMC,WAAW,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,QAAQ,CAACP;QAC9C,MAAMG,QAAQC,WAAWJ,YAAY,IAAI,CAACK,OAAO,CAACC,MAAM,CAAC,EAAE;QAE3D,OAAO;YAAC,CAAC,CAAC,EAAEH,OAAO;YAAEV,gBAAgB,IAAI,CAACY,OAAO,CAACN,cAAc,EAAEA;YAAiB;SAAE;IACvF;AACF,GAAE;AAEF,eAAeJ,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Heading/index.ts"],"sourcesContent":["export * from \"./Heading.js\";\n"],"names":[],"mappings":"AAAA,cAAc,eAAe"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Heading/index.ts"],"sourcesContent":["export * from \"./Heading.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/HorizontalRule/HorizontalRule.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core'\nimport TiptapHorizontalRule from '@tiptap/extension-horizontal-rule'\n\nexport const HorizontalRule = TiptapHorizontalRule.extend({\n renderHTML() {\n return ['div', mergeAttributes(this.options.HTMLAttributes, { 'data-type': this.name }), ['hr']]\n },\n})\n\nexport default HorizontalRule\n"],"names":["mergeAttributes","TiptapHorizontalRule","HorizontalRule","extend","renderHTML","options","HTMLAttributes","name"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAc;AAC9C,OAAOC,0BAA0B,oCAAmC;AAEpE,OAAO,MAAMC,iBAAiBD,qBAAqBE,MAAM,CAAC;IACxDC;QACE,OAAO;YAAC;YAAOJ,gBAAgB,IAAI,CAACK,OAAO,CAACC,cAAc,EAAE;gBAAE,aAAa,IAAI,CAACC,IAAI;YAAC;YAAI;gBAAC;aAAK;SAAC;IAClG;AACF,GAAE;AAEF,eAAeL,eAAc"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/HorizontalRule/HorizontalRule.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core'\r\nimport TiptapHorizontalRule from '@tiptap/extension-horizontal-rule'\r\n\r\nexport const HorizontalRule = TiptapHorizontalRule.extend({\r\n renderHTML() {\r\n return ['div', mergeAttributes(this.options.HTMLAttributes, { 'data-type': this.name }), ['hr']]\r\n },\r\n})\r\n\r\nexport default HorizontalRule\r\n"],"names":["mergeAttributes","TiptapHorizontalRule","HorizontalRule","extend","renderHTML","options","HTMLAttributes","name"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAc;AAC9C,OAAOC,0BAA0B,oCAAmC;AAEpE,OAAO,MAAMC,iBAAiBD,qBAAqBE,MAAM,CAAC;IACxDC;QACE,OAAO;YAAC;YAAOJ,gBAAgB,IAAI,CAACK,OAAO,CAACC,cAAc,EAAE;gBAAE,aAAa,IAAI,CAACC,IAAI;YAAC;YAAI;gBAAC;aAAK;SAAC;IAClG;AACF,GAAE;AAEF,eAAeL,eAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/HorizontalRule/index.ts"],"sourcesContent":["export * from \"./HorizontalRule.js\";\n"],"names":[],"mappings":"AAAA,cAAc,sBAAsB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/HorizontalRule/index.ts"],"sourcesContent":["export * from \"./HorizontalRule.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,sBAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.tsx"],"sourcesContent":["import { Link } from \"lucide-react\";\nimport SocialMediaEmbed from \"../SocialMedia/SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { src?: string } } }) => {\n return (\n <SocialMediaEmbed props={props} Icon={Link} text={\"Embed an Iframe\"}>\n <div className=\"iframe-wrapper\">\n <iframe src={props?.node?.attrs?.src ?? \"\"} allowFullScreen={true} />\n </div>\n </SocialMediaEmbed>\n );\n};\n"],"names":["Link","SocialMediaEmbed","props","Icon","text","div","className","iframe","src","node","attrs","allowFullScreen"],"mappings":";AAAA,SAASA,IAAI,QAAQ,eAAe;AACpC,OAAOC,sBAAsB,qCAAqC;AAElE,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QAAiBC,OAAOA;QAAOC,MAAMH;QAAMI,MAAM;kBAChD,cAAA,KAACC;YAAIC,WAAU;sBACb,cAAA,KAACC;gBAAOC,KAAKN,OAAOO,MAAMC,OAAOF,OAAO;gBAAIG,iBAAiB;;;;AAIrE,CAAA,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.tsx"],"sourcesContent":["import { Link } from \"lucide-react\";\r\nimport SocialMediaEmbed from \"../SocialMedia/SocialMediaEmbed.js\";\r\n\r\nexport default (props: { node: { attrs: { src?: string } } }) => {\r\n return (\r\n <SocialMediaEmbed props={props} Icon={Link} text={\"Embed an Iframe\"}>\r\n <div className=\"iframe-wrapper\">\r\n <iframe src={props?.node?.attrs?.src ?? \"\"} allowFullScreen={true} />\r\n </div>\r\n </SocialMediaEmbed>\r\n );\r\n};\r\n"],"names":["Link","SocialMediaEmbed","props","Icon","text","div","className","iframe","src","node","attrs","allowFullScreen"],"mappings":";AAAA,SAASA,IAAI,QAAQ,eAAe;AACpC,OAAOC,sBAAsB,qCAAqC;AAElE,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QAAiBC,OAAOA;QAAOC,MAAMH;QAAMI,MAAM;kBAChD,cAAA,KAACC;YAAIC,WAAU;sBACb,cAAA,KAACC;gBAAOC,KAAKN,OAAOO,MAAMC,OAAOF,OAAO;gBAAIG,iBAAiB;;;;AAIrE,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport IframeEmbed from \"./IframeEmbed.js\";\n\nexport interface IframeOptions {\n allowFullscreen: boolean;\n HTMLAttributes: {\n [key: string]: any;\n };\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n iframe: {\n /**\n * Add an iframe\n */\n setIframe: (options?: { src: string }) => ReturnType;\n setHtml: (value: string) => ReturnType;\n insertIframe: (src?: string, className?: string) => ReturnType;\n };\n }\n}\n\nexport const Iframe = Node.create<IframeOptions>({\n name: \"iframe\",\n inline: false,\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n atom: true,\n\n addOption() {\n return {\n allowFullscreen: true,\n HTMLAttributes: {\n class: \"iframe-wrapper\",\n },\n };\n },\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n frameborder: {\n default: 0,\n },\n allowfullscreen: {\n default: this.options.allowFullscreen,\n parseHTML: () => this.options.allowFullscreen,\n },\n sandbox: {\n default: \"allow-forms allow-modals\",\n },\n referrerpolicy: {\n default: \"no-referrer\"\n }\n };\n },\n renderHTML({ HTMLAttributes }) {\n return [\n \"iframe\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n parseHTML() {\n return [\n {\n tag: \"iframe\",\n },\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(IframeEmbed);\n },\n\n addCommands() {\n return {\n setIframe:\n (options: { src: string }) =>\n ({ tr, dispatch }) => {\n const { selection } = tr;\n let attributes: Record<string, any> = {\n ...options,\n };\n\n if (options?.src?.includes(\"iframe\")) {\n const parser = new DOMParser();\n const html = parser.parseFromString(options?.src, \"text/html\");\n const attrNames = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttributeNames();\n\n attrNames?.forEach((attr) => {\n attributes[attr] = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttribute(attr);\n });\n } else if (!isValidHttpUrl(options?.src)) {\n const htmlData =\n \"data:text/html;charset=utf-8,\" + encodeURI(options?.src);\n attributes = {\n ...attributes,\n src: htmlData,\n };\n }\n const node = this.type.create(attributes);\n\n if (dispatch) {\n tr.replaceRangeWith(selection.from, selection.to, node);\n }\n\n // return commands.insertContent({\n // type: 'iframe',\n // attrs: attributes,\n // })\n\n return true;\n },\n\n setHtml:\n (value) =>\n ({ commands, state }) => {\n console.log(value);\n let attributes: Record<string, any> = {\n editorValue: value,\n };\n\n if (value?.includes(\"youtube.com\")) {\n const ytValue = value?.split(\"v=\")?.[1]?.split(\"&\")?.[0];\n attributes = {\n ...attributes,\n\n src: `https://www.youtube.com/embed/${ytValue}?controls=0`,\n title: \"YouTube video player\",\n };\n } else if (value?.includes(\"instagram.com\")) {\n const instagramValue = value?.split(\"p/\")?.[1]?.split(\"/\")?.[0];\n attributes = {\n ...attributes,\n\n src: `https://www.instagram.com/p/${instagramValue}/embed`,\n title: \"Instagram\",\n };\n } else if (isValidHttpUrl(value)) {\n attributes = {\n ...attributes,\n\n src: value,\n };\n } else if (value?.includes(\"iframe\")) {\n const parser = new DOMParser();\n const html = parser.parseFromString(value, \"text/html\");\n const attrNames = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttributeNames();\n\n attrNames?.forEach((attr) => {\n attributes[attr] = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttribute(attr);\n });\n } else {\n const htmlData = \"data:text/html;charset=utf-8,\" + encodeURI(value);\n attributes = {\n ...attributes,\n src: htmlData,\n };\n }\n\n return true;\n },\n insertIframe:\n (src, className) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"iframe\",\n attrs: {\n src,\n class: className,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["mergeAttributes","Node","ReactNodeViewRenderer","IframeEmbed","Iframe","create","name","inline","group","content","draggable","atom","addOption","allowFullscreen","HTMLAttributes","class","addAttributes","src","default","frameborder","allowfullscreen","options","parseHTML","sandbox","referrerpolicy","renderHTML","tag","addNodeView","addCommands","setIframe","tr","dispatch","selection","attributes","includes","parser","DOMParser","html","parseFromString","attrNames","getElementsByTagName","getAttributeNames","forEach","attr","getAttribute","isValidHttpUrl","htmlData","encodeURI","node","type","replaceRangeWith","from","to","setHtml","value","commands","state","console","log","editorValue","ytValue","split","title","instagramValue","insertIframe","className","insertContent","attrs","string","url","URL","_","protocol"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\r\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\r\nimport IframeEmbed from \"./IframeEmbed.js\";\r\n\r\nexport interface IframeOptions {\r\n allowFullscreen: boolean;\r\n HTMLAttributes: {\r\n [key: string]: any;\r\n };\r\n}\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n iframe: {\r\n /**\r\n * Add an iframe\r\n */\r\n setIframe: (options?: { src: string }) => ReturnType;\r\n setHtml: (value: string) => ReturnType;\r\n insertIframe: (src?: string, className?: string) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const Iframe = Node.create<IframeOptions>({\r\n name: \"iframe\",\r\n inline: false,\r\n group: \"block\",\r\n content: \"inline*\",\r\n draggable: true,\r\n\r\n atom: true,\r\n\r\n addOption() {\r\n return {\r\n allowFullscreen: true,\r\n HTMLAttributes: {\r\n class: \"iframe-wrapper\",\r\n },\r\n };\r\n },\r\n\r\n addAttributes() {\r\n return {\r\n src: {\r\n default: null,\r\n },\r\n frameborder: {\r\n default: 0,\r\n },\r\n allowfullscreen: {\r\n default: this.options.allowFullscreen,\r\n parseHTML: () => this.options.allowFullscreen,\r\n },\r\n sandbox: {\r\n default: \"allow-forms allow-modals\",\r\n },\r\n referrerpolicy: {\r\n default: \"no-referrer\"\r\n }\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"iframe\",\r\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\r\n ];\r\n },\r\n parseHTML() {\r\n return [\r\n {\r\n tag: \"iframe\",\r\n },\r\n ];\r\n },\r\n\r\n addNodeView() {\r\n return ReactNodeViewRenderer(IframeEmbed);\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setIframe:\r\n (options: { src: string }) =>\r\n ({ tr, dispatch }) => {\r\n const { selection } = tr;\r\n let attributes: Record<string, any> = {\r\n ...options,\r\n };\r\n\r\n if (options?.src?.includes(\"iframe\")) {\r\n const parser = new DOMParser();\r\n const html = parser.parseFromString(options?.src, \"text/html\");\r\n const attrNames = html\r\n .getElementsByTagName(\"iframe\")?.[0]\r\n ?.getAttributeNames();\r\n\r\n attrNames?.forEach((attr) => {\r\n attributes[attr] = html\r\n .getElementsByTagName(\"iframe\")?.[0]\r\n ?.getAttribute(attr);\r\n });\r\n } else if (!isValidHttpUrl(options?.src)) {\r\n const htmlData =\r\n \"data:text/html;charset=utf-8,\" + encodeURI(options?.src);\r\n attributes = {\r\n ...attributes,\r\n src: htmlData,\r\n };\r\n }\r\n const node = this.type.create(attributes);\r\n\r\n if (dispatch) {\r\n tr.replaceRangeWith(selection.from, selection.to, node);\r\n }\r\n\r\n // return commands.insertContent({\r\n // type: 'iframe',\r\n // attrs: attributes,\r\n // })\r\n\r\n return true;\r\n },\r\n\r\n setHtml:\r\n (value) =>\r\n ({ commands, state }) => {\r\n console.log(value);\r\n let attributes: Record<string, any> = {\r\n editorValue: value,\r\n };\r\n\r\n if (value?.includes(\"youtube.com\")) {\r\n const ytValue = value?.split(\"v=\")?.[1]?.split(\"&\")?.[0];\r\n attributes = {\r\n ...attributes,\r\n\r\n src: `https://www.youtube.com/embed/${ytValue}?controls=0`,\r\n title: \"YouTube video player\",\r\n };\r\n } else if (value?.includes(\"instagram.com\")) {\r\n const instagramValue = value?.split(\"p/\")?.[1]?.split(\"/\")?.[0];\r\n attributes = {\r\n ...attributes,\r\n\r\n src: `https://www.instagram.com/p/${instagramValue}/embed`,\r\n title: \"Instagram\",\r\n };\r\n } else if (isValidHttpUrl(value)) {\r\n attributes = {\r\n ...attributes,\r\n\r\n src: value,\r\n };\r\n } else if (value?.includes(\"iframe\")) {\r\n const parser = new DOMParser();\r\n const html = parser.parseFromString(value, \"text/html\");\r\n const attrNames = html\r\n .getElementsByTagName(\"iframe\")?.[0]\r\n ?.getAttributeNames();\r\n\r\n attrNames?.forEach((attr) => {\r\n attributes[attr] = html\r\n .getElementsByTagName(\"iframe\")?.[0]\r\n ?.getAttribute(attr);\r\n });\r\n } else {\r\n const htmlData = \"data:text/html;charset=utf-8,\" + encodeURI(value);\r\n attributes = {\r\n ...attributes,\r\n src: htmlData,\r\n };\r\n }\r\n\r\n return true;\r\n },\r\n insertIframe:\r\n (src, className) =>\r\n ({ commands, state }) => {\r\n return commands.insertContent({\r\n type: \"iframe\",\r\n attrs: {\r\n src,\r\n class: className,\r\n },\r\n });\r\n },\r\n };\r\n },\r\n});\r\n\r\nfunction isValidHttpUrl(string: string) {\r\n let url;\r\n\r\n try {\r\n url = new URL(string);\r\n } catch (_) {\r\n return false;\r\n }\r\n\r\n return url.protocol === \"http:\" || url.protocol === \"https:\";\r\n}\r\n"],"names":["mergeAttributes","Node","ReactNodeViewRenderer","IframeEmbed","Iframe","create","name","inline","group","content","draggable","atom","addOption","allowFullscreen","HTMLAttributes","class","addAttributes","src","default","frameborder","allowfullscreen","options","parseHTML","sandbox","referrerpolicy","renderHTML","tag","addNodeView","addCommands","setIframe","tr","dispatch","selection","attributes","includes","parser","DOMParser","html","parseFromString","attrNames","getElementsByTagName","getAttributeNames","forEach","attr","getAttribute","isValidHttpUrl","htmlData","encodeURI","node","type","replaceRangeWith","from","to","setHtml","value","commands","state","console","log","editorValue","ytValue","split","title","instagramValue","insertIframe","className","insertContent","attrs","string","url","URL","_","protocol"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/index.ts"],"sourcesContent":["export * from \"./iframe.js\";\n"],"names":[],"mappings":"AAAA,cAAc,cAAc"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/index.ts"],"sourcesContent":["export * from \"./iframe.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { useCallback } from \"react\";\nimport { sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { EditIframeLinkPopover } from \"../../../features/menus/TextMenu/components/EditIframeLinkPopover.js\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport i18next from \"i18next\";\n\nexport const IframeMenu = ({ editor, appendTo }: MenuProps) => {\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"iframe\");\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 isIframe = editor.isActive(\"iframe\");\n return isIframe;\n }, [editor]);\n\n const onSetLink = useCallback(\n (src: string) => editor.chain().focus().setIframe({ src: src }).run(),\n [editor]\n );\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`iframeMenu`}\n shouldShow={shouldShow}\n tippyOptions={{ popperOptions: { placement: \"top-start\" } }}\n updateDelay={100}\n >\n <Toolbar.Wrapper>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"iframe Link\") || \"iframe\"}\n active={true}\n // onClick={onColumnLeft}\n >\n <EditIframeLinkPopover\n onSetLink={onSetLink}\n initialSrcLink={editor?.getAttributes(\"iframe\")?.editorValue ?? \"\"}\n />\n </Toolbar.Button>\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default IframeMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","EditIframeLinkPopover","Toolbar","getRenderContainer","i18next","IframeMenu","editor","appendTo","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isIframe","isActive","onSetLink","src","chain","focus","setIframe","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","Wrapper","Button","type","tooltip","t","active","initialSrcLink","getAttributes","editorValue"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAASC,WAAW,QAAQ,QAAQ;AAI3C,SAASC,qBAAqB,QAAQ,uEAAuE;AAE7G,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,aAAa,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IACxD,MAAMC,yBAAyBR,YAAY;QACzC,MAAMS,kBAAkBN,mBAAmBG,QAAQ;QACnD,MAAMI,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMO,aAAab,YAAY;QAC7B,MAAMc,WAAWR,OAAOS,QAAQ,CAAC;QACjC,OAAOD;IACT,GAAG;QAACR;KAAO;IAEX,MAAMU,YAAYhB,YAChB,CAACiB,MAAgBX,OAAOY,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAC;YAAEH,KAAKA;QAAI,GAAGI,GAAG,IACnE;QAACf;KAAO;IAEV,qBACE,KAACR;QACCQ,QAAQA;QACRgB,WAAW,CAAC,UAAU,CAAC;QACvBT,YAAYA;QACZU,cAAc;YAAEC,eAAe;gBAAEC,WAAW;YAAY;QAAE;QAC1DC,aAAa;kBAEb,cAAA,KAACxB,QAAQyB,OAAO;sBACd,cAAA,KAACzB,QAAQ0B,MAAM;gBACbC,MAAK;gBACLC,SAAS1B,QAAQ2B,CAAC,CAAC,kBAAkB;gBACrCC,QAAQ;0BAGR,cAAA,KAAC/B;oBACCe,WAAWA;oBACXiB,gBAAgB3B,QAAQ4B,cAAc,WAAWC,eAAe;;;;;AAM5E,EAAE;AAEF,eAAe9B,WAAW"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport React, { useCallback } from \"react\";\r\nimport { sticky } from \"tippy.js\";\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nimport { EditIframeLinkPopover } from \"../../../features/menus/TextMenu/components/EditIframeLinkPopover.js\";\r\nimport { MenuProps } from \"../../../features/menus/types.js\";\r\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\r\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\r\nimport i18next from \"i18next\";\r\n\r\nexport const IframeMenu = ({ editor, appendTo }: MenuProps) => {\r\n const getReferenceClientRect = useCallback(() => {\r\n const renderContainer = getRenderContainer(editor, \"iframe\");\r\n const rect =\r\n renderContainer?.getBoundingClientRect() ||\r\n new DOMRect(-1000, -1000, 0, 0);\r\n\r\n return rect;\r\n }, [editor]);\r\n\r\n const shouldShow = useCallback(() => {\r\n const isIframe = editor.isActive(\"iframe\");\r\n return isIframe;\r\n }, [editor]);\r\n\r\n const onSetLink = useCallback(\r\n (src: string) => editor.chain().focus().setIframe({ src: src }).run(),\r\n [editor]\r\n );\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey={`iframeMenu`}\r\n shouldShow={shouldShow}\r\n tippyOptions={{ popperOptions: { placement: \"top-start\" } }}\r\n updateDelay={100}\r\n >\r\n <Toolbar.Wrapper>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"iframe Link\") || \"iframe\"}\r\n active={true}\r\n // onClick={onColumnLeft}\r\n >\r\n <EditIframeLinkPopover\r\n onSetLink={onSetLink}\r\n initialSrcLink={editor?.getAttributes(\"iframe\")?.editorValue ?? \"\"}\r\n />\r\n </Toolbar.Button>\r\n </Toolbar.Wrapper>\r\n </BaseBubbleMenu>\r\n );\r\n};\r\n\r\nexport default IframeMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","EditIframeLinkPopover","Toolbar","getRenderContainer","i18next","IframeMenu","editor","appendTo","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isIframe","isActive","onSetLink","src","chain","focus","setIframe","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","Wrapper","Button","type","tooltip","t","active","initialSrcLink","getAttributes","editorValue"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAASC,WAAW,QAAQ,QAAQ;AAI3C,SAASC,qBAAqB,QAAQ,uEAAuE;AAE7G,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,aAAa,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IACxD,MAAMC,yBAAyBR,YAAY;QACzC,MAAMS,kBAAkBN,mBAAmBG,QAAQ;QACnD,MAAMI,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMO,aAAab,YAAY;QAC7B,MAAMc,WAAWR,OAAOS,QAAQ,CAAC;QACjC,OAAOD;IACT,GAAG;QAACR;KAAO;IAEX,MAAMU,YAAYhB,YAChB,CAACiB,MAAgBX,OAAOY,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAC;YAAEH,KAAKA;QAAI,GAAGI,GAAG,IACnE;QAACf;KAAO;IAEV,qBACE,KAACR;QACCQ,QAAQA;QACRgB,WAAW,CAAC,UAAU,CAAC;QACvBT,YAAYA;QACZU,cAAc;YAAEC,eAAe;gBAAEC,WAAW;YAAY;QAAE;QAC1DC,aAAa;kBAEb,cAAA,KAACxB,QAAQyB,OAAO;sBACd,cAAA,KAACzB,QAAQ0B,MAAM;gBACbC,MAAK;gBACLC,SAAS1B,QAAQ2B,CAAC,CAAC,kBAAkB;gBACrCC,QAAQ;0BAGR,cAAA,KAAC/B;oBACCe,WAAWA;oBACXiB,gBAAgB3B,QAAQ4B,cAAc,WAAWC,eAAe;;;;;AAM5E,EAAE;AAEF,eAAe9B,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Iframe/menus/index.ts"],"sourcesContent":["export * from \"./IframeMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,kBAAkB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Iframe/menus/index.ts"],"sourcesContent":["export * from \"./IframeMenu.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Image/Image.ts"],"sourcesContent":["import { Image as BaseImage } from '@tiptap/extension-image'\n\nexport const Image = BaseImage.extend({\n group: 'block',\n})\n\nexport default Image\n"],"names":["Image","BaseImage","extend","group"],"mappings":"AAAA,SAASA,SAASC,SAAS,QAAQ,0BAAyB;AAE5D,OAAO,MAAMD,QAAQC,UAAUC,MAAM,CAAC;IACpCC,OAAO;AACT,GAAE;AAEF,eAAeH,MAAK"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Image/Image.ts"],"sourcesContent":["import { Image as BaseImage } from '@tiptap/extension-image'\r\n\r\nexport const Image = BaseImage.extend({\r\n group: 'block',\r\n})\r\n\r\nexport default Image\r\n"],"names":["Image","BaseImage","extend","group"],"mappings":"AAAA,SAASA,SAASC,SAAS,QAAQ,0BAAyB;AAE5D,OAAO,MAAMD,QAAQC,UAAUC,MAAM,CAAC;IACpCC,OAAO;AACT,GAAE;AAEF,eAAeH,MAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Image/index.ts"],"sourcesContent":["export * from \"./Image.js\";\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Image/index.ts"],"sourcesContent":["export * from \"./Image.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { ImageBlockView } from \"./components/ImageBlockView.js\";\nimport { Image } from \"../Image/Image.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n imageBlock: {\n setImageBlock: (attributes: {\n src: string;\n assetId?: string;\n caption?: string;\n actualWidth?: number;\n actualHeight?: number;\n }) => ReturnType;\n setImageBlockAt: (attributes: {\n src: string;\n pos: number | Range;\n assetId?: string;\n caption?: string;\n actualWidth?: number;\n actualHeight?: number;\n }) => ReturnType;\n setImageBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setImageBlockWidth: (width: number) => ReturnType;\n setImageCaption: (caption: string) => ReturnType;\n };\n }\n}\n\nexport const ImageBlock = Image.extend({\n name: \"imageBlock\",\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 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: \"\",\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"caption\"),\n renderHTML: (attributes) => ({\n caption: attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'img[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), img[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"div\",\n { class: \"imageBlock\" },\n [\"img\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\n [\n \"textarea\",\n mergeAttributes(\n {\n class:\n \"w-full text-gray-400 h-16 mb-2 placeholder-black p-1 text-sm text-gray-400 border-0 rounded appearance-none\",\n },\n { defaultValue: HTMLAttributes.caption }\n ),\n HTMLAttributes.caption,\n ],\n ];\n },\n\n addCommands() {\n return {\n setImageBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"imageBlock\",\n attrs: {\n src: attrs.src,\n caption: attrs.caption,\n actualWidth: attrs.actualWidth,\n actualHeight: attrs.actualHeight,\n },\n });\n },\n\n setImageBlockAt:\n (attrs) =>\n ({ commands }) => {\n console.log(attrs);\n return commands.insertContentAt(attrs.pos, {\n type: \"imageBlock\",\n attrs: {\n src: attrs.src,\n caption: attrs.caption,\n actualWidth: attrs.actualWidth,\n actualHeight: attrs.actualHeight,\n },\n });\n },\n setImageCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", { caption }),\n setImageBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", { align }),\n\n setImageBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(ImageBlockView);\n },\n});\n\nexport default ImageBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","ImageBlockView","Image","ImageBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","width","actualWidth","actualHeight","align","alt","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setImageBlock","attrs","commands","insertContent","type","setImageBlockAt","console","log","insertContentAt","pos","setImageCaption","updateAttributes","setImageBlockAlign","setImageBlockWidth","Math","max","min","addNodeView"],"mappings":"AAAA;AAEA,SAASA,qBAAqB,QAAQ,gBAAgB;AACtD,SAASC,eAAe,QAAe,eAAe;AAEtD,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SAASC,KAAK,QAAQ,oBAAoB;AA2B1C,OAAO,MAAMC,aAAaD,MAAME,MAAM,CAAC;IACrCC,MAAM;IAENC,OAAO;IAEPC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BN,KAAKM,WAAWN,GAAG;oBACrB,CAAA;YACF;YACAO,OAAO;gBACLN,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWC,KAAK;oBAChC,CAAA;YACF;YACAC,aAAa;gBACXP,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,qBAAqBA,WAAWE,WAAW;oBAC7C,CAAA;YACF;YACAC,cAAc;gBACZR,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,sBAAsBA,WAAWG,YAAY;oBAC/C,CAAA;YACF;YACAC,OAAO;gBACLT,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWI,KAAK;oBAChC,CAAA;YACF;YACAC,KAAK;gBACHV,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BK,KAAKL,WAAWK,GAAG;oBACrB,CAAA;YACF;YACAC,SAAS;gBACPX,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BM,SAASN,WAAWM,OAAO;oBAC7B,CAAA;YACF;QACF;IACF;IAEAV;QACE,OAAO;YACL;gBACEW,KAAK;YACP;SACD;IACH;IAEAR,YAAW,EAAES,cAAc,EAAE;QAC3B,OAAO;YACL;YACA;gBAAEC,OAAO;YAAa;YACtB;gBAAC;gBAAOzB,gBAAgB,IAAI,CAAC0B,OAAO,CAACF,cAAc,EAAEA;aAAgB;YACrE;gBACE;gBACAxB,gBACE;oBACEyB,OACE;gBACJ,GACA;oBAAEE,cAAcH,eAAeF,OAAO;gBAAC;gBAEzCE,eAAeF,OAAO;aACvB;SACF;IACH;IAEAM;QACE,OAAO;YACLC,eACE,CAACC,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM;wBACNH,OAAO;4BACLpB,KAAKoB,MAAMpB,GAAG;4BACdY,SAASQ,MAAMR,OAAO;4BACtBJ,aAAaY,MAAMZ,WAAW;4BAC9BC,cAAcW,MAAMX,YAAY;wBAClC;oBACF;gBACF;YAEFe,iBACE,CAACJ,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACXI,QAAQC,GAAG,CAACN;oBACZ,OAAOC,SAASM,eAAe,CAACP,MAAMQ,GAAG,EAAE;wBACzCL,MAAM;wBACNH,OAAO;4BACLpB,KAAKoB,MAAMpB,GAAG;4BACdY,SAASQ,MAAMR,OAAO;4BACtBJ,aAAaY,MAAMZ,WAAW;4BAC9BC,cAAcW,MAAMX,YAAY;wBAClC;oBACF;gBACF;YACFoB,iBACE,CAACjB,UACD,CAAC,EAAES,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBAAElB;oBAAQ;YACtDmB,oBACE,CAACrB,QACD,CAAC,EAAEW,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBAAEpB;oBAAM;YAEpDsB,oBACE,CAACzB,QACD,CAAC,EAAEc,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBACtCvB,OAAO,GAAG0B,KAAKC,GAAG,CAAC,GAAGD,KAAKE,GAAG,CAAC,KAAK5B,QAAQ,CAAC,CAAC;oBAChD;QACN;IACF;IAEA6B;QACE,YAAY;QACZ,OAAO/C,sBAAsBE;IAC/B;AACF,GAAG;AAEH,eAAeE,WAAW"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\r\nimport { mergeAttributes, Range } from \"@tiptap/core\";\r\n\r\nimport { ImageBlockView } from \"./components/ImageBlockView.js\";\r\nimport { Image } from \"../Image/Image.js\";\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n imageBlock: {\r\n setImageBlock: (attributes: {\r\n src: string;\r\n assetId?: string;\r\n caption?: string;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setImageBlockAt: (attributes: {\r\n src: string;\r\n pos: number | Range;\r\n assetId?: string;\r\n caption?: string;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setImageBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\r\n setImageBlockWidth: (width: number) => ReturnType;\r\n setImageCaption: (caption: string) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const ImageBlock = Image.extend({\r\n name: \"imageBlock\",\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 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: \"\",\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: \"\",\r\n parseHTML: (element) => element.getAttribute(\"caption\"),\r\n renderHTML: (attributes) => ({\r\n caption: attributes.caption,\r\n }),\r\n },\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'img[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), img[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 [\"img\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\r\n [\r\n \"textarea\",\r\n mergeAttributes(\r\n {\r\n class:\r\n \"w-full text-gray-400 h-16 mb-2 placeholder-black p-1 text-sm text-gray-400 border-0 rounded appearance-none\",\r\n },\r\n { defaultValue: HTMLAttributes.caption }\r\n ),\r\n HTMLAttributes.caption,\r\n ],\r\n ];\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setImageBlock:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContent({\r\n type: \"imageBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n caption: attrs.caption,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setImageBlockAt:\r\n (attrs) =>\r\n ({ commands }) => {\r\n console.log(attrs);\r\n return commands.insertContentAt(attrs.pos, {\r\n type: \"imageBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n caption: attrs.caption,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n setImageCaption:\r\n (caption) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"imageBlock\", { caption }),\r\n setImageBlockAlign:\r\n (align) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"imageBlock\", { align }),\r\n\r\n setImageBlockWidth:\r\n (width) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"imageBlock\", {\r\n width: `${Math.max(0, Math.min(100, width))}%`,\r\n }),\r\n };\r\n },\r\n\r\n addNodeView() {\r\n //@ts-ignore\r\n return ReactNodeViewRenderer(ImageBlockView);\r\n },\r\n});\r\n\r\nexport default ImageBlock;\r\n"],"names":["ReactNodeViewRenderer","mergeAttributes","ImageBlockView","Image","ImageBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","width","actualWidth","actualHeight","align","alt","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setImageBlock","attrs","commands","insertContent","type","setImageBlockAt","console","log","insertContentAt","pos","setImageCaption","updateAttributes","setImageBlockAlign","setImageBlockWidth","Math","max","min","addNodeView"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.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} 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 { ImageBlockWidth } from \"./ImageBlockWidth.js\";\nimport i18next from \"i18next\";\n\nexport const ImageBlockMenu = ({ 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-imageBlock\");\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(\"imageBlock\");\n\n return isActive;\n }, [editor]);\n\n const onAlignImageLeft = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"left\")\n .run();\n }, [editor]);\n\n const onAlignImageCenter = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"center\")\n .run();\n }, [editor]);\n\n const onAlignImageRight = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"right\")\n .run();\n }, [editor]);\n\n const onWidthChange = useCallback(\n (value: number) => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockWidth(value)\n .run();\n },\n [editor]\n );\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`imageBlockMenu-${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(\"alignImageLeft\") || \"Align image left\"}\n active={editor.isActive(\"imageBlock\", { align: \"left\" })}\n onClick={onAlignImageLeft}\n >\n <Icon icon={AlignHorizontalDistributeStart} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageCenter\") || \"Align image center\"}\n active={editor.isActive(\"imageBlock\", { align: \"center\" })}\n onClick={onAlignImageCenter}\n >\n <Icon icon={AlignHorizontalDistributeCenter} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageRight\") || \"Align image right\"}\n active={editor.isActive(\"imageBlock\", { align: \"right\" })}\n onClick={onAlignImageRight}\n >\n <Icon icon={AlignHorizontalDistributeEnd} />\n </Toolbar.Button>\n <Toolbar.Divider />\n <ImageBlockWidth\n onChange={onWidthChange}\n value={parseInt(editor.getAttributes(\"imageBlock\").width)}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default ImageBlockMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Icon","Toolbar","getRenderContainer","ImageBlockWidth","i18next","ImageBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignImageLeft","chain","focus","undefined","scrollIntoView","setImageBlockAlign","run","onAlignImageCenter","onAlignImageRight","onWidthChange","value","setImageBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","align","onClick","icon","Divider","onChange","parseInt","getAttributes","width"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport { ReactNode, useCallback, useRef } from \"react\";\r\nimport { Instance, sticky } from \"tippy.js\";\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nimport {\r\n AlignHorizontalDistributeCenter,\r\n AlignHorizontalDistributeEnd,\r\n AlignHorizontalDistributeStart,\r\n} from \"lucide-react\";\r\nimport { MenuProps } from \"../../../features/menus/types.js\";\r\nimport { Icon } from \"../../../features/ui/Icon.js\";\r\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\r\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\r\nimport { ImageBlockWidth } from \"./ImageBlockWidth.js\";\r\nimport i18next from \"i18next\";\r\n\r\nexport const ImageBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const tippyInstance = useRef<Instance | null>(null);\r\n\r\n const getReferenceClientRect = useCallback(() => {\r\n const renderContainer = getRenderContainer(editor, \"node-imageBlock\");\r\n const rect =\r\n renderContainer?.getBoundingClientRect() ||\r\n new DOMRect(-1000, -1000, 0, 0);\r\n\r\n return rect;\r\n }, [editor]);\r\n\r\n const shouldShow = useCallback(() => {\r\n const isActive = editor.isActive(\"imageBlock\");\r\n\r\n return isActive;\r\n }, [editor]);\r\n\r\n const onAlignImageLeft = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setImageBlockAlign(\"left\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onAlignImageCenter = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setImageBlockAlign(\"center\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onAlignImageRight = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setImageBlockAlign(\"right\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onWidthChange = useCallback(\r\n (value: number) => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setImageBlockWidth(value)\r\n .run();\r\n },\r\n [editor]\r\n );\r\n\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey={`imageBlockMenu-${uuid()}`}\r\n shouldShow={shouldShow}\r\n updateDelay={0}\r\n tippyOptions={{\r\n offset: [0, 8],\r\n popperOptions: {\r\n modifiers: [{ name: \"flip\", enabled: false }],\r\n },\r\n getReferenceClientRect,\r\n onCreate: (instance: Instance) => {\r\n tippyInstance.current = instance;\r\n },\r\n appendTo: () => {\r\n return appendTo?.current;\r\n },\r\n plugins: [sticky],\r\n sticky: \"popper\",\r\n }}\r\n >\r\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignImageLeft\") || \"Align image left\"}\r\n active={editor.isActive(\"imageBlock\", { align: \"left\" })}\r\n onClick={onAlignImageLeft}\r\n >\r\n <Icon icon={AlignHorizontalDistributeStart} />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignImageCenter\") || \"Align image center\"}\r\n active={editor.isActive(\"imageBlock\", { align: \"center\" })}\r\n onClick={onAlignImageCenter}\r\n >\r\n <Icon icon={AlignHorizontalDistributeCenter} />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignImageRight\") || \"Align image right\"}\r\n active={editor.isActive(\"imageBlock\", { align: \"right\" })}\r\n onClick={onAlignImageRight}\r\n >\r\n <Icon icon={AlignHorizontalDistributeEnd} />\r\n </Toolbar.Button>\r\n <Toolbar.Divider />\r\n <ImageBlockWidth\r\n onChange={onWidthChange}\r\n value={parseInt(editor.getAttributes(\"imageBlock\").width)}\r\n />\r\n </Toolbar.Wrapper>\r\n </BaseBubbleMenu>\r\n );\r\n};\r\n\r\nexport default ImageBlockMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Icon","Toolbar","getRenderContainer","ImageBlockWidth","i18next","ImageBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignImageLeft","chain","focus","undefined","scrollIntoView","setImageBlockAlign","run","onAlignImageCenter","onAlignImageRight","onWidthChange","value","setImageBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","align","onClick","icon","Divider","onChange","parseInt","getAttributes","width"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAAoBC,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AACvD,SAAmBC,MAAM,QAAQ,WAAW;AAC5C,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAElC,SACEC,+BAA+B,EAC/BC,4BAA4B,EAC5BC,8BAA8B,QACzB,eAAe;AAEtB,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,eAAe,QAAQ,uBAAuB;AACvD,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC5D,MAAMC,UAAUf,OAAuB;IACvC,MAAMgB,gBAAgBhB,OAAwB;IAE9C,MAAMiB,yBAAyBlB,YAAY;QACzC,MAAMmB,kBAAkBT,mBAAmBI,QAAQ;QACnD,MAAMM,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACN;KAAO;IAEX,MAAMS,aAAavB,YAAY;QAC7B,MAAMwB,WAAWV,OAAOU,QAAQ,CAAC;QAEjC,OAAOA;IACT,GAAG;QAACV;KAAO;IAEX,MAAMW,mBAAmBzB,YAAY;QACnCc,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,QACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMkB,qBAAqBhC,YAAY;QACrCc,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,UACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMmB,oBAAoBjC,YAAY;QACpCc,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,SACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMoB,gBAAgBlC,YACpB,CAACmC;QACCrB,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCO,kBAAkB,CAACD,OACnBJ,GAAG;IACR,GACA;QAACjB;KAAO;IAGV,qBACE,KAACf;QACCe,QAAQA;QACRuB,WAAW,CAAC,eAAe,EAAEjC,QAAQ;QACrCmB,YAAYA;QACZe,aAAa;QACbC,cAAc;YACZC,QAAQ;gBAAC;gBAAG;aAAE;YACdC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;YACA1B;YACA2B,UAAU,CAACC;gBACT7B,cAAc8B,OAAO,GAAGD;YAC1B;YACA/B,UAAU;gBACR,OAAOA,UAAUgC;YACnB;YACAC,SAAS;gBAAC9C;aAAO;YACjBA,QAAQ;QACV;kBAEA,cAAA,MAACO,QAAQwC,OAAO;YAACC,mBAAmB3B;YAAc4B,KAAKnC;;8BACrD,KAACP,QAAQ2C,MAAM;oBACbC,MAAK;oBACLC,SAAS1C,QAAQ2C,CAAC,CAAC,qBAAqB;oBACxCC,QAAQ1C,OAAOU,QAAQ,CAAC,cAAc;wBAAEiC,OAAO;oBAAO;oBACtDC,SAASjC;8BAET,cAAA,KAACjB;wBAAKmD,MAAMpD;;;8BAEd,KAACE,QAAQ2C,MAAM;oBACbC,MAAK;oBACLC,SAAS1C,QAAQ2C,CAAC,CAAC,uBAAuB;oBAC1CC,QAAQ1C,OAAOU,QAAQ,CAAC,cAAc;wBAAEiC,OAAO;oBAAS;oBACxDC,SAAS1B;8BAET,cAAA,KAACxB;wBAAKmD,MAAMtD;;;8BAEd,KAACI,QAAQ2C,MAAM;oBACbC,MAAK;oBACLC,SAAS1C,QAAQ2C,CAAC,CAAC,sBAAsB;oBACzCC,QAAQ1C,OAAOU,QAAQ,CAAC,cAAc;wBAAEiC,OAAO;oBAAQ;oBACvDC,SAASzB;8BAET,cAAA,KAACzB;wBAAKmD,MAAMrD;;;8BAEd,KAACG,QAAQmD,OAAO;8BAChB,KAACjD;oBACCkD,UAAU3B;oBACVC,OAAO2B,SAAShD,OAAOiD,aAAa,CAAC,cAAcC,KAAK;;;;;AAKlE,EAAE;AAEF,eAAenD,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockView.tsx"],"sourcesContent":["import { Node } from \"@tiptap/pm/model\";\nimport { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport React, { useCallback, useRef } from \"react\";\nimport { cn } from \"../../../lib/utils/index.js\";\n\ninterface ImageBlockViewProps {\n editor: Editor;\n getPos: () => number;\n node: Node & {\n attrs: {\n src: string;\n };\n };\n updateAttributes: (attrs: Record<string, string>) => void;\n}\n\nexport const ImageBlockView = (props: ImageBlockViewProps) => {\n const { editor, getPos, node } = props;\n const imageWrapperRef = useRef<HTMLDivElement>(null);\n const { src, caption } = node.attrs;\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 onInputBlur = useCallback(\n (e) => {\n const title = e.target.value;\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageCaption(title)\n .run();\n },\n [editor]\n );\n\n return (\n <NodeViewWrapper>\n <div className={wrapperClassName} style={{ width: node.attrs.width }}>\n <div ref={imageWrapperRef}>\n <img className=\"block\" src={src} alt=\"\" onClick={onClick} />\n <textarea\n className=\"w-full h-16 mb-2 placeholder-black p-1 text-sm focus:border focus:border-gray-300 text-gray-400 border-0 rounded appearance-none\"\n onBlur={onInputBlur}\n defaultValue={caption}\n onClick={onClick}\n />\n </div>\n </div>\n </NodeViewWrapper>\n );\n};\n\nexport default ImageBlockView;\n"],"names":["NodeViewWrapper","React","useCallback","useRef","cn","ImageBlockView","props","editor","getPos","node","imageWrapperRef","src","caption","attrs","wrapperClassName","align","onClick","commands","setNodeSelection","onInputBlur","e","title","target","value","chain","focus","undefined","scrollIntoView","setImageCaption","run","div","className","style","width","ref","img","alt","textarea","onBlur","defaultValue"],"mappings":";AACA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,OAAOC,SAASC,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AACnD,SAASC,EAAE,QAAQ,8BAA8B;AAajD,OAAO,MAAMC,iBAAiB,CAACC;IAC7B,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH;IACjC,MAAMI,kBAAkBP,OAAuB;IAC/C,MAAM,EAAEQ,GAAG,EAAEC,OAAO,EAAE,GAAGH,KAAKI,KAAK;IACnC,MAAMC,mBAAmBV,GACvBK,KAAKI,KAAK,CAACE,KAAK,KAAK,SAAS,SAAS,WACvCN,KAAKI,KAAK,CAACE,KAAK,KAAK,UAAU,SAAS,WACxCN,KAAKI,KAAK,CAACE,KAAK,KAAK,YAAY;IAGnC,MAAMC,UAAUd,YAAY;QAC1BK,OAAOU,QAAQ,CAACC,gBAAgB,CAACV;IACnC,GAAG;QAACA;QAAQD,OAAOU,QAAQ;KAAC;IAE5B,MAAME,cAAcjB,YAClB,CAACkB;QACC,MAAMC,QAAQD,EAAEE,MAAM,CAACC,KAAK;QAC5BhB,OACGiB,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,eAAe,CAACP,OAChBQ,GAAG;IACR,GACA;QAACtB;KAAO;IAGV,qBACE,KAACP;kBACC,cAAA,KAAC8B;YAAIC,WAAWjB;YAAkBkB,OAAO;gBAAEC,OAAOxB,KAAKI,KAAK,CAACoB,KAAK;YAAC;sBACjE,cAAA,MAACH;gBAAII,KAAKxB;;kCACR,KAACyB;wBAAIJ,WAAU;wBAAQpB,KAAKA;wBAAKyB,KAAI;wBAAGpB,SAASA;;kCACjD,KAACqB;wBACCN,WAAU;wBACVO,QAAQnB;wBACRoB,cAAc3B;wBACdI,SAASA;;;;;;AAMrB,EAAE;AAEF,eAAeX,eAAe"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockView.tsx"],"sourcesContent":["import { Node } from \"@tiptap/pm/model\";\r\nimport { Editor, NodeViewWrapper } from \"@tiptap/react\";\r\nimport React, { useCallback, useRef } from \"react\";\r\nimport { cn } from \"../../../lib/utils/index.js\";\r\n\r\ninterface ImageBlockViewProps {\r\n editor: Editor;\r\n getPos: () => number;\r\n node: Node & {\r\n attrs: {\r\n src: string;\r\n };\r\n };\r\n updateAttributes: (attrs: Record<string, string>) => void;\r\n}\r\n\r\nexport const ImageBlockView = (props: ImageBlockViewProps) => {\r\n const { editor, getPos, node } = props;\r\n const imageWrapperRef = useRef<HTMLDivElement>(null);\r\n const { src, caption } = node.attrs;\r\n const wrapperClassName = cn(\r\n node.attrs.align === \"left\" ? \"ml-0\" : \"ml-auto\",\r\n node.attrs.align === \"right\" ? \"mr-0\" : \"mr-auto\",\r\n node.attrs.align === \"center\" && \"mx-auto\"\r\n );\r\n\r\n const onClick = useCallback(() => {\r\n editor.commands.setNodeSelection(getPos());\r\n }, [getPos, editor.commands]);\r\n\r\n const onInputBlur = useCallback(\r\n (e) => {\r\n const title = e.target.value;\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setImageCaption(title)\r\n .run();\r\n },\r\n [editor]\r\n );\r\n\r\n return (\r\n <NodeViewWrapper>\r\n <div className={wrapperClassName} style={{ width: node.attrs.width }}>\r\n <div ref={imageWrapperRef}>\r\n <img className=\"block\" src={src} alt=\"\" onClick={onClick} />\r\n <textarea\r\n className=\"w-full h-16 mb-2 placeholder-black p-1 text-sm focus:border focus:border-gray-300 text-gray-400 border-0 rounded appearance-none\"\r\n onBlur={onInputBlur}\r\n defaultValue={caption}\r\n onClick={onClick}\r\n />\r\n </div>\r\n </div>\r\n </NodeViewWrapper>\r\n );\r\n};\r\n\r\nexport default ImageBlockView;\r\n"],"names":["NodeViewWrapper","React","useCallback","useRef","cn","ImageBlockView","props","editor","getPos","node","imageWrapperRef","src","caption","attrs","wrapperClassName","align","onClick","commands","setNodeSelection","onInputBlur","e","title","target","value","chain","focus","undefined","scrollIntoView","setImageCaption","run","div","className","style","width","ref","img","alt","textarea","onBlur","defaultValue"],"mappings":";AACA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,OAAOC,SAASC,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AACnD,SAASC,EAAE,QAAQ,8BAA8B;AAajD,OAAO,MAAMC,iBAAiB,CAACC;IAC7B,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH;IACjC,MAAMI,kBAAkBP,OAAuB;IAC/C,MAAM,EAAEQ,GAAG,EAAEC,OAAO,EAAE,GAAGH,KAAKI,KAAK;IACnC,MAAMC,mBAAmBV,GACvBK,KAAKI,KAAK,CAACE,KAAK,KAAK,SAAS,SAAS,WACvCN,KAAKI,KAAK,CAACE,KAAK,KAAK,UAAU,SAAS,WACxCN,KAAKI,KAAK,CAACE,KAAK,KAAK,YAAY;IAGnC,MAAMC,UAAUd,YAAY;QAC1BK,OAAOU,QAAQ,CAACC,gBAAgB,CAACV;IACnC,GAAG;QAACA;QAAQD,OAAOU,QAAQ;KAAC;IAE5B,MAAME,cAAcjB,YAClB,CAACkB;QACC,MAAMC,QAAQD,EAAEE,MAAM,CAACC,KAAK;QAC5BhB,OACGiB,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,eAAe,CAACP,OAChBQ,GAAG;IACR,GACA;QAACtB;KAAO;IAGV,qBACE,KAACP;kBACC,cAAA,KAAC8B;YAAIC,WAAWjB;YAAkBkB,OAAO;gBAAEC,OAAOxB,KAAKI,KAAK,CAACoB,KAAK;YAAC;sBACjE,cAAA,MAACH;gBAAII,KAAKxB;;kCACR,KAACyB;wBAAIJ,WAAU;wBAAQpB,KAAKA;wBAAKyB,KAAI;wBAAGpB,SAASA;;kCACjD,KAACqB;wBACCN,WAAU;wBACVO,QAAQnB;wBACRoB,cAAc3B;wBACdI,SAASA;;;;;;AAMrB,EAAE;AAEF,eAAeX,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockViewClientside.tsx"],"sourcesContent":["import { cn } from \"../../../lib/utils/index.js\";\nimport { useGetAssetsAspectRatio } from \"../../serverside/getAssetsAspectRatio.js\";\nimport { useEffect } from \"react\";\nimport Image from \"next/image.js\";\n\nexport const ImageBlockViewClientside = ({ content }) => {\n return (\n <>\n <div\n className={cn(\"relative object-cover\", {\n })}\n style={{\n width: content.attrs.width || \"100%\",\n }}\n >\n {/* @ts-ignore */}\n <Image\n className=\"rounded object-cover\"\n src={content.attrs.src}\n alt={content.attrs.alt || content.attrs.caption}\n width={800}\n height={600}\n />\n </div>\n {content.attrs?.caption ? (\n <p\n className={cn(\n \"tiptap-image-caption\",\n \"pt-2 font-sf text-sm font-light text-grey-7 mx-6 sm:mx-0 line-clamp-2\"\n )}\n >\n {content.attrs?.caption}\n </p>\n ) : null}\n </>\n );\n};\n"],"names":["cn","Image","ImageBlockViewClientside","content","div","className","style","width","attrs","src","alt","caption","height","p"],"mappings":";AAAA,SAASA,EAAE,QAAQ,8BAA8B;AAGjD,OAAOC,WAAW,gBAAgB;AAElC,OAAO,MAAMC,2BAA2B,CAAC,EAAEC,OAAO,EAAE;IAClD,qBACE;;0BACE,KAACC;gBACCC,WAAWL,GAAG,yBAAyB,CACvC;gBACAM,OAAO;oBACLC,OAAOJ,QAAQK,KAAK,CAACD,KAAK,IAAI;gBAChC;0BAGA,cAAA,KAACN;oBACCI,WAAU;oBACVI,KAAKN,QAAQK,KAAK,CAACC,GAAG;oBACtBC,KAAKP,QAAQK,KAAK,CAACE,GAAG,IAAIP,QAAQK,KAAK,CAACG,OAAO;oBAC/CJ,OAAO;oBACPK,QAAQ;;;YAGXT,QAAQK,KAAK,EAAEG,wBACd,KAACE;gBACCR,WAAWL,GACT,wBACA;0BAGDG,QAAQK,KAAK,EAAEG;iBAEhB;;;AAGV,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockViewClientside.tsx"],"sourcesContent":["import { cn } from \"../../../lib/utils/index.js\";\r\nimport { useGetAssetsAspectRatio } from \"../../serverside/getAssetsAspectRatio.js\";\r\nimport { useEffect } from \"react\";\r\nimport Image from \"next/image.js\";\r\n\r\nexport const ImageBlockViewClientside = ({ content }) => {\r\n return (\r\n <>\r\n <div\r\n className={cn(\"relative object-cover\", {\r\n })}\r\n style={{\r\n width: content.attrs.width || \"100%\",\r\n }}\r\n >\r\n {/* @ts-ignore */}\r\n <Image\r\n className=\"rounded object-cover\"\r\n src={content.attrs.src}\r\n alt={content.attrs.alt || content.attrs.caption}\r\n width={800}\r\n height={600}\r\n />\r\n </div>\r\n {content.attrs?.caption ? (\r\n <p\r\n className={cn(\r\n \"tiptap-image-caption\",\r\n \"pt-2 font-sf text-sm font-light text-grey-7 mx-6 sm:mx-0 line-clamp-2\"\r\n )}\r\n >\r\n {content.attrs?.caption}\r\n </p>\r\n ) : null}\r\n </>\r\n );\r\n};\r\n"],"names":["cn","Image","ImageBlockViewClientside","content","div","className","style","width","attrs","src","alt","caption","height","p"],"mappings":";AAAA,SAASA,EAAE,QAAQ,8BAA8B;AAGjD,OAAOC,WAAW,gBAAgB;AAElC,OAAO,MAAMC,2BAA2B,CAAC,EAAEC,OAAO,EAAE;IAClD,qBACE;;0BACE,KAACC;gBACCC,WAAWL,GAAG,yBAAyB,CACvC;gBACAM,OAAO;oBACLC,OAAOJ,QAAQK,KAAK,CAACD,KAAK,IAAI;gBAChC;0BAGA,cAAA,KAACN;oBACCI,WAAU;oBACVI,KAAKN,QAAQK,KAAK,CAACC,GAAG;oBACtBC,KAAKP,QAAQK,KAAK,CAACE,GAAG,IAAIP,QAAQK,KAAK,CAACG,OAAO;oBAC/CJ,OAAO;oBACPK,QAAQ;;;YAGXT,QAAQK,KAAK,EAAEG,wBACd,KAACE;gBACCR,WAAWL,GACT,wBACA;0BAGDG,QAAQK,KAAK,EAAEG;iBAEhB;;;AAGV,EAAE"}
|
package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockWidth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockWidth.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from 'react'\n\nexport type ImageBlockWidthProps = {\n onChange: (value: number) => void\n value: number\n}\n\nexport const ImageBlockWidth = memo(({ onChange, value }: ImageBlockWidthProps) => {\n const [currentValue, setCurrentValue] = useState(value)\n\n useEffect(() => {\n setCurrentValue(value)\n }, [value])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseInt(e.target.value))\n },\n [onChange],\n )\n\n return (\n <div className=\"flex items-center gap-2\">\n <input\n className=\"h-2 bg-neutral-200 border-0 rounded appearance-none fill-neutral-300\"\n type=\"range\"\n min=\"25\"\n max=\"100\"\n step=\"25\"\n onChange={handleChange}\n value={currentValue}\n />\n <span className=\"text-xs font-semibold text-neutral-500 select-none\">{value}%</span>\n </div>\n )\n})\n\nImageBlockWidth.displayName = 'ImageBlockWidth'\n"],"names":["React","memo","useCallback","useEffect","useState","ImageBlockWidth","onChange","value","currentValue","setCurrentValue","handleChange","e","parseInt","target","div","className","input","type","min","max","step","span","displayName"],"mappings":";AAAA,OAAOA,SAASC,IAAI,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAOrE,OAAO,MAAMC,gCAAkBJ,KAAK,CAAC,EAAEK,QAAQ,EAAEC,KAAK,EAAwB;IAC5E,MAAM,CAACC,cAAcC,gBAAgB,GAAGL,SAASG;IAEjDJ,UAAU;QACRM,gBAAgBF;IAClB,GAAG;QAACA;KAAM;IAEV,MAAMG,eAAeR,YACnB,CAACS;QACCL,SAASM,SAASD,EAAEE,MAAM,CAACN,KAAK;IAClC,GACA;QAACD;KAAS;IAGZ,qBACE,MAACQ;QAAIC,WAAU;;0BACb,KAACC;gBACCD,WAAU;gBACVE,MAAK;gBACLC,KAAI;gBACJC,KAAI;gBACJC,MAAK;gBACLd,UAAUI;gBACVH,OAAOC;;0BAET,MAACa;gBAAKN,WAAU;;oBAAsDR;oBAAM;;;;;AAGlF,GAAE;AAEFF,gBAAgBiB,WAAW,GAAG"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockWidth.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from 'react'\r\n\r\nexport type ImageBlockWidthProps = {\r\n onChange: (value: number) => void\r\n value: number\r\n}\r\n\r\nexport const ImageBlockWidth = memo(({ onChange, value }: ImageBlockWidthProps) => {\r\n const [currentValue, setCurrentValue] = useState(value)\r\n\r\n useEffect(() => {\r\n setCurrentValue(value)\r\n }, [value])\r\n\r\n const handleChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n onChange(parseInt(e.target.value))\r\n },\r\n [onChange],\r\n )\r\n\r\n return (\r\n <div className=\"flex items-center gap-2\">\r\n <input\r\n className=\"h-2 bg-neutral-200 border-0 rounded appearance-none fill-neutral-300\"\r\n type=\"range\"\r\n min=\"25\"\r\n max=\"100\"\r\n step=\"25\"\r\n onChange={handleChange}\r\n value={currentValue}\r\n />\r\n <span className=\"text-xs font-semibold text-neutral-500 select-none\">{value}%</span>\r\n </div>\r\n )\r\n})\r\n\r\nImageBlockWidth.displayName = 'ImageBlockWidth'\r\n"],"names":["React","memo","useCallback","useEffect","useState","ImageBlockWidth","onChange","value","currentValue","setCurrentValue","handleChange","e","parseInt","target","div","className","input","type","min","max","step","span","displayName"],"mappings":";AAAA,OAAOA,SAASC,IAAI,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAOrE,OAAO,MAAMC,gCAAkBJ,KAAK,CAAC,EAAEK,QAAQ,EAAEC,KAAK,EAAwB;IAC5E,MAAM,CAACC,cAAcC,gBAAgB,GAAGL,SAASG;IAEjDJ,UAAU;QACRM,gBAAgBF;IAClB,GAAG;QAACA;KAAM;IAEV,MAAMG,eAAeR,YACnB,CAACS;QACCL,SAASM,SAASD,EAAEE,MAAM,CAACN,KAAK;IAClC,GACA;QAACD;KAAS;IAGZ,qBACE,MAACQ;QAAIC,WAAU;;0BACb,KAACC;gBACCD,WAAU;gBACVE,MAAK;gBACLC,KAAI;gBACJC,KAAI;gBACJC,MAAK;gBACLd,UAAUI;gBACVH,OAAOC;;0BAET,MAACa;gBAAKN,WAAU;;oBAAsDR;oBAAM;;;;;AAGlF,GAAE;AAEFF,gBAAgBiB,WAAW,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/index.ts"],"sourcesContent":["export * from \"./ImageBlock.js\";\n"],"names":[],"mappings":"AAAA,cAAc,kBAAkB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/index.ts"],"sourcesContent":["export * from \"./ImageBlock.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.ts"],"sourcesContent":["import { Node, ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { AssetType, openAssetHQType } from \"../../types.js\";\nimport { ImageUploadBuilder } from \"./view/ImageUpload.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n imageUpload: {\n setImageUpload: (type?: AssetType) => ReturnType;\n };\n }\n}\n\nexport const ImageUpload = Node.create({\n name: \"imageUpload\",\n\n isolating: true,\n\n defining: true,\n\n group: \"block\",\n\n draggable: true,\n\n selectable: true,\n\n inline: false,\n\n parseHTML() {\n return [\n {\n tag: `div[data-type=\"${this.name}\"]`,\n },\n ];\n },\n\n renderHTML() {\n return [\"div\", { \"data-type\": this.name }];\n },\n\n addAttributes() {\n return {\n type: { default: null },\n };\n },\n addCommands() {\n return {\n setImageUpload:\n (type?: AssetType) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"imageUpload\",\n attrs: {\n type,\n },\n });\n },\n };\n },\n\n addNodeView() {\n const openAssetHQHandler = this.options\n .openAssetHQHandler as openAssetHQType;\n return ReactNodeViewRenderer(ImageUploadBuilder(openAssetHQHandler));\n },\n});\n\nexport default ImageUpload;\n"],"names":["Node","ReactNodeViewRenderer","ImageUploadBuilder","ImageUpload","create","name","isolating","defining","group","draggable","selectable","inline","parseHTML","tag","renderHTML","addAttributes","type","default","addCommands","setImageUpload","commands","insertContent","attrs","addNodeView","openAssetHQHandler","options"],"mappings":"AAAA,SAASA,IAAI,EAAEC,qBAAqB,QAAQ,gBAAgB;AAE5D,SAASC,kBAAkB,QAAQ,wBAAwB;AAU3D,OAAO,MAAMC,cAAcH,KAAKI,MAAM,CAAC;IACrCC,MAAM;IAENC,WAAW;IAEXC,UAAU;IAEVC,OAAO;IAEPC,WAAW;IAEXC,YAAY;IAEZC,QAAQ;IAERC;QACE,OAAO;YACL;gBACEC,KAAK,CAAC,eAAe,EAAE,IAAI,CAACR,IAAI,CAAC,EAAE,CAAC;YACtC;SACD;IACH;IAEAS;QACE,OAAO;YAAC;YAAO;gBAAE,aAAa,IAAI,CAACT,IAAI;YAAC;SAAE;IAC5C;IAEAU;QACE,OAAO;YACLC,MAAM;gBAAEC,SAAS;YAAK;QACxB;IACF;IACAC;QACE,OAAO;YACLC,gBACE,CAACH,OACD,CAAC,EAAEI,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BL,MAAM;wBACNM,OAAO;4BACLN;wBACF;oBACF;gBACF;QACJ;IACF;IAEAO;QACE,MAAMC,qBAAqB,IAAI,CAACC,OAAO,CACpCD,kBAAkB;QACrB,OAAOvB,sBAAsBC,mBAAmBsB;IAClD;AACF,GAAG;AAEH,eAAerB,YAAY"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.ts"],"sourcesContent":["import { Node, ReactNodeViewRenderer } from \"@tiptap/react\";\r\nimport { AssetType, openAssetHQType } from \"../../types.js\";\r\nimport { ImageUploadBuilder } from \"./view/ImageUpload.js\";\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n imageUpload: {\r\n setImageUpload: (type?: AssetType) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const ImageUpload = Node.create({\r\n name: \"imageUpload\",\r\n\r\n isolating: true,\r\n\r\n defining: true,\r\n\r\n group: \"block\",\r\n\r\n draggable: true,\r\n\r\n selectable: true,\r\n\r\n inline: false,\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: `div[data-type=\"${this.name}\"]`,\r\n },\r\n ];\r\n },\r\n\r\n renderHTML() {\r\n return [\"div\", { \"data-type\": this.name }];\r\n },\r\n\r\n addAttributes() {\r\n return {\r\n type: { default: null },\r\n };\r\n },\r\n addCommands() {\r\n return {\r\n setImageUpload:\r\n (type?: AssetType) =>\r\n ({ commands }) => {\r\n return commands.insertContent({\r\n type: \"imageUpload\",\r\n attrs: {\r\n type,\r\n },\r\n });\r\n },\r\n };\r\n },\r\n\r\n addNodeView() {\r\n const openAssetHQHandler = this.options\r\n .openAssetHQHandler as openAssetHQType;\r\n return ReactNodeViewRenderer(ImageUploadBuilder(openAssetHQHandler));\r\n },\r\n});\r\n\r\nexport default ImageUpload;\r\n"],"names":["Node","ReactNodeViewRenderer","ImageUploadBuilder","ImageUpload","create","name","isolating","defining","group","draggable","selectable","inline","parseHTML","tag","renderHTML","addAttributes","type","default","addCommands","setImageUpload","commands","insertContent","attrs","addNodeView","openAssetHQHandler","options"],"mappings":"AAAA,SAASA,IAAI,EAAEC,qBAAqB,QAAQ,gBAAgB;AAE5D,SAASC,kBAAkB,QAAQ,wBAAwB;AAU3D,OAAO,MAAMC,cAAcH,KAAKI,MAAM,CAAC;IACrCC,MAAM;IAENC,WAAW;IAEXC,UAAU;IAEVC,OAAO;IAEPC,WAAW;IAEXC,YAAY;IAEZC,QAAQ;IAERC;QACE,OAAO;YACL;gBACEC,KAAK,CAAC,eAAe,EAAE,IAAI,CAACR,IAAI,CAAC,EAAE,CAAC;YACtC;SACD;IACH;IAEAS;QACE,OAAO;YAAC;YAAO;gBAAE,aAAa,IAAI,CAACT,IAAI;YAAC;SAAE;IAC5C;IAEAU;QACE,OAAO;YACLC,MAAM;gBAAEC,SAAS;YAAK;QACxB;IACF;IACAC;QACE,OAAO;YACLC,gBACE,CAACH,OACD,CAAC,EAAEI,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BL,MAAM;wBACNM,OAAO;4BACLN;wBACF;oBACF;gBACF;QACJ;IACF;IAEAO;QACE,MAAMC,qBAAqB,IAAI,CAACC,OAAO,CACpCD,kBAAkB;QACrB,OAAOvB,sBAAsBC,mBAAmBsB;IAClD;AACF,GAAG;AAEH,eAAerB,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/getImageActualSize.ts"],"sourcesContent":["import { AssetReturnType } from \"../../types.js\";\n\nexport function getAssetActualSize(asset: AssetReturnType) {\n if (asset.width && asset.height) {\n return {\n actualWidth: asset.width,\n actualHeight: asset.height,\n };\n }\n return { actualWidth: 0, actualHeight: 0 };\n}\n"],"names":["getAssetActualSize","asset","width","height","actualWidth","actualHeight"],"mappings":"AAEA,OAAO,SAASA,mBAAmBC,KAAsB;IACvD,IAAIA,MAAMC,KAAK,IAAID,MAAME,MAAM,EAAE;QAC/B,OAAO;YACLC,aAAaH,MAAMC,KAAK;YACxBG,cAAcJ,MAAME,MAAM;QAC5B;IACF;IACA,OAAO;QAAEC,aAAa;QAAGC,cAAc;IAAE;AAC3C"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/getImageActualSize.ts"],"sourcesContent":["import { AssetReturnType } from \"../../types.js\";\r\n\r\nexport function getAssetActualSize(asset: AssetReturnType) {\r\n if (asset.width && asset.height) {\r\n return {\r\n actualWidth: asset.width,\r\n actualHeight: asset.height,\r\n };\r\n }\r\n return { actualWidth: 0, actualHeight: 0 };\r\n}\r\n"],"names":["getAssetActualSize","asset","width","height","actualWidth","actualHeight"],"mappings":"AAEA,OAAO,SAASA,mBAAmBC,KAAsB;IACvD,IAAIA,MAAMC,KAAK,IAAID,MAAME,MAAM,EAAE;QAC/B,OAAO;YACLC,aAAaH,MAAMC,KAAK;YACxBG,cAAcJ,MAAME,MAAM;QAC5B;IACF;IACA,OAAO;QAAEC,aAAa;QAAGC,cAAc;IAAE;AAC3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/index.ts"],"sourcesContent":["export * from \"./ImageUpload.js\";\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/index.ts"],"sourcesContent":["export * from \"./ImageUpload.js\";\r\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["\"use client\";\nimport { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport i18next from \"i18next\";\nimport { ImagePlus } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport {\n AssetReturnType,\n AssetType,\n openAssetHQType,\n} from \"src/fields/TiptapEditor/types.js\";\nimport { getAssetActualSize } from \"../getImageActualSize.js\";\nexport const ImageUploadBuilder = (openAssetHQHandler: openAssetHQType) => {\n const ImageUpload = ({\n getPos,\n editor,\n node,\n }: {\n getPos: () => number;\n editor: Editor;\n node: { attrs: { type?: AssetType } };\n }) => {\n const [done, setDone] = useState(false);\n const onUpload = useCallback(\n (asset: AssetReturnType) => {\n if (asset && !done) {\n let title = asset.title;\n if (\n i18next.language !== \"en\" &&\n !!asset.title_locale[i18next.language.toUpperCase()]\n ) {\n title = asset.title_locale[i18next.language.toUpperCase()];\n }\n const { actualWidth, actualHeight } = getAssetActualSize(asset);\n if (asset.type === \"IMAGE\") {\n editor\n .chain()\n .focus()\n .setImageBlock({\n src: asset?.optimizedImageUrl || asset.fullUrl,\n assetId: asset.id,\n caption: title,\n actualWidth: actualWidth,\n actualHeight: actualHeight,\n })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n } else {\n console.log(\"calling editor setVideoBlock.\", {\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n });\n const { actualHeight, actualWidth } = getAssetActualSize(asset);\n editor\n .chain()\n .focus()\n .setVideoBlock({\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n title: title,\n actualHeight,\n actualWidth,\n })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n }\n } else {\n console.info(\n \"ImageUpload onUpload called but this is a finished component.\"\n );\n }\n },\n [getPos, editor]\n );\n\n return (\n <NodeViewWrapper>\n <div className=\"p-0 m-0\" data-drag-handle>\n <a\n href=\"#\"\n className=\"text-black text-sm font-medium uppercase hover:cursor-pointer p-2.5 bg-white rounded-[7px] transition ease-in-out delay-150 hover:scale-110 hover:bg-amber-600 shadow justify-between items-center flex flex-row\"\n onClick={(e) => {\n e.preventDefault();\n openAssetHQHandler(onUpload, null, node?.attrs?.type ?? \"image\");\n }}\n >\n <ImagePlus className=\"mr-2\" />\n Select an asset\n </a>\n </div>\n </NodeViewWrapper>\n );\n };\n\n return ImageUpload;\n};\n"],"names":["NodeViewWrapper","i18next","ImagePlus","useCallback","useState","getAssetActualSize","ImageUploadBuilder","openAssetHQHandler","ImageUpload","getPos","editor","node","done","setDone","onUpload","asset","title","language","title_locale","toUpperCase","actualWidth","actualHeight","type","chain","focus","setImageBlock","src","optimizedImageUrl","fullUrl","assetId","id","caption","deleteRange","from","to","run","console","log","videoUrl","poster","playlistUrl","setVideoBlock","info","div","className","data-drag-handle","a","href","onClick","e","preventDefault","attrs"],"mappings":"AAAA;;AACA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,OAAOC,aAAa,UAAU;AAC9B,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAM9C,SAASC,kBAAkB,QAAQ,2BAA2B;AAC9D,OAAO,MAAMC,qBAAqB,CAACC;IACjC,MAAMC,cAAc,CAAC,EACnBC,MAAM,EACNC,MAAM,EACNC,IAAI,EAKL;QACC,MAAM,CAACC,MAAMC,QAAQ,GAAGT,SAAS;QACjC,MAAMU,WAAWX,YACf,CAACY;YACC,IAAIA,SAAS,CAACH,MAAM;gBAClB,IAAII,QAAQD,MAAMC,KAAK;gBACvB,IACEf,QAAQgB,QAAQ,KAAK,QACrB,CAAC,CAACF,MAAMG,YAAY,CAACjB,QAAQgB,QAAQ,CAACE,WAAW,GAAG,EACpD;oBACAH,QAAQD,MAAMG,YAAY,CAACjB,QAAQgB,QAAQ,CAACE,WAAW,GAAG;gBAC5D;gBACA,MAAM,EAAEC,WAAW,EAAEC,YAAY,EAAE,GAAGhB,mBAAmBU;gBACzD,IAAIA,MAAMO,IAAI,KAAK,SAAS;oBAC1BZ,OACGa,KAAK,GACLC,KAAK,GACLC,aAAa,CAAC;wBACbC,KAAKX,OAAOY,qBAAqBZ,MAAMa,OAAO;wBAC9CC,SAASd,MAAMe,EAAE;wBACjBC,SAASf;wBACTI,aAAaA;wBACbC,cAAcA;oBAChB,GACCW,WAAW,CAAC;wBAAEC,MAAMxB;wBAAUyB,IAAIzB;oBAAS,GAC3Ce,KAAK,GACLW,GAAG;oBACNtB,QAAQ;gBACV,OAAO;oBACLuB,QAAQC,GAAG,CAAC,iCAAiC;wBAC3CX,KAAKX,MAAMuB,QAAQ;wBACnBC,QAAQxB,MAAMa,OAAO;wBACrBC,SAASd,MAAMe,EAAE;wBACjBU,aAAazB,MAAMyB,WAAW;oBAChC;oBACA,MAAM,EAAEnB,YAAY,EAAED,WAAW,EAAE,GAAGf,mBAAmBU;oBACzDL,OACGa,KAAK,GACLC,KAAK,GACLiB,aAAa,CAAC;wBACbf,KAAKX,MAAMuB,QAAQ;wBACnBC,QAAQxB,MAAMa,OAAO;wBACrBC,SAASd,MAAMe,EAAE;wBACjBU,aAAazB,MAAMyB,WAAW;wBAC9BxB,OAAOA;wBACPK;wBACAD;oBACF,GACCY,WAAW,CAAC;wBAAEC,MAAMxB;wBAAUyB,IAAIzB;oBAAS,GAC3Ce,KAAK,GACLW,GAAG;oBACNtB,QAAQ;gBACV;YACF,OAAO;gBACLuB,QAAQM,IAAI,CACV;YAEJ;QACF,GACA;YAACjC;YAAQC;SAAO;QAGlB,qBACE,KAACV;sBACC,cAAA,KAAC2C;gBAAIC,WAAU;gBAAUC,kBAAgB;0BACvC,cAAA,MAACC;oBACCC,MAAK;oBACLH,WAAU;oBACVI,SAAS,CAACC;wBACRA,EAAEC,cAAc;wBAChB3C,mBAAmBO,UAAU,MAAMH,MAAMwC,OAAO7B,QAAQ;oBAC1D;;sCAEA,KAACpB;4BAAU0C,WAAU;;wBAAS;;;;;IAMxC;IAEA,OAAOpC;AACT,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["\"use client\";\r\nimport { Editor, NodeViewWrapper } from \"@tiptap/react\";\r\nimport i18next from \"i18next\";\r\nimport { ImagePlus } from \"lucide-react\";\r\nimport { useCallback, useState } from \"react\";\r\nimport {\r\n AssetReturnType,\r\n AssetType,\r\n openAssetHQType,\r\n} from \"src/fields/TiptapEditor/types.js\";\r\nimport { getAssetActualSize } from \"../getImageActualSize.js\";\r\nexport const ImageUploadBuilder = (openAssetHQHandler: openAssetHQType) => {\r\n const ImageUpload = ({\r\n getPos,\r\n editor,\r\n node,\r\n }: {\r\n getPos: () => number;\r\n editor: Editor;\r\n node: { attrs: { type?: AssetType } };\r\n }) => {\r\n const [done, setDone] = useState(false);\r\n const onUpload = useCallback(\r\n (asset: AssetReturnType) => {\r\n if (asset && !done) {\r\n let title = asset.title;\r\n if (\r\n i18next.language !== \"en\" &&\r\n !!asset.title_locale[i18next.language.toUpperCase()]\r\n ) {\r\n title = asset.title_locale[i18next.language.toUpperCase()];\r\n }\r\n const { actualWidth, actualHeight } = getAssetActualSize(asset);\r\n if (asset.type === \"IMAGE\") {\r\n editor\r\n .chain()\r\n .focus()\r\n .setImageBlock({\r\n src: asset?.optimizedImageUrl || asset.fullUrl,\r\n assetId: asset.id,\r\n caption: title,\r\n actualWidth: actualWidth,\r\n actualHeight: actualHeight,\r\n })\r\n .deleteRange({ from: getPos(), to: getPos() })\r\n .focus()\r\n .run();\r\n setDone(true);\r\n } else {\r\n console.log(\"calling editor setVideoBlock.\", {\r\n src: asset.videoUrl,\r\n poster: asset.fullUrl,\r\n assetId: asset.id,\r\n playlistUrl: asset.playlistUrl,\r\n });\r\n const { actualHeight, actualWidth } = getAssetActualSize(asset);\r\n editor\r\n .chain()\r\n .focus()\r\n .setVideoBlock({\r\n src: asset.videoUrl,\r\n poster: asset.fullUrl,\r\n assetId: asset.id,\r\n playlistUrl: asset.playlistUrl,\r\n title: title,\r\n actualHeight,\r\n actualWidth,\r\n })\r\n .deleteRange({ from: getPos(), to: getPos() })\r\n .focus()\r\n .run();\r\n setDone(true);\r\n }\r\n } else {\r\n console.info(\r\n \"ImageUpload onUpload called but this is a finished component.\"\r\n );\r\n }\r\n },\r\n [getPos, editor]\r\n );\r\n\r\n return (\r\n <NodeViewWrapper>\r\n <div className=\"p-0 m-0\" data-drag-handle>\r\n <a\r\n href=\"#\"\r\n className=\"text-black text-sm font-medium uppercase hover:cursor-pointer p-2.5 bg-white rounded-[7px] transition ease-in-out delay-150 hover:scale-110 hover:bg-amber-600 shadow justify-between items-center flex flex-row\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n openAssetHQHandler(onUpload, null, node?.attrs?.type ?? \"image\");\r\n }}\r\n >\r\n <ImagePlus className=\"mr-2\" />\r\n Select an asset\r\n </a>\r\n </div>\r\n </NodeViewWrapper>\r\n );\r\n };\r\n\r\n return ImageUpload;\r\n};\r\n"],"names":["NodeViewWrapper","i18next","ImagePlus","useCallback","useState","getAssetActualSize","ImageUploadBuilder","openAssetHQHandler","ImageUpload","getPos","editor","node","done","setDone","onUpload","asset","title","language","title_locale","toUpperCase","actualWidth","actualHeight","type","chain","focus","setImageBlock","src","optimizedImageUrl","fullUrl","assetId","id","caption","deleteRange","from","to","run","console","log","videoUrl","poster","playlistUrl","setVideoBlock","info","div","className","data-drag-handle","a","href","onClick","e","preventDefault","attrs"],"mappings":"AAAA;;AACA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,OAAOC,aAAa,UAAU;AAC9B,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAM9C,SAASC,kBAAkB,QAAQ,2BAA2B;AAC9D,OAAO,MAAMC,qBAAqB,CAACC;IACjC,MAAMC,cAAc,CAAC,EACnBC,MAAM,EACNC,MAAM,EACNC,IAAI,EAKL;QACC,MAAM,CAACC,MAAMC,QAAQ,GAAGT,SAAS;QACjC,MAAMU,WAAWX,YACf,CAACY;YACC,IAAIA,SAAS,CAACH,MAAM;gBAClB,IAAII,QAAQD,MAAMC,KAAK;gBACvB,IACEf,QAAQgB,QAAQ,KAAK,QACrB,CAAC,CAACF,MAAMG,YAAY,CAACjB,QAAQgB,QAAQ,CAACE,WAAW,GAAG,EACpD;oBACAH,QAAQD,MAAMG,YAAY,CAACjB,QAAQgB,QAAQ,CAACE,WAAW,GAAG;gBAC5D;gBACA,MAAM,EAAEC,WAAW,EAAEC,YAAY,EAAE,GAAGhB,mBAAmBU;gBACzD,IAAIA,MAAMO,IAAI,KAAK,SAAS;oBAC1BZ,OACGa,KAAK,GACLC,KAAK,GACLC,aAAa,CAAC;wBACbC,KAAKX,OAAOY,qBAAqBZ,MAAMa,OAAO;wBAC9CC,SAASd,MAAMe,EAAE;wBACjBC,SAASf;wBACTI,aAAaA;wBACbC,cAAcA;oBAChB,GACCW,WAAW,CAAC;wBAAEC,MAAMxB;wBAAUyB,IAAIzB;oBAAS,GAC3Ce,KAAK,GACLW,GAAG;oBACNtB,QAAQ;gBACV,OAAO;oBACLuB,QAAQC,GAAG,CAAC,iCAAiC;wBAC3CX,KAAKX,MAAMuB,QAAQ;wBACnBC,QAAQxB,MAAMa,OAAO;wBACrBC,SAASd,MAAMe,EAAE;wBACjBU,aAAazB,MAAMyB,WAAW;oBAChC;oBACA,MAAM,EAAEnB,YAAY,EAAED,WAAW,EAAE,GAAGf,mBAAmBU;oBACzDL,OACGa,KAAK,GACLC,KAAK,GACLiB,aAAa,CAAC;wBACbf,KAAKX,MAAMuB,QAAQ;wBACnBC,QAAQxB,MAAMa,OAAO;wBACrBC,SAASd,MAAMe,EAAE;wBACjBU,aAAazB,MAAMyB,WAAW;wBAC9BxB,OAAOA;wBACPK;wBACAD;oBACF,GACCY,WAAW,CAAC;wBAAEC,MAAMxB;wBAAUyB,IAAIzB;oBAAS,GAC3Ce,KAAK,GACLW,GAAG;oBACNtB,QAAQ;gBACV;YACF,OAAO;gBACLuB,QAAQM,IAAI,CACV;YAEJ;QACF,GACA;YAACjC;YAAQC;SAAO;QAGlB,qBACE,KAACV;sBACC,cAAA,KAAC2C;gBAAIC,WAAU;gBAAUC,kBAAgB;0BACvC,cAAA,MAACC;oBACCC,MAAK;oBACLH,WAAU;oBACVI,SAAS,CAACC;wBACRA,EAAEC,cAAc;wBAChB3C,mBAAmBO,UAAU,MAAMH,MAAMwC,OAAO7B,QAAQ;oBAC1D;;sCAEA,KAACpB;4BAAU0C,WAAU;;wBAAS;;;;;IAMxC;IAEA,OAAOpC;AACT,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUploader.tsx"],"sourcesContent":["import { Image, Upload } from \"lucide-react\";\nimport { ChangeEvent, useCallback } from \"react\";\nimport { Button } from \"../../../features/ui/Button/Button.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Spinner } from \"../../../features/ui/Spinner/Spinner.js\";\nimport { cn } from \"../../../lib/utils/index.js\";\nimport { useDropZone, useFileUpload, useUploader } from \"./hooks.js\";\nexport const ImageUploader = ({\n onUpload,\n}: {\n onUpload: (url: string) => void;\n}) => {\n const { loading, uploadFile } = useUploader({ onUpload });\n const { handleUploadClick, ref } = useFileUpload();\n const { draggedInside, onDrop, onDragEnter, onDragLeave } = useDropZone({\n uploader: uploadFile,\n });\n\n const onFileChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) =>\n e.target.files ? uploadFile() : null,\n [uploadFile]\n );\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center p-8 rounded-lg min-h-[10rem] bg-opacity-80\">\n <Spinner className=\"text-neutral-500\" size={1.5} />\n </div>\n );\n }\n\n const wrapperClass = cn(\n \"flex flex-col items-center justify-center px-8 py-10 rounded-lg bg-opacity-80\",\n draggedInside && \"bg-neutral-100\"\n );\n\n return (\n <div\n className={wrapperClass}\n onDrop={onDrop}\n onDragOver={onDragEnter}\n onDragLeave={onDragLeave}\n >\n <Icon\n icon={Image}\n className=\"w-12 h-12 mb-4 text-black dark:text-white opacity-20\"\n />\n <div className=\"flex flex-col items-center justify-center gap-2\">\n <div className=\"text-sm font-medium text-center text-neutral-400 dark:text-neutral-500\">\n {draggedInside ? \"Drop image here\" : \"Drag and drop or\"}\n </div>\n <div>\n <Button\n type=\"button\"\n disabled={draggedInside}\n onClick={handleUploadClick}\n variant=\"primary\"\n buttonSize=\"small\"\n >\n <Icon icon={Upload} />\n Upload an image\n </Button>\n </div>\n </div>\n <input\n className=\"w-0 h-0 overflow-hidden opacity-0\"\n ref={ref}\n type=\"file\"\n accept=\".jpg,.jpeg,.png,.webp,.gif\"\n onChange={onFileChange}\n />\n </div>\n );\n};\n\nexport default ImageUploader;\n"],"names":["Image","Upload","useCallback","Button","Icon","Spinner","cn","useDropZone","useFileUpload","useUploader","ImageUploader","onUpload","loading","uploadFile","handleUploadClick","ref","draggedInside","onDrop","onDragEnter","onDragLeave","uploader","onFileChange","e","target","files","div","className","size","wrapperClass","onDragOver","icon","type","disabled","onClick","variant","buttonSize","input","accept","onChange"],"mappings":";AAAA,SAASA,KAAK,EAAEC,MAAM,QAAQ,eAAe;AAC7C,SAAsBC,WAAW,QAAQ,QAAQ;AACjD,SAASC,MAAM,QAAQ,wCAAwC;AAC/D,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,OAAO,QAAQ,0CAA0C;AAClE,SAASC,EAAE,QAAQ,8BAA8B;AACjD,SAASC,WAAW,EAAEC,aAAa,EAAEC,WAAW,QAAQ,aAAa;AACrE,OAAO,MAAMC,gBAAgB,CAAC,EAC5BC,QAAQ,EAGT;IACC,MAAM,EAAEC,OAAO,EAAEC,UAAU,EAAE,GAAGJ,YAAY;QAAEE;IAAS;IACvD,MAAM,EAAEG,iBAAiB,EAAEC,GAAG,EAAE,GAAGP;IACnC,MAAM,EAAEQ,aAAa,EAAEC,MAAM,EAAEC,WAAW,EAAEC,WAAW,EAAE,GAAGZ,YAAY;QACtEa,UAAUP;IACZ;IAEA,MAAMQ,eAAenB,YACnB,CAACoB,IACCA,EAAEC,MAAM,CAACC,KAAK,GAAGX,eAAe,MAClC;QAACA;KAAW;IAGd,IAAID,SAAS;QACX,qBACE,KAACa;YAAIC,WAAU;sBACb,cAAA,KAACrB;gBAAQqB,WAAU;gBAAmBC,MAAM;;;IAGlD;IAEA,MAAMC,eAAetB,GACnB,iFACAU,iBAAiB;IAGnB,qBACE,MAACS;QACCC,WAAWE;QACXX,QAAQA;QACRY,YAAYX;QACZC,aAAaA;;0BAEb,KAACf;gBACC0B,MAAM9B;gBACN0B,WAAU;;0BAEZ,MAACD;gBAAIC,WAAU;;kCACb,KAACD;wBAAIC,WAAU;kCACZV,gBAAgB,oBAAoB;;kCAEvC,KAACS;kCACC,cAAA,MAACtB;4BACC4B,MAAK;4BACLC,UAAUhB;4BACViB,SAASnB;4BACToB,SAAQ;4BACRC,YAAW;;8CAEX,KAAC/B;oCAAK0B,MAAM7B;;gCAAU;;;;;;0BAK5B,KAACmC;gBACCV,WAAU;gBACVX,KAAKA;gBACLgB,MAAK;gBACLM,QAAO;gBACPC,UAAUjB;;;;AAIlB,EAAE;AAEF,eAAeX,cAAc"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUploader.tsx"],"sourcesContent":["import { Image, Upload } from \"lucide-react\";\r\nimport { ChangeEvent, useCallback } from \"react\";\r\nimport { Button } from \"../../../features/ui/Button/Button.js\";\r\nimport { Icon } from \"../../../features/ui/Icon.js\";\r\nimport { Spinner } from \"../../../features/ui/Spinner/Spinner.js\";\r\nimport { cn } from \"../../../lib/utils/index.js\";\r\nimport { useDropZone, useFileUpload, useUploader } from \"./hooks.js\";\r\nexport const ImageUploader = ({\r\n onUpload,\r\n}: {\r\n onUpload: (url: string) => void;\r\n}) => {\r\n const { loading, uploadFile } = useUploader({ onUpload });\r\n const { handleUploadClick, ref } = useFileUpload();\r\n const { draggedInside, onDrop, onDragEnter, onDragLeave } = useDropZone({\r\n uploader: uploadFile,\r\n });\r\n\r\n const onFileChange = useCallback(\r\n (e: ChangeEvent<HTMLInputElement>) =>\r\n e.target.files ? uploadFile() : null,\r\n [uploadFile]\r\n );\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"flex items-center justify-center p-8 rounded-lg min-h-[10rem] bg-opacity-80\">\r\n <Spinner className=\"text-neutral-500\" size={1.5} />\r\n </div>\r\n );\r\n }\r\n\r\n const wrapperClass = cn(\r\n \"flex flex-col items-center justify-center px-8 py-10 rounded-lg bg-opacity-80\",\r\n draggedInside && \"bg-neutral-100\"\r\n );\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n onDrop={onDrop}\r\n onDragOver={onDragEnter}\r\n onDragLeave={onDragLeave}\r\n >\r\n <Icon\r\n icon={Image}\r\n className=\"w-12 h-12 mb-4 text-black dark:text-white opacity-20\"\r\n />\r\n <div className=\"flex flex-col items-center justify-center gap-2\">\r\n <div className=\"text-sm font-medium text-center text-neutral-400 dark:text-neutral-500\">\r\n {draggedInside ? \"Drop image here\" : \"Drag and drop or\"}\r\n </div>\r\n <div>\r\n <Button\r\n type=\"button\"\r\n disabled={draggedInside}\r\n onClick={handleUploadClick}\r\n variant=\"primary\"\r\n buttonSize=\"small\"\r\n >\r\n <Icon icon={Upload} />\r\n Upload an image\r\n </Button>\r\n </div>\r\n </div>\r\n <input\r\n className=\"w-0 h-0 overflow-hidden opacity-0\"\r\n ref={ref}\r\n type=\"file\"\r\n accept=\".jpg,.jpeg,.png,.webp,.gif\"\r\n onChange={onFileChange}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default ImageUploader;\r\n"],"names":["Image","Upload","useCallback","Button","Icon","Spinner","cn","useDropZone","useFileUpload","useUploader","ImageUploader","onUpload","loading","uploadFile","handleUploadClick","ref","draggedInside","onDrop","onDragEnter","onDragLeave","uploader","onFileChange","e","target","files","div","className","size","wrapperClass","onDragOver","icon","type","disabled","onClick","variant","buttonSize","input","accept","onChange"],"mappings":";AAAA,SAASA,KAAK,EAAEC,MAAM,QAAQ,eAAe;AAC7C,SAAsBC,WAAW,QAAQ,QAAQ;AACjD,SAASC,MAAM,QAAQ,wCAAwC;AAC/D,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,OAAO,QAAQ,0CAA0C;AAClE,SAASC,EAAE,QAAQ,8BAA8B;AACjD,SAASC,WAAW,EAAEC,aAAa,EAAEC,WAAW,QAAQ,aAAa;AACrE,OAAO,MAAMC,gBAAgB,CAAC,EAC5BC,QAAQ,EAGT;IACC,MAAM,EAAEC,OAAO,EAAEC,UAAU,EAAE,GAAGJ,YAAY;QAAEE;IAAS;IACvD,MAAM,EAAEG,iBAAiB,EAAEC,GAAG,EAAE,GAAGP;IACnC,MAAM,EAAEQ,aAAa,EAAEC,MAAM,EAAEC,WAAW,EAAEC,WAAW,EAAE,GAAGZ,YAAY;QACtEa,UAAUP;IACZ;IAEA,MAAMQ,eAAenB,YACnB,CAACoB,IACCA,EAAEC,MAAM,CAACC,KAAK,GAAGX,eAAe,MAClC;QAACA;KAAW;IAGd,IAAID,SAAS;QACX,qBACE,KAACa;YAAIC,WAAU;sBACb,cAAA,KAACrB;gBAAQqB,WAAU;gBAAmBC,MAAM;;;IAGlD;IAEA,MAAMC,eAAetB,GACnB,iFACAU,iBAAiB;IAGnB,qBACE,MAACS;QACCC,WAAWE;QACXX,QAAQA;QACRY,YAAYX;QACZC,aAAaA;;0BAEb,KAACf;gBACC0B,MAAM9B;gBACN0B,WAAU;;0BAEZ,MAACD;gBAAIC,WAAU;;kCACb,KAACD;wBAAIC,WAAU;kCACZV,gBAAgB,oBAAoB;;kCAEvC,KAACS;kCACC,cAAA,MAACtB;4BACC4B,MAAK;4BACLC,UAAUhB;4BACViB,SAASnB;4BACToB,SAAQ;4BACRC,YAAW;;8CAEX,KAAC/B;oCAAK0B,MAAM7B;;gCAAU;;;;;;0BAK5B,KAACmC;gBACCV,WAAU;gBACVX,KAAKA;gBACLgB,MAAK;gBACLM,QAAO;gBACPC,UAAUjB;;;;AAIlB,EAAE;AAEF,eAAeX,cAAc"}
|