payload-richtext-tiptap 0.0.59 → 0.0.61

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 (30) hide show
  1. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.d.ts +9 -0
  2. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.d.ts.map +1 -0
  3. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.js +19 -0
  4. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.js.map +1 -0
  5. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.d.ts +13 -5
  6. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.d.ts.map +1 -1
  7. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js +69 -47
  8. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js.map +1 -1
  9. package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.js +4 -2
  10. package/dist/src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.js.map +1 -1
  11. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.d.ts.map +1 -1
  12. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js +61 -21
  13. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
  14. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.js +1 -1
  15. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/SocialMediaEmbed.js.map +1 -1
  16. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +1 -1
  17. package/dist/src/fields/TiptapEditor/lib/constants.d.ts.map +1 -1
  18. package/dist/src/fields/TiptapEditor/lib/constants.js +5 -0
  19. package/dist/src/fields/TiptapEditor/lib/constants.js.map +1 -1
  20. package/dist/src/styles.css +1 -21
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +1 -1
  23. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.d.ts +0 -5
  24. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.d.ts.map +0 -1
  25. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.js +0 -123
  26. package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.js.map +0 -1
  27. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.d.ts +0 -3
  28. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.d.ts.map +0 -1
  29. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.js +0 -35
  30. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ declare const _default: (props: {
2
+ node: {
3
+ attrs: {
4
+ src?: string;
5
+ };
6
+ };
7
+ }) => import("react").JSX.Element;
8
+ export default _default;
9
+ //# sourceMappingURL=IframeEmbed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IframeEmbed.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.tsx"],"names":[],"mappings":"gCAGuB;IAAE,IAAI,EAAE;QAAE,KAAK,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE;AAA5D,wBAQE"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Link } from "lucide-react";
3
+ import SocialMediaEmbed from "../SocialMedia/SocialMediaEmbed.js";
4
+ export default ((props)=>{
5
+ return /*#__PURE__*/ _jsx(SocialMediaEmbed, {
6
+ props: props,
7
+ Icon: Link,
8
+ text: "Embed an Iframe",
9
+ children: /*#__PURE__*/ _jsx("div", {
10
+ className: "iframe-wrapper",
11
+ children: /*#__PURE__*/ _jsx("iframe", {
12
+ src: props?.node?.attrs?.src ?? "",
13
+ allowFullScreen: true
14
+ })
15
+ })
16
+ });
17
+ });
18
+
19
+ //# sourceMappingURL=IframeEmbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.tsx"],"sourcesContent":["import { Link } from \"lucide-react\";\nimport SocialMediaEmbed from \"../SocialMedia/SocialMediaEmbed.js\";\n\nexport default (props: { node: { attrs: { src?: string } } }) => {\n return (\n <SocialMediaEmbed props={props} Icon={Link} text={\"Embed an Iframe\"}>\n <div className=\"iframe-wrapper\">\n <iframe src={props?.node?.attrs?.src ?? \"\"} allowFullScreen={true} />\n </div>\n </SocialMediaEmbed>\n );\n};\n"],"names":["Link","SocialMediaEmbed","props","Icon","text","div","className","iframe","src","node","attrs","allowFullScreen"],"mappings":";AAAA,SAASA,IAAI,QAAQ,eAAe;AACpC,OAAOC,sBAAsB,qCAAqC;AAElE,eAAe,CAAA,CAACC;IACd,qBACE,KAACD;QAAiBC,OAAOA;QAAOC,MAAMH;QAAMI,MAAM;kBAChD,cAAA,KAACC;YAAIC,WAAU;sBACb,cAAA,KAACC;gBAAOC,KAAKN,OAAOO,MAAMC,OAAOF,OAAO;gBAAIG,iBAAiB;;;;AAIrE,CAAA,EAAE"}
@@ -1,13 +1,21 @@
1
- declare module '@tiptap/core' {
1
+ import { Node } from "@tiptap/core";
2
+ export interface IframeOptions {
3
+ allowFullscreen: boolean;
4
+ HTMLAttributes: {
5
+ [key: string]: any;
6
+ };
7
+ }
8
+ declare module "@tiptap/core" {
2
9
  interface Commands<ReturnType> {
3
10
  iframe: {
4
11
  /**
5
- * Add an image
12
+ * Add an iframe
6
13
  */
7
- setHtml: (value: string) => ReturnType;
14
+ setIframe: (options: {
15
+ src: string;
16
+ }) => ReturnType;
8
17
  };
9
18
  }
10
19
  }
11
- import { Node } from '@tiptap/core';
12
- export declare const Iframe: Node<any, any>;
20
+ export declare const Iframe: Node<IframeOptions, any>;
13
21
  //# sourceMappingURL=iframe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iframe.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,MAAM,EAAE;YACN;;eAEG;YAEH,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAA;SACvC,CAAA;KACF;CACF;AAED,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAEpD,eAAO,MAAM,MAAM,gBAwGjB,CAAA"}
1
+ {"version":3,"file":"iframe.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC,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,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,KAAK,UAAU,CAAC;SACrD,CAAC;KACH;CACF;AAED,eAAO,MAAM,MAAM,0BAiJjB,CAAC"}
@@ -1,12 +1,17 @@
1
- import { Node } from '@tiptap/core';
1
+ import { Node } from "@tiptap/core";
2
+ import { ReactNodeViewRenderer } from "@tiptap/react";
3
+ import IframeEmbed from "./IframeEmbed.js";
2
4
  export const Iframe = Node.create({
3
- name: 'iframe',
4
- inline: false,
5
- group: 'block',
5
+ name: "iframe",
6
+ group: "block",
7
+ content: "inline*",
8
+ draggable: true,
9
+ atom: true,
6
10
  addOptions () {
7
11
  return {
12
+ allowFullscreen: true,
8
13
  HTMLAttributes: {
9
- frameborder: 0
14
+ class: "iframe-wrapper"
10
15
  }
11
16
  };
12
17
  },
@@ -15,87 +20,104 @@ export const Iframe = Node.create({
15
20
  src: {
16
21
  default: null
17
22
  },
18
- editorValue: {
19
- default: null
23
+ frameborder: {
24
+ default: 0
20
25
  },
21
- HTMLAttributes: {
22
- default: null,
23
- renderHTML: (attributes)=>{
24
- return attributes.HTMLAttributes || {};
25
- }
26
+ allowfullscreen: {
27
+ default: this.options.allowFullscreen,
28
+ parseHTML: ()=>this.options.allowFullscreen
26
29
  }
27
30
  };
28
31
  },
29
32
  parseHTML () {
30
33
  return [
31
34
  {
32
- tag: 'iframe'
35
+ tag: "iframe"
33
36
  }
34
37
  ];
35
38
  },
39
+ renderHTML ({ HTMLAttributes }) {
40
+ return [
41
+ "div",
42
+ this.options.HTMLAttributes,
43
+ [
44
+ "iframe",
45
+ HTMLAttributes
46
+ ]
47
+ ];
48
+ },
36
49
  addNodeView () {
37
- return ({ editor, node })=>{
38
- const div = document.createElement('div');
39
- div.className = 'aspect-w-16 aspect-h-9' + (editor.isEditable ? ' cursor-pointer' : '');
40
- const iframe = document.createElement('iframe');
41
- if (editor.isEditable) {
42
- iframe.className = 'pointer-events-none';
43
- }
44
- iframe.width = '640';
45
- iframe.height = '360';
46
- iframe.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share';
47
- iframe.referrerPolicy = 'strict-origin-when-cross-origin';
48
- iframe.allowFullscreen = true;
49
- iframe.src = node.attrs.src;
50
- div.append(iframe);
51
- return {
52
- dom: div
53
- };
54
- };
50
+ return ReactNodeViewRenderer(IframeEmbed);
55
51
  },
56
52
  addCommands () {
57
53
  return {
54
+ setIframe: (options)=>({ tr, dispatch })=>{
55
+ const { selection } = tr;
56
+ let attributes = {
57
+ ...options
58
+ };
59
+ if (options?.src?.includes("iframe")) {
60
+ const parser = new DOMParser();
61
+ const html = parser.parseFromString(options?.src, "text/html");
62
+ const attrNames = html.getElementsByTagName("iframe")?.[0]?.getAttributeNames();
63
+ attrNames?.forEach((attr)=>{
64
+ attributes[attr] = html.getElementsByTagName("iframe")?.[0]?.getAttribute(attr);
65
+ });
66
+ } else if (!isValidHttpUrl(options?.src)) {
67
+ const htmlData = "data:text/html;charset=utf-8," + encodeURI(options?.src);
68
+ attributes = {
69
+ ...attributes,
70
+ src: htmlData
71
+ };
72
+ }
73
+ const node = this.type.create(attributes);
74
+ if (dispatch) {
75
+ tr.replaceRangeWith(selection.from, selection.to, node);
76
+ }
77
+ // return commands.insertContent({
78
+ // type: 'iframe',
79
+ // attrs: attributes,
80
+ // })
81
+ return true;
82
+ },
58
83
  setHtml: (value)=>({ commands, state })=>{
59
84
  let attributes = {
60
85
  editorValue: value
61
86
  };
62
- if (value?.includes('youtube.com')) {
63
- const ytValue = value?.split('v=')?.[1]?.split('&')?.[0];
87
+ if (value?.includes("youtube.com")) {
88
+ const ytValue = value?.split("v=")?.[1]?.split("&")?.[0];
64
89
  attributes = {
65
90
  ...attributes,
66
91
  src: `https://www.youtube.com/embed/${ytValue}?controls=0`,
67
- title: 'YouTube video player'
92
+ title: "YouTube video player"
68
93
  };
69
- } else if (value?.includes('instagram.com')) {
70
- const instagramValue = value?.split('p/')?.[1]?.split('/')?.[0];
94
+ } else if (value?.includes("instagram.com")) {
95
+ const instagramValue = value?.split("p/")?.[1]?.split("/")?.[0];
71
96
  attributes = {
72
97
  ...attributes,
73
98
  src: `https://www.instagram.com/p/${instagramValue}/embed`,
74
- title: 'Instagram'
99
+ title: "Instagram"
75
100
  };
76
101
  } else if (isValidHttpUrl(value)) {
77
102
  attributes = {
78
103
  ...attributes,
79
104
  src: value
80
105
  };
81
- } else if (value?.includes('iframe')) {
106
+ } else if (value?.includes("iframe")) {
82
107
  const parser = new DOMParser();
83
- const html = parser.parseFromString(value, 'text/html');
84
- const attrNames = html.getElementsByTagName('iframe')?.[0]?.getAttributeNames();
108
+ const html = parser.parseFromString(value, "text/html");
109
+ const attrNames = html.getElementsByTagName("iframe")?.[0]?.getAttributeNames();
85
110
  attrNames?.forEach((attr)=>{
86
- attributes[attr] = html.getElementsByTagName('iframe')?.[0]?.getAttribute(attr);
111
+ attributes[attr] = html.getElementsByTagName("iframe")?.[0]?.getAttribute(attr);
87
112
  });
88
113
  } else {
89
- const htmlData = 'data:text/html;charset=utf-8,' + encodeURI(value);
114
+ const htmlData = "data:text/html;charset=utf-8," + encodeURI(value);
90
115
  attributes = {
91
116
  ...attributes,
92
117
  src: htmlData
93
118
  };
94
119
  }
95
- return commands.insertContent({
96
- type: 'iframe',
97
- attrs: attributes
98
- });
120
+ return true;
99
121
  }
100
122
  };
101
123
  }
@@ -107,7 +129,7 @@ function isValidHttpUrl(string) {
107
129
  } catch (_) {
108
130
  return false;
109
131
  }
110
- return url.protocol === 'http:' || url.protocol === 'https:';
132
+ return url.protocol === "http:" || url.protocol === "https:";
111
133
  }
112
134
 
113
135
  //# sourceMappingURL=iframe.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"sourcesContent":["declare module '@tiptap/core' {\n interface Commands<ReturnType> {\n iframe: {\n /**\n * Add an image\n */\n\n setHtml: (value: string) => ReturnType\n }\n }\n}\n\nimport { Node, mergeAttributes } from '@tiptap/core'\n\nexport const Iframe = Node.create({\n name: 'iframe',\n inline: false,\n group: 'block',\n\n addOptions() {\n return {\n HTMLAttributes: { frameborder: 0 },\n }\n },\n\n addAttributes() {\n return {\n src: { default: null },\n editorValue: { default: null },\n HTMLAttributes: {\n default: null,\n renderHTML: (attributes) => {\n return attributes.HTMLAttributes || {}\n },\n },\n }\n },\n\n parseHTML() {\n return [{ tag: 'iframe' }]\n },\n\n addNodeView() {\n return ({ editor, node }) => {\n const div = document.createElement('div')\n div.className = 'aspect-w-16 aspect-h-9' + (editor.isEditable ? ' cursor-pointer' : '')\n const iframe = document.createElement('iframe')\n if (editor.isEditable) {\n iframe.className = 'pointer-events-none'\n }\n iframe.width = '640'\n iframe.height = '360'\n iframe.allow =\n 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'\n iframe.referrerPolicy = 'strict-origin-when-cross-origin'\n iframe.allowFullscreen = true\n iframe.src = node.attrs.src\n div.append(iframe)\n return {\n dom: div,\n }\n }\n },\n\n addCommands() {\n return {\n setHtml:\n (value) =>\n ({ commands, state }) => {\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.getElementsByTagName('iframe')?.[0]?.getAttributeNames()\n\n attrNames?.forEach((attr) => {\n attributes[attr] = html.getElementsByTagName('iframe')?.[0]?.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 commands.insertContent({\n type: 'iframe',\n attrs: attributes,\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","Iframe","create","name","inline","group","addOptions","HTMLAttributes","frameborder","addAttributes","src","default","editorValue","renderHTML","attributes","parseHTML","tag","addNodeView","editor","node","div","document","createElement","className","isEditable","iframe","width","height","allow","referrerPolicy","allowFullscreen","attrs","append","dom","addCommands","setHtml","value","commands","state","includes","ytValue","split","title","instagramValue","isValidHttpUrl","parser","DOMParser","html","parseFromString","attrNames","getElementsByTagName","getAttributeNames","forEach","attr","getAttribute","htmlData","encodeURI","insertContent","type","string","url","URL","_","protocol"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Iframe/iframe.ts"],"sourcesContent":["import { 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 };\n }\n}\n\nexport const Iframe = Node.create<IframeOptions>({\n name: \"iframe\",\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n\n atom: true,\n\n addOptions() {\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\n parseHTML() {\n return [\n {\n tag: \"iframe\",\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"div\", this.options.HTMLAttributes, [\"iframe\", HTMLAttributes]];\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 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 };\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","ReactNodeViewRenderer","IframeEmbed","Iframe","create","name","group","content","draggable","atom","addOptions","allowFullscreen","HTMLAttributes","class","addAttributes","src","default","frameborder","allowfullscreen","options","parseHTML","tag","renderHTML","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","editorValue","ytValue","split","title","instagramValue","string","url","URL","_","protocol"],"mappings":"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"}
@@ -18,7 +18,9 @@ export const IframeMenu = ({ editor, appendTo })=>{
18
18
  }, [
19
19
  editor
20
20
  ]);
21
- const onHtml = useCallback((html)=>editor.chain().focus().setHtml(html).run(), [
21
+ const onSetLink = useCallback((src)=>editor.chain().focus().setIframe({
22
+ src: src
23
+ }).run(), [
22
24
  editor
23
25
  ]);
24
26
  return /*#__PURE__*/ _jsx(BaseBubbleMenu, {
@@ -37,7 +39,7 @@ export const IframeMenu = ({ editor, appendTo })=>{
37
39
  tooltip: "Sidebar left",
38
40
  active: true,
39
41
  children: /*#__PURE__*/ _jsx(EditIframeLinkPopover, {
40
- onSetLink: onHtml,
42
+ onSetLink: onSetLink,
41
43
  initialSrcLink: editor?.getAttributes("iframe")?.editorValue ?? ""
42
44
  })
43
45
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { useCallback } from \"react\";\nimport { sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { EditIframeLinkPopover } from \"../../../features/menus/TextMenu/components/EditIframeLinkPopover.js\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\n\nexport const IframeMenu = ({ editor, appendTo }: MenuProps) => {\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"iframe\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isIframe = editor.isActive(\"iframe\");\n return isIframe;\n }, [editor]);\n\n const onHtml = useCallback(\n (html: string) => editor.chain().focus().setHtml(html).run(),\n [editor]\n );\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`iframeMenu`}\n shouldShow={shouldShow}\n tippyOptions={{ popperOptions: { placement: \"top-start\" } }}\n updateDelay={100}\n >\n <Toolbar.Wrapper>\n <Toolbar.Button\n type=\"button\"\n tooltip=\"Sidebar left\"\n active={true}\n // onClick={onColumnLeft}\n >\n <EditIframeLinkPopover\n onSetLink={onHtml}\n initialSrcLink={editor?.getAttributes(\"iframe\")?.editorValue ?? \"\"}\n />\n </Toolbar.Button>\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default IframeMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","EditIframeLinkPopover","Toolbar","getRenderContainer","IframeMenu","editor","appendTo","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isIframe","isActive","onHtml","html","chain","focus","setHtml","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","Wrapper","Button","type","tooltip","active","onSetLink","initialSrcLink","getAttributes","editorValue"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAASC,WAAW,QAAQ,QAAQ;AAI3C,SAASC,qBAAqB,QAAQ,uEAAuE;AAE7G,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AAEjE,OAAO,MAAMC,aAAa,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IACxD,MAAMC,yBAAyBP,YAAY;QACzC,MAAMQ,kBAAkBL,mBAAmBE,QAAQ;QACnD,MAAMI,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMO,aAAaZ,YAAY;QAC7B,MAAMa,WAAWR,OAAOS,QAAQ,CAAC;QACjC,OAAOD;IACT,GAAG;QAACR;KAAO;IAEX,MAAMU,SAASf,YACb,CAACgB,OAAiBX,OAAOY,KAAK,GAAGC,KAAK,GAAGC,OAAO,CAACH,MAAMI,GAAG,IAC1D;QAACf;KAAO;IAEV,qBACE,KAACP;QACCO,QAAQA;QACRgB,WAAW,CAAC,UAAU,CAAC;QACvBT,YAAYA;QACZU,cAAc;YAAEC,eAAe;gBAAEC,WAAW;YAAY;QAAE;QAC1DC,aAAa;kBAEb,cAAA,KAACvB,QAAQwB,OAAO;sBACd,cAAA,KAACxB,QAAQyB,MAAM;gBACbC,MAAK;gBACLC,SAAQ;gBACRC,QAAQ;0BAGR,cAAA,KAAC7B;oBACC8B,WAAWhB;oBACXiB,gBAAgB3B,QAAQ4B,cAAc,WAAWC,eAAe;;;;;AAM5E,EAAE;AAEF,eAAe9B,WAAW"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/Iframe/menus/IframeMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport React, { useCallback } from \"react\";\nimport { sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { EditIframeLinkPopover } from \"../../../features/menus/TextMenu/components/EditIframeLinkPopover.js\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\n\nexport const IframeMenu = ({ editor, appendTo }: MenuProps) => {\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"iframe\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isIframe = editor.isActive(\"iframe\");\n return isIframe;\n }, [editor]);\n\n const onSetLink = useCallback(\n (src: string) => editor.chain().focus().setIframe({ src: src }).run(),\n [editor]\n );\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`iframeMenu`}\n shouldShow={shouldShow}\n tippyOptions={{ popperOptions: { placement: \"top-start\" } }}\n updateDelay={100}\n >\n <Toolbar.Wrapper>\n <Toolbar.Button\n type=\"button\"\n tooltip=\"Sidebar left\"\n active={true}\n // onClick={onColumnLeft}\n >\n <EditIframeLinkPopover\n onSetLink={onSetLink}\n initialSrcLink={editor?.getAttributes(\"iframe\")?.editorValue ?? \"\"}\n />\n </Toolbar.Button>\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default IframeMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","React","useCallback","EditIframeLinkPopover","Toolbar","getRenderContainer","IframeMenu","editor","appendTo","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isIframe","isActive","onSetLink","src","chain","focus","setIframe","run","pluginKey","tippyOptions","popperOptions","placement","updateDelay","Wrapper","Button","type","tooltip","active","initialSrcLink","getAttributes","editorValue"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,OAAOC,SAASC,WAAW,QAAQ,QAAQ;AAI3C,SAASC,qBAAqB,QAAQ,uEAAuE;AAE7G,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AAEjE,OAAO,MAAMC,aAAa,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IACxD,MAAMC,yBAAyBP,YAAY;QACzC,MAAMQ,kBAAkBL,mBAAmBE,QAAQ;QACnD,MAAMI,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMO,aAAaZ,YAAY;QAC7B,MAAMa,WAAWR,OAAOS,QAAQ,CAAC;QACjC,OAAOD;IACT,GAAG;QAACR;KAAO;IAEX,MAAMU,YAAYf,YAChB,CAACgB,MAAgBX,OAAOY,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAC;YAAEH,KAAKA;QAAI,GAAGI,GAAG,IACnE;QAACf;KAAO;IAEV,qBACE,KAACP;QACCO,QAAQA;QACRgB,WAAW,CAAC,UAAU,CAAC;QACvBT,YAAYA;QACZU,cAAc;YAAEC,eAAe;gBAAEC,WAAW;YAAY;QAAE;QAC1DC,aAAa;kBAEb,cAAA,KAACvB,QAAQwB,OAAO;sBACd,cAAA,KAACxB,QAAQyB,MAAM;gBACbC,MAAK;gBACLC,SAAQ;gBACRC,QAAQ;0BAGR,cAAA,KAAC7B;oBACCc,WAAWA;oBACXgB,gBAAgB1B,QAAQ2B,cAAc,WAAWC,eAAe;;;;;AAM5E,EAAE;AAEF,eAAe7B,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/groups.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,eAAO,MAAM,MAAM,EAAE,KAAK,EA8PzB,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/groups.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,eAAO,MAAM,MAAM,EAAE,KAAK,EA0QzB,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Book, Columns2, Heading1, Heading2, Heading3, Image, Instagram, Link, List, ListOrdered, Minus, Quote, SquareCode, Table, Twitter, Youtube } from "lucide-react";
1
+ import { Book, Columns2, Facebook, Heading1, Heading2, Heading3, Image, Instagram, Link, List, ListOrdered, Minus, Music, Quote, SquareCode, Table, Twitter, Video, Youtube } from "lucide-react";
2
2
  export const GROUPS = [
3
3
  {
4
4
  name: "format",
@@ -131,6 +131,18 @@ export const GROUPS = [
131
131
  editor.chain().focus().setImageUpload().run();
132
132
  }
133
133
  },
134
+ {
135
+ name: "video",
136
+ label: "Video",
137
+ icon: Video,
138
+ description: "Insert a video",
139
+ aliases: [
140
+ "video"
141
+ ],
142
+ action: (editor)=>{
143
+ editor.chain().focus().setImageUpload().run();
144
+ }
145
+ },
134
146
  {
135
147
  name: "columns",
136
148
  label: "Columns",
@@ -177,7 +189,7 @@ export const GROUPS = [
177
189
  commands: [
178
190
  {
179
191
  name: "iframe",
180
- label: "IFrame",
192
+ label: "IFrame Embed",
181
193
  icon: Link,
182
194
  aliases: [
183
195
  "iframe"
@@ -185,7 +197,9 @@ export const GROUPS = [
185
197
  description: "Insert a iframe",
186
198
  shouldBeHidden: (editor)=>editor.isActive("iframe"),
187
199
  action: (editor)=>{
188
- editor.chain().focus().setHtml("<div>Embed your content here</div>").run();
200
+ editor.chain().focus().setIframe({
201
+ src: ""
202
+ }).run();
189
203
  }
190
204
  },
191
205
  {
@@ -202,17 +216,20 @@ export const GROUPS = [
202
216
  editor.chain().focus().insertTwitter().run();
203
217
  }
204
218
  },
205
- // {
206
- // name: 'facebook',
207
- // label: 'Facebook Embed',
208
- // icon: Facebook,
209
- // aliases: ['meta', 'facebook'],
210
- // description: 'Insert a Facebook embed',
211
- // shouldBeHidden: (editor) => editor.isActive('facebook'),
212
- // action: (editor) => {
213
- // editor.chain().focus().insertFacebook().run()
214
- // },
215
- // },
219
+ {
220
+ name: "facebook",
221
+ label: "Facebook Embed",
222
+ icon: Facebook,
223
+ aliases: [
224
+ "meta",
225
+ "facebook"
226
+ ],
227
+ description: "Insert a Facebook embed",
228
+ shouldBeHidden: (editor)=>editor.isActive("facebook"),
229
+ action: (editor)=>{
230
+ editor.chain().focus().insertFacebook().run();
231
+ }
232
+ },
216
233
  {
217
234
  name: "instagram",
218
235
  label: "Instagram Embed",
@@ -239,17 +256,40 @@ export const GROUPS = [
239
256
  editor.chain().focus().insertYoutube().run();
240
257
  }
241
258
  },
259
+ // {
260
+ // name: "insideLinks",
261
+ // label: "TRT Links",
262
+ // icon: Youtube,
263
+ // aliases: ["insideLinks"],
264
+ // description:
265
+ // "Link internal content such as articles, videos, shows etc.",
266
+ // shouldBeHidden: (editor) => editor.isActive("insideLinks"),
267
+ // action: (editor) => {
268
+ // editor.chain().focus().insertInsideLinks({}).run();
269
+ // },
270
+ // },
271
+ // {
272
+ // name: 'linkedin',
273
+ // label: 'Linkedin Embed',
274
+ // icon: Linkedin,
275
+ // aliases: ['linkedin'],
276
+ // description: 'Insert a Linkedin embed',
277
+ // shouldBeHidden: (editor) => editor.isActive('linkedin'),
278
+ // action: (editor) => {
279
+ // editor.chain().focus().insertLinkedin().run()
280
+ // },
281
+ // },
242
282
  {
243
- name: "insideLinks",
244
- label: "TRT Links",
245
- icon: Youtube,
283
+ name: "tiktok",
284
+ label: "Tiktok Embed",
285
+ icon: Music,
246
286
  aliases: [
247
- "insideLinks"
287
+ "tiktok"
248
288
  ],
249
- description: "Link internal content such as articles, videos, shows etc.",
250
- shouldBeHidden: (editor)=>editor.isActive("insideLinks"),
289
+ description: "Insert a Tiktok embed",
290
+ shouldBeHidden: (editor)=>editor.isActive("tiktok"),
251
291
  action: (editor)=>{
252
- editor.chain().focus().insertInsideLinks({}).run();
292
+ editor.chain().focus().insertTiktok().run();
253
293
  }
254
294
  }
255
295
  ]
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/groups.ts"],"sourcesContent":["import {\n Book,\n Columns2,\n Facebook,\n Heading1,\n Heading2,\n Heading3,\n Image,\n Instagram,\n Link,\n Linkedin,\n List,\n ListOrdered,\n ListTodo,\n Minus,\n Music,\n Quote,\n SquareCode,\n Table,\n Twitch,\n Twitter,\n Youtube,\n} from \"lucide-react\";\nimport { Group } from \"./types.js\";\n\nexport const GROUPS: Group[] = [\n {\n name: \"format\",\n title: \"Format\",\n commands: [\n {\n name: \"heading1\",\n label: \"Heading 1\",\n icon: Heading1,\n description: \"High priority section title\",\n aliases: [\"h1\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"heading2\",\n label: \"Heading 2\",\n icon: Heading2,\n description: \"Medium priority section title\",\n aliases: [\"h2\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 2 }).run();\n },\n },\n {\n name: \"heading3\",\n label: \"Heading 3\",\n icon: Heading3,\n description: \"Low priority section title\",\n aliases: [\"h3\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 3 }).run();\n },\n },\n {\n name: \"bulletList\",\n label: \"Bullet List\",\n icon: List,\n description: \"Unordered list of items\",\n aliases: [\"ul\"],\n action: (editor) => {\n editor.chain().focus().toggleBulletList().run();\n },\n },\n {\n name: \"numberedList\",\n label: \"Numbered List\",\n icon: ListOrdered,\n description: \"Ordered list of items\",\n aliases: [\"ol\"],\n action: (editor) => {\n editor.chain().focus().toggleOrderedList().run();\n },\n },\n // {\n // name: 'taskList',\n // label: 'Task List',\n // icon: ListTodo,\n // description: 'Task list with todo items',\n // aliases: ['todo'],\n // action: (editor) => {\n // editor.chain().focus().toggleTaskList().run()\n // },\n // },\n {\n name: \"blockquote\",\n label: \"Blockquote\",\n icon: Quote,\n description: \"Element for quoting\",\n action: (editor) => {\n editor.chain().focus().setBlockquote().run();\n },\n },\n {\n name: \"codeBlock\",\n label: \"Code Block\",\n icon: SquareCode,\n description: \"Code block with syntax highlighting\",\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor.chain().focus().setCodeBlock().run();\n },\n },\n ],\n },\n {\n name: \"insert\",\n title: \"Insert\",\n commands: [\n {\n name: \"table\",\n label: \"Table\",\n icon: Table,\n description: \"Insert a table\",\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor\n .chain()\n .focus()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: false })\n .run();\n },\n },\n {\n name: \"image\",\n label: \"Image\",\n icon: Image,\n description: \"Insert an image\",\n aliases: [\"img\"],\n action: (editor) => {\n editor.chain().focus().setImageUpload().run();\n },\n },\n {\n name: \"columns\",\n label: \"Columns\",\n icon: Columns2,\n description: \"Add two column content\",\n aliases: [\"cols\"],\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor\n .chain()\n .focus()\n .setColumns()\n .focus(editor.state.selection.head - 1)\n .run();\n },\n },\n {\n name: \"horizontalRule\",\n label: \"Horizontal Rule\",\n icon: Minus,\n description: \"Insert a horizontal divider\",\n aliases: [\"hr\"],\n action: (editor) => {\n editor.chain().focus().setHorizontalRule().run();\n },\n },\n {\n name: \"toc\",\n label: \"Table of Contents\",\n icon: Book,\n aliases: [\"outline\"],\n description: \"Insert a table of contents\",\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor.chain().focus().insertTableOfContents().run();\n },\n },\n ],\n },\n {\n name: \"embed\",\n title: \"Embed\",\n commands: [\n {\n name: \"iframe\",\n label: \"IFrame\",\n icon: Link,\n aliases: [\"iframe\"],\n description: \"Insert a iframe\",\n shouldBeHidden: (editor) => editor.isActive(\"iframe\"),\n action: (editor) => {\n editor\n .chain()\n .focus()\n .setHtml(\"<div>Embed your content here</div>\")\n .run();\n },\n },\n {\n name: \"twitter\",\n label: \"Twitter Embed\",\n icon: Twitter,\n aliases: [\"x\", \"twitter\"],\n description: \"Insert a Twitter embed\",\n shouldBeHidden: (editor) => editor.isActive(\"twitter\"),\n action: (editor) => {\n editor.chain().focus().insertTwitter().run();\n },\n },\n // {\n // name: 'facebook',\n // label: 'Facebook Embed',\n // icon: Facebook,\n // aliases: ['meta', 'facebook'],\n // description: 'Insert a Facebook embed',\n // shouldBeHidden: (editor) => editor.isActive('facebook'),\n // action: (editor) => {\n // editor.chain().focus().insertFacebook().run()\n // },\n // },\n {\n name: \"instagram\",\n label: \"Instagram Embed\",\n icon: Instagram,\n aliases: [\"instagram\"],\n description: \"Insert a Instagram embed\",\n shouldBeHidden: (editor) => editor.isActive(\"instagram\"),\n action: (editor) => {\n editor.chain().focus().insertInstagram().run();\n },\n },\n {\n name: \"youtube\",\n label: \"Youtube Embed\",\n icon: Youtube,\n aliases: [\"youtube\"],\n description: \"Insert a Youtube embed\",\n shouldBeHidden: (editor) => editor.isActive(\"youtube\"),\n action: (editor) => {\n editor.chain().focus().insertYoutube().run();\n },\n },\n {\n name: \"insideLinks\",\n label: \"TRT Links\",\n icon: Youtube,\n aliases: [\"insideLinks\"],\n description:\n \"Link internal content such as articles, videos, shows etc.\",\n shouldBeHidden: (editor) => editor.isActive(\"insideLinks\"),\n action: (editor) => {\n editor.chain().focus().insertInsideLinks({}).run();\n },\n },\n // {\n // name: 'linkedin',\n // label: 'Linkedin Embed',\n // icon: Linkedin,\n // aliases: ['linkedin'],\n // description: 'Insert a Linkedin embed',\n // shouldBeHidden: (editor) => editor.isActive('linkedin'),\n // action: (editor) => {\n\n // editor.chain().focus().insertLinkedin().run()\n // },\n // },\n\n // {\n // name: 'tiktok',\n // label: 'Tiktok Embed',\n // icon: Music,\n // aliases: ['tiktok'],\n // description: 'Insert a Tiktok embed',\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":["Book","Columns2","Heading1","Heading2","Heading3","Image","Instagram","Link","List","ListOrdered","Minus","Quote","SquareCode","Table","Twitter","Youtube","GROUPS","name","title","commands","label","icon","description","aliases","action","editor","chain","focus","setHeading","level","run","toggleBulletList","toggleOrderedList","setBlockquote","shouldBeHidden","isActive","setCodeBlock","insertTable","rows","cols","withHeaderRow","setImageUpload","setColumns","state","selection","head","setHorizontalRule","insertTableOfContents","setHtml","insertTwitter","insertInstagram","insertYoutube","insertInsideLinks"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/groups.ts"],"sourcesContent":["import {\n Book,\n Columns2,\n Facebook,\n Heading1,\n Heading2,\n Heading3,\n Image,\n Instagram,\n Link,\n Linkedin,\n List,\n ListOrdered,\n ListTodo,\n Minus,\n Music,\n Quote,\n SquareCode,\n Table,\n Twitch,\n Twitter,\n Video,\n Youtube,\n} from \"lucide-react\";\nimport { Group } from \"./types.js\";\n\nexport const GROUPS: Group[] = [\n {\n name: \"format\",\n title: \"Format\",\n commands: [\n {\n name: \"heading1\",\n label: \"Heading 1\",\n icon: Heading1,\n description: \"High priority section title\",\n aliases: [\"h1\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"heading2\",\n label: \"Heading 2\",\n icon: Heading2,\n description: \"Medium priority section title\",\n aliases: [\"h2\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 2 }).run();\n },\n },\n {\n name: \"heading3\",\n label: \"Heading 3\",\n icon: Heading3,\n description: \"Low priority section title\",\n aliases: [\"h3\"],\n action: (editor) => {\n editor.chain().focus().setHeading({ level: 3 }).run();\n },\n },\n {\n name: \"bulletList\",\n label: \"Bullet List\",\n icon: List,\n description: \"Unordered list of items\",\n aliases: [\"ul\"],\n action: (editor) => {\n editor.chain().focus().toggleBulletList().run();\n },\n },\n {\n name: \"numberedList\",\n label: \"Numbered List\",\n icon: ListOrdered,\n description: \"Ordered list of items\",\n aliases: [\"ol\"],\n action: (editor) => {\n editor.chain().focus().toggleOrderedList().run();\n },\n },\n // {\n // name: 'taskList',\n // label: 'Task List',\n // icon: ListTodo,\n // description: 'Task list with todo items',\n // aliases: ['todo'],\n // action: (editor) => {\n // editor.chain().focus().toggleTaskList().run()\n // },\n // },\n {\n name: \"blockquote\",\n label: \"Blockquote\",\n icon: Quote,\n description: \"Element for quoting\",\n action: (editor) => {\n editor.chain().focus().setBlockquote().run();\n },\n },\n {\n name: \"codeBlock\",\n label: \"Code Block\",\n icon: SquareCode,\n description: \"Code block with syntax highlighting\",\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor.chain().focus().setCodeBlock().run();\n },\n },\n ],\n },\n {\n name: \"insert\",\n title: \"Insert\",\n commands: [\n {\n name: \"table\",\n label: \"Table\",\n icon: Table,\n description: \"Insert a table\",\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor\n .chain()\n .focus()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: false })\n .run();\n },\n },\n {\n name: \"image\",\n label: \"Image\",\n icon: Image,\n description: \"Insert an image\",\n aliases: [\"img\"],\n action: (editor) => {\n editor.chain().focus().setImageUpload().run();\n },\n },\n {\n name: \"video\",\n label: \"Video\",\n icon: Video,\n description: \"Insert a video\",\n aliases: [\"video\"],\n action: (editor) => {\n editor.chain().focus().setImageUpload().run();\n },\n },\n {\n name: \"columns\",\n label: \"Columns\",\n icon: Columns2,\n description: \"Add two column content\",\n aliases: [\"cols\"],\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor\n .chain()\n .focus()\n .setColumns()\n .focus(editor.state.selection.head - 1)\n .run();\n },\n },\n {\n name: \"horizontalRule\",\n label: \"Horizontal Rule\",\n icon: Minus,\n description: \"Insert a horizontal divider\",\n aliases: [\"hr\"],\n action: (editor) => {\n editor.chain().focus().setHorizontalRule().run();\n },\n },\n {\n name: \"toc\",\n label: \"Table of Contents\",\n icon: Book,\n aliases: [\"outline\"],\n description: \"Insert a table of contents\",\n shouldBeHidden: (editor) => editor.isActive(\"columns\"),\n action: (editor) => {\n editor.chain().focus().insertTableOfContents().run();\n },\n },\n ],\n },\n {\n name: \"embed\",\n title: \"Embed\",\n commands: [\n {\n name: \"iframe\",\n label: \"IFrame Embed\",\n icon: Link,\n aliases: [\"iframe\"],\n description: \"Insert a iframe\",\n shouldBeHidden: (editor) => editor.isActive(\"iframe\"),\n action: (editor) => {\n editor\n .chain()\n .focus()\n .setIframe({\n src: \"\",\n })\n .run();\n },\n },\n {\n name: \"twitter\",\n label: \"Twitter Embed\",\n icon: Twitter,\n aliases: [\"x\", \"twitter\"],\n description: \"Insert a Twitter embed\",\n shouldBeHidden: (editor) => editor.isActive(\"twitter\"),\n action: (editor) => {\n editor.chain().focus().insertTwitter().run();\n },\n },\n {\n name: \"facebook\",\n label: \"Facebook Embed\",\n icon: Facebook,\n aliases: [\"meta\", \"facebook\"],\n description: \"Insert a Facebook embed\",\n shouldBeHidden: (editor) => editor.isActive(\"facebook\"),\n action: (editor) => {\n editor.chain().focus().insertFacebook().run();\n },\n },\n {\n name: \"instagram\",\n label: \"Instagram Embed\",\n icon: Instagram,\n aliases: [\"instagram\"],\n description: \"Insert a Instagram embed\",\n shouldBeHidden: (editor) => editor.isActive(\"instagram\"),\n action: (editor) => {\n editor.chain().focus().insertInstagram().run();\n },\n },\n {\n name: \"youtube\",\n label: \"Youtube Embed\",\n icon: Youtube,\n aliases: [\"youtube\"],\n description: \"Insert a Youtube embed\",\n shouldBeHidden: (editor) => editor.isActive(\"youtube\"),\n action: (editor) => {\n editor.chain().focus().insertYoutube().run();\n },\n },\n // {\n // name: \"insideLinks\",\n // label: \"TRT Links\",\n // icon: Youtube,\n // aliases: [\"insideLinks\"],\n // description:\n // \"Link internal content such as articles, videos, shows etc.\",\n // shouldBeHidden: (editor) => editor.isActive(\"insideLinks\"),\n // action: (editor) => {\n // editor.chain().focus().insertInsideLinks({}).run();\n // },\n // },\n // {\n // name: 'linkedin',\n // label: 'Linkedin Embed',\n // icon: Linkedin,\n // aliases: ['linkedin'],\n // description: 'Insert a Linkedin embed',\n // shouldBeHidden: (editor) => editor.isActive('linkedin'),\n // action: (editor) => {\n\n // editor.chain().focus().insertLinkedin().run()\n // },\n // },\n\n {\n name: \"tiktok\",\n label: \"Tiktok Embed\",\n icon: Music,\n aliases: [\"tiktok\"],\n description: \"Insert a Tiktok embed\",\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":["Book","Columns2","Facebook","Heading1","Heading2","Heading3","Image","Instagram","Link","List","ListOrdered","Minus","Music","Quote","SquareCode","Table","Twitter","Video","Youtube","GROUPS","name","title","commands","label","icon","description","aliases","action","editor","chain","focus","setHeading","level","run","toggleBulletList","toggleOrderedList","setBlockquote","shouldBeHidden","isActive","setCodeBlock","insertTable","rows","cols","withHeaderRow","setImageUpload","setColumns","state","selection","head","setHorizontalRule","insertTableOfContents","setIframe","src","insertTwitter","insertFacebook","insertInstagram","insertYoutube","insertTiktok"],"mappings":"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"}
@@ -15,7 +15,7 @@ export default (({ props, children, Icon, text })=>{
15
15
  style: {
16
16
  width: "100%"
17
17
  },
18
- children: !props?.node?.attrs?.url ?? "" ? /*#__PURE__*/ _jsxs("div", {
18
+ children: !(props?.node?.attrs?.url ?? props?.node?.attrs?.src) ? /*#__PURE__*/ _jsxs("div", {
19
19
  className: "w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard",
20
20
  draggable: "true",
21
21
  "data-drag-handle": "",
@@ -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"],"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
+ {"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 ?? props?.node?.attrs?.src) ? (\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","src","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,CAAElB,CAAAA,OAAOW,MAAMQ,OAAOC,OAAOpB,OAAOW,MAAMQ,OAAOE,GAAE,kBAClD,MAACN;oBACCX,WAAU;oBACVU,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;;sCAEhB,KAACR;4BAAKoB,MAAM;;sCACZ,KAACC;4BACCnB,WAAU;4BACVa,OAAO;gCACLO,WAAW;4BACb;sCAECrB;;;mCAIL,KAACY;oBACCE,OAAO;wBAAEQ,SAAS;wBAAQC,gBAAgB;oBAAS;oBACnDZ,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;8BAEfT;;iBAIL;;;AAIZ,CAAA,EAAE"}
@@ -3,6 +3,6 @@ interface ExtensionKitProps {
3
3
  dir?: "rtl" | "ltr";
4
4
  openAssetHQHandler: openAssetHQType;
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").Extension<any, any> | import("@tiptap/core").Node<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":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/lib/constants.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,SAAS,UA0BrB,CAAC;AAEF,eAAO,MAAM,UAAU,UAQtB,CAAC;AAEF,eAAO,MAAM,WAAW,UAOvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAAc,EAkIrC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,YAAY,EAe/B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/lib/constants.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,SAAS,UA0BrB,CAAC;AAEF,eAAO,MAAM,UAAU,UAQtB,CAAC;AAEF,eAAO,MAAM,WAAW,UAOvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAAc,EAuIrC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,YAAY,EAe/B,CAAC"}
@@ -203,6 +203,11 @@ export const languages = [
203
203
  label: "Portuguese",
204
204
  name: "portuguese"
205
205
  },
206
+ {
207
+ value: "ps",
208
+ label: "Pashto",
209
+ name: "pashto"
210
+ },
206
211
  {
207
212
  value: "ro",
208
213
  label: "Romanian",