payload-richtext-tiptap 0.0.116 → 0.0.118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.d.ts.map +1 -1
  2. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js +6 -0
  3. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js.map +1 -1
  4. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.d.ts +6 -0
  5. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.d.ts.map +1 -0
  6. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.js +31 -0
  7. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.js.map +1 -0
  8. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.d.ts +11 -0
  9. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.d.ts.map +1 -0
  10. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.js +90 -0
  11. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.js.map +1 -0
  12. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.d.ts +14 -0
  13. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.d.ts.map +1 -0
  14. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.js +70 -0
  15. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.js.map +1 -0
  16. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/index.d.ts +2 -0
  17. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/index.d.ts.map +1 -0
  18. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/index.js +3 -0
  19. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/index.js.map +1 -0
  20. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/index.d.ts +2 -0
  21. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/index.d.ts.map +1 -0
  22. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/index.js +3 -0
  23. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/index.js.map +1 -0
  24. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.d.ts +8 -0
  25. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.d.ts.map +1 -0
  26. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.js +44 -0
  27. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.js.map +1 -0
  28. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js +5 -5
  29. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
  30. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +2 -2
  31. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
  32. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js +4 -3
  33. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
  34. package/dist/src/fields/TiptapEditor/extensions/index.d.ts +1 -0
  35. package/dist/src/fields/TiptapEditor/extensions/index.d.ts.map +1 -1
  36. package/dist/src/fields/TiptapEditor/extensions/index.js +2 -1
  37. package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
  38. package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.d.ts.map +1 -1
  39. package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js +3 -2
  40. package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js.map +1 -1
  41. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts +3 -2
  42. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
  43. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +7 -1
  44. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
  45. package/dist/src/fields/TiptapEditor/features/BlockEditor/types.d.ts +13 -0
  46. package/dist/src/fields/TiptapEditor/features/BlockEditor/types.d.ts.map +1 -1
  47. package/dist/src/fields/TiptapEditor/features/BlockEditor/types.js.map +1 -1
  48. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts.map +1 -1
  49. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js +13 -4
  50. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
  51. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/tiptap.schema.d.ts +847 -0
  52. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/tiptap.schema.d.ts.map +1 -0
  53. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/tiptap.schema.js +88 -0
  54. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/tiptap.schema.js.map +1 -0
  55. package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/LinkPreviewPanel.d.ts.map +1 -1
  56. package/dist/src/fields/TiptapEditor/features/panels/LinkPreviewPanel/LinkPreviewPanel.js.map +1 -1
  57. package/dist/src/index.d.ts +1 -0
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +1 -0
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/styles.css +200 -196
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +9 -3
@@ -1 +1 @@
1
- {"version":3,"file":"iframe.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,cAAc,CAAC;AAIrD,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAED,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,MAAM,EAAE;YACN;;eAEG;YACH,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,KAAK,UAAU,CAAC;YACrD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;YACvC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;SAChE,CAAC;KACH;CACF;AAED,eAAO,MAAM,MAAM,0BA+JjB,CAAC"}
1
+ {"version":3,"file":"iframe.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,cAAc,CAAC;AAIrD,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAED,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,MAAM,EAAE;YACN;;eAEG;YACH,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,KAAK,UAAU,CAAC;YACrD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;YACvC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;SAChE,CAAC;KACH;CACF;AAED,eAAO,MAAM,MAAM,0BAqKjB,CAAC"}
@@ -27,6 +27,12 @@ export const Iframe = Node.create({
27
27
  allowfullscreen: {
28
28
  default: this.options.allowFullscreen,
29
29
  parseHTML: ()=>this.options.allowFullscreen
30
+ },
31
+ sandbox: {
32
+ default: "allow-forms allow-modals"
33
+ },
34
+ referrerpolicy: {
35
+ default: "no-referrer"
30
36
  }
31
37
  };
32
38
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport IframeEmbed from \"./IframeEmbed.js\";\n\nexport interface IframeOptions {\n allowFullscreen: boolean;\n HTMLAttributes: {\n [key: string]: any;\n };\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n iframe: {\n /**\n * Add an iframe\n */\n setIframe: (options?: { src: string }) => ReturnType;\n setHtml: (value: string) => ReturnType;\n insertIframe: (src?: string, className?: string) => ReturnType;\n };\n }\n}\n\nexport const Iframe = Node.create<IframeOptions>({\n name: \"iframe\",\n inline: false,\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n atom: true,\n\n addOption() {\n return {\n allowFullscreen: true,\n HTMLAttributes: {\n class: \"iframe-wrapper\",\n },\n };\n },\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n frameborder: {\n default: 0,\n },\n allowfullscreen: {\n default: this.options.allowFullscreen,\n parseHTML: () => this.options.allowFullscreen,\n },\n };\n },\n renderHTML({ HTMLAttributes }) {\n return [\n \"iframe\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n parseHTML() {\n return [\n {\n tag: \"iframe\",\n },\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(IframeEmbed);\n },\n\n addCommands() {\n return {\n setIframe:\n (options: { src: string }) =>\n ({ tr, dispatch }) => {\n const { selection } = tr;\n let attributes: Record<string, any> = {\n ...options,\n };\n\n if (options?.src?.includes(\"iframe\")) {\n const parser = new DOMParser();\n const html = parser.parseFromString(options?.src, \"text/html\");\n const attrNames = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttributeNames();\n\n attrNames?.forEach((attr) => {\n attributes[attr] = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttribute(attr);\n });\n } else if (!isValidHttpUrl(options?.src)) {\n const htmlData =\n \"data:text/html;charset=utf-8,\" + encodeURI(options?.src);\n attributes = {\n ...attributes,\n src: htmlData,\n };\n }\n const node = this.type.create(attributes);\n\n if (dispatch) {\n tr.replaceRangeWith(selection.from, selection.to, node);\n }\n\n // return commands.insertContent({\n // type: 'iframe',\n // attrs: attributes,\n // })\n\n return true;\n },\n\n setHtml:\n (value) =>\n ({ commands, state }) => {\n console.log(value);\n let attributes: Record<string, any> = {\n editorValue: value,\n };\n\n if (value?.includes(\"youtube.com\")) {\n const ytValue = value?.split(\"v=\")?.[1]?.split(\"&\")?.[0];\n attributes = {\n ...attributes,\n\n src: `https://www.youtube.com/embed/${ytValue}?controls=0`,\n title: \"YouTube video player\",\n };\n } else if (value?.includes(\"instagram.com\")) {\n const instagramValue = value?.split(\"p/\")?.[1]?.split(\"/\")?.[0];\n attributes = {\n ...attributes,\n\n src: `https://www.instagram.com/p/${instagramValue}/embed`,\n title: \"Instagram\",\n };\n } else if (isValidHttpUrl(value)) {\n attributes = {\n ...attributes,\n\n src: value,\n };\n } else if (value?.includes(\"iframe\")) {\n const parser = new DOMParser();\n const html = parser.parseFromString(value, \"text/html\");\n const attrNames = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttributeNames();\n\n attrNames?.forEach((attr) => {\n attributes[attr] = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttribute(attr);\n });\n } else {\n const htmlData = \"data:text/html;charset=utf-8,\" + encodeURI(value);\n attributes = {\n ...attributes,\n src: htmlData,\n };\n }\n\n return true;\n },\n insertIframe:\n (src, className) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"iframe\",\n attrs: {\n src,\n class: className,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["mergeAttributes","Node","ReactNodeViewRenderer","IframeEmbed","Iframe","create","name","inline","group","content","draggable","atom","addOption","allowFullscreen","HTMLAttributes","class","addAttributes","src","default","frameborder","allowfullscreen","options","parseHTML","renderHTML","tag","addNodeView","addCommands","setIframe","tr","dispatch","selection","attributes","includes","parser","DOMParser","html","parseFromString","attrNames","getElementsByTagName","getAttributeNames","forEach","attr","getAttribute","isValidHttpUrl","htmlData","encodeURI","node","type","replaceRangeWith","from","to","setHtml","value","commands","state","console","log","editorValue","ytValue","split","title","instagramValue","insertIframe","className","insertContent","attrs","string","url","URL","_","protocol"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"sourcesContent":["import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport IframeEmbed from \"./IframeEmbed.js\";\n\nexport interface IframeOptions {\n allowFullscreen: boolean;\n HTMLAttributes: {\n [key: string]: any;\n };\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n iframe: {\n /**\n * Add an iframe\n */\n setIframe: (options?: { src: string }) => ReturnType;\n setHtml: (value: string) => ReturnType;\n insertIframe: (src?: string, className?: string) => ReturnType;\n };\n }\n}\n\nexport const Iframe = Node.create<IframeOptions>({\n name: \"iframe\",\n inline: false,\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n atom: true,\n\n addOption() {\n return {\n allowFullscreen: true,\n HTMLAttributes: {\n class: \"iframe-wrapper\",\n },\n };\n },\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n frameborder: {\n default: 0,\n },\n allowfullscreen: {\n default: this.options.allowFullscreen,\n parseHTML: () => this.options.allowFullscreen,\n },\n sandbox: {\n default: \"allow-forms allow-modals\",\n },\n referrerpolicy: {\n default: \"no-referrer\"\n }\n };\n },\n renderHTML({ HTMLAttributes }) {\n return [\n \"iframe\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n parseHTML() {\n return [\n {\n tag: \"iframe\",\n },\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(IframeEmbed);\n },\n\n addCommands() {\n return {\n setIframe:\n (options: { src: string }) =>\n ({ tr, dispatch }) => {\n const { selection } = tr;\n let attributes: Record<string, any> = {\n ...options,\n };\n\n if (options?.src?.includes(\"iframe\")) {\n const parser = new DOMParser();\n const html = parser.parseFromString(options?.src, \"text/html\");\n const attrNames = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttributeNames();\n\n attrNames?.forEach((attr) => {\n attributes[attr] = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttribute(attr);\n });\n } else if (!isValidHttpUrl(options?.src)) {\n const htmlData =\n \"data:text/html;charset=utf-8,\" + encodeURI(options?.src);\n attributes = {\n ...attributes,\n src: htmlData,\n };\n }\n const node = this.type.create(attributes);\n\n if (dispatch) {\n tr.replaceRangeWith(selection.from, selection.to, node);\n }\n\n // return commands.insertContent({\n // type: 'iframe',\n // attrs: attributes,\n // })\n\n return true;\n },\n\n setHtml:\n (value) =>\n ({ commands, state }) => {\n console.log(value);\n let attributes: Record<string, any> = {\n editorValue: value,\n };\n\n if (value?.includes(\"youtube.com\")) {\n const ytValue = value?.split(\"v=\")?.[1]?.split(\"&\")?.[0];\n attributes = {\n ...attributes,\n\n src: `https://www.youtube.com/embed/${ytValue}?controls=0`,\n title: \"YouTube video player\",\n };\n } else if (value?.includes(\"instagram.com\")) {\n const instagramValue = value?.split(\"p/\")?.[1]?.split(\"/\")?.[0];\n attributes = {\n ...attributes,\n\n src: `https://www.instagram.com/p/${instagramValue}/embed`,\n title: \"Instagram\",\n };\n } else if (isValidHttpUrl(value)) {\n attributes = {\n ...attributes,\n\n src: value,\n };\n } else if (value?.includes(\"iframe\")) {\n const parser = new DOMParser();\n const html = parser.parseFromString(value, \"text/html\");\n const attrNames = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttributeNames();\n\n attrNames?.forEach((attr) => {\n attributes[attr] = html\n .getElementsByTagName(\"iframe\")?.[0]\n ?.getAttribute(attr);\n });\n } else {\n const htmlData = \"data:text/html;charset=utf-8,\" + encodeURI(value);\n attributes = {\n ...attributes,\n src: htmlData,\n };\n }\n\n return true;\n },\n insertIframe:\n (src, className) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"iframe\",\n attrs: {\n src,\n class: className,\n },\n });\n },\n };\n },\n});\n\nfunction isValidHttpUrl(string: string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n"],"names":["mergeAttributes","Node","ReactNodeViewRenderer","IframeEmbed","Iframe","create","name","inline","group","content","draggable","atom","addOption","allowFullscreen","HTMLAttributes","class","addAttributes","src","default","frameborder","allowfullscreen","options","parseHTML","sandbox","referrerpolicy","renderHTML","tag","addNodeView","addCommands","setIframe","tr","dispatch","selection","attributes","includes","parser","DOMParser","html","parseFromString","attrNames","getElementsByTagName","getAttributeNames","forEach","attr","getAttribute","isValidHttpUrl","htmlData","encodeURI","node","type","replaceRangeWith","from","to","setHtml","value","commands","state","console","log","editorValue","ytValue","split","title","instagramValue","insertIframe","className","insertContent","attrs","string","url","URL","_","protocol"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type EditIframeLinkPopoverProps = {
2
+ onSetLink: (src: string) => void;
3
+ initialSrcLink: string;
4
+ };
5
+ export declare const EditLinkPreviewPopover: ({ onSetLink, initialSrcLink, }: EditIframeLinkPopoverProps) => import("react").JSX.Element;
6
+ //# sourceMappingURL=EditLinkPreviewPopover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditLinkPreviewPopover.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,sBAAsB,mCAGhC,0BAA0B,gCAqB5B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as Popover from "@radix-ui/react-popover";
3
+ import { Link } from "lucide-react";
4
+ import { Icon } from "../../features/ui/Icon.js";
5
+ import { Toolbar } from "../../features/ui/Toolbar.js";
6
+ import i18next from "i18next";
7
+ import { LinkPreviewEditorPanel } from "./LinkPreviewEditorPanel.js";
8
+ export const EditLinkPreviewPopover = ({ onSetLink, initialSrcLink })=>{
9
+ return /*#__PURE__*/ _jsxs(Popover.Root, {
10
+ children: [
11
+ /*#__PURE__*/ _jsx(Popover.Trigger, {
12
+ asChild: true,
13
+ children: /*#__PURE__*/ _jsx(Toolbar.Button, {
14
+ type: "button",
15
+ tooltip: i18next.t("setEmbedCodeOrLink") || "Set Embed Code / Embed Link",
16
+ children: /*#__PURE__*/ _jsx(Icon, {
17
+ icon: Link
18
+ })
19
+ })
20
+ }),
21
+ /*#__PURE__*/ _jsx(Popover.Content, {
22
+ children: /*#__PURE__*/ _jsx(LinkPreviewEditorPanel, {
23
+ onSetLink: onSetLink,
24
+ initialSrc: initialSrcLink ?? ""
25
+ })
26
+ })
27
+ ]
28
+ });
29
+ };
30
+
31
+ //# sourceMappingURL=EditLinkPreviewPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/EditLinkPreviewPopover.tsx"],"sourcesContent":["import * as Popover from \"@radix-ui/react-popover\";\nimport { Link } from \"lucide-react\";\nimport { Icon } from \"../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../features/ui/Toolbar.js\";\nimport i18next from \"i18next\";\nimport { LinkPreviewEditorPanel } from \"./LinkPreviewEditorPanel.js\";\n\nexport type EditIframeLinkPopoverProps = {\n onSetLink: (src: string) => void;\n initialSrcLink: string;\n};\n\nexport const EditLinkPreviewPopover = ({\n onSetLink,\n initialSrcLink,\n}: EditIframeLinkPopoverProps) => {\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button\n type=\"button\"\n tooltip={\n i18next.t(\"setEmbedCodeOrLink\") || \"Set Embed Code / Embed Link\"\n }\n >\n <Icon icon={Link} />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content>\n <LinkPreviewEditorPanel\n onSetLink={onSetLink}\n initialSrc={initialSrcLink ?? \"\"}\n />\n </Popover.Content>\n </Popover.Root>\n );\n};\n"],"names":["Popover","Link","Icon","Toolbar","i18next","LinkPreviewEditorPanel","EditLinkPreviewPopover","onSetLink","initialSrcLink","Root","Trigger","asChild","Button","type","tooltip","t","icon","Content","initialSrc"],"mappings":";AAAA,YAAYA,aAAa,0BAA0B;AACnD,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,IAAI,QAAQ,4BAA4B;AACjD,SAASC,OAAO,QAAQ,+BAA+B;AACvD,OAAOC,aAAa,UAAU;AAC9B,SAASC,sBAAsB,QAAQ,8BAA8B;AAOrE,OAAO,MAAMC,yBAAyB,CAAC,EACrCC,SAAS,EACTC,cAAc,EACa;IAC3B,qBACE,MAACR,QAAQS,IAAI;;0BACX,KAACT,QAAQU,OAAO;gBAACC,OAAO;0BACtB,cAAA,KAACR,QAAQS,MAAM;oBACbC,MAAK;oBACLC,SACEV,QAAQW,CAAC,CAAC,yBAAyB;8BAGrC,cAAA,KAACb;wBAAKc,MAAMf;;;;0BAGhB,KAACD,QAAQiB,OAAO;0BACd,cAAA,KAACZ;oBACCE,WAAWA;oBACXW,YAAYV,kBAAkB;;;;;AAKxC,EAAE"}
@@ -0,0 +1,11 @@
1
+ import { Node } from "@tiptap/core";
2
+ import { SiteMetaData } from "../../features/BlockEditor/types.jsx";
3
+ declare module "@tiptap/core" {
4
+ interface Commands<ReturnType> {
5
+ linkPreview: {
6
+ setLinkPreview: (src?: string, metadata?: SiteMetaData) => ReturnType;
7
+ };
8
+ }
9
+ }
10
+ export declare const LinkPreview: Node<any, any>;
11
+ //# sourceMappingURL=LinkPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkPreview.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,UAAU,CAAC;SACvE,CAAC;KACH;CACF;AAED,eAAO,MAAM,WAAW,gBAuFtB,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { Node, mergeAttributes } from "@tiptap/core";
2
+ export const LinkPreview = Node.create({
3
+ name: "linkPreview",
4
+ group: "block",
5
+ atom: true,
6
+ addAttributes () {
7
+ return {
8
+ href: {
9
+ default: ""
10
+ },
11
+ title: {
12
+ default: ""
13
+ },
14
+ description: {
15
+ default: ""
16
+ },
17
+ image: {
18
+ default: ""
19
+ }
20
+ };
21
+ },
22
+ parseHTML () {
23
+ return [
24
+ {
25
+ tag: "div[data-link-preview]"
26
+ }
27
+ ];
28
+ },
29
+ renderHTML ({ node }) {
30
+ return [
31
+ "div",
32
+ mergeAttributes({
33
+ "data-link-preview": "",
34
+ style: "position: relative; border: 1px solid #ddd; padding: 10px; display: flex; align-items: center; gap: 10px; border-radius: 6px; background: #f9f9f9;"
35
+ }),
36
+ node.attrs.image ? [
37
+ "img",
38
+ {
39
+ src: node.attrs.image,
40
+ width: "120px",
41
+ height: "120px",
42
+ style: "border-radius: 4px;"
43
+ }
44
+ ] : "",
45
+ [
46
+ "div",
47
+ {},
48
+ [
49
+ "strong",
50
+ {},
51
+ node.attrs.title
52
+ ],
53
+ [
54
+ "p",
55
+ {
56
+ style: "font-size: 12px; color: gray; margin: 0;"
57
+ },
58
+ node.attrs.description
59
+ ]
60
+ ],
61
+ [
62
+ "a",
63
+ {
64
+ href: node.attrs.href,
65
+ target: "_blank",
66
+ rel: "noopener noreferrer",
67
+ style: "position: absolute; top: 5px; right: 5px; text-decoration: none; font-size: 14px; color: #555; cursor: pointer;"
68
+ },
69
+ "🔗"
70
+ ]
71
+ ];
72
+ },
73
+ addCommands () {
74
+ return {
75
+ setLinkPreview: (src, metadata)=>({ commands, state })=>{
76
+ return commands.insertContent({
77
+ type: "linkPreview",
78
+ attrs: {
79
+ href: src,
80
+ title: metadata?.title,
81
+ description: metadata?.description,
82
+ image: metadata?.images?.[0] || "/png/placeholder.png"
83
+ }
84
+ });
85
+ }
86
+ };
87
+ }
88
+ });
89
+
90
+ //# sourceMappingURL=LinkPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.tsx"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\nimport { SiteMetaData } from \"../../features/BlockEditor/types.jsx\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n linkPreview: {\n setLinkPreview: (src?: string, metadata?: SiteMetaData) => ReturnType;\n };\n }\n}\n\nexport const LinkPreview = Node.create({\n name: \"linkPreview\",\n group: \"block\",\n atom: true,\n\n addAttributes() {\n return {\n href: {\n default: \"\",\n },\n title: { default: \"\" },\n description: {\n default: \"\",\n },\n image: {\n default: \"\",\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: \"div[data-link-preview]\",\n },\n ];\n },\n\n renderHTML({ node }) {\n return [\n \"div\",\n mergeAttributes({\n \"data-link-preview\": \"\",\n style:\n \"position: relative; border: 1px solid #ddd; padding: 10px; display: flex; align-items: center; gap: 10px; border-radius: 6px; background: #f9f9f9;\",\n }),\n node.attrs.image\n ? [\n \"img\",\n {\n src: node.attrs.image,\n width: \"120px\",\n height: \"120px\",\n style: \"border-radius: 4px;\",\n },\n ]\n : \"\",\n [\n \"div\",\n {},\n [\"strong\", {}, node.attrs.title],\n [\n \"p\",\n { style: \"font-size: 12px; color: gray; margin: 0;\" },\n node.attrs.description,\n ],\n ],\n [\n \"a\",\n {\n href: node.attrs.href,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n style:\n \"position: absolute; top: 5px; right: 5px; text-decoration: none; font-size: 14px; color: #555; cursor: pointer;\",\n },\n \"🔗\",\n ],\n ];\n },\n addCommands() {\n return {\n setLinkPreview:\n (src, metadata) =>\n ({ commands, state }) => {\n return commands.insertContent({\n type: \"linkPreview\",\n attrs: {\n href: src,\n title: metadata?.title,\n description: metadata?.description,\n image: metadata?.images?.[0] || \"/png/placeholder.png\",\n },\n });\n },\n };\n },\n});\n"],"names":["Node","mergeAttributes","LinkPreview","create","name","group","atom","addAttributes","href","default","title","description","image","parseHTML","tag","renderHTML","node","style","attrs","src","width","height","target","rel","addCommands","setLinkPreview","metadata","commands","state","insertContent","type","images"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAWrD,OAAO,MAAMC,cAAcF,KAAKG,MAAM,CAAC;IACrCC,MAAM;IACNC,OAAO;IACPC,MAAM;IAENC;QACE,OAAO;YACLC,MAAM;gBACJC,SAAS;YACX;YACAC,OAAO;gBAAED,SAAS;YAAG;YACrBE,aAAa;gBACXF,SAAS;YACX;YACAG,OAAO;gBACLH,SAAS;YACX;QACF;IACF;IAEAI;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC,YAAW,EAAEC,IAAI,EAAE;QACjB,OAAO;YACL;YACAf,gBAAgB;gBACd,qBAAqB;gBACrBgB,OACE;YACJ;YACAD,KAAKE,KAAK,CAACN,KAAK,GACZ;gBACE;gBACA;oBACEO,KAAKH,KAAKE,KAAK,CAACN,KAAK;oBACrBQ,OAAO;oBACPC,QAAQ;oBACRJ,OAAO;gBACT;aACD,GACD;YACJ;gBACE;gBACA,CAAC;gBACD;oBAAC;oBAAU,CAAC;oBAAGD,KAAKE,KAAK,CAACR,KAAK;iBAAC;gBAChC;oBACE;oBACA;wBAAEO,OAAO;oBAA2C;oBACpDD,KAAKE,KAAK,CAACP,WAAW;iBACvB;aACF;YACD;gBACE;gBACA;oBACEH,MAAMQ,KAAKE,KAAK,CAACV,IAAI;oBACrBc,QAAQ;oBACRC,KAAK;oBACLN,OACE;gBACJ;gBACA;aACD;SACF;IACH;IACAO;QACE,OAAO;YACLC,gBACE,CAACN,KAAKO,WACN,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE;oBAClB,OAAOD,SAASE,aAAa,CAAC;wBAC5BC,MAAM;wBACNZ,OAAO;4BACLV,MAAMW;4BACNT,OAAOgB,UAAUhB;4BACjBC,aAAae,UAAUf;4BACvBC,OAAOc,UAAUK,QAAQ,CAAC,EAAE,IAAI;wBAClC;oBACF;gBACF;QACJ;IACF;AACF,GAAG"}
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ export type LinkPreviewEditorPanelProps = {
3
+ initialSrc?: string;
4
+ initialOpenInNewTab?: boolean;
5
+ onSetLink: (src: string) => void;
6
+ };
7
+ export declare const useLinkEditorState: ({ initialSrc, onSetLink, }: LinkPreviewEditorPanelProps) => {
8
+ url: string;
9
+ setUrl: React.Dispatch<React.SetStateAction<string>>;
10
+ onChange: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;
11
+ handleSubmit: (e: React.FormEvent) => void;
12
+ };
13
+ export declare const LinkPreviewEditorPanel: ({ onSetLink, initialOpenInNewTab, initialSrc, }: LinkPreviewEditorPanelProps) => React.JSX.Element;
14
+ //# sourceMappingURL=LinkPreviewEditorPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkPreviewEditorPanel.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAQrD,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,kBAAkB,+BAG5B,2BAA2B;;;sBAIlB,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC;sBAS1C,KAAK,CAAC,SAAS;CAetB,CAAC;AAEF,eAAO,MAAM,sBAAsB,oDAIhC,2BAA2B,sBAiC7B,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useCallback, useState } from "react";
3
+ import { Link } from "lucide-react";
4
+ import { Icon } from "../../features/ui/Icon.js";
5
+ import { Surface } from "../../features/ui/Surface.js";
6
+ import i18next from "i18next";
7
+ import { Button } from "../../features/ui/Button/Button.js";
8
+ export const useLinkEditorState = ({ initialSrc, onSetLink })=>{
9
+ const [url, setUrl] = useState(initialSrc || "");
10
+ const onChange = useCallback((event)=>{
11
+ setUrl(event.target.value);
12
+ }, []);
13
+ // const isValidUrl = useMemo(() => /^(\S+):(\/\/)?\S+$/.test(url), [url]);
14
+ const handleSubmit = useCallback((e)=>{
15
+ e.preventDefault();
16
+ // if (isValidUrl) {
17
+ onSetLink(url);
18
+ // }
19
+ }, [
20
+ url,
21
+ onSetLink
22
+ ]);
23
+ return {
24
+ url,
25
+ setUrl,
26
+ onChange,
27
+ handleSubmit
28
+ };
29
+ };
30
+ export const LinkPreviewEditorPanel = ({ onSetLink, initialOpenInNewTab, initialSrc })=>{
31
+ const state = useLinkEditorState({
32
+ onSetLink,
33
+ initialOpenInNewTab,
34
+ initialSrc
35
+ });
36
+ return /*#__PURE__*/ _jsx(Surface, {
37
+ className: "p-2",
38
+ children: /*#__PURE__*/ _jsxs("div", {
39
+ className: "flex items-center gap-2",
40
+ children: [
41
+ /*#__PURE__*/ _jsxs("label", {
42
+ className: "flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text",
43
+ children: [
44
+ /*#__PURE__*/ _jsx(Icon, {
45
+ icon: Link,
46
+ className: "flex-none text-black dark:text-white"
47
+ }),
48
+ /*#__PURE__*/ _jsx("textarea", {
49
+ className: "flex-1 bg-transparent outline-none min-w-[16rem] min-h-[200px] text-black text-sm dark:text-white",
50
+ placeholder: i18next.t("enterEmbedCode") || "Enter Embed Code",
51
+ value: state.url,
52
+ onChange: state.onChange
53
+ })
54
+ ]
55
+ }),
56
+ /*#__PURE__*/ _jsx(Button, {
57
+ variant: "primary",
58
+ buttonSize: "small",
59
+ type: "button",
60
+ onClick: (e)=>{
61
+ state.handleSubmit(e);
62
+ },
63
+ children: "Set Link"
64
+ })
65
+ ]
66
+ })
67
+ });
68
+ };
69
+
70
+ //# sourceMappingURL=LinkPreviewEditorPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/LinkPreviewEditorPanel.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { Link } from \"lucide-react\";\n\nimport { Icon } from \"../../features/ui/Icon.js\";\nimport { Surface } from \"../../features/ui/Surface.js\";\nimport i18next from \"i18next\";\nimport { Button } from \"../../features/ui/Button/Button.js\";\n\nexport type LinkPreviewEditorPanelProps = {\n initialSrc?: string;\n initialOpenInNewTab?: boolean;\n onSetLink: (src: string) => void;\n};\n\nexport const useLinkEditorState = ({\n initialSrc,\n onSetLink,\n}: LinkPreviewEditorPanelProps) => {\n const [url, setUrl] = useState(initialSrc || \"\");\n\n const onChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n setUrl(event.target.value);\n },\n []\n );\n\n // const isValidUrl = useMemo(() => /^(\\S+):(\\/\\/)?\\S+$/.test(url), [url]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n // if (isValidUrl) {\n onSetLink(url);\n // }\n },\n [url, onSetLink]\n );\n\n return {\n url,\n setUrl,\n onChange,\n handleSubmit,\n };\n};\n\nexport const LinkPreviewEditorPanel = ({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n}: LinkPreviewEditorPanelProps) => {\n const state = useLinkEditorState({\n onSetLink,\n initialOpenInNewTab,\n initialSrc,\n });\n\n return (\n <Surface className=\"p-2\">\n <div className=\"flex items-center gap-2\">\n <label className=\"flex items-center gap-2 p-2 rounded-lg bg-neutral-100 dark:bg-neutral-900 cursor-text\">\n <Icon icon={Link} className=\"flex-none text-black dark:text-white\" />\n <textarea\n className=\"flex-1 bg-transparent outline-none min-w-[16rem] min-h-[200px] text-black text-sm dark:text-white\"\n placeholder={i18next.t(\"enterEmbedCode\") || \"Enter Embed Code\"}\n value={state.url}\n onChange={state.onChange}\n />\n </label>\n <Button\n variant=\"primary\"\n buttonSize=\"small\"\n type=\"button\"\n onClick={(e) => {\n state.handleSubmit(e);\n }}\n // disabled={!state.isValidUrl}\n >\n Set Link\n </Button>\n </div>\n </Surface>\n );\n};\n"],"names":["React","useCallback","useState","Link","Icon","Surface","i18next","Button","useLinkEditorState","initialSrc","onSetLink","url","setUrl","onChange","event","target","value","handleSubmit","e","preventDefault","LinkPreviewEditorPanel","initialOpenInNewTab","state","className","div","label","icon","textarea","placeholder","t","variant","buttonSize","type","onClick"],"mappings":";AAAA,OAAOA,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AACrD,SAASC,IAAI,QAAQ,eAAe;AAEpC,SAASC,IAAI,QAAQ,4BAA4B;AACjD,SAASC,OAAO,QAAQ,+BAA+B;AACvD,OAAOC,aAAa,UAAU;AAC9B,SAASC,MAAM,QAAQ,qCAAqC;AAQ5D,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,UAAU,EACVC,SAAS,EACmB;IAC5B,MAAM,CAACC,KAAKC,OAAO,GAAGV,SAASO,cAAc;IAE7C,MAAMI,WAAWZ,YACf,CAACa;QACCF,OAAOE,MAAMC,MAAM,CAACC,KAAK;IAC3B,GACA,EAAE;IAGJ,2EAA2E;IAE3E,MAAMC,eAAehB,YACnB,CAACiB;QACCA,EAAEC,cAAc;QAChB,oBAAoB;QACpBT,UAAUC;IACV,IAAI;IACN,GACA;QAACA;QAAKD;KAAU;IAGlB,OAAO;QACLC;QACAC;QACAC;QACAI;IACF;AACF,EAAE;AAEF,OAAO,MAAMG,yBAAyB,CAAC,EACrCV,SAAS,EACTW,mBAAmB,EACnBZ,UAAU,EACkB;IAC5B,MAAMa,QAAQd,mBAAmB;QAC/BE;QACAW;QACAZ;IACF;IAEA,qBACE,KAACJ;QAAQkB,WAAU;kBACjB,cAAA,MAACC;YAAID,WAAU;;8BACb,MAACE;oBAAMF,WAAU;;sCACf,KAACnB;4BAAKsB,MAAMvB;4BAAMoB,WAAU;;sCAC5B,KAACI;4BACCJ,WAAU;4BACVK,aAAatB,QAAQuB,CAAC,CAAC,qBAAqB;4BAC5Cb,OAAOM,MAAMX,GAAG;4BAChBE,UAAUS,MAAMT,QAAQ;;;;8BAG5B,KAACN;oBACCuB,SAAQ;oBACRC,YAAW;oBACXC,MAAK;oBACLC,SAAS,CAACf;wBACRI,MAAML,YAAY,CAACC;oBACrB;8BAED;;;;;AAMT,EAAE"}
@@ -0,0 +1,2 @@
1
+ export * from "./LinkPreview.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./LinkPreview.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/index.ts"],"sourcesContent":["export * from \"./LinkPreview.js\";\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -0,0 +1,2 @@
1
+ export * from "./linkPreviewMenu.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./linkPreviewMenu.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/index.ts"],"sourcesContent":["export * from \"./linkPreviewMenu.js\";\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { MenuProps } from "../../../features/menus/types.js";
3
+ import { FetchSiteMetadataType } from "src/fields/TiptapEditor/features/BlockEditor/types.jsx";
4
+ export declare const ILinkPreviewMenu: ({ editor, appendTo, fetchSiteMetadata, }: MenuProps & {
5
+ fetchSiteMetadata: FetchSiteMetadataType;
6
+ }) => React.JSX.Element;
7
+ export default ILinkPreviewMenu;
8
+ //# sourceMappingURL=linkPreviewMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linkPreviewMenu.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAI7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F,eAAO,MAAM,gBAAgB,6CAI1B,SAAS,GAAG;IAAE,iBAAiB,EAAE,qBAAqB,CAAA;CAAE,sBAmC1D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { BubbleMenu as BaseBubbleMenu } from "@tiptap/react";
3
+ import React, { useCallback } from "react";
4
+ import { Toolbar } from "../../../features/ui/Toolbar.js";
5
+ import { LinkPreviewEditorPanel } from "../LinkPreviewEditorPanel.js";
6
+ export const ILinkPreviewMenu = ({ editor, appendTo, fetchSiteMetadata })=>{
7
+ const shouldShow = useCallback(()=>{
8
+ const isLinkPreview = editor.isActive("linkPreview");
9
+ return isLinkPreview;
10
+ }, [
11
+ editor
12
+ ]);
13
+ const onSetLink = useCallback(async (src)=>{
14
+ if (fetchSiteMetadata) {
15
+ const metadata = await fetchSiteMetadata(src);
16
+ console.log(src, metadata);
17
+ editor.chain().focus().setLinkPreview(src, metadata).run();
18
+ }
19
+ }, [
20
+ editor
21
+ ]);
22
+ return /*#__PURE__*/ _jsx(BaseBubbleMenu, {
23
+ editor: editor,
24
+ pluginKey: "linkPreview",
25
+ shouldShow: shouldShow,
26
+ tippyOptions: {
27
+ popperOptions: {
28
+ placement: "top-start"
29
+ }
30
+ },
31
+ updateDelay: 100,
32
+ children: /*#__PURE__*/ _jsx(Toolbar.Button, {
33
+ type: "button",
34
+ children: /*#__PURE__*/ _jsx(LinkPreviewEditorPanel, {
35
+ onSetLink: onSetLink,
36
+ // @ts-ignore
37
+ initialSrcLink: editor?.getAttributes("linkPreview")?.editorValue ?? ""
38
+ })
39
+ })
40
+ });
41
+ };
42
+ export default ILinkPreviewMenu;
43
+
44
+ //# sourceMappingURL=linkPreviewMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/LinkPreview/menus/linkPreviewMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { useCallback } from \"react\";\nimport { sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport i18next from \"i18next\";\nimport { LinkPreviewEditorPanel } from \"../LinkPreviewEditorPanel.js\";\nimport { FetchSiteMetadataType } from \"src/fields/TiptapEditor/features/BlockEditor/types.jsx\";\n\nexport const ILinkPreviewMenu = ({\n editor,\n appendTo,\n fetchSiteMetadata,\n}: MenuProps & { fetchSiteMetadata: FetchSiteMetadataType }) => {\n const shouldShow = useCallback(() => {\n const isLinkPreview = editor.isActive(\"linkPreview\");\n return isLinkPreview;\n }, [editor]);\n\n const onSetLink = useCallback(\n async (src: string) => {\n if (fetchSiteMetadata) {\n const metadata = await fetchSiteMetadata(src);\n console.log(src, metadata);\n editor.chain().focus().setLinkPreview(src, metadata).run();\n }\n },\n [editor]\n );\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey=\"linkPreview\"\n shouldShow={shouldShow}\n tippyOptions={{ popperOptions: { placement: \"top-start\" } }}\n updateDelay={100}\n >\n <Toolbar.Button type=\"button\">\n <LinkPreviewEditorPanel\n onSetLink={onSetLink}\n // @ts-ignore\n initialSrcLink={\n editor?.getAttributes(\"linkPreview\")?.editorValue ?? \"\"\n }\n />\n </Toolbar.Button>\n </BaseBubbleMenu>\n );\n};\n\nexport default ILinkPreviewMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","Toolbar","LinkPreviewEditorPanel","ILinkPreviewMenu","editor","appendTo","fetchSiteMetadata","shouldShow","isLinkPreview","isActive","onSetLink","src","metadata","console","log","chain","focus","setLinkPreview","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","Button","type","initialSrcLink","getAttributes","editorValue"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAASC,WAAW,QAAQ,QAAQ;AAK3C,SAASC,OAAO,QAAQ,kCAAkC;AAE1D,SAASC,sBAAsB,QAAQ,+BAA+B;AAGtE,OAAO,MAAMC,mBAAmB,CAAC,EAC/BC,MAAM,EACNC,QAAQ,EACRC,iBAAiB,EACwC;IACzD,MAAMC,aAAaP,YAAY;QAC7B,MAAMQ,gBAAgBJ,OAAOK,QAAQ,CAAC;QACtC,OAAOD;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMM,YAAYV,YAChB,OAAOW;QACL,IAAIL,mBAAmB;YACrB,MAAMM,WAAW,MAAMN,kBAAkBK;YACzCE,QAAQC,GAAG,CAACH,KAAKC;YACjBR,OAAOW,KAAK,GAAGC,KAAK,GAAGC,cAAc,CAACN,KAAKC,UAAUM,GAAG;QAC1D;IACF,GACA;QAACd;KAAO;IAEV,qBACE,KAACN;QACCM,QAAQA;QACRe,WAAU;QACVZ,YAAYA;QACZa,cAAc;YAAEC,eAAe;gBAAEC,WAAW;YAAY;QAAE;QAC1DC,aAAa;kBAEb,cAAA,KAACtB,QAAQuB,MAAM;YAACC,MAAK;sBACnB,cAAA,KAACvB;gBACCQ,WAAWA;gBACX,aAAa;gBACbgB,gBACEtB,QAAQuB,cAAc,gBAAgBC,eAAe;;;;AAMjE,EAAE;AAEF,eAAezB,iBAAiB"}
@@ -125,16 +125,16 @@ export const GROUPS = [
125
125
  title: "Embed",
126
126
  commands: [
127
127
  {
128
- name: "iframe",
129
- label: i18next.t("iframe") || "Embed Link",
128
+ name: "linkPreview",
129
+ label: i18next.t("embed") || "Embed Link",
130
130
  description: i18next.t("iframeDesc") || "Insert an Embed link",
131
131
  icon: Link,
132
132
  aliases: [
133
- "iframe"
133
+ "linkPreview"
134
134
  ],
135
- shouldBeHidden: (editor)=>editor.isActive("iframe"),
135
+ shouldBeHidden: (editor)=>editor.isActive("linkPreview"),
136
136
  action: (editor)=>{
137
- editor.chain().focus().insertIframe().run();
137
+ editor.chain().focus().setLinkPreview().run();
138
138
  }
139
139
  },
140
140
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/groups.ts"],"sourcesContent":["import {\n Facebook,\n Heading1,\n Heading2,\n Heading3,\n Image,\n Instagram,\n Link,\n List,\n ListOrdered,\n Minus,\n Music,\n Quote,\n Twitter,\n Video,\n Youtube,\n} from \"lucide-react\";\nimport { Group } from \"./types.js\";\nimport i18next from \"i18next\";\n\nexport const GROUPS: Group[] = [\n {\n name: \"format\",\n title: i18next.t(\"format\") || \"Format\",\n commands: [\n {\n name: \"heading1\",\n label: i18next.t(\"heading1\") || \"Heading 1\",\n description: i18next.t(\"heading1Desc\") || \"High priority section title\",\n icon: Heading1,\n aliases: [\"h1\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"heading2\",\n label: i18next.t(\"heading2\") || \"Heading 2\",\n description:\n i18next.t(\"heading2Desc\") || \"Medium priority section title\",\n icon: Heading2,\n aliases: [\"h2\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 2 }).run();\n },\n },\n {\n name: \"heading3\",\n label: i18next.t(\"heading3\") || \"Heading 3\",\n description: i18next.t(\"heading3Desc\") || \"Low priority section title\",\n icon: Heading3,\n aliases: [\"h3\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 3 }).run();\n },\n },\n // {\n // name: \"bulletList\",\n // label: i18next.t(\"bulletList\") || 'Bullet List',\n // description:i18next.t(\"bulletListDesc\") || \"Unordered list of items\",\n // icon: List,\n // aliases: [\"ul\"],\n // action: (editor) => {\n // editor.chain().focus().toggleBulletList().run();\n // },\n // },\n // {\n // name: \"numberedList\",\n // label: i18next.t(\"numberedList\") || 'Numbered List',\n // description:i18next.t(\"numberedListDesc\") || \"Ordered list of items\",\n // icon: ListOrdered,\n // aliases: [\"ol\"],\n // action: (editor) => {\n // editor.chain().focus().toggleOrderedList().run();\n // },\n // },\n\n {\n name: \"blockquote\",\n label: i18next.t(\"blockquote\") || \"Blockquote\",\n description: i18next.t(\"blockquoteDesc\") || \"Element for quoting\",\n icon: Quote,\n action: (editor) => {\n editor.chain().focus().setBlockquote().run();\n },\n },\n ],\n },\n {\n name: \"insert\",\n title: \"Insert\",\n commands: [\n {\n name: \"image\",\n label: i18next.t(\"image\") || \"Image\",\n description: i18next.t(\"imageDesc\") || \"Insert an image\",\n icon: Image,\n aliases: [\"img\"],\n action: (editor) => {\n editor.chain().focus().setImageUpload(\"image\").run();\n },\n },\n {\n name: \"video\",\n label: i18next.t(\"video\") || \"Video\",\n description: i18next.t(\"videoDesc\") || \"Insert a video\",\n icon: Video,\n aliases: [\"video\"],\n action: (editor) => {\n editor.chain().focus().setImageUpload(\"video\").run();\n },\n },\n\n {\n name: \"horizontalRule\",\n label: i18next.t(\"horizontalRule\") || \"HorizontalRule\",\n description:\n i18next.t(\"horizontalRuleDesc\") || \"Insert a horizontal divider\",\n icon: Minus,\n aliases: [\"hr\"],\n action: (editor) => {\n editor.chain().focus().setHorizontalRule().run();\n },\n },\n ],\n },\n {\n name: \"embed\",\n title: \"Embed\",\n commands: [\n {\n name: \"iframe\",\n label: i18next.t(\"iframe\") || \"Embed Link\",\n description: i18next.t(\"iframeDesc\") || \"Insert an Embed link\",\n icon: Link,\n aliases: [\"iframe\"],\n shouldBeHidden: (editor) => editor.isActive(\"iframe\"),\n action: (editor) => {\n editor.chain().focus().insertIframe().run();\n },\n },\n {\n name: \"twitter\",\n label: i18next.t(\"twitter\") || \"Twitter\",\n description: i18next.t(\"twitterDesc\") || \"Insert a Twitter embed\",\n icon: Twitter,\n aliases: [\"x\", \"twitter\"],\n shouldBeHidden: (editor) => editor.isActive(\"twitter\"),\n action: (editor) => {\n editor.chain().focus().insertTwitter().run();\n },\n },\n {\n name: \"facebook\",\n label: i18next.t(\"facebook\") || \"Facebook\",\n description: i18next.t(\"facebookDesc\") || \"Insert a Facebook embed\",\n icon: Facebook,\n aliases: [\"meta\", \"facebook\"],\n shouldBeHidden: (editor) => editor.isActive(\"facebook\"),\n action: (editor) => {\n editor.chain().focus().insertFacebook().run();\n },\n },\n {\n name: \"instagram\",\n label: i18next.t(\"instagram\") || \"Instagram\",\n description: i18next.t(\"instagramDesc\") || \"Insert a Instagram embed\",\n icon: Instagram,\n aliases: [\"instagram\"],\n shouldBeHidden: (editor) => editor.isActive(\"instagram\"),\n action: (editor) => {\n editor.chain().focus().insertInstagram().run();\n },\n },\n {\n name: \"youtube\",\n label: i18next.t(\"youtube\") || \"Youtube\",\n description: i18next.t(\"youtubeDesc\") || \"Insert a Youtube embed\",\n icon: Youtube,\n aliases: [\"youtube\"],\n shouldBeHidden: (editor) => editor.isActive(\"youtube\"),\n action: (editor) => {\n editor.chain().focus().insertYoutube().run();\n },\n },\n\n {\n name: \"tiktok\",\n label: i18next.t(\"tiktok\") || \"Tiktok\",\n description: i18next.t(\"tiktokDesc\") || \"Insert a Tiktok embed\",\n icon: Music,\n aliases: [\"tiktok\"],\n shouldBeHidden: (editor) => editor.isActive(\"tiktok\"),\n action: (editor) => {\n editor.chain().focus().insertTiktok().run();\n },\n },\n ],\n },\n];\n\nexport default GROUPS;\n"],"names":["Facebook","Heading1","Heading2","Heading3","Image","Instagram","Link","Minus","Music","Quote","Twitter","Video","Youtube","i18next","GROUPS","name","title","t","commands","label","description","icon","aliases","action","editor","chain","focus","setHeading","level","run","setBlockquote","setImageUpload","setHorizontalRule","shouldBeHidden","isActive","insertIframe","insertTwitter","insertFacebook","insertInstagram","insertYoutube","insertTiktok"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/groups.ts"],"sourcesContent":["import {\n Facebook,\n Heading1,\n Heading2,\n Heading3,\n Image,\n Instagram,\n Link,\n List,\n ListOrdered,\n Minus,\n Music,\n Quote,\n Twitter,\n Video,\n Youtube,\n} from \"lucide-react\";\nimport { Group } from \"./types.js\";\nimport i18next from \"i18next\";\n\nexport const GROUPS: Group[] = [\n {\n name: \"format\",\n title: i18next.t(\"format\") || \"Format\",\n commands: [\n {\n name: \"heading1\",\n label: i18next.t(\"heading1\") || \"Heading 1\",\n description: i18next.t(\"heading1Desc\") || \"High priority section title\",\n icon: Heading1,\n aliases: [\"h1\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"heading2\",\n label: i18next.t(\"heading2\") || \"Heading 2\",\n description:\n i18next.t(\"heading2Desc\") || \"Medium priority section title\",\n icon: Heading2,\n aliases: [\"h2\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 2 }).run();\n },\n },\n {\n name: \"heading3\",\n label: i18next.t(\"heading3\") || \"Heading 3\",\n description: i18next.t(\"heading3Desc\") || \"Low priority section title\",\n icon: Heading3,\n aliases: [\"h3\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 3 }).run();\n },\n },\n // {\n // name: \"bulletList\",\n // label: i18next.t(\"bulletList\") || 'Bullet List',\n // description:i18next.t(\"bulletListDesc\") || \"Unordered list of items\",\n // icon: List,\n // aliases: [\"ul\"],\n // action: (editor) => {\n // editor.chain().focus().toggleBulletList().run();\n // },\n // },\n // {\n // name: \"numberedList\",\n // label: i18next.t(\"numberedList\") || 'Numbered List',\n // description:i18next.t(\"numberedListDesc\") || \"Ordered list of items\",\n // icon: ListOrdered,\n // aliases: [\"ol\"],\n // action: (editor) => {\n // editor.chain().focus().toggleOrderedList().run();\n // },\n // },\n\n {\n name: \"blockquote\",\n label: i18next.t(\"blockquote\") || \"Blockquote\",\n description: i18next.t(\"blockquoteDesc\") || \"Element for quoting\",\n icon: Quote,\n action: (editor) => {\n editor.chain().focus().setBlockquote().run();\n },\n },\n ],\n },\n {\n name: \"insert\",\n title: \"Insert\",\n commands: [\n {\n name: \"image\",\n label: i18next.t(\"image\") || \"Image\",\n description: i18next.t(\"imageDesc\") || \"Insert an image\",\n icon: Image,\n aliases: [\"img\"],\n action: (editor) => {\n editor.chain().focus().setImageUpload(\"image\").run();\n },\n },\n {\n name: \"video\",\n label: i18next.t(\"video\") || \"Video\",\n description: i18next.t(\"videoDesc\") || \"Insert a video\",\n icon: Video,\n aliases: [\"video\"],\n action: (editor) => {\n editor.chain().focus().setImageUpload(\"video\").run();\n },\n },\n\n {\n name: \"horizontalRule\",\n label: i18next.t(\"horizontalRule\") || \"HorizontalRule\",\n description:\n i18next.t(\"horizontalRuleDesc\") || \"Insert a horizontal divider\",\n icon: Minus,\n aliases: [\"hr\"],\n action: (editor) => {\n editor.chain().focus().setHorizontalRule().run();\n },\n },\n ],\n },\n {\n name: \"embed\",\n title: \"Embed\",\n commands: [\n {\n name: \"linkPreview\",\n label: i18next.t(\"embed\") || \"Embed Link\",\n description: i18next.t(\"iframeDesc\") || \"Insert an Embed link\",\n icon: Link,\n aliases: [\"linkPreview\"],\n shouldBeHidden: (editor) => editor.isActive(\"linkPreview\"),\n action: (editor) => {\n editor.chain().focus().setLinkPreview().run();\n },\n },\n {\n name: \"twitter\",\n label: i18next.t(\"twitter\") || \"Twitter\",\n description: i18next.t(\"twitterDesc\") || \"Insert a Twitter embed\",\n icon: Twitter,\n aliases: [\"x\", \"twitter\"],\n shouldBeHidden: (editor) => editor.isActive(\"twitter\"),\n action: (editor) => {\n editor.chain().focus().insertTwitter().run();\n },\n },\n {\n name: \"facebook\",\n label: i18next.t(\"facebook\") || \"Facebook\",\n description: i18next.t(\"facebookDesc\") || \"Insert a Facebook embed\",\n icon: Facebook,\n aliases: [\"meta\", \"facebook\"],\n shouldBeHidden: (editor) => editor.isActive(\"facebook\"),\n action: (editor) => {\n editor.chain().focus().insertFacebook().run();\n },\n },\n {\n name: \"instagram\",\n label: i18next.t(\"instagram\") || \"Instagram\",\n description: i18next.t(\"instagramDesc\") || \"Insert a Instagram embed\",\n icon: Instagram,\n aliases: [\"instagram\"],\n shouldBeHidden: (editor) => editor.isActive(\"instagram\"),\n action: (editor) => {\n editor.chain().focus().insertInstagram().run();\n },\n },\n {\n name: \"youtube\",\n label: i18next.t(\"youtube\") || \"Youtube\",\n description: i18next.t(\"youtubeDesc\") || \"Insert a Youtube embed\",\n icon: Youtube,\n aliases: [\"youtube\"],\n shouldBeHidden: (editor) => editor.isActive(\"youtube\"),\n action: (editor) => {\n editor.chain().focus().insertYoutube().run();\n },\n },\n\n {\n name: \"tiktok\",\n label: i18next.t(\"tiktok\") || \"Tiktok\",\n description: i18next.t(\"tiktokDesc\") || \"Insert a Tiktok embed\",\n icon: Music,\n aliases: [\"tiktok\"],\n shouldBeHidden: (editor) => editor.isActive(\"tiktok\"),\n action: (editor) => {\n editor.chain().focus().insertTiktok().run();\n },\n },\n ],\n },\n];\n\nexport default GROUPS;\n"],"names":["Facebook","Heading1","Heading2","Heading3","Image","Instagram","Link","Minus","Music","Quote","Twitter","Video","Youtube","i18next","GROUPS","name","title","t","commands","label","description","icon","aliases","action","editor","chain","focus","setHeading","level","run","setBlockquote","setImageUpload","setHorizontalRule","shouldBeHidden","isActive","setLinkPreview","insertTwitter","insertFacebook","insertInstagram","insertYoutube","insertTiktok"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { openAssetHQType } from "../types.js";
2
2
  interface ExtensionKitProps {
3
3
  openAssetHQHandler: openAssetHQType;
4
- dir?: 'ltr' | 'rtl';
4
+ dir?: "ltr" | "rtl";
5
5
  }
6
- export declare const ExtensionKit: ({ dir, openAssetHQHandler }: ExtensionKitProps) => (import("@tiptap/core").Node<any, any> | import("@tiptap/core").Extension<any, any> | import("@tiptap/core").Mark<import("@tiptap/extension-subscript").SubscriptExtensionOptions, any>)[];
6
+ export declare const ExtensionKit: ({ dir, openAssetHQHandler, }: ExtensionKitProps) => (import("@tiptap/core").Node<any, any> | import("@tiptap/core").Extension<any, any> | import("@tiptap/core").Mark<import("@tiptap/extension-subscript").SubscriptExtensionOptions, any>)[];
7
7
  export default ExtensionKit;
8
8
  //# sourceMappingURL=extension-kit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-kit.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"names":[],"mappings":"AA+CA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,UAAU,iBAAiB;IACzB,kBAAkB,EAAE,eAAe,CAAC;IACpC,GAAG,CAAC,EAAE,KAAK,GAAC,KAAK,CAAA;CAClB;AAED,eAAO,MAAM,YAAY,gCAAuC,iBAAiB,+LAqHhF,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"extension-kit.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,UAAU,iBAAiB;IACzB,kBAAkB,EAAE,eAAe,CAAC;IACpC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,iCAGtB,iBAAiB,+LAsHnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,10 +1,10 @@
1
- import { AICommand, AudioBlock, BlockquoteFigure, CharacterCount, Document, Dropcursor, Facebook, Figcaption, FileHandler, Focus, Heading, HorizontalRule, ImageBlock, InsideLinks, Instagram, Link, Linkedin, Placeholder, Selection, SlashCommand, StarterKit, Subscript, Superscript, TaskItem, TaskList, TextAlign, TextStyle, Tiktok, TrailingNode, Twitter, Typography, Underline, VideoBlock, Youtube, Iframe } from "./index.js";
1
+ import { AICommand, AudioBlock, BlockquoteFigure, CharacterCount, Document, Dropcursor, Facebook, Figcaption, FileHandler, Focus, Heading, HorizontalRule, LinkPreview, ImageBlock, InsideLinks, Instagram, Link, Linkedin, Placeholder, Selection, SlashCommand, StarterKit, Subscript, Superscript, TaskItem, TaskList, TextAlign, TextStyle, Tiktok, TrailingNode, Twitter, Typography, Underline, VideoBlock, Youtube, Iframe } from "./index.js";
2
2
  import { ImageUpload } from "./ImageUpload/ImageUpload.js";
3
3
  import History from "@tiptap/extension-history";
4
4
  import { Markdown } from "tiptap-markdown";
5
5
  import API from "../lib/api.js";
6
6
  import i18next from "i18next";
7
- export const ExtensionKit = ({ dir = 'ltr', openAssetHQHandler })=>[
7
+ export const ExtensionKit = ({ dir = "ltr", openAssetHQHandler })=>[
8
8
  Markdown,
9
9
  Document,
10
10
  TaskList,
@@ -124,7 +124,8 @@ export const ExtensionKit = ({ dir = 'ltr', openAssetHQHandler })=>[
124
124
  Youtube,
125
125
  InsideLinks,
126
126
  Iframe,
127
- AICommand
127
+ AICommand,
128
+ LinkPreview
128
129
  ];
129
130
  export default ExtensionKit;
130
131