payload-richtext-tiptap 0.0.40 → 0.0.41
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/README.md +4 -47
- 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/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/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/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/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/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/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/TableOfContentsNode/TableOfContentsNode.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/TableOfContentsNode/index.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/extension-kit.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.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/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/types.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/Sidebar/Sidebar.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/Sidebar/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/TableOfContents/TableOfContents.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/TableOfContents/index.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/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-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/AIEditorPanel/AIEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/index.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/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.d.ts +3 -0
- package/dist/src/fields/TiptapEditor/lib/extract.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/lib/extract.js +27 -0
- package/dist/src/fields/TiptapEditor/lib/extract.js.map +1 -0
- package/dist/src/fields/TiptapEditor/lib/utils/cssVar.js.map +1 -1
- 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/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.tsx"],"sourcesContent":["import { Instagram } from \"lucide-react\";\nimport { InstagramEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Instagram}\n text={\"Embed a post from Instagram\"}\n >\n <InstagramEmbed\n className=\"max-w-[328px]\"\n url={props?.node?.attrs?.url ?? \"\"}\n width={328}\n captioned\n />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Instagram","InstagramEmbed","SocialMediaEmbed","props","Icon","text","className","url","node","attrs","width","captioned"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/InstagramEmbed.tsx"],"sourcesContent":["import { Instagram } from \"lucide-react\";\nimport { InstagramEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Instagram}\n text={\"Embed a post from Instagram\"}\n >\n <InstagramEmbed\n className=\"max-w-[328px]\"\n url={props?.node?.attrs?.url ?? \"\"}\n width={328}\n captioned\n />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Instagram","InstagramEmbed","SocialMediaEmbed","props","Icon","text","className","url","node","attrs","width","captioned"],"mappings":";AAAA,SAASA,SAAS,QAAQ,eAAe;AACzC,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMJ;QACNK,MAAM;kBAEN,cAAA,KAACJ;YACCK,WAAU;YACVC,KAAKJ,OAAOK,MAAMC,OAAOF,OAAO;YAChCG,OAAO;YACPC,SAAS;;;AAIjB,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/index.ts"],"sourcesContent":["export * from \"./instagram.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/index.ts"],"sourcesContent":["export * from \"./instagram.js\";\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/instagram.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n instagram: {\n /**\n * Add an image\n */\n\n insertInstagram: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport InstagramEmbed from \"./InstagramEmbed.js\";\n\nexport const Instagram = Node.create({\n name: \"instagram\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: \"instagram-component\",\n },\n ];\n },\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"instagram-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(InstagramEmbed);\n },\n\n addCommands() {\n return {\n insertInstagram:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"instagram\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","InstagramEmbed","Instagram","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertInstagram","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Instagram/instagram.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n instagram: {\n /**\n * Add an image\n */\n\n insertInstagram: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport InstagramEmbed from \"./InstagramEmbed.js\";\n\nexport const Instagram = Node.create({\n name: \"instagram\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: \"instagram-component\",\n },\n ];\n },\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"instagram-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(InstagramEmbed);\n },\n\n addCommands() {\n return {\n insertInstagram:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"instagram\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","InstagramEmbed","Instagram","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertInstagram","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"mappings":"AAYA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AACrD,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,OAAOC,oBAAoB,sBAAsB;AAEjD,OAAO,MAAMC,YAAYJ,KAAKK,MAAM,CAAC;IACnCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IACX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;QACvB;IACF;IACAC;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAChB,IAAI;gBACtB,GACCiB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAuBzB,gBAAgByB;YAAiB;SAAE;IACpE;IAEAC;QACE,OAAOzB,sBAAsBC;IAC/B;IAEAyB;QACE,OAAO;YACLC,iBACE,CAAChB,MACD,CAAC,EAAEiB,QAAQ,EAAEX,KAAK,EAAE;oBAClB,OAAOW,SAASC,aAAa,CAAC;wBAC5BT,MAAM;wBACNU,OAAO;4BACLnB;wBACF;oBACF;gBACF;QACJ;IACF;AACF,GAAG;AAEH,SAASoB,eAAeC,MAAc;IACpC,IAAIrB;IAEJ,IAAI;QACFA,MAAM,IAAIsB,IAAID;IAChB,EAAE,OAAOE,GAAG;QACV,OAAO;IACT;IAEA,OAAOvB,IAAIwB,QAAQ,KAAK,WAAWxB,IAAIwB,QAAQ,KAAK;AACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/LinkedinEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport React from \"react\";\nimport { LinkedInEmbed } from \"react-social-media-embed\";\nimport { Linkedin } from \"lucide-react\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Linkedin}\n text={\"Embed a post from Linkedin\"}\n >\n <LinkedInEmbed\n url=\"https://www.linkedin.com/embed/feed/update/urn:li:share:6898694772484112384\"\n postUrl=\"https://www.linkedin.com/posts/peterdiamandis_5-discoveries-the-james-webb-telescope-will-activity-6898694773406875648-z-D7\"\n width={325}\n height={570}\n />\n </SocialMediaEmbed>\n );\n};\n"],"names":["React","LinkedInEmbed","Linkedin","SocialMediaEmbed","props","Icon","text","url","postUrl","width","height"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/LinkedinEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport React from \"react\";\nimport { LinkedInEmbed } from \"react-social-media-embed\";\nimport { Linkedin } from \"lucide-react\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Linkedin}\n text={\"Embed a post from Linkedin\"}\n >\n <LinkedInEmbed\n url=\"https://www.linkedin.com/embed/feed/update/urn:li:share:6898694772484112384\"\n postUrl=\"https://www.linkedin.com/posts/peterdiamandis_5-discoveries-the-james-webb-telescope-will-activity-6898694773406875648-z-D7\"\n width={325}\n height={570}\n />\n </SocialMediaEmbed>\n );\n};\n"],"names":["React","LinkedInEmbed","Linkedin","SocialMediaEmbed","props","Icon","text","url","postUrl","width","height"],"mappings":";AACA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,eAAe;AACxC,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMH;QACNI,MAAM;kBAEN,cAAA,KAACL;YACCM,KAAI;YACJC,SAAQ;YACRC,OAAO;YACPC,QAAQ;;;AAIhB,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/index.ts"],"sourcesContent":["export * from \"./linkedin.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/index.ts"],"sourcesContent":["export * from \"./linkedin.js\";\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/linkedin.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n linkedin: {\n /**\n * Add an image\n */\n\n insertLinkedin: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport LinkedinEmbed from \"./LinkedinEmbed.js\";\n\nexport const Linkedin = Node.create({\n name: \"linkedin\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n parseHTML() {\n return [\n {\n tag: \"linkedin-component\",\n },\n ];\n },\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"linkedin-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(LinkedinEmbed);\n },\n\n addCommands() {\n return {\n insertLinkedin:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"linkedin\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","LinkedinEmbed","Linkedin","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertLinkedin","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Linkedin/linkedin.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n linkedin: {\n /**\n * Add an image\n */\n\n insertLinkedin: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport LinkedinEmbed from \"./LinkedinEmbed.js\";\n\nexport const Linkedin = Node.create({\n name: \"linkedin\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n parseHTML() {\n return [\n {\n tag: \"linkedin-component\",\n },\n ];\n },\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"linkedin-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(LinkedinEmbed);\n },\n\n addCommands() {\n return {\n insertLinkedin:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"linkedin\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","LinkedinEmbed","Linkedin","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertLinkedin","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"mappings":"AAYA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AACrD,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,OAAOC,mBAAmB,qBAAqB;AAE/C,OAAO,MAAMC,WAAWJ,KAAKK,MAAM,CAAC;IAClCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEXC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;QACvB;IACF;IACAC;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAChB,IAAI;gBACtB,GACCiB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAsBzB,gBAAgByB;YAAiB;SAAE;IACnE;IAEAC;QACE,OAAOzB,sBAAsBC;IAC/B;IAEAyB;QACE,OAAO;YACLC,gBACE,CAAChB,MACD,CAAC,EAAEiB,QAAQ,EAAEX,KAAK,EAAE;oBAClB,OAAOW,SAASC,aAAa,CAAC;wBAC5BT,MAAM;wBACNU,OAAO;4BACLnB;wBACF;oBACF;gBACF;QACJ;IACF;AACF,GAAG;AAEH,SAASoB,eAAeC,MAAc;IACpC,IAAIrB;IAEJ,IAAI;QACFA,MAAM,IAAIsB,IAAID;IAChB,EAAE,OAAOE,GAAG;QACV,OAAO;IACT;IAEA,OAAOvB,IAAIwB,QAAQ,KAAK,WAAWxB,IAAIwB,QAAQ,KAAK;AACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\n\nexport default ({ props, children, Icon, text }: any) => {\n return (\n <NodeViewWrapper\n className=\"react-component\"\n onClick={() => {\n props.editor.commands.setNodeSelection(props.getPos());\n }}\n >\n <NodeViewContent contentEditable=\"false\" className=\"socialMediaContainer\">\n {props?.node.type.spec.draggable ? (\n <div draggable=\"true\" data-drag-handle=\"\" style={{ width: \"100%\" }}>\n {!props?.node?.attrs?.url ?? \"\" ? (\n <div\n className=\"w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard\"\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n <Icon size={24} />\n <p\n className=\"w-full flex items-center justify-start mt-0\"\n style={{\n marginTop: 0,\n }}\n >\n {text}\n </p>\n </div>\n ) : (\n <div\n style={{ display: \"flex\", justifyContent: \"center\" }}\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n {children}\n </div>\n )}\n </div>\n ) : null}\n </NodeViewContent>\n </NodeViewWrapper>\n );\n};\n"],"names":["NodeViewContent","NodeViewWrapper","props","children","Icon","text","className","onClick","editor","commands","setNodeSelection","getPos","contentEditable","node","type","spec","draggable","div","data-drag-handle","style","width","attrs","url","size","p","marginTop","display","justifyContent"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\n\nexport default ({ props, children, Icon, text }: any) => {\n return (\n <NodeViewWrapper\n className=\"react-component\"\n onClick={() => {\n props.editor.commands.setNodeSelection(props.getPos());\n }}\n >\n <NodeViewContent contentEditable=\"false\" className=\"socialMediaContainer\">\n {props?.node.type.spec.draggable ? (\n <div draggable=\"true\" data-drag-handle=\"\" style={{ width: \"100%\" }}>\n {!props?.node?.attrs?.url ?? \"\" ? (\n <div\n className=\"w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard\"\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n <Icon size={24} />\n <p\n className=\"w-full flex items-center justify-start mt-0\"\n style={{\n marginTop: 0,\n }}\n >\n {text}\n </p>\n </div>\n ) : (\n <div\n style={{ display: \"flex\", justifyContent: \"center\" }}\n draggable=\"true\"\n data-drag-handle=\"\"\n contentEditable=\"false\"\n >\n {children}\n </div>\n )}\n </div>\n ) : null}\n </NodeViewContent>\n </NodeViewWrapper>\n );\n};\n"],"names":["NodeViewContent","NodeViewWrapper","props","children","Icon","text","className","onClick","editor","commands","setNodeSelection","getPos","contentEditable","node","type","spec","draggable","div","data-drag-handle","style","width","attrs","url","size","p","marginTop","display","justifyContent"],"mappings":";AAAA,SAASA,eAAe,EAAEC,eAAe,QAAQ,gBAAgB;AAEjE,eAAe,CAAA,CAAC,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,IAAI,EAAO;IAClD,qBACE,KAACJ;QACCK,WAAU;QACVC,SAAS;YACPL,MAAMM,MAAM,CAACC,QAAQ,CAACC,gBAAgB,CAACR,MAAMS,MAAM;QACrD;kBAEA,cAAA,KAACX;YAAgBY,iBAAgB;YAAQN,WAAU;sBAChDJ,OAAOW,KAAKC,KAAKC,KAAKC,0BACrB,KAACC;gBAAID,WAAU;gBAAOE,oBAAiB;gBAAGC,OAAO;oBAAEC,OAAO;gBAAO;0BAC9D,CAAClB,OAAOW,MAAMQ,OAAOC,OAAO,mBAC3B,MAACL;oBACCX,WAAU;oBACVU,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;;sCAEhB,KAACR;4BAAKmB,MAAM;;sCACZ,KAACC;4BACClB,WAAU;4BACVa,OAAO;gCACLM,WAAW;4BACb;sCAECpB;;;mCAIL,KAACY;oBACCE,OAAO;wBAAEO,SAAS;wBAAQC,gBAAgB;oBAAS;oBACnDX,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;8BAEfT;;iBAIL;;;AAIZ,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/TiktokEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport { Music } from \"lucide-react\";\nimport { TikTokEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Music}\n text={\" Embed a Video from Tiktok\"}\n >\n <TikTokEmbed url={props?.node?.attrs?.url ?? \"\"} />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Music","TikTokEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/TiktokEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport { Music } from \"lucide-react\";\nimport { TikTokEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Music}\n text={\" Embed a Video from Tiktok\"}\n >\n <TikTokEmbed url={props?.node?.attrs?.url ?? \"\"} />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Music","TikTokEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs"],"mappings":";AACA,SAASA,KAAK,QAAQ,eAAe;AACrC,SAASC,WAAW,QAAQ,2BAA2B;AACvD,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMJ;QACNK,MAAM;kBAEN,cAAA,KAACJ;YAAYK,KAAKH,OAAOI,MAAMC,OAAOF,OAAO;;;AAGnD,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/index.ts"],"sourcesContent":["export * from \"./tiktok.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/index.ts"],"sourcesContent":["export * from \"./tiktok.js\";\n"],"names":[],"mappings":"AAAA,cAAc,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n tiktok: {\n /**\n * Add an image\n */\n\n insertTiktok: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport TiktokEmbed from \"./TiktokEmbed.js\";\n\nexport const Tiktok = Node.create({\n name: \"tiktok\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: \"tiktok-component\",\n },\n ];\n },\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"tiktok-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TiktokEmbed);\n },\n\n addCommands() {\n return {\n insertTiktok:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"tiktok\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TiktokEmbed","Tiktok","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertTiktok","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n tiktok: {\n /**\n * Add an image\n */\n\n insertTiktok: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport TiktokEmbed from \"./TiktokEmbed.js\";\n\nexport const Tiktok = Node.create({\n name: \"tiktok\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: \"tiktok-component\",\n },\n ];\n },\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"tiktok-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TiktokEmbed);\n },\n\n addCommands() {\n return {\n insertTiktok:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"tiktok\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TiktokEmbed","Tiktok","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertTiktok","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"mappings":"AAYA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AACrD,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,OAAOC,iBAAiB,mBAAmB;AAE3C,OAAO,MAAMC,SAASJ,KAAKK,MAAM,CAAC;IAChCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;QACvB;IACF;IACAC;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAChB,IAAI;gBACtB,GACCiB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAoBzB,gBAAgByB;YAAiB;SAAE;IACjE;IAEAC;QACE,OAAOzB,sBAAsBC;IAC/B;IAEAyB;QACE,OAAO;YACLC,cACE,CAAChB,MACD,CAAC,EAAEiB,QAAQ,EAAEX,KAAK,EAAE;oBAClB,OAAOW,SAASC,aAAa,CAAC;wBAC5BT,MAAM;wBACNU,OAAO;4BACLnB;wBACF;oBACF;gBACF;QACJ;IACF;AACF,GAAG;AAEH,SAASoB,eAAeC,MAAc;IACpC,IAAIrB;IAEJ,IAAI;QACFA,MAAM,IAAIsB,IAAID;IAChB,EAAE,OAAOE,GAAG;QACV,OAAO;IACT;IAEA,OAAOvB,IAAIwB,QAAQ,KAAK,WAAWxB,IAAIwB,QAAQ,KAAK;AACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/TwitterEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport { Twitter } from \"lucide-react\";\nimport { XEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Twitter}\n text={\"Embed a Tweet from X\"}\n >\n <XEmbed url={props?.node?.attrs?.url ?? \"\"} width={325} />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Twitter","XEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs","width"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/TwitterEmbed.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport { Twitter } from \"lucide-react\";\nimport { XEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Twitter}\n text={\"Embed a Tweet from X\"}\n >\n <XEmbed url={props?.node?.attrs?.url ?? \"\"} width={325} />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Twitter","XEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs","width"],"mappings":";AACA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,MAAM,QAAQ,2BAA2B;AAClD,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMJ;QACNK,MAAM;kBAEN,cAAA,KAACJ;YAAOK,KAAKH,OAAOI,MAAMC,OAAOF,OAAO;YAAIG,OAAO;;;AAGzD,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/index.ts"],"sourcesContent":["export * from \"./twitter.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/index.ts"],"sourcesContent":["export * from \"./twitter.js\";\n"],"names":[],"mappings":"AAAA,cAAc,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n twitter: {\n /**\n * Add an image\n */\n\n insertTwitter: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport TwitterEmbed from \"./TwitterEmbed.js\";\n\nexport const Twitter = Node.create({\n name: \"twitter\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"twitter\"]',\n },\n ];\n },\n\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"div\",\n mergeAttributes(HTMLAttributes, { \"data-type\": \"twitter\" }),\n 0,\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TwitterEmbed);\n },\n\n addCommands() {\n return {\n insertTwitter:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"twitter\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Twitter","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertTwitter","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n twitter: {\n /**\n * Add an image\n */\n\n insertTwitter: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport TwitterEmbed from \"./TwitterEmbed.js\";\n\nexport const Twitter = Node.create({\n name: \"twitter\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"twitter\"]',\n },\n ];\n },\n\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"div\",\n mergeAttributes(HTMLAttributes, { \"data-type\": \"twitter\" }),\n 0,\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TwitterEmbed);\n },\n\n addCommands() {\n return {\n insertTwitter:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"twitter\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Twitter","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertTwitter","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"mappings":"AAYA,SAASA,IAAI,EAA4BC,eAAe,QAAQ,eAAe;AAC/E,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,OAAOC,kBAAkB,oBAAoB;AAE7C,OAAO,MAAMC,UAAUJ,KAAKK,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;QACvB;IACF;IAEAC;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAChB,IAAI;gBACtB,GACCiB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAzB,gBAAgByB,gBAAgB;gBAAE,aAAa;YAAU;YACzD;SACD;IACH;IAEAC;QACE,OAAOzB,sBAAsBC;IAC/B;IAEAyB;QACE,OAAO;YACLC,eACE,CAAChB,MACD,CAAC,EAAEiB,QAAQ,EAAEX,KAAK,EAAE;oBAClB,OAAOW,SAASC,aAAa,CAAC;wBAC5BT,MAAM;wBACNU,OAAO;4BACLnB;wBACF;oBACF;gBACF;QACJ;IACF;AACF,GAAG;AAEH,SAASoB,eAAeC,MAAc;IACpC,IAAIrB;IAEJ,IAAI;QACFA,MAAM,IAAIsB,IAAID;IAChB,EAAE,OAAOE,GAAG;QACV,OAAO;IACT;IAEA,OAAOvB,IAAIwB,QAAQ,KAAK,WAAWxB,IAAIwB,QAAQ,KAAK;AACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.tsx"],"sourcesContent":["import { Youtube } from \"lucide-react\";\nimport { YouTubeEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Youtube}\n text={\"Embed a Youtube Video\"}\n >\n <YouTubeEmbed url={props?.node?.attrs?.url ?? \"\"} />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Youtube","YouTubeEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/YoutubeEmbed.tsx"],"sourcesContent":["import { Youtube } from \"lucide-react\";\nimport { YouTubeEmbed } from \"react-social-media-embed\";\nimport SocialMediaEmbed from \"../SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { url?: string } } }) => {\n return (\n <SocialMediaEmbed\n props={props}\n Icon={Youtube}\n text={\"Embed a Youtube Video\"}\n >\n <YouTubeEmbed url={props?.node?.attrs?.url ?? \"\"} />\n </SocialMediaEmbed>\n );\n};\n"],"names":["Youtube","YouTubeEmbed","SocialMediaEmbed","props","Icon","text","url","node","attrs"],"mappings":";AAAA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,YAAY,QAAQ,2BAA2B;AACxD,OAAOC,sBAAsB,yBAAyB;AAEtD,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QACCC,OAAOA;QACPC,MAAMJ;QACNK,MAAM;kBAEN,cAAA,KAACJ;YAAaK,KAAKH,OAAOI,MAAMC,OAAOF,OAAO;;;AAGpD,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.ts"],"sourcesContent":["export * from \"./youtube.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/index.ts"],"sourcesContent":["export * from \"./youtube.js\";\n"],"names":[],"mappings":"AAAA,cAAc,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n youtube: {\n /**\n * Add an image\n */\n\n insertYoutube: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport TwitterEmbed from \"./YoutubeEmbed.js\";\n\nexport const Youtube = Node.create({\n name: \"youtube\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: \"twitter-component\",\n },\n ];\n },\n\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"twitter-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TwitterEmbed);\n },\n\n addCommands() {\n return {\n insertYoutube:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"youtube\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Youtube","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertYoutube","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.ts"],"sourcesContent":["declare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n youtube: {\n /**\n * Add an image\n */\n\n insertYoutube: (url?: string) => ReturnType;\n };\n }\n}\n\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport TwitterEmbed from \"./YoutubeEmbed.js\";\n\nexport const Youtube = Node.create({\n name: \"youtube\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n // content: 'inline*',\n\n parseHTML() {\n return [\n {\n tag: \"twitter-component\",\n },\n ];\n },\n\n addAttributes() {\n return {\n url: { default: null },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n return this.editor\n .chain()\n .insertContentAt(this.editor.state.selection.head, {\n type: this.type.name,\n })\n .focus()\n .run();\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"twitter-component\", mergeAttributes(HTMLAttributes), 0];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TwitterEmbed);\n },\n\n addCommands() {\n return {\n insertYoutube:\n (url) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"youtube\",\n attrs: {\n url,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Youtube","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","addNodeView","addCommands","insertYoutube","commands","insertContent","attrs","isValidHttpUrl","string","URL","_","protocol"],"mappings":"AAYA,SAASA,IAAI,EAA4BC,eAAe,QAAQ,eAAe;AAC/E,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,OAAOC,kBAAkB,oBAAoB;AAE7C,OAAO,MAAMC,UAAUJ,KAAKK,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;QACvB;IACF;IAEAC;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAChB,IAAI;gBACtB,GACCiB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAqBzB,gBAAgByB;YAAiB;SAAE;IAClE;IAEAC;QACE,OAAOzB,sBAAsBC;IAC/B;IAEAyB;QACE,OAAO;YACLC,eACE,CAAChB,MACD,CAAC,EAAEiB,QAAQ,EAAEX,KAAK,EAAE;oBAClB,OAAOW,SAASC,aAAa,CAAC;wBAC5BT,MAAM;wBACNU,OAAO;4BACLnB;wBACF;oBACF;gBACF;QACJ;IACF;AACF,GAAG;AAEH,SAASoB,eAAeC,MAAc;IACpC,IAAIrB;IAEJ,IAAI;QACFA,MAAM,IAAIsB,IAAID;IAChB,EAAE,OAAOE,GAAG;QACV,OAAO;IACT;IAEA,OAAOvB,IAAIwB,QAAQ,KAAK,WAAWxB,IAAIwB,QAAQ,KAAK;AACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/index.ts"],"sourcesContent":["export { Twitter } from \"./Twitter/index.js\";\nexport { Tiktok } from \"./Tiktok/index.js\";\nexport { Facebook } from \"./Facebook/index.js\";\nexport { Instagram } from \"./Instagram/index.js\";\nexport { Youtube } from \"./Youtube/index.js\";\nexport { Linkedin } from \"./Linkedin/index.js\";\n"],"names":["Twitter","Tiktok","Facebook","Instagram","Youtube","Linkedin"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/index.ts"],"sourcesContent":["export { Twitter } from \"./Twitter/index.js\";\nexport { Tiktok } from \"./Tiktok/index.js\";\nexport { Facebook } from \"./Facebook/index.js\";\nexport { Instagram } from \"./Instagram/index.js\";\nexport { Youtube } from \"./Youtube/index.js\";\nexport { Linkedin } from \"./Linkedin/index.js\";\n"],"names":["Twitter","Tiktok","Facebook","Instagram","Youtube","Linkedin"],"mappings":"AAAA,SAASA,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,QAAQ,QAAQ,sBAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\n\nimport { SocialMediaEditorPanel } from \"../../../features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { supportedSocialMedia } from \"./constants.js\";\n\nexport const SocialMediaMenu = ({ editor, appendTo }: MenuProps) => {\n const shouldShow = useCallback(() => {\n const isInSocialMedia = supportedSocialMedia?.some((socialMedia) => {\n const hasUrl = editor?.getAttributes(socialMedia)?.url;\n return !hasUrl && editor.isActive(socialMedia);\n });\n\n return isInSocialMedia;\n // const isIframe = editor.isActive('iframe')\n // return isIframe\n }, [editor]);\n\n const onHtml = useCallback(\n (url: string) => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n editor.chain().focus().insertFacebook(url).run();\n\n break;\n case \"instagram\":\n editor.chain().focus().insertInstagram(url).run();\n\n break;\n case \"youtube\":\n editor.chain().focus().insertYoutube(url).run();\n\n break;\n case \"linkedin\":\n editor.chain().focus().insertLinkedin(url).run();\n\n break;\n case \"tiktok\":\n editor.chain().focus().insertTiktok(url).run();\n\n break;\n case \"twitter\":\n editor.chain().focus().insertTwitter(url).run();\n break;\n }\n },\n [editor]\n );\n\n const generateTexts = useCallback(() => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n return {\n placeholderText: \"https://facebook.com/...\",\n buttonText: \"Embed Facebook\",\n descriptionText: \"Works with links to Facebook posts\",\n };\n\n case \"instagram\":\n return {\n placeholderText: \"https://instagram.com/...\",\n buttonText: \"Embed Instagram\",\n descriptionText: \"Works with links to Instagram posts\",\n };\n case \"youtube\":\n return {\n placeholderText: \"https://youtube.com/...\",\n buttonText: \"Embed Youtube\",\n descriptionText: \"Works with links to Youtube videos\",\n };\n case \"linkedin\":\n return {\n placeholderText: \"https://linkedin.com/...\",\n buttonText: \"Embed Linkedin\",\n descriptionText: \"Works with links to Linkedin posts\",\n };\n case \"tiktok\":\n return {\n placeholderText: \"https://tiktok.com/...\",\n buttonText: \"Embed Tiktok\",\n descriptionText: \"Works with links to tiktok videos\",\n };\n case \"twitter\":\n return {\n placeholderText: \"https://twitter.com/...\",\n buttonText: \"Embed Twitter\",\n descriptionText: \"Works with links to Tweets\",\n };\n }\n }, [editor]);\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`socialMediaMenu`}\n shouldShow={shouldShow}\n tippyOptions={{\n popperOptions: { placement: \"bottom\" },\n placement: \"bottom\",\n // appendTo: () => {\n // return appendTo?.current\n // },\n }}\n updateDelay={100}\n >\n <SocialMediaEditorPanel\n onSetLink={onHtml}\n initialSrc=\"\"\n placeholderText={generateTexts()?.placeholderText ?? \"\"}\n buttonText={generateTexts()?.buttonText ?? \"\"}\n descriptionText={generateTexts()?.descriptionText ?? \"\"}\n />\n {/* <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} /> */}\n {/* \n <Toolbar.Wrapper>\n <to\n <Toolbar.Button\n type=\"button\"\n tooltip=\"Sidebar left\"\n active={true}\n // onClick={onColumnLeft}\n >\n <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} />\n </Toolbar.Button>\n </Toolbar.Wrapper> */}\n </BaseBubbleMenu>\n );\n};\n\nexport default SocialMediaMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","SocialMediaEditorPanel","supportedSocialMedia","SocialMediaMenu","editor","appendTo","shouldShow","isInSocialMedia","some","socialMedia","hasUrl","getAttributes","url","isActive","onHtml","find","chain","focus","insertFacebook","run","insertInstagram","insertYoutube","insertLinkedin","insertTiktok","insertTwitter","generateTexts","placeholderText","buttonText","descriptionText","pluginKey","tippyOptions","popperOptions","placement","updateDelay","onSetLink","initialSrc"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/SocialMediaMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\n\nimport { SocialMediaEditorPanel } from \"../../../features/panels/SocialMediaEditorPanel/SocialMediaEditorPanel.js\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { supportedSocialMedia } from \"./constants.js\";\n\nexport const SocialMediaMenu = ({ editor, appendTo }: MenuProps) => {\n const shouldShow = useCallback(() => {\n const isInSocialMedia = supportedSocialMedia?.some((socialMedia) => {\n const hasUrl = editor?.getAttributes(socialMedia)?.url;\n return !hasUrl && editor.isActive(socialMedia);\n });\n\n return isInSocialMedia;\n // const isIframe = editor.isActive('iframe')\n // return isIframe\n }, [editor]);\n\n const onHtml = useCallback(\n (url: string) => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n editor.chain().focus().insertFacebook(url).run();\n\n break;\n case \"instagram\":\n editor.chain().focus().insertInstagram(url).run();\n\n break;\n case \"youtube\":\n editor.chain().focus().insertYoutube(url).run();\n\n break;\n case \"linkedin\":\n editor.chain().focus().insertLinkedin(url).run();\n\n break;\n case \"tiktok\":\n editor.chain().focus().insertTiktok(url).run();\n\n break;\n case \"twitter\":\n editor.chain().focus().insertTwitter(url).run();\n break;\n }\n },\n [editor]\n );\n\n const generateTexts = useCallback(() => {\n const socialMedia = supportedSocialMedia?.find((socialMedia) => {\n return editor.isActive(socialMedia);\n });\n switch (socialMedia) {\n case \"facebook\":\n return {\n placeholderText: \"https://facebook.com/...\",\n buttonText: \"Embed Facebook\",\n descriptionText: \"Works with links to Facebook posts\",\n };\n\n case \"instagram\":\n return {\n placeholderText: \"https://instagram.com/...\",\n buttonText: \"Embed Instagram\",\n descriptionText: \"Works with links to Instagram posts\",\n };\n case \"youtube\":\n return {\n placeholderText: \"https://youtube.com/...\",\n buttonText: \"Embed Youtube\",\n descriptionText: \"Works with links to Youtube videos\",\n };\n case \"linkedin\":\n return {\n placeholderText: \"https://linkedin.com/...\",\n buttonText: \"Embed Linkedin\",\n descriptionText: \"Works with links to Linkedin posts\",\n };\n case \"tiktok\":\n return {\n placeholderText: \"https://tiktok.com/...\",\n buttonText: \"Embed Tiktok\",\n descriptionText: \"Works with links to tiktok videos\",\n };\n case \"twitter\":\n return {\n placeholderText: \"https://twitter.com/...\",\n buttonText: \"Embed Twitter\",\n descriptionText: \"Works with links to Tweets\",\n };\n }\n }, [editor]);\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`socialMediaMenu`}\n shouldShow={shouldShow}\n tippyOptions={{\n popperOptions: { placement: \"bottom\" },\n placement: \"bottom\",\n // appendTo: () => {\n // return appendTo?.current\n // },\n }}\n updateDelay={100}\n >\n <SocialMediaEditorPanel\n onSetLink={onHtml}\n initialSrc=\"\"\n placeholderText={generateTexts()?.placeholderText ?? \"\"}\n buttonText={generateTexts()?.buttonText ?? \"\"}\n descriptionText={generateTexts()?.descriptionText ?? \"\"}\n />\n {/* <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} /> */}\n {/* \n <Toolbar.Wrapper>\n <to\n <Toolbar.Button\n type=\"button\"\n tooltip=\"Sidebar left\"\n active={true}\n // onClick={onColumnLeft}\n >\n <SocialMediaPopover onSetLink={onHtml} initialSrcLink={''} />\n </Toolbar.Button>\n </Toolbar.Wrapper> */}\n </BaseBubbleMenu>\n );\n};\n\nexport default SocialMediaMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","SocialMediaEditorPanel","supportedSocialMedia","SocialMediaMenu","editor","appendTo","shouldShow","isInSocialMedia","some","socialMedia","hasUrl","getAttributes","url","isActive","onHtml","find","chain","focus","insertFacebook","run","insertInstagram","insertYoutube","insertLinkedin","insertTiktok","insertTwitter","generateTexts","placeholderText","buttonText","descriptionText","pluginKey","tippyOptions","popperOptions","placement","updateDelay","onSetLink","initialSrc"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AAEpC,SAASC,sBAAsB,QAAQ,4EAA4E;AAEnH,SAASC,oBAAoB,QAAQ,iBAAiB;AAEtD,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC7D,MAAMC,aAAaN,YAAY;QAC7B,MAAMO,kBAAkBL,sBAAsBM,KAAK,CAACC;YAClD,MAAMC,SAASN,QAAQO,cAAcF,cAAcG;YACnD,OAAO,CAACF,UAAUN,OAAOS,QAAQ,CAACJ;QACpC;QAEA,OAAOF;IACP,6CAA6C;IAC7C,kBAAkB;IACpB,GAAG;QAACH;KAAO;IAEX,MAAMU,SAASd,YACb,CAACY;QACC,MAAMH,cAAcP,sBAAsBa,KAAK,CAACN;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACHL,OAAOY,KAAK,GAAGC,KAAK,GAAGC,cAAc,CAACN,KAAKO,GAAG;gBAE9C;YACF,KAAK;gBACHf,OAAOY,KAAK,GAAGC,KAAK,GAAGG,eAAe,CAACR,KAAKO,GAAG;gBAE/C;YACF,KAAK;gBACHf,OAAOY,KAAK,GAAGC,KAAK,GAAGI,aAAa,CAACT,KAAKO,GAAG;gBAE7C;YACF,KAAK;gBACHf,OAAOY,KAAK,GAAGC,KAAK,GAAGK,cAAc,CAACV,KAAKO,GAAG;gBAE9C;YACF,KAAK;gBACHf,OAAOY,KAAK,GAAGC,KAAK,GAAGM,YAAY,CAACX,KAAKO,GAAG;gBAE5C;YACF,KAAK;gBACHf,OAAOY,KAAK,GAAGC,KAAK,GAAGO,aAAa,CAACZ,KAAKO,GAAG;gBAC7C;QACJ;IACF,GACA;QAACf;KAAO;IAGV,MAAMqB,gBAAgBzB,YAAY;QAChC,MAAMS,cAAcP,sBAAsBa,KAAK,CAACN;YAC9C,OAAOL,OAAOS,QAAQ,CAACJ;QACzB;QACA,OAAQA;YACN,KAAK;gBACH,OAAO;oBACLiB,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YAEF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;YACF,KAAK;gBACH,OAAO;oBACLF,iBAAiB;oBACjBC,YAAY;oBACZC,iBAAiB;gBACnB;QACJ;IACF,GAAG;QAACxB;KAAO;IACX,qBACE,KAACL;QACCK,QAAQA;QACRyB,WAAW,CAAC,eAAe,CAAC;QAC5BvB,YAAYA;QACZwB,cAAc;YACZC,eAAe;gBAAEC,WAAW;YAAS;YACrCA,WAAW;QAIb;QACAC,aAAa;kBAEb,cAAA,KAAChC;YACCiC,WAAWpB;YACXqB,YAAW;YACXT,iBAAiBD,iBAAiBC,mBAAmB;YACrDC,YAAYF,iBAAiBE,cAAc;YAC3CC,iBAAiBH,iBAAiBG,mBAAmB;;;AAiB7D,EAAE;AAEF,eAAezB,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.ts"],"sourcesContent":["export const supportedSocialMedia = [\n 'twitter',\n 'facebook',\n 'instagram',\n 'linkedin',\n 'tiktok',\n 'youtube',\n]\n"],"names":["supportedSocialMedia"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/constants.ts"],"sourcesContent":["export const supportedSocialMedia = [\n 'twitter',\n 'facebook',\n 'instagram',\n 'linkedin',\n 'tiktok',\n 'youtube',\n]\n"],"names":["supportedSocialMedia"],"mappings":"AAAA,OAAO,MAAMA,uBAAuB;IAClC;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/index.ts"],"sourcesContent":["export * from \"./SocialMediaMenu.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/menus/index.ts"],"sourcesContent":["export * from \"./SocialMediaMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Cell.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInColumn, isRowSelected, selectRow } from \"./utils.js\";\n\nexport interface TableCellOptions {\n HTMLAttributes: Record<string, any>;\n}\n\nexport const TableCell = Node.create<TableCellOptions>({\n name: \"tableCell\",\n\n content: \"block+\", // TODO: Do not allow table in table\n\n tableRole: \"cell\",\n\n isolating: true,\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [{ tag: \"td\" }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"td\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addAttributes() {\n return {\n colspan: {\n default: 1,\n parseHTML: (element) => {\n const colspan = element.getAttribute(\"colspan\");\n const value = colspan ? parseInt(colspan, 10) : 1;\n\n return value;\n },\n },\n rowspan: {\n default: 1,\n parseHTML: (element) => {\n const rowspan = element.getAttribute(\"rowspan\");\n const value = rowspan ? parseInt(rowspan, 10) : 1;\n\n return value;\n },\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth ? [parseInt(colwidth, 10)] : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInColumn(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const rowSelected = isRowSelected(index)(selection);\n let className = \"grip-row\";\n\n if (rowSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectRow(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n"],"names":["mergeAttributes","Node","Plugin","Decoration","DecorationSet","getCellsInColumn","isRowSelected","selectRow","TableCell","create","name","content","tableRole","isolating","addOptions","HTMLAttributes","parseHTML","tag","renderHTML","options","addAttributes","colspan","default","element","getAttribute","value","parseInt","rowspan","colwidth","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","rowSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Cell.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInColumn, isRowSelected, selectRow } from \"./utils.js\";\n\nexport interface TableCellOptions {\n HTMLAttributes: Record<string, any>;\n}\n\nexport const TableCell = Node.create<TableCellOptions>({\n name: \"tableCell\",\n\n content: \"block+\", // TODO: Do not allow table in table\n\n tableRole: \"cell\",\n\n isolating: true,\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [{ tag: \"td\" }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"td\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addAttributes() {\n return {\n colspan: {\n default: 1,\n parseHTML: (element) => {\n const colspan = element.getAttribute(\"colspan\");\n const value = colspan ? parseInt(colspan, 10) : 1;\n\n return value;\n },\n },\n rowspan: {\n default: 1,\n parseHTML: (element) => {\n const rowspan = element.getAttribute(\"rowspan\");\n const value = rowspan ? parseInt(rowspan, 10) : 1;\n\n return value;\n },\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth ? [parseInt(colwidth, 10)] : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInColumn(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const rowSelected = isRowSelected(index)(selection);\n let className = \"grip-row\";\n\n if (rowSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectRow(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n"],"names":["mergeAttributes","Node","Plugin","Decoration","DecorationSet","getCellsInColumn","isRowSelected","selectRow","TableCell","create","name","content","tableRole","isolating","addOptions","HTMLAttributes","parseHTML","tag","renderHTML","options","addAttributes","colspan","default","element","getAttribute","value","parseInt","rowspan","colwidth","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","rowSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr"],"mappings":"AAAA,SAASA,eAAe,EAAEC,IAAI,QAAQ,eAAe;AACrD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,SAAS,QAAQ,aAAa;AAMxE,OAAO,MAAMC,YAAYP,KAAKQ,MAAM,CAAmB;IACrDC,MAAM;IAENC,SAAS;IAETC,WAAW;IAEXC,WAAW;IAEXC;QACE,OAAO;YACLC,gBAAgB,CAAC;QACnB;IACF;IAEAC;QACE,OAAO;YAAC;gBAAEC,KAAK;YAAK;SAAE;IACxB;IAEAC,YAAW,EAAEH,cAAc,EAAE;QAC3B,OAAO;YACL;YACAf,gBAAgB,IAAI,CAACmB,OAAO,CAACJ,cAAc,EAAEA;YAC7C;SACD;IACH;IAEAK;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMF,UAAUE,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQJ,UAAUK,SAASL,SAAS,MAAM;oBAEhD,OAAOI;gBACT;YACF;YACAE,SAAS;gBACPL,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMI,UAAUJ,QAAQC,YAAY,CAAC;oBACrC,MAAMC,QAAQE,UAAUD,SAASC,SAAS,MAAM;oBAEhD,OAAOF;gBACT;YACF;YACAG,UAAU;gBACRN,SAAS;gBACTN,WAAW,CAACO;oBACV,MAAMK,WAAWL,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQG,WAAW;wBAACF,SAASE,UAAU;qBAAI,GAAG;oBAEpD,OAAOH;gBACT;YACF;YACAI,OAAO;gBACLP,SAAS;YACX;QACF;IACF;IAEAQ;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAI9B,OAAO;gBACT+B,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAO3B,cAAcgC,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQlC,iBAAiB,GAAGiC;wBAElC,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdxC,WAAWyC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcvC,cAAcoC,OAAOJ;oCACzC,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvBjD,UAAUmC,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAEzC;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAO5C,cAAcK,MAAM,CAAC4B,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Header.ts"],"sourcesContent":["import TiptapTableHeader from \"@tiptap/extension-table-header\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInRow, isColumnSelected, selectColumn } from \"./utils.js\";\n\nexport const TableHeader = TiptapTableHeader.extend({\n addAttributes() {\n return {\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth\n ? colwidth.split(\",\").map((item) => parseInt(item, 10))\n : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInRow(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const colSelected = isColumnSelected(index)(selection);\n let className = \"grip-column\";\n\n if (colSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectColumn(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n\nexport default TableHeader;\n"],"names":["TiptapTableHeader","Plugin","Decoration","DecorationSet","getCellsInRow","isColumnSelected","selectColumn","TableHeader","extend","addAttributes","colspan","default","rowspan","colwidth","parseHTML","element","getAttribute","value","split","map","item","parseInt","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","colSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr","create"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Header.ts"],"sourcesContent":["import TiptapTableHeader from \"@tiptap/extension-table-header\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nimport { getCellsInRow, isColumnSelected, selectColumn } from \"./utils.js\";\n\nexport const TableHeader = TiptapTableHeader.extend({\n addAttributes() {\n return {\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth\n ? colwidth.split(\",\").map((item) => parseInt(item, 10))\n : null;\n\n return value;\n },\n },\n style: {\n default: null,\n },\n };\n },\n\n addProseMirrorPlugins() {\n const { isEditable } = this.editor;\n\n return [\n new Plugin({\n props: {\n decorations: (state) => {\n if (!isEditable) {\n return DecorationSet.empty;\n }\n\n const { doc, selection } = state;\n const decorations: Decoration[] = [];\n const cells = getCellsInRow(0)(selection);\n\n if (cells) {\n cells.forEach(({ pos }: { pos: number }, index: number) => {\n decorations.push(\n Decoration.widget(pos + 1, () => {\n const colSelected = isColumnSelected(index)(selection);\n let className = \"grip-column\";\n\n if (colSelected) {\n className += \" selected\";\n }\n\n if (index === 0) {\n className += \" first\";\n }\n\n if (index === cells.length - 1) {\n className += \" last\";\n }\n\n const grip = document.createElement(\"a\");\n\n grip.className = className;\n grip.addEventListener(\"mousedown\", (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.editor.view.dispatch(\n selectColumn(index)(this.editor.state.tr)\n );\n });\n\n return grip;\n })\n );\n });\n }\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n\nexport default TableHeader;\n"],"names":["TiptapTableHeader","Plugin","Decoration","DecorationSet","getCellsInRow","isColumnSelected","selectColumn","TableHeader","extend","addAttributes","colspan","default","rowspan","colwidth","parseHTML","element","getAttribute","value","split","map","item","parseInt","style","addProseMirrorPlugins","isEditable","editor","props","decorations","state","empty","doc","selection","cells","forEach","pos","index","push","widget","colSelected","className","length","grip","document","createElement","addEventListener","event","preventDefault","stopImmediatePropagation","view","dispatch","tr","create"],"mappings":"AAAA,OAAOA,uBAAuB,iCAAiC;AAC/D,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAkB;AAE5D,SAASC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,QAAQ,aAAa;AAE3E,OAAO,MAAMC,cAAcP,kBAAkBQ,MAAM,CAAC;IAClDC;QACE,OAAO;YACLC,SAAS;gBACPC,SAAS;YACX;YACAC,SAAS;gBACPD,SAAS;YACX;YACAE,UAAU;gBACRF,SAAS;gBACTG,WAAW,CAACC;oBACV,MAAMF,WAAWE,QAAQC,YAAY,CAAC;oBACtC,MAAMC,QAAQJ,WACVA,SAASK,KAAK,CAAC,KAAKC,GAAG,CAAC,CAACC,OAASC,SAASD,MAAM,OACjD;oBAEJ,OAAOH;gBACT;YACF;YACAK,OAAO;gBACLX,SAAS;YACX;QACF;IACF;IAEAY;QACE,MAAM,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,MAAM;QAElC,OAAO;YACL,IAAIxB,OAAO;gBACTyB,OAAO;oBACLC,aAAa,CAACC;wBACZ,IAAI,CAACJ,YAAY;4BACf,OAAOrB,cAAc0B,KAAK;wBAC5B;wBAEA,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;wBAC3B,MAAMD,cAA4B,EAAE;wBACpC,MAAMK,QAAQ5B,cAAc,GAAG2B;wBAE/B,IAAIC,OAAO;4BACTA,MAAMC,OAAO,CAAC,CAAC,EAAEC,GAAG,EAAmB,EAAEC;gCACvCR,YAAYS,IAAI,CACdlC,WAAWmC,MAAM,CAACH,MAAM,GAAG;oCACzB,MAAMI,cAAcjC,iBAAiB8B,OAAOJ;oCAC5C,IAAIQ,YAAY;oCAEhB,IAAID,aAAa;wCACfC,aAAa;oCACf;oCAEA,IAAIJ,UAAU,GAAG;wCACfI,aAAa;oCACf;oCAEA,IAAIJ,UAAUH,MAAMQ,MAAM,GAAG,GAAG;wCAC9BD,aAAa;oCACf;oCAEA,MAAME,OAAOC,SAASC,aAAa,CAAC;oCAEpCF,KAAKF,SAAS,GAAGA;oCACjBE,KAAKG,gBAAgB,CAAC,aAAa,CAACC;wCAClCA,MAAMC,cAAc;wCACpBD,MAAME,wBAAwB;wCAE9B,IAAI,CAACtB,MAAM,CAACuB,IAAI,CAACC,QAAQ,CACvB3C,aAAa6B,OAAO,IAAI,CAACV,MAAM,CAACG,KAAK,CAACsB,EAAE;oCAE5C;oCAEA,OAAOT;gCACT;4BAEJ;wBACF;wBAEA,OAAOtC,cAAcgD,MAAM,CAACrB,KAAKH;oBACnC;gBACF;YACF;SACD;IACH;AACF,GAAG;AAEH,eAAepB,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Row.ts"],"sourcesContent":["import TiptapTableRow from '@tiptap/extension-table-row'\n\nexport const TableRow = TiptapTableRow.extend({\n allowGapCursor: false,\n content: 'tableCell*',\n})\n\nexport default TableRow\n"],"names":["TiptapTableRow","TableRow","extend","allowGapCursor","content"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Row.ts"],"sourcesContent":["import TiptapTableRow from '@tiptap/extension-table-row'\n\nexport const TableRow = TiptapTableRow.extend({\n allowGapCursor: false,\n content: 'tableCell*',\n})\n\nexport default TableRow\n"],"names":["TiptapTableRow","TableRow","extend","allowGapCursor","content"],"mappings":"AAAA,OAAOA,oBAAoB,8BAA6B;AAExD,OAAO,MAAMC,WAAWD,eAAeE,MAAM,CAAC;IAC5CC,gBAAgB;IAChBC,SAAS;AACX,GAAE;AAEF,eAAeH,SAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Table.ts"],"sourcesContent":["import TiptapTable from '@tiptap/extension-table'\n\nexport const Table = TiptapTable.configure({ resizable: true, lastColumnResizable: false })\n\nexport default Table\n"],"names":["TiptapTable","Table","configure","resizable","lastColumnResizable"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/Table.ts"],"sourcesContent":["import TiptapTable from '@tiptap/extension-table'\n\nexport const Table = TiptapTable.configure({ resizable: true, lastColumnResizable: false })\n\nexport default Table\n"],"names":["TiptapTable","Table","configure","resizable","lastColumnResizable"],"mappings":"AAAA,OAAOA,iBAAiB,0BAAyB;AAEjD,OAAO,MAAMC,QAAQD,YAAYE,SAAS,CAAC;IAAEC,WAAW;IAAMC,qBAAqB;AAAM,GAAE;AAE3F,eAAeH,MAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/index.ts"],"sourcesContent":["export { Table } from \"./Table.js\";\nexport { TableCell } from \"./Cell.js\";\nexport { TableRow } from \"./Row.js\";\nexport { TableHeader } from \"./Header.js\";\n"],"names":["Table","TableCell","TableRow","TableHeader"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/index.ts"],"sourcesContent":["export { Table } from \"./Table.js\";\nexport { TableCell } from \"./Cell.js\";\nexport { TableRow } from \"./Row.js\";\nexport { TableHeader } from \"./Header.js\";\n"],"names":["Table","TableCell","TableRow","TableHeader"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,QAAQ,QAAQ,WAAW;AACpC,SAASC,WAAW,QAAQ,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\n\nimport { ArrowLeftToLine, ArrowRightToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\nimport { isColumnGripSelected } from \"./utils.js\";\n\nexport const TableColumnMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state) {\n return false;\n }\n\n return isColumnGripSelected({ editor, view, state, from: from || 0 });\n },\n [editor]\n );\n\n const onAddColumnBefore = useCallback(() => {\n editor.chain().focus().addColumnBefore().run();\n }, [editor]);\n\n const onAddColumnAfter = useCallback(() => {\n editor.chain().focus().addColumnAfter().run();\n }, [editor]);\n\n const onDeleteColumn = useCallback(() => {\n editor.chain().focus().deleteColumn().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableColumnMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowLeftToLine} />}\n close={false}\n label=\"Add column before\"\n onClick={onAddColumnBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowRightToLine} />}\n close={false}\n label=\"Add column after\"\n onClick={onAddColumnAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete column\"\n onClick={onDeleteColumn}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableColumnMenu.displayName = \"TableColumnMenu\";\n\nexport default TableColumnMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","ArrowLeftToLine","ArrowRightToLine","Trash","Icon","PopoverMenu","Toolbar","isColumnGripSelected","TableColumnMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddColumnBefore","chain","focus","addColumnBefore","run","onAddColumnAfter","addColumnAfter","onDeleteColumn","deleteColumn","pluginKey","updateDelay","tippyOptions","current","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\n\nimport { ArrowLeftToLine, ArrowRightToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\nimport { isColumnGripSelected } from \"./utils.js\";\n\nexport const TableColumnMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state) {\n return false;\n }\n\n return isColumnGripSelected({ editor, view, state, from: from || 0 });\n },\n [editor]\n );\n\n const onAddColumnBefore = useCallback(() => {\n editor.chain().focus().addColumnBefore().run();\n }, [editor]);\n\n const onAddColumnAfter = useCallback(() => {\n editor.chain().focus().addColumnAfter().run();\n }, [editor]);\n\n const onDeleteColumn = useCallback(() => {\n editor.chain().focus().deleteColumn().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableColumnMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowLeftToLine} />}\n close={false}\n label=\"Add column before\"\n onClick={onAddColumnBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowRightToLine} />}\n close={false}\n label=\"Add column after\"\n onClick={onAddColumnAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete column\"\n onClick={onDeleteColumn}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableColumnMenu.displayName = \"TableColumnMenu\";\n\nexport default TableColumnMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","ArrowLeftToLine","ArrowRightToLine","Trash","Icon","PopoverMenu","Toolbar","isColumnGripSelected","TableColumnMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddColumnBefore","chain","focus","addColumnBefore","run","onAddColumnAfter","addColumnAfter","onDeleteColumn","deleteColumn","pluginKey","updateDelay","tippyOptions","current","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AAEtD,SAASC,eAAe,EAAEC,gBAAgB,EAAEC,KAAK,QAAQ,eAAe;AAKxE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,YAAYC,iBAAiB,yCAAyC;AACtE,SAASC,OAAO,QAAQ,qCAAqC;AAC7D,SAASC,oBAAoB,QAAQ,aAAa;AAElD,OAAO,MAAMC,gCAAkBT,MAAMU,IAAI,CACvC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,OAAO;YACV,OAAO;QACT;QAEA,OAAOP,qBAAqB;YAAEG;YAAQG;YAAMC;YAAOC,MAAMA,QAAQ;QAAE;IACrE,GACA;QAACL;KAAO;IAGV,MAAMM,oBAAoBhB,YAAY;QACpCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,eAAe,GAAGC,GAAG;IAC9C,GAAG;QAACV;KAAO;IAEX,MAAMW,mBAAmBrB,YAAY;QACnCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,cAAc,GAAGF,GAAG;IAC7C,GAAG;QAACV;KAAO;IAEX,MAAMa,iBAAiBvB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,YAAY,GAAGJ,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACArB,YAAYA;kBAEZ,cAAA,MAACN,QAAQ4B,OAAO;YAACC,UAAU;;8BACzB,KAAC9B,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMrC;;oBAC3BsC,OAAO;oBACPC,OAAM;oBACNC,SAASzB;;8BAEX,KAACX,YAAY+B,IAAI;oBACfC,6BAAe,KAACjC;wBAAKkC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASpB;;8BAEX,KAAChB,YAAY+B,IAAI;oBACfE,MAAMnC;oBACNoC,OAAO;oBACPC,OAAM;oBACNC,SAASlB;;;;;AAKnB,GACA;AAEFf,gBAAgBkC,WAAW,GAAG;AAE9B,eAAelC,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\n\nimport { isTableSelected } from \"../../utils.js\";\nimport Table from \"../../Table.js\";\n\nexport const isColumnGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripColumn =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-column.selected\");\n\n return !!gripColumn;\n};\n\nexport default isColumnGripSelected;\n"],"names":["isTableSelected","Table","isColumnGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripColumn","querySelector"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableColumn/utils.ts"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\n\nimport { isTableSelected } from \"../../utils.js\";\nimport Table from \"../../Table.js\";\n\nexport const isColumnGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripColumn =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-column.selected\");\n\n return !!gripColumn;\n};\n\nexport default isColumnGripSelected;\n"],"names":["isTableSelected","Table","isColumnGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripColumn","querySelector"],"mappings":"AAIA,SAASA,eAAe,QAAQ,iBAAiB;AACjD,OAAOC,WAAW,iBAAiB;AAEnC,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACT,MAAMU,IAAI,KAC3B,CAACH,QACDR,gBAAgBK,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,aACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,qBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\n\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\n\nimport { ArrowDownToLine, ArrowUpToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport { isRowGripSelected } from \"./utils.js\";\n\nexport const TableRowMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state || !from) {\n return false;\n }\n\n return isRowGripSelected({ editor, view, state, from });\n },\n [editor]\n );\n\n const onAddRowBefore = useCallback(() => {\n editor.chain().focus().addRowBefore().run();\n }, [editor]);\n\n const onAddRowAfter = useCallback(() => {\n editor.chain().focus().addRowAfter().run();\n }, [editor]);\n\n const onDeleteRow = useCallback(() => {\n editor.chain().focus().deleteRow().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableRowMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n placement: \"left\",\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowUpToLine} />}\n close={false}\n label=\"Add row before\"\n onClick={onAddRowBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowDownToLine} />}\n close={false}\n label=\"Add row after\"\n onClick={onAddRowAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete row\"\n onClick={onDeleteRow}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableRowMenu.displayName = \"TableRowMenu\";\n\nexport default TableRowMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","PopoverMenu","Toolbar","ArrowDownToLine","ArrowUpToLine","Trash","Icon","isRowGripSelected","TableRowMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddRowBefore","chain","focus","addRowBefore","run","onAddRowAfter","addRowAfter","onDeleteRow","deleteRow","pluginKey","updateDelay","tippyOptions","current","placement","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/index.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport * as PopoverMenu from \"../../../../features/ui/PopoverMenu.js\";\n\nimport { Toolbar } from \"../../../../features/ui/Toolbar.js\";\n\nimport { ArrowDownToLine, ArrowUpToLine, Trash } from \"lucide-react\";\nimport {\n MenuProps,\n ShouldShowProps,\n} from \"../../../../features/menus/types.js\";\nimport { Icon } from \"../../../../features/ui/Icon.js\";\nimport { isRowGripSelected } from \"./utils.js\";\n\nexport const TableRowMenu = React.memo(\n ({ editor, appendTo }: MenuProps): ReactNode => {\n const shouldShow = useCallback(\n ({ view, state, from }: ShouldShowProps) => {\n if (!state || !from) {\n return false;\n }\n\n return isRowGripSelected({ editor, view, state, from });\n },\n [editor]\n );\n\n const onAddRowBefore = useCallback(() => {\n editor.chain().focus().addRowBefore().run();\n }, [editor]);\n\n const onAddRowAfter = useCallback(() => {\n editor.chain().focus().addRowAfter().run();\n }, [editor]);\n\n const onDeleteRow = useCallback(() => {\n editor.chain().focus().deleteRow().run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"tableRowMenu\"\n updateDelay={0}\n tippyOptions={{\n appendTo: () => {\n return appendTo?.current;\n },\n placement: \"left\",\n offset: [0, 15],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n }}\n shouldShow={shouldShow}\n >\n <Toolbar.Wrapper isVertical>\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowUpToLine} />}\n close={false}\n label=\"Add row before\"\n onClick={onAddRowBefore}\n />\n <PopoverMenu.Item\n iconComponent={<Icon icon={ArrowDownToLine} />}\n close={false}\n label=\"Add row after\"\n onClick={onAddRowAfter}\n />\n <PopoverMenu.Item\n icon={Trash}\n close={false}\n label=\"Delete row\"\n onClick={onDeleteRow}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n }\n);\n\nTableRowMenu.displayName = \"TableRowMenu\";\n\nexport default TableRowMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","PopoverMenu","Toolbar","ArrowDownToLine","ArrowUpToLine","Trash","Icon","isRowGripSelected","TableRowMenu","memo","editor","appendTo","shouldShow","view","state","from","onAddRowBefore","chain","focus","addRowBefore","run","onAddRowAfter","addRowAfter","onDeleteRow","deleteRow","pluginKey","updateDelay","tippyOptions","current","placement","offset","popperOptions","modifiers","name","enabled","Wrapper","isVertical","Item","iconComponent","icon","close","label","onClick","displayName"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAAoBC,WAAW,QAAQ,QAAQ;AACtD,YAAYC,iBAAiB,yCAAyC;AAEtE,SAASC,OAAO,QAAQ,qCAAqC;AAE7D,SAASC,eAAe,EAAEC,aAAa,EAAEC,KAAK,QAAQ,eAAe;AAKrE,SAASC,IAAI,QAAQ,kCAAkC;AACvD,SAASC,iBAAiB,QAAQ,aAAa;AAE/C,OAAO,MAAMC,6BAAeT,MAAMU,IAAI,CACpC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC9B,MAAMC,aAAaZ,YACjB,CAAC,EAAEa,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAmB;QACrC,IAAI,CAACD,SAAS,CAACC,MAAM;YACnB,OAAO;QACT;QAEA,OAAOR,kBAAkB;YAAEG;YAAQG;YAAMC;YAAOC;QAAK;IACvD,GACA;QAACL;KAAO;IAGV,MAAMM,iBAAiBhB,YAAY;QACjCU,OAAOO,KAAK,GAAGC,KAAK,GAAGC,YAAY,GAAGC,GAAG;IAC3C,GAAG;QAACV;KAAO;IAEX,MAAMW,gBAAgBrB,YAAY;QAChCU,OAAOO,KAAK,GAAGC,KAAK,GAAGI,WAAW,GAAGF,GAAG;IAC1C,GAAG;QAACV;KAAO;IAEX,MAAMa,cAAcvB,YAAY;QAC9BU,OAAOO,KAAK,GAAGC,KAAK,GAAGM,SAAS,GAAGJ,GAAG;IACxC,GAAG;QAACV;KAAO;IAEX,qBACE,KAACZ;QACCY,QAAQA;QACRe,WAAU;QACVC,aAAa;QACbC,cAAc;YACZhB,UAAU;gBACR,OAAOA,UAAUiB;YACnB;YACAC,WAAW;YACXC,QAAQ;gBAAC;gBAAG;aAAG;YACfC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;QACF;QACAtB,YAAYA;kBAEZ,cAAA,MAACV,QAAQiC,OAAO;YAACC,UAAU;;8BACzB,KAACnC,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMnC;;oBAC3BoC,OAAO;oBACPC,OAAM;oBACNC,SAAS1B;;8BAEX,KAACf,YAAYoC,IAAI;oBACfC,6BAAe,KAAChC;wBAAKiC,MAAMpC;;oBAC3BqC,OAAO;oBACPC,OAAM;oBACNC,SAASrB;;8BAEX,KAACpB,YAAYoC,IAAI;oBACfE,MAAMlC;oBACNmC,OAAO;oBACPC,OAAM;oBACNC,SAASnB;;;;;AAKnB,GACA;AAEFf,aAAamC,WAAW,GAAG;AAE3B,eAAenC,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.ts"],"sourcesContent":["import { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\nimport { Editor } from \"@tiptap/react\";\n\nimport Table from \"../../Table.js\";\nimport { isTableSelected } from \"../../utils.js\";\n\nexport const isRowGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripRow =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-row.selected\");\n\n return !!gripRow;\n};\n\nexport default isRowGripSelected;\n"],"names":["Table","isTableSelected","isRowGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripRow","querySelector"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/TableRow/utils.ts"],"sourcesContent":["import { EditorState } from \"@tiptap/pm/state\";\nimport { EditorView } from \"@tiptap/pm/view\";\nimport { Editor } from \"@tiptap/react\";\n\nimport Table from \"../../Table.js\";\nimport { isTableSelected } from \"../../utils.js\";\n\nexport const isRowGripSelected = ({\n editor,\n view,\n state,\n from,\n}: {\n editor: Editor;\n view: EditorView;\n state: EditorState;\n from: number;\n}) => {\n const domAtPos = view.domAtPos(from).node as HTMLElement;\n const nodeDOM = view.nodeDOM(from) as HTMLElement;\n const node = nodeDOM || domAtPos;\n\n if (\n !editor.isActive(Table.name) ||\n !node ||\n isTableSelected(state.selection)\n ) {\n return false;\n }\n\n let container = node;\n\n while (container && ![\"TD\", \"TH\"].includes(container.tagName)) {\n container = container.parentElement!;\n }\n\n const gripRow =\n container &&\n container.querySelector &&\n container.querySelector(\"a.grip-row.selected\");\n\n return !!gripRow;\n};\n\nexport default isRowGripSelected;\n"],"names":["Table","isTableSelected","isRowGripSelected","editor","view","state","from","domAtPos","node","nodeDOM","isActive","name","selection","container","includes","tagName","parentElement","gripRow","querySelector"],"mappings":"AAIA,OAAOA,WAAW,iBAAiB;AACnC,SAASC,eAAe,QAAQ,iBAAiB;AAEjD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,MAAMC,WAAWH,KAAKG,QAAQ,CAACD,MAAME,IAAI;IACzC,MAAMC,UAAUL,KAAKK,OAAO,CAACH;IAC7B,MAAME,OAAOC,WAAWF;IAExB,IACE,CAACJ,OAAOO,QAAQ,CAACV,MAAMW,IAAI,KAC3B,CAACH,QACDP,gBAAgBI,MAAMO,SAAS,GAC/B;QACA,OAAO;IACT;IAEA,IAAIC,YAAYL;IAEhB,MAAOK,aAAa,CAAC;QAAC;QAAM;KAAK,CAACC,QAAQ,CAACD,UAAUE,OAAO,EAAG;QAC7DF,YAAYA,UAAUG,aAAa;IACrC;IAEA,MAAMC,UACJJ,aACAA,UAAUK,aAAa,IACvBL,UAAUK,aAAa,CAAC;IAE1B,OAAO,CAAC,CAACD;AACX,EAAE;AAEF,eAAef,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/index.tsx"],"sourcesContent":["export * from \"./TableColumn/index.js\";\nexport * from \"./TableRow/index.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Table/menus/index.tsx"],"sourcesContent":["export * from \"./TableColumn/index.js\";\nexport * from \"./TableRow/index.js\";\n"],"names":[],"mappings":"AAAA,cAAc,yBAAyB;AACvC,cAAc,sBAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/utils.ts"],"sourcesContent":["// @ts-nocheck\nimport { findParentNode } from '@tiptap/core'\nimport { Selection, Transaction } from '@tiptap/pm/state'\nimport { CellSelection, TableMap } from '@tiptap/pm/tables'\nimport { Node, ResolvedPos } from '@tiptap/pm/model'\n\nexport const isRectSelected = (rect: any) => (selection: CellSelection) => {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n const start = selection.$anchorCell.start(-1)\n const cells = map.cellsInRect(rect)\n const selectedCells = map.cellsInRect(\n map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start),\n )\n\n for (let i = 0, count = cells.length; i < count; i += 1) {\n if (selectedCells.indexOf(cells[i]) === -1) {\n return false\n }\n }\n\n return true\n}\n\nexport const findTable = (selection: Selection) =>\n findParentNode(node => node.type.spec.tableRole && node.type.spec.tableRole === 'table')(selection)\n\nexport const isCellSelection = (selection: any) => selection instanceof CellSelection\n\nexport const isColumnSelected = (columnIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: columnIndex,\n right: columnIndex + 1,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const isRowSelected = (rowIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: rowIndex,\n bottom: rowIndex + 1,\n })(selection)\n }\n\n return false\n}\n\nexport const isTableSelected = (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const getCellsInColumn = (columnIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(columnIndex) ? columnIndex : Array.from([columnIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.width - 1) {\n const cells = map.cellsInRect({\n left: index,\n right: index + 1,\n top: 0,\n bottom: map.height,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n return null\n}\n\nexport const getCellsInRow = (rowIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(rowIndex) ? rowIndex : Array.from([rowIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.height - 1) {\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: index,\n bottom: index + 1,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n\n return null\n}\n\nexport const getCellsInTable = (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })\n\n return cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n })\n }\n\n return null\n}\n\nexport const findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i)\n\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n\n return null\n}\n\nexport const findCellClosestToPos = ($pos: ResolvedPos) => {\n const predicate = (node: Node) => node.type.spec.tableRole && /cell/i.test(node.type.spec.tableRole)\n\n return findParentNodeClosestToPos($pos, predicate)\n}\n\nconst select = (type: 'row' | 'column') => (index: number) => (tr: Transaction) => {\n const table = findTable(tr.selection)\n const isRowSelection = type === 'row'\n\n if (table) {\n const map = TableMap.get(table.node)\n\n // Check if the index is valid\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\n const left = isRowSelection ? 0 : index\n const top = isRowSelection ? index : 0\n const right = isRowSelection ? map.width : index + 1\n const bottom = isRowSelection ? index + 1 : map.height\n\n const cellsInFirstRow = map.cellsInRect({\n left,\n top,\n right: isRowSelection ? right : left + 1,\n bottom: isRowSelection ? top + 1 : bottom,\n })\n\n const cellsInLastRow =\n bottom - top === 1\n ? cellsInFirstRow\n : map.cellsInRect({\n left: isRowSelection ? left : right - 1,\n top: isRowSelection ? bottom - 1 : top,\n right,\n bottom,\n })\n\n const head = table.start + cellsInFirstRow[0]\n const anchor = table.start + cellsInLastRow[cellsInLastRow.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n return tr\n}\n\nexport const selectColumn = select('column')\n\nexport const selectRow = select('row')\n\nexport const selectTable = (tr: Transaction) => {\n const table = findTable(tr.selection)\n\n if (table) {\n const { map } = TableMap.get(table.node)\n\n if (map && map.length) {\n const head = table.start + map[0]\n const anchor = table.start + map[map.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n\n return tr\n}\n"],"names":["findParentNode","CellSelection","TableMap","isRectSelected","rect","selection","map","get","$anchorCell","node","start","cells","cellsInRect","selectedCells","rectBetween","pos","$headCell","i","count","length","indexOf","findTable","type","spec","tableRole","isCellSelection","isColumnSelected","columnIndex","left","right","top","bottom","height","isRowSelected","rowIndex","width","isTableSelected","getCellsInColumn","table","indexes","Array","isArray","from","reduce","acc","index","concat","nodePos","nodeAt","getCellsInRow","getCellsInTable","findParentNodeClosestToPos","$pos","predicate","depth","before","findCellClosestToPos","test","select","tr","isRowSelection","cellsInFirstRow","cellsInLastRow","head","anchor","$head","doc","resolve","$anchor","setSelection","selectColumn","selectRow","selectTable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Table/utils.ts"],"sourcesContent":["// @ts-nocheck\nimport { findParentNode } from '@tiptap/core'\nimport { Selection, Transaction } from '@tiptap/pm/state'\nimport { CellSelection, TableMap } from '@tiptap/pm/tables'\nimport { Node, ResolvedPos } from '@tiptap/pm/model'\n\nexport const isRectSelected = (rect: any) => (selection: CellSelection) => {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n const start = selection.$anchorCell.start(-1)\n const cells = map.cellsInRect(rect)\n const selectedCells = map.cellsInRect(\n map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start),\n )\n\n for (let i = 0, count = cells.length; i < count; i += 1) {\n if (selectedCells.indexOf(cells[i]) === -1) {\n return false\n }\n }\n\n return true\n}\n\nexport const findTable = (selection: Selection) =>\n findParentNode(node => node.type.spec.tableRole && node.type.spec.tableRole === 'table')(selection)\n\nexport const isCellSelection = (selection: any) => selection instanceof CellSelection\n\nexport const isColumnSelected = (columnIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: columnIndex,\n right: columnIndex + 1,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const isRowSelected = (rowIndex: number) => (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: rowIndex,\n bottom: rowIndex + 1,\n })(selection)\n }\n\n return false\n}\n\nexport const isTableSelected = (selection: any) => {\n if (isCellSelection(selection)) {\n const map = TableMap.get(selection.$anchorCell.node(-1))\n\n return isRectSelected({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })(selection)\n }\n\n return false\n}\n\nexport const getCellsInColumn = (columnIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(columnIndex) ? columnIndex : Array.from([columnIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.width - 1) {\n const cells = map.cellsInRect({\n left: index,\n right: index + 1,\n top: 0,\n bottom: map.height,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n return null\n}\n\nexport const getCellsInRow = (rowIndex: number | number[]) => (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(rowIndex) ? rowIndex : Array.from([rowIndex])\n\n return indexes.reduce(\n (acc, index) => {\n if (index >= 0 && index <= map.height - 1) {\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: index,\n bottom: index + 1,\n })\n\n return acc.concat(\n cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node }\n }),\n )\n }\n\n return acc\n },\n [] as { pos: number; start: number; node: Node | null | undefined }[],\n )\n }\n\n return null\n}\n\nexport const getCellsInTable = (selection: Selection) => {\n const table = findTable(selection)\n\n if (table) {\n const map = TableMap.get(table.node)\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })\n\n return cells.map(nodePos => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n\n return { pos, start: pos + 1, node }\n })\n }\n\n return null\n}\n\nexport const findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i)\n\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n\n return null\n}\n\nexport const findCellClosestToPos = ($pos: ResolvedPos) => {\n const predicate = (node: Node) => node.type.spec.tableRole && /cell/i.test(node.type.spec.tableRole)\n\n return findParentNodeClosestToPos($pos, predicate)\n}\n\nconst select = (type: 'row' | 'column') => (index: number) => (tr: Transaction) => {\n const table = findTable(tr.selection)\n const isRowSelection = type === 'row'\n\n if (table) {\n const map = TableMap.get(table.node)\n\n // Check if the index is valid\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\n const left = isRowSelection ? 0 : index\n const top = isRowSelection ? index : 0\n const right = isRowSelection ? map.width : index + 1\n const bottom = isRowSelection ? index + 1 : map.height\n\n const cellsInFirstRow = map.cellsInRect({\n left,\n top,\n right: isRowSelection ? right : left + 1,\n bottom: isRowSelection ? top + 1 : bottom,\n })\n\n const cellsInLastRow =\n bottom - top === 1\n ? cellsInFirstRow\n : map.cellsInRect({\n left: isRowSelection ? left : right - 1,\n top: isRowSelection ? bottom - 1 : top,\n right,\n bottom,\n })\n\n const head = table.start + cellsInFirstRow[0]\n const anchor = table.start + cellsInLastRow[cellsInLastRow.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n return tr\n}\n\nexport const selectColumn = select('column')\n\nexport const selectRow = select('row')\n\nexport const selectTable = (tr: Transaction) => {\n const table = findTable(tr.selection)\n\n if (table) {\n const { map } = TableMap.get(table.node)\n\n if (map && map.length) {\n const head = table.start + map[0]\n const anchor = table.start + map[map.length - 1]\n const $head = tr.doc.resolve(head)\n const $anchor = tr.doc.resolve(anchor)\n\n // @ts-ignore\n return tr.setSelection(new CellSelection($anchor, $head))\n }\n }\n\n return tr\n}\n"],"names":["findParentNode","CellSelection","TableMap","isRectSelected","rect","selection","map","get","$anchorCell","node","start","cells","cellsInRect","selectedCells","rectBetween","pos","$headCell","i","count","length","indexOf","findTable","type","spec","tableRole","isCellSelection","isColumnSelected","columnIndex","left","right","top","bottom","height","isRowSelected","rowIndex","width","isTableSelected","getCellsInColumn","table","indexes","Array","isArray","from","reduce","acc","index","concat","nodePos","nodeAt","getCellsInRow","getCellsInTable","findParentNodeClosestToPos","$pos","predicate","depth","before","findCellClosestToPos","test","select","tr","isRowSelection","cellsInFirstRow","cellsInLastRow","head","anchor","$head","doc","resolve","$anchor","setSelection","selectColumn","selectRow","selectTable"],"mappings":"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"}
|
package/dist/src/fields/TiptapEditor/extensions/TableOfContentsNode/TableOfContentsNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TableOfContentsNode/TableOfContentsNode.tsx"],"sourcesContent":["import React from \"react\";\nimport { Node, NodeViewRendererProps } from \"@tiptap/core\";\nimport { NodeViewWrapper, ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { TableOfContents } from \"../../features/TableOfContents/index.js\";\n\nconst TableOfNodeContent = (props: NodeViewRendererProps) => {\n const { editor } = props;\n\n return (\n <NodeViewWrapper>\n <div className=\"p-2 -m-2 rounded-lg\" contentEditable={false}>\n <TableOfContents editor={editor} />\n </div>\n </NodeViewWrapper>\n );\n};\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n tableOfContentsNode: {\n insertTableOfContents: () => ReturnType;\n };\n }\n}\n\nexport const TableOfContentsNode = Node.create({\n name: \"tableOfContentsNode\",\n group: \"block\",\n atom: true,\n selectable: true,\n draggable: true,\n inline: false,\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"table-of-content\"]',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"div\", { ...HTMLAttributes, \"data-type\": \"table-of-content\" }];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TableOfNodeContent);\n },\n\n addCommands() {\n return {\n insertTableOfContents:\n () =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n });\n },\n };\n },\n});\n"],"names":["React","Node","NodeViewWrapper","ReactNodeViewRenderer","TableOfContents","TableOfNodeContent","props","editor","div","className","contentEditable","TableOfContentsNode","create","name","group","atom","selectable","draggable","inline","parseHTML","tag","renderHTML","HTMLAttributes","addNodeView","addCommands","insertTableOfContents","commands","insertContent","type"],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TableOfContentsNode/TableOfContentsNode.tsx"],"sourcesContent":["import React from \"react\";\nimport { Node, NodeViewRendererProps } from \"@tiptap/core\";\nimport { NodeViewWrapper, ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { TableOfContents } from \"../../features/TableOfContents/index.js\";\n\nconst TableOfNodeContent = (props: NodeViewRendererProps) => {\n const { editor } = props;\n\n return (\n <NodeViewWrapper>\n <div className=\"p-2 -m-2 rounded-lg\" contentEditable={false}>\n <TableOfContents editor={editor} />\n </div>\n </NodeViewWrapper>\n );\n};\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n tableOfContentsNode: {\n insertTableOfContents: () => ReturnType;\n };\n }\n}\n\nexport const TableOfContentsNode = Node.create({\n name: \"tableOfContentsNode\",\n group: \"block\",\n atom: true,\n selectable: true,\n draggable: true,\n inline: false,\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"table-of-content\"]',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"div\", { ...HTMLAttributes, \"data-type\": \"table-of-content\" }];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TableOfNodeContent);\n },\n\n addCommands() {\n return {\n insertTableOfContents:\n () =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n });\n },\n };\n },\n});\n"],"names":["React","Node","NodeViewWrapper","ReactNodeViewRenderer","TableOfContents","TableOfNodeContent","props","editor","div","className","contentEditable","TableOfContentsNode","create","name","group","atom","selectable","draggable","inline","parseHTML","tag","renderHTML","HTMLAttributes","addNodeView","addCommands","insertTableOfContents","commands","insertContent","type"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,IAAI,QAA+B,eAAe;AAC3D,SAASC,eAAe,EAAEC,qBAAqB,QAAQ,gBAAgB;AACvE,SAASC,eAAe,QAAQ,0CAA0C;AAE1E,MAAMC,qBAAqB,CAACC;IAC1B,MAAM,EAAEC,MAAM,EAAE,GAAGD;IAEnB,qBACE,KAACJ;kBACC,cAAA,KAACM;YAAIC,WAAU;YAAsBC,iBAAiB;sBACpD,cAAA,KAACN;gBAAgBG,QAAQA;;;;AAIjC;AAUA,OAAO,MAAMI,sBAAsBV,KAAKW,MAAM,CAAC;IAC7CC,MAAM;IACNC,OAAO;IACPC,MAAM;IACNC,YAAY;IACZC,WAAW;IACXC,QAAQ;IAERC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAO;gBAAE,GAAGA,cAAc;gBAAE,aAAa;YAAmB;SAAE;IACxE;IAEAC;QACE,OAAOpB,sBAAsBE;IAC/B;IAEAmB;QACE,OAAO;YACLC,uBACE,IACA,CAAC,EAAEC,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM,IAAI,CAACf,IAAI;oBACjB;gBACF;QACJ;IACF;AACF,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TableOfContentsNode/index.ts"],"sourcesContent":["export * from \"./TableOfContentsNode.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TableOfContentsNode/index.ts"],"sourcesContent":["export * from \"./TableOfContentsNode.js\";\n"],"names":[],"mappings":"AAAA,cAAc,2BAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/index.ts"],"sourcesContent":["export * from \"./trailing-node.js\";\n"],"names":[],"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/TrailingNode/index.ts"],"sourcesContent":["export * from \"./trailing-node.js\";\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB"}
|