payload-richtext-tiptap 0.0.149 → 0.0.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +22 -22
- package/README.md +33 -33
- package/dist/src/body/StandardArticle.js.map +1 -1
- package/dist/src/client.js.map +1 -1
- package/dist/src/fields/TiptapEditor/Components.js.map +1 -1
- package/dist/src/fields/TiptapEditor/context/EditorContext.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Audio/Audio.js +5 -5
- package/dist/src/fields/TiptapEditor/extensions/Audio/Audio.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Audio/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockView.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockWidth.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/BlockquoteFigure.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Design.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/Quote.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/Quote/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/QuoteCaption.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/QuoteCaption/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/BlockquoteFigure/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Document/Document.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Document/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figcaption/Figcaption.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figcaption/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figure/Figure.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Figure/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/FontSize/FontSize.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/FontSize/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Heading/Heading.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Heading/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/HorizontalRule.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/HorizontalRule/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Image/Image.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Image/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockView.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockViewClientside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockWidth.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/getImageActualSize.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUploader.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/hooks.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLinksComponent.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/insideLinks.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/InsideLinksMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Link/Link.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Link/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Column.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js +3 -3
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/Paragraph.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Selection/Selection.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Selection/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/CommandButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/SlashCommand.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/FacebookEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/facebook.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/instagram.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/LinkedinEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/linkedin.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbedServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/TiktokEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/TwitterEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SocialMedia/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Cell.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Header.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Row.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/Table.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Table/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/TrailingNode/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/TrailingNode/trailing-node.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Video/Video.js +5 -5
- package/dist/src/fields/TiptapEditor/extensions/Video/Video.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Video/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockViewClientside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockWidth.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/VideoPlayer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js +9 -9
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js +15 -15
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/middleware/SourceInterceptor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/util/SafeSeek.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSideRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSidebarRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/FacebookServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/IFrameServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/ImageBlockServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/InsideLinkServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/InstagramServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/LinkedinServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/RenderEmbedClientSide.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/TiktokServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/TwitterBlockServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/VideoBlockServerside.js +5 -5
- package/dist/src/fields/TiptapEditor/extensions/serverside/VideoBlockServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/YouTubeServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/getAssetsAspectRatio.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/useAppendRequiredBlocksMarkerClient.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts +2 -2
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +22 -21
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/OneLineEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorHeader.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/components/EditorInfo.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/components/OneLiner.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/ContentItemMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useContentItemActions.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/hooks/useData.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/ContentItemMenu/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/LinkMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/LinkMenu/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/AITextMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/TextMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ContentTypePicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditIframeLinkPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/EditLinkPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/SocialMediaPopover.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuContentTypes.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuStates.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/EditorPreview.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/markdown.hook.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/ColorButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/Colorpicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/Colorpicker/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/InsideLinksEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/InsideLinksEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/LinkEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/LinkPreviewPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/SocialMediaEditorPanel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Button/Button.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Button/SpanButton.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Button/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Dropdown/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Icon.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Loader/Loader.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Loader/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Loader/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Panel/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/PopoverMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Spinner/Spinner.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Spinner/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Surface.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Textarea/Textarea.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Textarea/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Toggle/Toggle.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Toggle/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Toolbar.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Tooltip/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Tooltip/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/crazy-spinner.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/scroll-area.js.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useSidebar.js.map +1 -1
- package/dist/src/fields/TiptapEditor/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/api.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/constants.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/data/initialContent.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/extract.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/tiptapSchema.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/cssVar.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/deepMerge.js +8 -8
- package/dist/src/fields/TiptapEditor/lib/utils/deepMerge.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/getRenderContainer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/isCustomNodeSelected.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/isRtl.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/isTextSelected.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/partialRequired.js.map +1 -1
- package/dist/src/fields/TiptapEditor/types.d.js.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +196 -204
package/LICENSE.md
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2018-2022 Payload CMS, LLC <info@payloadcms.com>
|
|
4
|
-
Portions Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018-2022 Payload CMS, LLC <info@payloadcms.com>
|
|
4
|
+
Portions Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
# Tiptap Editor for payload and react
|
|
2
|
-
|
|
3
|
-
This package provides a simple way to use tiptap editor in react and payloadcms
|
|
4
|
-
|
|
5
|
-
## Setup
|
|
6
|
-
|
|
7
|
-
### Tiptap Pro Authentication
|
|
8
|
-
|
|
9
|
-
This package uses Tiptap Pro features that require authentication to access private repositories. To set this up:
|
|
10
|
-
|
|
11
|
-
1. Copy the `.npmrc.template` file to create your own `.npmrc` file:
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
cp .npmrc.template .npmrc
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
2. Set up the `TIPTAP_AUTH_TOKEN` environment variable with your Tiptap authentication token:
|
|
18
|
-
|
|
19
|
-
**For local development:**
|
|
20
|
-
Add to your shell profile (e.g., `~/.zshrc` or `~/.bash_profile`):
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
export TIPTAP_AUTH_TOKEN=your-actual-token
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Then restart your terminal or run `source ~/.zshrc` (or equivalent for your shell).
|
|
27
|
-
|
|
28
|
-
**For CI/CD environments:**
|
|
29
|
-
Add the token as a secret environment variable in your CI platform settings.
|
|
30
|
-
|
|
31
|
-
3. The `.npmrc` file is excluded from git to prevent committing sensitive credentials.
|
|
32
|
-
|
|
33
|
-
**NOTE:** This package is a WIP and is not currently extensible.
|
|
1
|
+
# Tiptap Editor for payload and react
|
|
2
|
+
|
|
3
|
+
This package provides a simple way to use tiptap editor in react and payloadcms
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
### Tiptap Pro Authentication
|
|
8
|
+
|
|
9
|
+
This package uses Tiptap Pro features that require authentication to access private repositories. To set this up:
|
|
10
|
+
|
|
11
|
+
1. Copy the `.npmrc.template` file to create your own `.npmrc` file:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
cp .npmrc.template .npmrc
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
2. Set up the `TIPTAP_AUTH_TOKEN` environment variable with your Tiptap authentication token:
|
|
18
|
+
|
|
19
|
+
**For local development:**
|
|
20
|
+
Add to your shell profile (e.g., `~/.zshrc` or `~/.bash_profile`):
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
export TIPTAP_AUTH_TOKEN=your-actual-token
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Then restart your terminal or run `source ~/.zshrc` (or equivalent for your shell).
|
|
27
|
+
|
|
28
|
+
**For CI/CD environments:**
|
|
29
|
+
Add the token as a secret environment variable in your CI platform settings.
|
|
30
|
+
|
|
31
|
+
3. The `.npmrc` file is excluded from git to prevent committing sensitive credentials.
|
|
32
|
+
|
|
33
|
+
**NOTE:** This package is a WIP and is not currently extensible.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/body/StandardArticle.tsx"],"sourcesContent":["'use client'\
|
|
1
|
+
{"version":3,"sources":["../../../src/body/StandardArticle.tsx"],"sourcesContent":["'use client'\nimport clsx from \"clsx\";\nimport { NextFontWithVariable } from \"next/dist/compiled/@next/font\";\n// import '../styles/globals.css';\nimport { ArticleBody } from \"./ArticleBody.js\";\n\n// Font files can be colocated inside of `pages`\n\nexport function isRTL(locale: string) {\n if (\n locale.startsWith('ar') ||\n locale.startsWith('fa') ||\n locale.startsWith('ur') ||\n locale.startsWith('ps') ||\n locale.startsWith('he') ||\n locale.startsWith('ui')\n ) {\n return true;\n }\n return false;\n\n}\n\nimport en from '../fonts/font.en.js'\nimport ar from '../fonts/font.ar.js'\nimport fa from '../fonts/font.fa.js'\nimport ur from '../fonts/font.ur.js'\nimport ps from '../fonts/font.ps.js'\nconst localFonts = {\n en: en,\n ar: ar,\n fa: fa,\n ur: ur,\n ps: ps,\n}\n\n// console.log(\"LCOA\", localFonts)\n\n\nexport const StandardArticle = async ({ body, locale }) => {\n const dir = isRTL(locale) ? 'rtl' : 'ltr';\n let fonts;\n try {\n if (['en', 'ar', 'fa', 'ur', 'ps'].includes(locale)) {\n fonts = localFonts[locale] as NextFontWithVariable[];\n } else {\n fonts = localFonts?.en as NextFontWithVariable[];\n }\n } catch {\n fonts = localFonts?.en as NextFontWithVariable[];\n }\n return (\n <html dir={dir} lang={locale}>\n <head>\n\n <script src=\"https://cdn.tailwindcss.com\"></script>\n <link href=\"https://cdn.jsdelivr.net/npm/payload-richtext-tiptap/dist/src/globals.css\" rel=\"stylesheet\" />\n <link href=\"https://cdn.jsdelivr.net/npm/payload-richtext-tiptap/dist/src/article-custom.css\" rel=\"stylesheet\" />\n\n </head>\n\n <body\n className={clsx(\n 'w-full overflow-x-hidden',\n // fonts.map(f => f.variable).join(' '),\n // fonts[0].className,\n )}\n >\n <main\n id=\"article-standard-wrapper\"\n className=\"min-h-fit xl:min-h-[100vh] pt-10 pb-6 md:pb-9 lg:pb-12 xl:pb-20\"\n >\n\n <div className=\"flex flex-col gap-6 md:gap-9 xl:gap-12 items-center mx-auto mt-8\">\n {/* Article Content */}\n <section className=\"w-full flex justify-center\">\n <div className=\"w-full max-w-full\">\n <div className=\"w-full flex flex-row justify-center gap-6 overflow-hidden pt-5\">\n <ArticleBody\n body={body}\n />\n </div>\n </div>\n </section>\n\n </div>\n </main>\n <script src=\"https://vjs.zencdn.net/8.16.1/video.min.js\"></script>\n\n </body>\n </html>\n\n )\n}"],"names":["clsx","ArticleBody","isRTL","locale","startsWith","en","ar","fa","ur","ps","localFonts","StandardArticle","body","dir","fonts","includes","html","lang","head","script","src","link","href","rel","className","main","id","div","section"],"mappings":"AAAA;;AACA,OAAOA,UAAU,OAAO;AAExB,kCAAkC;AAClC,SAASC,WAAW,QAAQ,mBAAmB;AAE/C,gDAAgD;AAEhD,OAAO,SAASC,MAAMC,MAAc;IAChC,IACIA,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,OACpB;QACE,OAAO;IACX;IACA,OAAO;AAEX;AAEA,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,MAAMC,aAAa;IACfL,IAAIA;IACJC,IAAIA;IACJC,IAAIA;IACJC,IAAIA;IACJC,IAAIA;AACR;AAEA,kCAAkC;AAGlC,OAAO,MAAME,kBAAkB,OAAO,EAAEC,IAAI,EAAET,MAAM,EAAE;IAClD,MAAMU,MAAMX,MAAMC,UAAU,QAAQ;IACpC,IAAIW;IACJ,IAAI;QACA,IAAI;YAAC;YAAM;YAAM;YAAM;YAAM;SAAK,CAACC,QAAQ,CAACZ,SAAS;YACjDW,QAAQJ,UAAU,CAACP,OAAO;QAC9B,OAAO;YACHW,QAAQJ,YAAYL;QACxB;IACJ,EAAE,OAAM;QACJS,QAAQJ,YAAYL;IACxB;IACA,qBACI,MAACW;QAAKH,KAAKA;QAAKI,MAAMd;;0BAClB,MAACe;;kCAEG,KAACC;wBAAOC,KAAI;;kCACZ,KAACC;wBAAKC,MAAK;wBAA4EC,KAAI;;kCAC3F,KAACF;wBAAKC,MAAK;wBAAmFC,KAAI;;;;0BAItG,MAACX;gBACGY,WAAWxB,KACP;;kCAKJ,KAACyB;wBACGC,IAAG;wBACHF,WAAU;kCAGV,cAAA,KAACG;4BAAIH,WAAU;sCAEX,cAAA,KAACI;gCAAQJ,WAAU;0CACf,cAAA,KAACG;oCAAIH,WAAU;8CACX,cAAA,KAACG;wCAAIH,WAAU;kDACX,cAAA,KAACvB;4CACGW,MAAMA;;;;;;;kCAQ9B,KAACO;wBAAOC,KAAI;;;;;;AAM5B,EAAC"}
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client.ts"],"sourcesContent":["export * from \"./fields/TiptapEditor/extensions/serverside/index.js\";\
|
|
1
|
+
{"version":3,"sources":["../../src/client.ts"],"sourcesContent":["export * from \"./fields/TiptapEditor/extensions/serverside/index.js\";\n"],"names":[],"mappings":"AAAA,cAAc,uDAAuD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/fields/TiptapEditor/Components.tsx"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/TiptapEditor/Components.tsx"],"sourcesContent":["\"use client\";\nimport { useCallback, useEffect, useState } from \"react\";\n\n// import 'cal-sans'\n\n// import '@fontsource/inter/100.css'\n// import '@fontsource/inter/200.css'\n// import '@fontsource/inter/300.css'\n// import '@fontsource/inter/400.css'\n// import '@fontsource/inter/500.css'\n// import '@fontsource/inter/600.css'\n// import '@fontsource/inter/700.css'\n// import { BlockEditor } from './features/BlockEditor'\nimport { useField } from \"@payloadcms/ui\";\nimport { BlockEditor } from \"./features/BlockEditor/BlockEditor.js\";\n\n// import \"../../styles.css\";\nimport { CustomComponent, JSONField, ServerProps } from \"payload\";\nimport i18next from \"i18next\";\n\ntype Props = JSONField & ServerProps;\n\nconst useDarkmode = () => {\n const [isDarkMode, setIsDarkMode] = useState<boolean>(\n typeof window !== \"undefined\"\n ? document.documentElement.getAttribute(\"data-theme\") === \"dark\"\n : false\n );\n\n useEffect(() => {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handleChange = () => setIsDarkMode(mediaQuery.matches);\n mediaQuery.addEventListener(\"change\", handleChange);\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, []);\n\n useEffect(() => {\n document.documentElement.classList.toggle(\"dark\", isDarkMode);\n }, [isDarkMode]);\n\n const toggleDarkMode = useCallback(\n () => setIsDarkMode((isDark) => !isDark),\n []\n );\n const lightMode = useCallback(() => setIsDarkMode(false), []);\n const darkMode = useCallback(() => setIsDarkMode(true), []);\n\n return {\n isDarkMode,\n toggleDarkMode,\n lightMode,\n darkMode,\n };\n};\n\nexport const EditorComponent: CustomComponent = (props) => {\n const { value, setValue } = useField<any>({\n path: props.name,\n });\n\n useDarkmode();\n const hasCollab = false;\n return (\n <div\n lang={i18next.language}\n className=\"editor-tiptap content-field content-field-disabled\"\n style={{ width: \"100%\", height: \"100%\", overflow: \"visible\" }}\n >\n {/* {DarkModeSwitcher} */}\n {/* <FieldLabel label={props?.label ?? capitalize(props?.name) ?? ''} /> */}\n <BlockEditor\n hasCollab={hasCollab}\n content={value}\n openAssetHQHandler={(listener) => { }}\n handleChange={(value) => {\n setValue(value);\n }}\n />\n </div>\n );\n};\n"],"names":["useCallback","useEffect","useState","useField","BlockEditor","i18next","useDarkmode","isDarkMode","setIsDarkMode","window","document","documentElement","getAttribute","mediaQuery","matchMedia","handleChange","matches","addEventListener","removeEventListener","classList","toggle","toggleDarkMode","isDark","lightMode","darkMode","EditorComponent","props","value","setValue","path","name","hasCollab","div","lang","language","className","style","width","height","overflow","content","openAssetHQHandler","listener"],"mappings":"AAAA;;AACA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAEzD,oBAAoB;AAEpB,qCAAqC;AACrC,qCAAqC;AACrC,qCAAqC;AACrC,qCAAqC;AACrC,qCAAqC;AACrC,qCAAqC;AACrC,qCAAqC;AACrC,uDAAuD;AACvD,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,WAAW,QAAQ,wCAAwC;AAIpE,OAAOC,aAAa,UAAU;AAI9B,MAAMC,cAAc;IAClB,MAAM,CAACC,YAAYC,cAAc,GAAGN,SAClC,OAAOO,WAAW,cACdC,SAASC,eAAe,CAACC,YAAY,CAAC,kBAAkB,SACxD;IAGNX,UAAU;QACR,MAAMY,aAAaJ,OAAOK,UAAU,CAAC;QACrC,MAAMC,eAAe,IAAMP,cAAcK,WAAWG,OAAO;QAC3DH,WAAWI,gBAAgB,CAAC,UAAUF;QACtC,OAAO,IAAMF,WAAWK,mBAAmB,CAAC,UAAUH;IACxD,GAAG,EAAE;IAELd,UAAU;QACRS,SAASC,eAAe,CAACQ,SAAS,CAACC,MAAM,CAAC,QAAQb;IACpD,GAAG;QAACA;KAAW;IAEf,MAAMc,iBAAiBrB,YACrB,IAAMQ,cAAc,CAACc,SAAW,CAACA,SACjC,EAAE;IAEJ,MAAMC,YAAYvB,YAAY,IAAMQ,cAAc,QAAQ,EAAE;IAC5D,MAAMgB,WAAWxB,YAAY,IAAMQ,cAAc,OAAO,EAAE;IAE1D,OAAO;QACLD;QACAc;QACAE;QACAC;IACF;AACF;AAEA,OAAO,MAAMC,kBAAmC,CAACC;IAC/C,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGzB,SAAc;QACxC0B,MAAMH,MAAMI,IAAI;IAClB;IAEAxB;IACA,MAAMyB,YAAY;IAClB,qBACE,KAACC;QACCC,MAAM5B,QAAQ6B,QAAQ;QACtBC,WAAU;QACVC,OAAO;YAAEC,OAAO;YAAQC,QAAQ;YAAQC,UAAU;QAAU;kBAI5D,cAAA,KAACnC;YACC2B,WAAWA;YACXS,SAASb;YACTc,oBAAoB,CAACC,YAAe;YACpC3B,cAAc,CAACY;gBACbC,SAASD;YACX;;;AAIR,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/fields/TiptapEditor/context/EditorContext.ts"],"sourcesContent":["'use client'\
|
|
1
|
+
{"version":3,"sources":["../../../../../src/fields/TiptapEditor/context/EditorContext.ts"],"sourcesContent":["'use client'\nimport { createContext } from 'react'\n\nexport const EditorContext = createContext({})\n"],"names":["createContext","EditorContext"],"mappings":"AAAA;AACA,SAASA,aAAa,QAAQ,QAAO;AAErC,OAAO,MAAMC,gBAAgBD,cAAc,CAAC,GAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AICommand.ts"],"sourcesContent":["'use client'\r\nimport { Editor, Extension } from '@tiptap/core'\r\nimport { PluginKey } from '@tiptap/pm/state'\r\nimport { ReactRenderer } from '@tiptap/react'\r\nimport Suggestion, { SuggestionKeyDownProps, SuggestionProps } from '@tiptap/suggestion'\r\nimport tippy from 'tippy.js'\r\n\r\nimport AIMenuList from './AIMenuList.js'\r\n// import { AICommandPanel } from \"../../features/panels/AICommandPanel/AICommandPanel.js\";\r\n\r\nconst extensionName = 'aiCommand'\r\n\r\nlet popup: any\r\nlet popupSelection: { from: number; to: number }\r\n\r\nexport const AICommand = Extension.create({\r\n name: extensionName,\r\n\r\n priority: 200,\r\n\r\n onCreate() {},\r\n\r\n addProseMirrorPlugins() {\r\n return [\r\n Suggestion({\r\n editor: this.editor,\r\n char: ' ',\r\n allowSpaces: false,\r\n startOfLine: true,\r\n pluginKey: new PluginKey(extensionName),\r\n allow: ({ state, range }) => {\r\n const $from = state.doc.resolve(range.from)\r\n const isRootDepth = $from.depth === 1\r\n const isParagraph = $from.parent.type.name === 'paragraph'\r\n const isStartOfNode = $from.parent.textContent?.charAt(0) === ' '\r\n const textLength = $from.parent.textContent?.length\r\n\r\n // TODO\r\n const isInColumn = this.editor.isActive('column')\r\n\r\n const afterContent = $from.parent.textContent?.substring(\r\n $from.parent.textContent?.indexOf(' '),\r\n )\r\n const isValidAfterContent = !afterContent?.endsWith(' ')\r\n return (\r\n ((isRootDepth && isParagraph && isStartOfNode) ||\r\n (isInColumn && isParagraph && isStartOfNode)) &&\r\n isValidAfterContent &&\r\n textLength === 1\r\n )\r\n },\r\n command: ({ editor, props }: { editor: Editor; props: any }) => {\r\n // const { view, state } = editor;\r\n // const { $head, $from } = view.state.selection;\r\n\r\n // const end = $from.pos;\r\n // const from = $head?.nodeBefore\r\n // ? end -\r\n // ($head.nodeBefore.text?.substring(\r\n // $head.nodeBefore.text?.indexOf(\" \")\r\n // ).length ?? 0)\r\n // : $from.start();\r\n\r\n // const tr = state.tr.deleteRange(from, end);\r\n // view.dispatch(tr);\r\n\r\n props.action(editor)\r\n // view.focus();\r\n },\r\n items: async ({ query }: { query: string }) => {\r\n const GROUPS = (await import('./groups.js')).default\r\n const withFilteredCommands = GROUPS.map((group) => ({\r\n ...group,\r\n commands: group.commands\r\n .filter((item) => {\r\n const labelNormalized = item.label.toLowerCase().trim()\r\n const queryNormalized = query.toLowerCase().trim()\r\n\r\n if (item.aliases) {\r\n const aliases = item.aliases.map((alias) => alias.toLowerCase().trim())\r\n\r\n return (\r\n labelNormalized.includes(queryNormalized) || aliases.includes(queryNormalized)\r\n )\r\n }\r\n\r\n return labelNormalized.includes(queryNormalized)\r\n })\r\n .filter((command) =>\r\n command.shouldBeHidden ? !command.shouldBeHidden(this.editor) : true,\r\n ),\r\n }))\r\n\r\n const withoutEmptyGroups = withFilteredCommands.filter((group) => {\r\n if (group.commands.length > 0) {\r\n return true\r\n }\r\n\r\n return false\r\n })\r\n\r\n const withEnabledSettings = withoutEmptyGroups.map((group) => ({\r\n ...group,\r\n commands: group.commands.map((command) => ({\r\n ...command,\r\n isEnabled: true,\r\n })),\r\n }))\r\n\r\n return withEnabledSettings\r\n },\r\n render: () => {\r\n let component: any\r\n\r\n let scrollHandler: (() => void) | null = null\r\n\r\n return {\r\n onStart: (props: SuggestionProps) => {\r\n const editor = props.editor\r\n\r\n const t = tippy as any\r\n popup = t('body', {\r\n interactive: true,\r\n trigger: 'manual',\r\n placement: 'bottom-start',\r\n theme: 'slash-command',\r\n // maxWidth: \"16rem\",\r\n offset: [0, -16],\r\n popperOptions: {\r\n strategy: 'fixed',\r\n modifiers: [\r\n {\r\n name: 'flip',\r\n enabled: false,\r\n },\r\n ],\r\n },\r\n editor: editor,\r\n onHide(instance) {\r\n try {\r\n const editorRef = instance.props.editor\r\n const completion = editorRef?.storage?.aiCommand?.completion ?? []\r\n const selection = editorRef?.state?.selection\r\n\r\n if (!completion || completion === '') {\r\n return\r\n }\r\n editorRef\r\n ?.chain()\r\n .focus()\r\n .insertContentAt(\r\n { from: popupSelection.from - 1, to: popupSelection.to },\r\n ' ',\r\n )\r\n .insertContentAt(popupSelection.to, completion)\r\n .run()\r\n\r\n props.editor.storage.aiCommand.completion = ''\r\n } catch (e) {\r\n console.log('Error', e)\r\n }\r\n },\r\n })\r\n component = new ReactRenderer(AIMenuList, {\r\n props,\r\n editor: props.editor,\r\n })\r\n props.editor.storage.aiCommand.active = true\r\n const { view } = props.editor\r\n\r\n const editorNode = view.dom as HTMLElement\r\n\r\n const getReferenceClientRect = () => {\r\n if (!props.clientRect) {\r\n return props.editor.storage[extensionName].rect\r\n }\r\n\r\n const rect = props.clientRect()\r\n\r\n if (!rect) {\r\n return props.editor.storage[extensionName].rect\r\n }\r\n\r\n let yPos = rect.y\r\n\r\n if (rect.top + component.element.offsetHeight + 40 > window.innerHeight) {\r\n const diff = rect.top + component.element.offsetHeight - window.innerHeight + 40\r\n yPos = rect.y - diff\r\n }\r\n\r\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\r\n const editorXOffset = editorNode.getBoundingClientRect().x\r\n const boundigClient = editorNode.getBoundingClientRect()\r\n\r\n return new DOMRect(rect.x, yPos, boundigClient.width, rect.height)\r\n }\r\n\r\n scrollHandler = () => {\r\n popup?.[0].setProps({\r\n getReferenceClientRect,\r\n })\r\n }\r\n\r\n view.dom.parentElement?.addEventListener('scroll', scrollHandler)\r\n\r\n popup?.[0].setProps({\r\n getReferenceClientRect,\r\n appendTo: () => document.body,\r\n content: component?.element,\r\n })\r\n\r\n const selection = this?.editor?.state?.selection\r\n popupSelection = { from: selection?.from, to: selection?.to }\r\n\r\n popup?.[0].show()\r\n },\r\n\r\n onUpdate: (props: SuggestionProps) => {\r\n component?.updateProps(props)\r\n\r\n const { view } = props.editor\r\n\r\n const editorNode = view.dom as HTMLElement\r\n\r\n const getReferenceClientRect = () => {\r\n if (!props.clientRect) {\r\n return props.editor.storage[extensionName].rect\r\n }\r\n\r\n const rect = props.clientRect()\r\n\r\n if (!rect) {\r\n return props.editor.storage[extensionName].rect\r\n }\r\n\r\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\r\n return new DOMRect(rect.x, rect.y, rect.width, rect.height)\r\n }\r\n\r\n let scrollHandler = () => {\r\n popup?.[0].setProps({\r\n getReferenceClientRect,\r\n })\r\n }\r\n\r\n view.dom.parentElement?.addEventListener('scroll', scrollHandler)\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n props.editor.storage[extensionName].rect = props.clientRect\r\n ? getReferenceClientRect()\r\n : {\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n }\r\n popup?.[0].setProps({\r\n getReferenceClientRect,\r\n })\r\n },\r\n\r\n onKeyDown: (props: SuggestionKeyDownProps) => {\r\n if (props.event.key === 'Escape') {\r\n popup?.[0].hide()\r\n\r\n return true\r\n }\r\n\r\n if (!popup?.[0].state.isShown) {\r\n popup?.[0].show()\r\n }\r\n\r\n return component?.ref?.onKeyDown(props)\r\n },\r\n\r\n onExit: (props) => {\r\n if (scrollHandler) {\r\n const { view } = props.editor\r\n view.dom.parentElement?.removeEventListener('scroll', scrollHandler)\r\n }\r\n\r\n props.editor.storage.aiCommand.active = false\r\n props.editor.storage.aiCommand.userPrompt = ''\r\n props.editor.storage.aiCommand.completion = ''\r\n\r\n component?.destroy()\r\n },\r\n }\r\n },\r\n }),\r\n ]\r\n },\r\n\r\n addStorage() {\r\n return {\r\n rect: {\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n userPrompt: '',\r\n completion: '',\r\n title: '',\r\n active: false,\r\n }\r\n },\r\n})\r\n\r\nexport default AICommand\r\n"],"names":["Extension","PluginKey","ReactRenderer","Suggestion","tippy","AIMenuList","extensionName","popup","popupSelection","AICommand","create","name","priority","onCreate","addProseMirrorPlugins","editor","char","allowSpaces","startOfLine","pluginKey","allow","state","range","$from","doc","resolve","from","isRootDepth","depth","isParagraph","parent","type","isStartOfNode","textContent","charAt","textLength","length","isInColumn","isActive","afterContent","substring","indexOf","isValidAfterContent","endsWith","command","props","action","items","query","GROUPS","default","withFilteredCommands","map","group","commands","filter","item","labelNormalized","label","toLowerCase","trim","queryNormalized","aliases","alias","includes","shouldBeHidden","withoutEmptyGroups","withEnabledSettings","isEnabled","render","component","scrollHandler","onStart","t","interactive","trigger","placement","theme","offset","popperOptions","strategy","modifiers","enabled","onHide","instance","editorRef","completion","storage","aiCommand","selection","chain","focus","insertContentAt","to","run","e","console","log","active","view","editorNode","dom","getReferenceClientRect","clientRect","rect","yPos","y","top","element","offsetHeight","window","innerHeight","diff","editorXOffset","getBoundingClientRect","x","boundigClient","DOMRect","width","height","setProps","parentElement","addEventListener","appendTo","document","body","content","show","onUpdate","updateProps","left","right","bottom","onKeyDown","event","key","hide","isShown","ref","onExit","removeEventListener","userPrompt","destroy","addStorage","title"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AICommand.ts"],"sourcesContent":["'use client'\nimport { Editor, Extension } from '@tiptap/core'\nimport { PluginKey } from '@tiptap/pm/state'\nimport { ReactRenderer } from '@tiptap/react'\nimport Suggestion, { SuggestionKeyDownProps, SuggestionProps } from '@tiptap/suggestion'\nimport tippy from 'tippy.js'\n\nimport AIMenuList from './AIMenuList.js'\n// import { AICommandPanel } from \"../../features/panels/AICommandPanel/AICommandPanel.js\";\n\nconst extensionName = 'aiCommand'\n\nlet popup: any\nlet popupSelection: { from: number; to: number }\n\nexport const AICommand = Extension.create({\n name: extensionName,\n\n priority: 200,\n\n onCreate() {},\n\n addProseMirrorPlugins() {\n return [\n Suggestion({\n editor: this.editor,\n char: ' ',\n allowSpaces: false,\n startOfLine: true,\n pluginKey: new PluginKey(extensionName),\n allow: ({ state, range }) => {\n const $from = state.doc.resolve(range.from)\n const isRootDepth = $from.depth === 1\n const isParagraph = $from.parent.type.name === 'paragraph'\n const isStartOfNode = $from.parent.textContent?.charAt(0) === ' '\n const textLength = $from.parent.textContent?.length\n\n // TODO\n const isInColumn = this.editor.isActive('column')\n\n const afterContent = $from.parent.textContent?.substring(\n $from.parent.textContent?.indexOf(' '),\n )\n const isValidAfterContent = !afterContent?.endsWith(' ')\n return (\n ((isRootDepth && isParagraph && isStartOfNode) ||\n (isInColumn && isParagraph && isStartOfNode)) &&\n isValidAfterContent &&\n textLength === 1\n )\n },\n command: ({ editor, props }: { editor: Editor; props: any }) => {\n // const { view, state } = editor;\n // const { $head, $from } = view.state.selection;\n\n // const end = $from.pos;\n // const from = $head?.nodeBefore\n // ? end -\n // ($head.nodeBefore.text?.substring(\n // $head.nodeBefore.text?.indexOf(\" \")\n // ).length ?? 0)\n // : $from.start();\n\n // const tr = state.tr.deleteRange(from, end);\n // view.dispatch(tr);\n\n props.action(editor)\n // view.focus();\n },\n items: async ({ query }: { query: string }) => {\n const GROUPS = (await import('./groups.js')).default\n const withFilteredCommands = GROUPS.map((group) => ({\n ...group,\n commands: group.commands\n .filter((item) => {\n const labelNormalized = item.label.toLowerCase().trim()\n const queryNormalized = query.toLowerCase().trim()\n\n if (item.aliases) {\n const aliases = item.aliases.map((alias) => alias.toLowerCase().trim())\n\n return (\n labelNormalized.includes(queryNormalized) || aliases.includes(queryNormalized)\n )\n }\n\n return labelNormalized.includes(queryNormalized)\n })\n .filter((command) =>\n command.shouldBeHidden ? !command.shouldBeHidden(this.editor) : true,\n ),\n }))\n\n const withoutEmptyGroups = withFilteredCommands.filter((group) => {\n if (group.commands.length > 0) {\n return true\n }\n\n return false\n })\n\n const withEnabledSettings = withoutEmptyGroups.map((group) => ({\n ...group,\n commands: group.commands.map((command) => ({\n ...command,\n isEnabled: true,\n })),\n }))\n\n return withEnabledSettings\n },\n render: () => {\n let component: any\n\n let scrollHandler: (() => void) | null = null\n\n return {\n onStart: (props: SuggestionProps) => {\n const editor = props.editor\n\n const t = tippy as any\n popup = t('body', {\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start',\n theme: 'slash-command',\n // maxWidth: \"16rem\",\n offset: [0, -16],\n popperOptions: {\n strategy: 'fixed',\n modifiers: [\n {\n name: 'flip',\n enabled: false,\n },\n ],\n },\n editor: editor,\n onHide(instance) {\n try {\n const editorRef = instance.props.editor\n const completion = editorRef?.storage?.aiCommand?.completion ?? []\n const selection = editorRef?.state?.selection\n\n if (!completion || completion === '') {\n return\n }\n editorRef\n ?.chain()\n .focus()\n .insertContentAt(\n { from: popupSelection.from - 1, to: popupSelection.to },\n ' ',\n )\n .insertContentAt(popupSelection.to, completion)\n .run()\n\n props.editor.storage.aiCommand.completion = ''\n } catch (e) {\n console.log('Error', e)\n }\n },\n })\n component = new ReactRenderer(AIMenuList, {\n props,\n editor: props.editor,\n })\n props.editor.storage.aiCommand.active = true\n const { view } = props.editor\n\n const editorNode = view.dom as HTMLElement\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect\n }\n\n const rect = props.clientRect()\n\n if (!rect) {\n return props.editor.storage[extensionName].rect\n }\n\n let yPos = rect.y\n\n if (rect.top + component.element.offsetHeight + 40 > window.innerHeight) {\n const diff = rect.top + component.element.offsetHeight - window.innerHeight + 40\n yPos = rect.y - diff\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n const editorXOffset = editorNode.getBoundingClientRect().x\n const boundigClient = editorNode.getBoundingClientRect()\n\n return new DOMRect(rect.x, yPos, boundigClient.width, rect.height)\n }\n\n scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n })\n }\n\n view.dom.parentElement?.addEventListener('scroll', scrollHandler)\n\n popup?.[0].setProps({\n getReferenceClientRect,\n appendTo: () => document.body,\n content: component?.element,\n })\n\n const selection = this?.editor?.state?.selection\n popupSelection = { from: selection?.from, to: selection?.to }\n\n popup?.[0].show()\n },\n\n onUpdate: (props: SuggestionProps) => {\n component?.updateProps(props)\n\n const { view } = props.editor\n\n const editorNode = view.dom as HTMLElement\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect\n }\n\n const rect = props.clientRect()\n\n if (!rect) {\n return props.editor.storage[extensionName].rect\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n return new DOMRect(rect.x, rect.y, rect.width, rect.height)\n }\n\n let scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n })\n }\n\n view.dom.parentElement?.addEventListener('scroll', scrollHandler)\n\n // eslint-disable-next-line no-param-reassign\n props.editor.storage[extensionName].rect = props.clientRect\n ? getReferenceClientRect()\n : {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n }\n popup?.[0].setProps({\n getReferenceClientRect,\n })\n },\n\n onKeyDown: (props: SuggestionKeyDownProps) => {\n if (props.event.key === 'Escape') {\n popup?.[0].hide()\n\n return true\n }\n\n if (!popup?.[0].state.isShown) {\n popup?.[0].show()\n }\n\n return component?.ref?.onKeyDown(props)\n },\n\n onExit: (props) => {\n if (scrollHandler) {\n const { view } = props.editor\n view.dom.parentElement?.removeEventListener('scroll', scrollHandler)\n }\n\n props.editor.storage.aiCommand.active = false\n props.editor.storage.aiCommand.userPrompt = ''\n props.editor.storage.aiCommand.completion = ''\n\n component?.destroy()\n },\n }\n },\n }),\n ]\n },\n\n addStorage() {\n return {\n rect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n userPrompt: '',\n completion: '',\n title: '',\n active: false,\n }\n },\n})\n\nexport default AICommand\n"],"names":["Extension","PluginKey","ReactRenderer","Suggestion","tippy","AIMenuList","extensionName","popup","popupSelection","AICommand","create","name","priority","onCreate","addProseMirrorPlugins","editor","char","allowSpaces","startOfLine","pluginKey","allow","state","range","$from","doc","resolve","from","isRootDepth","depth","isParagraph","parent","type","isStartOfNode","textContent","charAt","textLength","length","isInColumn","isActive","afterContent","substring","indexOf","isValidAfterContent","endsWith","command","props","action","items","query","GROUPS","default","withFilteredCommands","map","group","commands","filter","item","labelNormalized","label","toLowerCase","trim","queryNormalized","aliases","alias","includes","shouldBeHidden","withoutEmptyGroups","withEnabledSettings","isEnabled","render","component","scrollHandler","onStart","t","interactive","trigger","placement","theme","offset","popperOptions","strategy","modifiers","enabled","onHide","instance","editorRef","completion","storage","aiCommand","selection","chain","focus","insertContentAt","to","run","e","console","log","active","view","editorNode","dom","getReferenceClientRect","clientRect","rect","yPos","y","top","element","offsetHeight","window","innerHeight","diff","editorXOffset","getBoundingClientRect","x","boundigClient","DOMRect","width","height","setProps","parentElement","addEventListener","appendTo","document","body","content","show","onUpdate","updateProps","left","right","bottom","onKeyDown","event","key","hide","isShown","ref","onExit","removeEventListener","userPrompt","destroy","addStorage","title"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AIMenuList.tsx"],"sourcesContent":["import React, { useState } from \"react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AIMenuList.tsx"],"sourcesContent":["import React, { useState } from \"react\";\n\nimport { AIMenuListProps } from \"./types.js\";\n\nimport { AICommandPanel } from \"../../features/panels/AICommandPanel/AICommandPanel.js\";\n\nexport const AIMenuList = React.forwardRef((props: AIMenuListProps, ref) => {\n const [userPrompt, setUserPrompt] = useState(\"\");\n\n if (!props.items.length) {\n return null;\n }\n\n return (\n <>\n <AICommandPanel\n editor={props?.editor as any}\n onOpenChange={() => {}}\n userPrompt={userPrompt}\n items={props?.items}\n ref={ref}\n />\n </>\n );\n});\n\nAIMenuList.displayName = \"AIMenuList\";\n\nexport default AIMenuList;\n"],"names":["React","useState","AICommandPanel","AIMenuList","forwardRef","props","ref","userPrompt","setUserPrompt","items","length","editor","onOpenChange","displayName"],"mappings":";AAAA,OAAOA,SAASC,QAAQ,QAAQ,QAAQ;AAIxC,SAASC,cAAc,QAAQ,yDAAyD;AAExF,OAAO,MAAMC,2BAAaH,MAAMI,UAAU,CAAC,CAACC,OAAwBC;IAClE,MAAM,CAACC,YAAYC,cAAc,GAAGP,SAAS;IAE7C,IAAI,CAACI,MAAMI,KAAK,CAACC,MAAM,EAAE;QACvB,OAAO;IACT;IAEA,qBACE;kBACE,cAAA,KAACR;YACCS,QAAQN,OAAOM;YACfC,cAAc,KAAO;YACrBL,YAAYA;YACZE,OAAOJ,OAAOI;YACdH,KAAKA;;;AAIb,GAAG;AAEHH,WAAWU,WAAW,GAAG;AAEzB,eAAeV,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/CommandButton.tsx"],"sourcesContent":["import { LucideIcon } from \"lucide-react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/CommandButton.tsx"],"sourcesContent":["import { LucideIcon } from \"lucide-react\";\nimport { forwardRef } from \"react\";\nimport { Icon } from \"../../features/ui/Icon.js\";\nimport { cn } from \"../../lib/utils/index.js\";\n\nexport type CommandButtonProps = {\n active?: boolean;\n description: string;\n icon: LucideIcon;\n onClick: () => void;\n title: string;\n};\n\nexport const CommandButton = forwardRef<HTMLButtonElement, CommandButtonProps>(\n ({ active, icon, onClick, title }, ref) => {\n const wrapperClass = cn(\n \"flex text-neutral-500 items-center text-xs font-semibold justify-start p-1.5 gap-2 rounded\",\n !active && \"bg-transparent hover:bg-neutral-50 hover:text-black\",\n active && \"bg-neutral-100 text-black hover:bg-neutral-100\"\n );\n\n return (\n <button\n type=\"button\"\n ref={ref}\n onClick={onClick}\n className={wrapperClass}\n >\n <Icon icon={icon} className=\"w-3 h-3\" />\n <div className=\"flex flex-col items-start justify-start\">\n <div className=\"text-sm font-medium\">{title}</div>\n </div>\n </button>\n );\n }\n);\n\nCommandButton.displayName = \"CommandButton\";\n"],"names":["forwardRef","Icon","cn","CommandButton","active","icon","onClick","title","ref","wrapperClass","button","type","className","div","displayName"],"mappings":";AACA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,IAAI,QAAQ,4BAA4B;AACjD,SAASC,EAAE,QAAQ,2BAA2B;AAU9C,OAAO,MAAMC,8BAAgBH,WAC3B,CAAC,EAAEI,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,KAAK,EAAE,EAAEC;IACjC,MAAMC,eAAeP,GACnB,8FACA,CAACE,UAAU,uDACXA,UAAU;IAGZ,qBACE,MAACM;QACCC,MAAK;QACLH,KAAKA;QACLF,SAASA;QACTM,WAAWH;;0BAEX,KAACR;gBAAKI,MAAMA;gBAAMO,WAAU;;0BAC5B,KAACC;gBAAID,WAAU;0BACb,cAAA,KAACC;oBAAID,WAAU;8BAAuBL;;;;;AAI9C,GACA;AAEFJ,cAAcW,WAAW,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/groups.ts"],"sourcesContent":["import {\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/groups.ts"],"sourcesContent":["import {\n Book,\n Columns2,\n Facebook,\n Heading1,\n Heading2,\n Heading3,\n Image,\n Instagram,\n Link,\n Linkedin,\n List,\n ListOrdered,\n ListTodo,\n Minus,\n Music,\n Pen,\n Quote,\n SquareCode,\n Table,\n Twitch,\n Twitter,\n Youtube,\n} from \"lucide-react\";\nimport { Group } from \"./types.js\";\nimport i18next from \"i18next\";\n\nexport const GROUPS: Group[] = [\n {\n name: \"draft\",\n title: i18next.t(\"draftWithAI\") || \"Draft with AI\",\n commands: [\n {\n name: \"brainstorm\",\n label: i18next.t(\"brainstormIdeas\") || \"Brainstorm Ideas...\",\n icon: Pen,\n description: i18next.t(\"brainstormIdeasDesc\") || \"Brainstorm ideas on \",\n action: (editor) => {\n // \"Brainstorm ideas on \"\n return \"Brainstorm ideas on \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"blog\",\n label: i18next.t(\"blogPost\") || \"Blog post...\",\n description: i18next.t(\"blogPostDesc\") || \"Blog post\",\n action: (editor) => {\n return \"Write a blog post about \";\n\n // \"Write a blog post about \"\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n {\n name: \"outline\",\n label: i18next.t(\"outline\") || \"Outline...\",\n description: i18next.t(\"outlineDesc\") || \"Outline\",\n action: (editor) => {\n return \"Write an outline about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n\n {\n name: \"social\",\n label: i18next.t(\"socialMediaPost\") || \"Social Media post...\",\n icon: Pen,\n description: i18next.t(\"socialMediaPostDesc\") || \"Social Media post\",\n action: (editor) => {\n return;\n (\"Write a social media post about \");\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"press\",\n label: i18next.t(\"pressEelease\") || \"Press release...\",\n icon: Pen,\n description: i18next.t(\"pressEeleaseDesc\") || \"Press release\",\n action: (editor) => {\n return \"Write a press release about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"creative\",\n label: i18next.t(\"creativeStory\") || \"Creative Story...\",\n description: i18next.t(\"creativeStoryDesc\") || \"Creative Story\",\n action: (editor) => {\n return \"Write a creative story about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n {\n name: \"essay\",\n label: i18next.t(\"essay\") || \"Essay...\",\n description: i18next.t(\"essayDesc\") || \"Essay\",\n action: (editor) => {\n return \"Write an essay about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n ],\n },\n];\n\nexport default GROUPS;\n"],"names":["Pen","i18next","GROUPS","name","title","t","commands","label","icon","description","action","editor"],"mappings":"AAAA,SAgBEA,GAAG,QAOE,eAAe;AAEtB,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,SAAkB;IAC7B;QACEC,MAAM;QACNC,OAAOH,QAAQI,CAAC,CAAC,kBAAkB;QACnCC,UAAU;YACR;gBACEH,MAAM;gBACNI,OAAON,QAAQI,CAAC,CAAC,sBAAsB;gBACvCG,MAAMR;gBACNS,aAAaR,QAAQI,CAAC,CAAC,0BAA0B;gBACjDK,QAAQ,CAACC;oBACP,0BAA0B;oBAC1B,OAAO;gBACP,yDAAyD;gBAC3D;YACF;YACA;gBACER,MAAM;gBACNI,OAAON,QAAQI,CAAC,CAAC,eAAe;gBAChCI,aAAaR,QAAQI,CAAC,CAAC,mBAAmB;gBAC1CK,QAAQ,CAACC;oBACP,OAAO;gBAEP,8BAA8B;gBAC9B,yDAAyD;gBAC3D;gBACAH,MAAMR;YACR;YACA;gBACEG,MAAM;gBACNI,OAAON,QAAQI,CAAC,CAAC,cAAc;gBAC/BI,aAAaR,QAAQI,CAAC,CAAC,kBAAkB;gBACzCK,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;gBACAH,MAAMR;YACR;YAEA;gBACEG,MAAM;gBACNI,OAAON,QAAQI,CAAC,CAAC,sBAAsB;gBACvCG,MAAMR;gBACNS,aAAaR,QAAQI,CAAC,CAAC,0BAA0B;gBACjDK,QAAQ,CAACC;oBACP;oBACC;gBACD,yDAAyD;gBAC3D;YACF;YACA;gBACER,MAAM;gBACNI,OAAON,QAAQI,CAAC,CAAC,mBAAmB;gBACpCG,MAAMR;gBACNS,aAAaR,QAAQI,CAAC,CAAC,uBAAuB;gBAC9CK,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;YACF;YACA;gBACER,MAAM;gBACNI,OAAON,QAAQI,CAAC,CAAC,oBAAoB;gBACrCI,aAAaR,QAAQI,CAAC,CAAC,wBAAwB;gBAC/CK,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;gBACAH,MAAMR;YACR;YACA;gBACEG,MAAM;gBACNI,OAAON,QAAQI,CAAC,CAAC,YAAY;gBAC7BI,aAAaR,QAAQI,CAAC,CAAC,gBAAgB;gBACvCK,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;gBACAH,MAAMR;YACR;SACD;IACH;CACD,CAAC;AAEF,eAAeE,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/index.ts"],"sourcesContent":["export * from \"./AICommand.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/index.ts"],"sourcesContent":["export * from \"./AICommand.js\";\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/types.ts"],"sourcesContent":["import { Editor } from \"@tiptap/core\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/types.ts"],"sourcesContent":["import { Editor } from \"@tiptap/core\";\nimport { LucideIcon } from \"lucide-react\";\n\nexport interface Group {\n name: string;\n title: string;\n commands: Command[];\n}\n\nexport interface Command {\n name: string;\n label: string;\n description: string;\n aliases?: string[];\n icon: LucideIcon;\n action: (editor: Editor) => any;\n shouldBeHidden?: (editor: Editor) => boolean;\n}\n\nexport interface AIMenuListProps {\n editor: Editor;\n items: Group[];\n command: (command: Command) => void;\n}\n"],"names":[],"mappings":"AAmBA,WAIC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { mergeAttributes, Node, nodeInputRule } from "@tiptap/core";
|
|
2
|
-
/**
|
|
3
|
-
* Matches an image to a  on input.
|
|
2
|
+
/**
|
|
3
|
+
* Matches an image to a  on input.
|
|
4
4
|
*/ export const inputRegex = /(?:^|\s)(!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\))$/;
|
|
5
|
-
/**
|
|
6
|
-
* This extension allows you to insert images.
|
|
7
|
-
* @see https://www.tiptap.dev/api/nodes/image
|
|
5
|
+
/**
|
|
6
|
+
* This extension allows you to insert images.
|
|
7
|
+
* @see https://www.tiptap.dev/api/nodes/image
|
|
8
8
|
*/ export const Audio = Node.create({
|
|
9
9
|
name: "audio",
|
|
10
10
|
addOptions () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Audio/Audio.ts"],"sourcesContent":["import { mergeAttributes, Node, nodeInputRule } from \"@tiptap/core\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Audio/Audio.ts"],"sourcesContent":["import { mergeAttributes, Node, nodeInputRule } from \"@tiptap/core\";\n\nexport interface AudioOptions {\n /**\n * Controls if the image node should be inline or not.\n * @default false\n * @example true\n */\n inline: boolean;\n\n /**\n * Controls if base64 images are allowed. Enable this if you want to allow\n * base64 image urls in the `src` attribute.\n * @default false\n * @example true\n */\n allowBase64: boolean;\n\n /**\n * HTML attributes to add to the image element.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>;\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n audio: {\n /**\n * Add an image\n * @param options The image attributes\n * @example\n * editor\n * .commands\n * .setAudio({ src: 'https://tiptap.dev/logo.png', alt: 'tiptap', title: 'tiptap logo' })\n */\n setAudio: (options: {\n src: string;\n alt?: string;\n title?: string;\n poster?: string;\n }) => ReturnType;\n };\n }\n}\n\n/**\n * Matches an image to a  on input.\n */\nexport const inputRegex =\n /(?:^|\\s)(!\\[(.+|:?)]\\((\\S+)(?:(?:\\s+)[\"'](\\S+)[\"'])?\\))$/;\n\n/**\n * This extension allows you to insert images.\n * @see https://www.tiptap.dev/api/nodes/image\n */\nexport const Audio = Node.create<AudioOptions>({\n name: \"audio\",\n\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n\n inline() {\n return this.options.inline;\n },\n\n group() {\n return this.options.inline ? \"inline\" : \"block\";\n },\n\n draggable: true,\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n alt: {\n default: null,\n },\n title: {\n default: null,\n },\n poster: {\n default: null,\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: this.options.allowBase64\n ? \"audio[src]\"\n : 'audio[src]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"audio\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setAudio:\n (options) =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n attrs: options,\n });\n },\n };\n },\n\n addInputRules() {\n return [\n nodeInputRule({\n find: inputRegex,\n type: this.type,\n getAttributes: (match) => {\n const [, , alt, src, title] = match;\n\n return { src, alt, title };\n },\n }),\n ];\n },\n});\n"],"names":["mergeAttributes","Node","nodeInputRule","inputRegex","Audio","create","name","addOptions","inline","allowBase64","HTMLAttributes","options","group","draggable","addAttributes","src","default","alt","title","poster","parseHTML","tag","renderHTML","addCommands","setAudio","commands","insertContent","type","attrs","addInputRules","find","getAttributes","match"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,EAAEC,aAAa,QAAQ,eAAe;AA+CpE;;CAEC,GACD,OAAO,MAAMC,aACX,2DAA2D;AAE7D;;;CAGC,GACD,OAAO,MAAMC,QAAQH,KAAKI,MAAM,CAAe;IAC7CC,MAAM;IAENC;QACE,OAAO;YACLC,QAAQ;YACRC,aAAa;YACbC,gBAAgB,CAAC;QACnB;IACF;IAEAF;QACE,OAAO,IAAI,CAACG,OAAO,CAACH,MAAM;IAC5B;IAEAI;QACE,OAAO,IAAI,CAACD,OAAO,CAACH,MAAM,GAAG,WAAW;IAC1C;IAEAK,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;YACX;YACAC,KAAK;gBACHD,SAAS;YACX;YACAE,OAAO;gBACLF,SAAS;YACX;YACAG,QAAQ;gBACNH,SAAS;YACX;QACF;IACF;IAEAI;QACE,OAAO;YACL;gBACEC,KAAK,IAAI,CAACV,OAAO,CAACF,WAAW,GACzB,eACA;YACN;SACD;IACH;IAEAa,YAAW,EAAEZ,cAAc,EAAE;QAC3B,OAAO;YACL;YACAV,gBAAgB,IAAI,CAACW,OAAO,CAACD,cAAc,EAAEA;SAC9C;IACH;IAEAa;QACE,OAAO;YACLC,UACE,CAACb,UACD,CAAC,EAAEc,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM,IAAI,CAACrB,IAAI;wBACfsB,OAAOjB;oBACT;gBACF;QACJ;IACF;IAEAkB;QACE,OAAO;YACL3B,cAAc;gBACZ4B,MAAM3B;gBACNwB,MAAM,IAAI,CAACA,IAAI;gBACfI,eAAe,CAACC;oBACd,MAAM,KAAKf,KAAKF,KAAKG,MAAM,GAAGc;oBAE9B,OAAO;wBAAEjB;wBAAKE;wBAAKC;oBAAM;gBAC3B;YACF;SACD;IACH;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Audio/index.ts"],"sourcesContent":["export * from \"./Audio.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Audio/index.ts"],"sourcesContent":["export * from \"./Audio.js\";\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.ts"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { AudioBlockView } from \"./components/AudioBlockView.js\";\nimport { Audio } from \"../Audio/Audio.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n audioBlock: {\n setAudioBlock: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n }) => ReturnType;\n setAudioBlockAt: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n\n pos: number | Range;\n }) => ReturnType;\n setAudioBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setAudioBlockWidth: (width: number) => ReturnType;\n setAudioBlockCaption: (caption: boolean) => ReturnType;\n };\n }\n}\n\nexport const AudioBlock = Audio.extend({\n name: \"audioBlock\",\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 poster: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"poster\"),\n renderHTML: (attributes) => ({\n poster: attributes.poster,\n }),\n },\n playlistUrl: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\n renderHTML: (attributes) => ({\n \"data-playlist-url\": attributes.playlistUrl,\n }),\n },\n width: {\n default: \"100%\",\n parseHTML: (element) => element.getAttribute(\"data-width\"),\n renderHTML: (attributes) => ({\n \"data-width\": attributes.width,\n }),\n },\n align: {\n default: \"center\",\n parseHTML: (element) => element.getAttribute(\"data-align\"),\n renderHTML: (attributes) => ({\n \"data-align\": attributes.align,\n }),\n },\n alt: {\n default: undefined,\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: true,\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\n renderHTML: (attributes) => ({\n \"data-caption\": attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'audio[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), audio[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"audio\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setAudioBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"audioBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n },\n });\n },\n\n setAudioBlockAt:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContentAt(attrs.pos, {\n type: \"audioBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n },\n });\n },\n\n setAudioBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", { align }),\n\n setAudioBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n\n setAudioBlockCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", { caption }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(AudioBlockView);\n },\n});\n\nexport default AudioBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","AudioBlockView","Audio","AudioBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","poster","playlistUrl","width","align","alt","undefined","caption","tag","HTMLAttributes","options","addCommands","setAudioBlock","attrs","commands","insertContent","type","assetId","setAudioBlockAt","insertContentAt","pos","setAudioBlockAlign","updateAttributes","setAudioBlockWidth","Math","max","min","setAudioBlockCaption","addNodeView"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { ReactNode, useCallback, useRef } from \"react\";\nimport { Instance, sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n Pencil,\n PencilOff,\n} from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { AudioBlockWidth } from \"./AudioBlockWidth.js\";\nimport i18next from \"i18next\";\n\nexport const AudioBlockMenu = ({ 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-audioBlock\");\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(\"audioBlock\");\n\n return isActive;\n }, [editor]);\n\n const onAlignAudioLeft = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"left\")\n .run();\n }, [editor]);\n\n const onAlignAudioCenter = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"center\")\n .run();\n }, [editor]);\n\n const onAlignAudioRight = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"right\")\n .run();\n }, [editor]);\n\n const onHideCaption = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockCaption(\n editor.isActive(\"audioBlock\", { caption: false }) ? true : false\n )\n .run();\n }, [editor]);\n\n const onWidthChange = useCallback(\n (value: number) => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockWidth(value)\n .run();\n },\n [editor]\n );\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`audioBlockMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n onCreate: (instance: Instance) => {\n tippyInstance.current = instance;\n },\n appendTo: () => {\n return appendTo?.current;\n },\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"toggleCaption\") || \"Hide/Show caption\"}\n active={editor.isActive(\"audioBlock\", { caption: false })}\n onClick={onHideCaption}\n >\n <Icon\n icon={\n editor.isActive(\"audioBlock\", { caption: false })\n ? PencilOff\n : Pencil\n }\n />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioLeft\") || \"Align audio left\"}\n active={editor.isActive(\"audioBlock\", { align: \"left\" })}\n onClick={onAlignAudioLeft}\n >\n <Icon icon={AlignHorizontalDistributeStart} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioCenter\") || \"Align audio center\"}\n active={editor.isActive(\"audioBlock\", { align: \"center\" })}\n onClick={onAlignAudioCenter}\n >\n <Icon icon={AlignHorizontalDistributeCenter} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioRight\") || \"Align audio right\"}\n active={editor.isActive(\"audioBlock\", { align: \"right\" })}\n onClick={onAlignAudioRight}\n >\n <Icon icon={AlignHorizontalDistributeEnd} />\n </Toolbar.Button>\n <Toolbar.Divider />\n <AudioBlockWidth\n onChange={onWidthChange}\n value={parseInt(editor.getAttributes(\"audioBlock\").width)}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default AudioBlockMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Pencil","PencilOff","Icon","Toolbar","getRenderContainer","AudioBlockWidth","i18next","AudioBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignAudioLeft","chain","focus","undefined","scrollIntoView","setAudioBlockAlign","run","onAlignAudioCenter","onAlignAudioRight","onHideCaption","setAudioBlockCaption","caption","onWidthChange","value","setAudioBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","onClick","icon","align","Divider","onChange","parseInt","getAttributes","width"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockView.tsx"],"sourcesContent":["import { Node } from \"@tiptap/pm/model\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockView.tsx"],"sourcesContent":["import { Node } from \"@tiptap/pm/model\";\nimport { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { cn } from \"../../../lib/utils/index.js\";\n\ninterface AudioBlockViewProps {\n editor: Editor;\n getPos: () => number;\n node: Node & {\n attrs: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n };\n };\n updateAttributes: (attrs: Record<string, string>) => void;\n}\n\nexport type Playlist = {\n id: string;\n title: string;\n description: string;\n poster: string;\n items: Item[];\n};\n\nexport type Item = {\n src: string;\n type: string;\n label: string;\n width: number;\n height: number;\n};\n\nexport const AudioBlockView = (props: AudioBlockViewProps) => {\n const { editor, getPos, node } = props;\n const audioWrapperRef = useRef<HTMLDivElement>(null);\n const { src, caption } = node.attrs;\n\n const wrapperClassName = cn(\n node.attrs.align === \"left\" ? \"ml-0\" : \"ml-auto\",\n node.attrs.align === \"right\" ? \"mr-0\" : \"mr-auto\",\n node.attrs.align === \"center\" && \"mx-auto\"\n );\n\n const onClick = useCallback(() => {\n editor.commands.setNodeSelection(getPos());\n }, [getPos, editor.commands]);\n\n return (\n <NodeViewWrapper>\n <div className={wrapperClassName} style={{ width: node.attrs.width }}>\n <div ref={audioWrapperRef}>\n <audio\n controls\n className=\"block\"\n src={src}\n //poster={poster}\n title=\"\"\n onClick={onClick}\n />\n </div>\n </div>\n </NodeViewWrapper>\n );\n};\n\nexport default AudioBlockView;\n"],"names":["NodeViewWrapper","React","useCallback","useRef","cn","AudioBlockView","props","editor","getPos","node","audioWrapperRef","src","caption","attrs","wrapperClassName","align","onClick","commands","setNodeSelection","div","className","style","width","ref","audio","controls","title"],"mappings":";AACA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,OAAOC,SAASC,WAAW,EAAsBC,MAAM,QAAQ,QAAQ;AACvE,SAASC,EAAE,QAAQ,8BAA8B;AAgCjD,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;IAEnC,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,qBACE,KAACjB;kBACC,cAAA,KAACmB;YAAIC,WAAWN;YAAkBO,OAAO;gBAAEC,OAAOb,KAAKI,KAAK,CAACS,KAAK;YAAC;sBACjE,cAAA,KAACH;gBAAII,KAAKb;0BACR,cAAA,KAACc;oBACCC,QAAQ;oBACRL,WAAU;oBACVT,KAAKA;oBACL,iBAAiB;oBACjBe,OAAM;oBACNV,SAASA;;;;;AAMrB,EAAE;AAEF,eAAeX,eAAe"}
|
package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockWidth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockWidth.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from \"react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockWidth.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useState } from \"react\";\n\nexport type AudioBlockWidthProps = {\n onChange: (value: number) => void;\n value: number;\n};\n\nexport const AudioBlockWidth = memo(\n ({ onChange, value }: AudioBlockWidthProps) => {\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\">\n {value}%\n </span>\n </div>\n );\n }\n);\n\nAudioBlockWidth.displayName = \"AudioBlockWidth\";\n"],"names":["React","memo","useCallback","useEffect","useState","AudioBlockWidth","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,QAAQ;AAOtE,OAAO,MAAMC,gCAAkBJ,KAC7B,CAAC,EAAEK,QAAQ,EAAEC,KAAK,EAAwB;IACxC,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;;oBACbR;oBAAM;;;;;AAIf,GACA;AAEFF,gBAAgBiB,WAAW,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/index.ts"],"sourcesContent":["export * from \"./AudioBlock.js\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/index.ts"],"sourcesContent":["export * from \"./AudioBlock.js\";\n"],"names":[],"mappings":"AAAA,cAAc,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/BlockquoteFigure.ts"],"sourcesContent":["import { mergeAttributes } from \"@tiptap/core\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/BlockquoteFigure.ts"],"sourcesContent":["import { mergeAttributes } from \"@tiptap/core\";\nimport { Figure } from \"../Figure/Figure.js\";\nimport { Quote } from \"./Quote/Quote.js\";\nimport { QuoteCaption } from \"./QuoteCaption/QuoteCaption.js\";\n\ndeclare module \"@tiptap/core\" {\n // eslint-disable-next-line no-unused-vars\n interface Commands<ReturnType> {\n blockquoteFigure: {\n setBlockquote: () => ReturnType;\n };\n }\n}\n\nexport const BlockquoteFigure = Figure.extend({\n name: \"blockquoteFigure\",\n\n group: \"block\",\n\n content: \"quote quoteCaption\",\n\n isolating: true,\n\n addExtensions() {\n return [Quote, QuoteCaption];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"figure\",\n mergeAttributes(HTMLAttributes, { \"data-type\": this.name }),\n [\"div\", {}, 0],\n ];\n },\n\n addKeyboardShortcuts() {\n return {\n Enter: () => false,\n };\n },\n\n addAttributes() {\n return {\n ...this.parent?.(),\n };\n },\n\n addCommands() {\n return {\n setBlockquote:\n () =>\n ({ state, chain }) => {\n const position = state.selection.$from.start();\n const selectionContent = state.selection.content();\n\n return chain()\n .focus()\n .insertContent({\n type: this.name,\n content: [\n {\n type: \"quote\",\n content: selectionContent.content.toJSON() || [\n {\n type: \"paragraph\",\n attrs: {\n textAlign: \"left\",\n },\n },\n ],\n },\n {\n type: \"quoteCaption\",\n },\n ],\n })\n .focus(position + 1)\n .run();\n },\n };\n },\n});\n\nexport default BlockquoteFigure;\n"],"names":["mergeAttributes","Figure","Quote","QuoteCaption","BlockquoteFigure","extend","name","group","content","isolating","addExtensions","renderHTML","HTMLAttributes","addKeyboardShortcuts","Enter","addAttributes","parent","addCommands","setBlockquote","state","chain","position","selection","$from","start","selectionContent","focus","insertContent","type","toJSON","attrs","textAlign","run"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAe;AAC/C,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,YAAY,QAAQ,iCAAiC;AAW9D,OAAO,MAAMC,mBAAmBH,OAAOI,MAAM,CAAC;IAC5CC,MAAM;IAENC,OAAO;IAEPC,SAAS;IAETC,WAAW;IAEXC;QACE,OAAO;YAACR;YAAOC;SAAa;IAC9B;IAEAQ,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAZ,gBAAgBY,gBAAgB;gBAAE,aAAa,IAAI,CAACN,IAAI;YAAC;YACzD;gBAAC;gBAAO,CAAC;gBAAG;aAAE;SACf;IACH;IAEAO;QACE,OAAO;YACLC,OAAO,IAAM;QACf;IACF;IAEAC;QACE,OAAO;YACL,GAAG,IAAI,CAACC,MAAM,IAAI;QACpB;IACF;IAEAC;QACE,OAAO;YACLC,eACE,IACA,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE;oBACf,MAAMC,WAAWF,MAAMG,SAAS,CAACC,KAAK,CAACC,KAAK;oBAC5C,MAAMC,mBAAmBN,MAAMG,SAAS,CAACd,OAAO;oBAEhD,OAAOY,QACJM,KAAK,GACLC,aAAa,CAAC;wBACbC,MAAM,IAAI,CAACtB,IAAI;wBACfE,SAAS;4BACP;gCACEoB,MAAM;gCACNpB,SAASiB,iBAAiBjB,OAAO,CAACqB,MAAM,MAAM;oCAC5C;wCACED,MAAM;wCACNE,OAAO;4CACLC,WAAW;wCACb;oCACF;iCACD;4BACH;4BACA;gCACEH,MAAM;4BACR;yBACD;oBACH,GACCF,KAAK,CAACL,WAAW,GACjBW,GAAG;gBACR;QACJ;IACF;AACF,GAAG;AAEH,eAAe5B,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/Design.tsx"],"sourcesContent":["import React from 'react'\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/BlockquoteFigure/Design.tsx"],"sourcesContent":["import React from 'react'\n\nconst Design = () => {\n return (\n <blockquote className=\"p-4 my-4 border-s-4 border-gray-300 bg-gray-50 w-full\">\n <p className=\"text-xl italic font-medium leading-relaxed text-gray-900 w-full\">\n \"Flowbite is just awesome. It contains tons of predesigned components and pages starting\n from login screen to complex dashboard. Perfect choice for your next SaaS application.\"\n </p>\n </blockquote>\n )\n}\n\nexport default Design\n"],"names":["React","Design","blockquote","className","p"],"mappings":";AAAA,OAAOA,WAAW,QAAO;AAEzB,MAAMC,SAAS;IACb,qBACE,KAACC;QAAWC,WAAU;kBACpB,cAAA,KAACC;YAAED,WAAU;sBAAkE;;;AAMrF;AAEA,eAAeF,OAAM"}
|