payload-richtext-tiptap 0.0.64 → 0.0.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.d.ts +2 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js +15 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.d.ts +7 -2
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js +2 -2
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js +2 -2
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.js +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts +2 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +2 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/types.d.js.map +1 -1
- package/dist/src/styles.css +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -35,7 +35,7 @@ export const AICommand = Extension.create({
|
|
|
35
35
|
},
|
|
36
36
|
onHidden: (instance)=>{
|
|
37
37
|
const selection = this?.editor?.state?.selection;
|
|
38
|
-
this.editor?.chain()?.focus()?.insertContentAt(selection.to - 1, this?.editor?.storage?.aiCommand?.completion ?? "")?.
|
|
38
|
+
this.editor?.chain()?.focus()?.insertContentAt(selection.to - 1, this?.editor?.storage?.aiCommand?.completion ?? "")?.deleteNode("paragraph")?.run();
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AICommand.ts"],"sourcesContent":["\"use client\";\nimport { Editor, Extension } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport Suggestion, {\n SuggestionKeyDownProps,\n SuggestionProps,\n} from \"@tiptap/suggestion\";\nimport tippy from \"tippy.js\";\n\nimport { GROUPS } from \"./groups.js\";\nimport AIMenuList from \"./AIMenuList.js\";\n// import { AICommandPanel } from \"../../features/panels/AICommandPanel/AICommandPanel.js\";\n\nconst extensionName = \"aiCommand\";\n\nlet popup: any;\n\nexport const AICommand = Extension.create({\n name: extensionName,\n\n priority: 200,\n\n onCreate() {\n const t = tippy as any;\n popup = t(\"body\", {\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n theme: \"slash-command\",\n // maxWidth: \"16rem\",\n offset: [0, -16],\n popperOptions: {\n strategy: \"fixed\",\n modifiers: [\n {\n name: \"flip\",\n enabled: false,\n },\n ],\n },\n onHidden: (instance) => {\n const selection = this?.editor?.state?.selection;\n\n this.editor\n ?.chain()\n ?.focus()\n ?.insertContentAt(\n selection.to - 1,\n this?.editor?.storage?.aiCommand?.completion ?? \"\"\n )\n ?.insertContentAt(selection.to, \" \")\n ?.run();\n },\n });\n },\n\n addProseMirrorPlugins() {\n return [\n Suggestion({\n editor: this.editor,\n char: \" \",\n allowSpaces: true,\n startOfLine: true,\n pluginKey: new PluginKey(extensionName),\n allow: ({ state, range }) => {\n const $from = state.doc.resolve(range.from);\n const isRootDepth = $from.depth === 1;\n const isParagraph = $from.parent.type.name === \"paragraph\";\n const isStartOfNode = $from.parent.textContent?.charAt(0) === \" \";\n // TODO\n const isInColumn = this.editor.isActive(\"column\");\n\n const afterContent = $from.parent.textContent?.substring(\n $from.parent.textContent?.indexOf(\" \")\n );\n const isValidAfterContent = !afterContent?.endsWith(\" \");\n\n return (\n ((isRootDepth && isParagraph && isStartOfNode) ||\n (isInColumn && isParagraph && isStartOfNode)) &&\n isValidAfterContent\n );\n },\n command: ({ editor, props }: { editor: Editor; props: any }) => {\n // const { view, state } = editor;\n // const { $head, $from } = view.state.selection;\n\n // const end = $from.pos;\n // const from = $head?.nodeBefore\n // ? end -\n // ($head.nodeBefore.text?.substring(\n // $head.nodeBefore.text?.indexOf(\" \")\n // ).length ?? 0)\n // : $from.start();\n\n // const tr = state.tr.deleteRange(from, end);\n // view.dispatch(tr);\n\n props.action(editor);\n // view.focus();\n },\n items: ({ query }: { query: string }) => {\n const withFilteredCommands = GROUPS.map((group) => ({\n ...group,\n commands: group.commands\n .filter((item) => {\n const labelNormalized = item.label.toLowerCase().trim();\n const queryNormalized = query.toLowerCase().trim();\n\n if (item.aliases) {\n const aliases = item.aliases.map((alias) =>\n alias.toLowerCase().trim()\n );\n\n return (\n labelNormalized.includes(queryNormalized) ||\n aliases.includes(queryNormalized)\n );\n }\n\n return labelNormalized.includes(queryNormalized);\n })\n .filter((command) =>\n command.shouldBeHidden\n ? !command.shouldBeHidden(this.editor)\n : true\n ),\n }));\n\n const withoutEmptyGroups = withFilteredCommands.filter((group) => {\n if (group.commands.length > 0) {\n return true;\n }\n\n return false;\n });\n\n const withEnabledSettings = withoutEmptyGroups.map((group) => ({\n ...group,\n commands: group.commands.map((command) => ({\n ...command,\n isEnabled: true,\n })),\n }));\n\n return withEnabledSettings;\n },\n render: () => {\n let component: any;\n\n let scrollHandler: (() => void) | null = null;\n\n return {\n onStart: (props: SuggestionProps) => {\n component = new ReactRenderer(AIMenuList, {\n props,\n editor: props.editor,\n });\n props.editor.storage.aiCommand.active = true;\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n let yPos = rect.y;\n\n if (\n rect.top + component.element.offsetHeight + 40 >\n window.innerHeight\n ) {\n const diff =\n rect.top +\n component.element.offsetHeight -\n window.innerHeight +\n 40;\n yPos = rect.y - diff;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n const editorXOffset = editorNode.getBoundingClientRect().x;\n const boundigClient = editorNode.getBoundingClientRect();\n\n return new DOMRect(\n rect.x,\n yPos,\n boundigClient.width,\n rect.height\n );\n };\n\n scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n popup?.[0].setProps({\n getReferenceClientRect,\n appendTo: () => document.body,\n content: component.element,\n });\n\n popup?.[0].show();\n },\n\n onUpdate(props: SuggestionProps) {\n component.updateProps(props);\n\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n return new DOMRect(rect.x, rect.y, rect.width, rect.height);\n };\n\n let scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n // eslint-disable-next-line no-param-reassign\n props.editor.storage[extensionName].rect = props.clientRect\n ? getReferenceClientRect()\n : {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n },\n\n onKeyDown(props: SuggestionKeyDownProps) {\n if (props.event.key === \"Escape\") {\n popup?.[0].hide();\n\n return true;\n }\n\n if (!popup?.[0].state.isShown) {\n popup?.[0].show();\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit(props) {\n popup?.[0].hide();\n if (scrollHandler) {\n const { view } = props.editor;\n view.dom.parentElement?.removeEventListener(\n \"scroll\",\n scrollHandler\n );\n }\n\n props.editor.storage.aiCommand.active = false;\n props.editor.storage.aiCommand.userPrompt = \"\";\n props.editor.storage.aiCommand.completion = \"\";\n\n component.destroy();\n },\n };\n },\n }),\n ];\n },\n\n addStorage() {\n return {\n rect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n userPrompt: \"\",\n completion: \"\",\n language: \"en\",\n title: \"\",\n active: false,\n };\n },\n});\n\nexport default AICommand;\n"],"names":["Extension","PluginKey","ReactRenderer","Suggestion","tippy","GROUPS","AIMenuList","extensionName","popup","AICommand","create","name","priority","onCreate","t","interactive","trigger","placement","theme","offset","popperOptions","strategy","modifiers","enabled","onHidden","instance","selection","editor","state","chain","focus","insertContentAt","to","storage","aiCommand","completion","run","addProseMirrorPlugins","char","allowSpaces","startOfLine","pluginKey","allow","range","$from","doc","resolve","from","isRootDepth","depth","isParagraph","parent","type","isStartOfNode","textContent","charAt","isInColumn","isActive","afterContent","substring","indexOf","isValidAfterContent","endsWith","command","props","action","items","query","withFilteredCommands","map","group","commands","filter","item","labelNormalized","label","toLowerCase","trim","queryNormalized","aliases","alias","includes","shouldBeHidden","withoutEmptyGroups","length","withEnabledSettings","isEnabled","render","component","scrollHandler","onStart","active","view","editorNode","dom","getReferenceClientRect","clientRect","rect","yPos","y","top","element","offsetHeight","window","innerHeight","diff","editorXOffset","getBoundingClientRect","x","boundigClient","DOMRect","width","height","setProps","parentElement","addEventListener","appendTo","document","body","content","show","onUpdate","updateProps","left","right","bottom","onKeyDown","event","key","hide","isShown","ref","onExit","removeEventListener","userPrompt","destroy","addStorage","language","title"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AICommand.ts"],"sourcesContent":["\"use client\";\nimport { Editor, Extension } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport Suggestion, {\n SuggestionKeyDownProps,\n SuggestionProps,\n} from \"@tiptap/suggestion\";\nimport tippy from \"tippy.js\";\n\nimport { GROUPS } from \"./groups.js\";\nimport AIMenuList from \"./AIMenuList.js\";\n// import { AICommandPanel } from \"../../features/panels/AICommandPanel/AICommandPanel.js\";\n\nconst extensionName = \"aiCommand\";\n\nlet popup: any;\n\nexport const AICommand = Extension.create({\n name: extensionName,\n\n priority: 200,\n\n onCreate() {\n const t = tippy as any;\n popup = t(\"body\", {\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n theme: \"slash-command\",\n // maxWidth: \"16rem\",\n offset: [0, -16],\n popperOptions: {\n strategy: \"fixed\",\n modifiers: [\n {\n name: \"flip\",\n enabled: false,\n },\n ],\n },\n onHidden: (instance) => {\n const selection = this?.editor?.state?.selection;\n\n this.editor\n ?.chain()\n ?.focus()\n ?.insertContentAt(\n selection.to - 1,\n this?.editor?.storage?.aiCommand?.completion ?? \"\"\n )\n ?.deleteNode(\"paragraph\")\n ?.run();\n },\n });\n },\n\n addProseMirrorPlugins() {\n return [\n Suggestion({\n editor: this.editor,\n char: \" \",\n allowSpaces: true,\n startOfLine: true,\n pluginKey: new PluginKey(extensionName),\n allow: ({ state, range }) => {\n const $from = state.doc.resolve(range.from);\n const isRootDepth = $from.depth === 1;\n const isParagraph = $from.parent.type.name === \"paragraph\";\n const isStartOfNode = $from.parent.textContent?.charAt(0) === \" \";\n // TODO\n const isInColumn = this.editor.isActive(\"column\");\n\n const afterContent = $from.parent.textContent?.substring(\n $from.parent.textContent?.indexOf(\" \")\n );\n const isValidAfterContent = !afterContent?.endsWith(\" \");\n\n return (\n ((isRootDepth && isParagraph && isStartOfNode) ||\n (isInColumn && isParagraph && isStartOfNode)) &&\n isValidAfterContent\n );\n },\n command: ({ editor, props }: { editor: Editor; props: any }) => {\n // const { view, state } = editor;\n // const { $head, $from } = view.state.selection;\n\n // const end = $from.pos;\n // const from = $head?.nodeBefore\n // ? end -\n // ($head.nodeBefore.text?.substring(\n // $head.nodeBefore.text?.indexOf(\" \")\n // ).length ?? 0)\n // : $from.start();\n\n // const tr = state.tr.deleteRange(from, end);\n // view.dispatch(tr);\n\n props.action(editor);\n // view.focus();\n },\n items: ({ query }: { query: string }) => {\n const withFilteredCommands = GROUPS.map((group) => ({\n ...group,\n commands: group.commands\n .filter((item) => {\n const labelNormalized = item.label.toLowerCase().trim();\n const queryNormalized = query.toLowerCase().trim();\n\n if (item.aliases) {\n const aliases = item.aliases.map((alias) =>\n alias.toLowerCase().trim()\n );\n\n return (\n labelNormalized.includes(queryNormalized) ||\n aliases.includes(queryNormalized)\n );\n }\n\n return labelNormalized.includes(queryNormalized);\n })\n .filter((command) =>\n command.shouldBeHidden\n ? !command.shouldBeHidden(this.editor)\n : true\n ),\n }));\n\n const withoutEmptyGroups = withFilteredCommands.filter((group) => {\n if (group.commands.length > 0) {\n return true;\n }\n\n return false;\n });\n\n const withEnabledSettings = withoutEmptyGroups.map((group) => ({\n ...group,\n commands: group.commands.map((command) => ({\n ...command,\n isEnabled: true,\n })),\n }));\n\n return withEnabledSettings;\n },\n render: () => {\n let component: any;\n\n let scrollHandler: (() => void) | null = null;\n\n return {\n onStart: (props: SuggestionProps) => {\n component = new ReactRenderer(AIMenuList, {\n props,\n editor: props.editor,\n });\n props.editor.storage.aiCommand.active = true;\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n let yPos = rect.y;\n\n if (\n rect.top + component.element.offsetHeight + 40 >\n window.innerHeight\n ) {\n const diff =\n rect.top +\n component.element.offsetHeight -\n window.innerHeight +\n 40;\n yPos = rect.y - diff;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n const editorXOffset = editorNode.getBoundingClientRect().x;\n const boundigClient = editorNode.getBoundingClientRect();\n\n return new DOMRect(\n rect.x,\n yPos,\n boundigClient.width,\n rect.height\n );\n };\n\n scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n popup?.[0].setProps({\n getReferenceClientRect,\n appendTo: () => document.body,\n content: component.element,\n });\n\n popup?.[0].show();\n },\n\n onUpdate(props: SuggestionProps) {\n component.updateProps(props);\n\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n return new DOMRect(rect.x, rect.y, rect.width, rect.height);\n };\n\n let scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n // eslint-disable-next-line no-param-reassign\n props.editor.storage[extensionName].rect = props.clientRect\n ? getReferenceClientRect()\n : {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n },\n\n onKeyDown(props: SuggestionKeyDownProps) {\n if (props.event.key === \"Escape\") {\n popup?.[0].hide();\n\n return true;\n }\n\n if (!popup?.[0].state.isShown) {\n popup?.[0].show();\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit(props) {\n popup?.[0].hide();\n if (scrollHandler) {\n const { view } = props.editor;\n view.dom.parentElement?.removeEventListener(\n \"scroll\",\n scrollHandler\n );\n }\n\n props.editor.storage.aiCommand.active = false;\n props.editor.storage.aiCommand.userPrompt = \"\";\n props.editor.storage.aiCommand.completion = \"\";\n\n component.destroy();\n },\n };\n },\n }),\n ];\n },\n\n addStorage() {\n return {\n rect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n userPrompt: \"\",\n completion: \"\",\n language: \"en\",\n title: \"\",\n active: false,\n };\n },\n});\n\nexport default AICommand;\n"],"names":["Extension","PluginKey","ReactRenderer","Suggestion","tippy","GROUPS","AIMenuList","extensionName","popup","AICommand","create","name","priority","onCreate","t","interactive","trigger","placement","theme","offset","popperOptions","strategy","modifiers","enabled","onHidden","instance","selection","editor","state","chain","focus","insertContentAt","to","storage","aiCommand","completion","deleteNode","run","addProseMirrorPlugins","char","allowSpaces","startOfLine","pluginKey","allow","range","$from","doc","resolve","from","isRootDepth","depth","isParagraph","parent","type","isStartOfNode","textContent","charAt","isInColumn","isActive","afterContent","substring","indexOf","isValidAfterContent","endsWith","command","props","action","items","query","withFilteredCommands","map","group","commands","filter","item","labelNormalized","label","toLowerCase","trim","queryNormalized","aliases","alias","includes","shouldBeHidden","withoutEmptyGroups","length","withEnabledSettings","isEnabled","render","component","scrollHandler","onStart","active","view","editorNode","dom","getReferenceClientRect","clientRect","rect","yPos","y","top","element","offsetHeight","window","innerHeight","diff","editorXOffset","getBoundingClientRect","x","boundigClient","DOMRect","width","height","setProps","parentElement","addEventListener","appendTo","document","body","content","show","onUpdate","updateProps","left","right","bottom","onKeyDown","event","key","hide","isShown","ref","onExit","removeEventListener","userPrompt","destroy","addStorage","language","title"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Node } from "@tiptap/react";
|
|
2
|
+
import { AssetType } from "../../types.js";
|
|
2
3
|
declare module "@tiptap/core" {
|
|
3
4
|
interface Commands<ReturnType> {
|
|
4
5
|
imageUpload: {
|
|
5
|
-
setImageUpload: () => ReturnType;
|
|
6
|
+
setImageUpload: (type?: AssetType) => ReturnType;
|
|
6
7
|
};
|
|
7
8
|
}
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAyB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAyB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAG5D,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,KAAK,UAAU,CAAC;SAClD,CAAC;KACH;CACF;AAED,eAAO,MAAM,WAAW,gBAoDtB,CAAC;AAEH,eAAe,WAAW,CAAC"}
|
|
@@ -23,9 +23,23 @@ export const ImageUpload = Node.create({
|
|
|
23
23
|
}
|
|
24
24
|
];
|
|
25
25
|
},
|
|
26
|
+
addAttributes () {
|
|
27
|
+
return {
|
|
28
|
+
type: {
|
|
29
|
+
default: null
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
},
|
|
26
33
|
addCommands () {
|
|
27
34
|
return {
|
|
28
|
-
setImageUpload: ()=>({ commands })=>
|
|
35
|
+
setImageUpload: (type)=>({ commands })=>{
|
|
36
|
+
return commands.insertContent({
|
|
37
|
+
type: "imageUpload",
|
|
38
|
+
attrs: {
|
|
39
|
+
type
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
29
43
|
};
|
|
30
44
|
},
|
|
31
45
|
addNodeView () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.ts"],"sourcesContent":["import { Node, ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { openAssetHQType } from \"../../types.js\";\nimport { ImageUploadBuilder } from \"./view/ImageUpload.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n imageUpload: {\n setImageUpload: () => ReturnType;\n };\n }\n}\n\nexport const ImageUpload = Node.create({\n name: \"imageUpload\",\n\n isolating: true,\n\n defining: true,\n\n group: \"block\",\n\n draggable: true,\n\n selectable: true,\n\n inline: false,\n\n parseHTML() {\n return [\n {\n tag: `div[data-type=\"${this.name}\"]`,\n },\n ];\n },\n\n renderHTML() {\n return [\"div\", { \"data-type\": this.name }];\n },\n\n addCommands() {\n return {\n setImageUpload:\n () =>\n ({ commands })
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.ts"],"sourcesContent":["import { Node, ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { AssetType, openAssetHQType } from \"../../types.js\";\nimport { ImageUploadBuilder } from \"./view/ImageUpload.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n imageUpload: {\n setImageUpload: (type?: AssetType) => ReturnType;\n };\n }\n}\n\nexport const ImageUpload = Node.create({\n name: \"imageUpload\",\n\n isolating: true,\n\n defining: true,\n\n group: \"block\",\n\n draggable: true,\n\n selectable: true,\n\n inline: false,\n\n parseHTML() {\n return [\n {\n tag: `div[data-type=\"${this.name}\"]`,\n },\n ];\n },\n\n renderHTML() {\n return [\"div\", { \"data-type\": this.name }];\n },\n\n addAttributes() {\n return {\n type: { default: null },\n };\n },\n addCommands() {\n return {\n setImageUpload:\n (type?: AssetType) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"imageUpload\",\n attrs: {\n type,\n },\n });\n },\n };\n },\n\n addNodeView() {\n const openAssetHQHandler = this.options\n .openAssetHQHandler as openAssetHQType;\n return ReactNodeViewRenderer(ImageUploadBuilder(openAssetHQHandler));\n },\n});\n\nexport default ImageUpload;\n"],"names":["Node","ReactNodeViewRenderer","ImageUploadBuilder","ImageUpload","create","name","isolating","defining","group","draggable","selectable","inline","parseHTML","tag","renderHTML","addAttributes","type","default","addCommands","setImageUpload","commands","insertContent","attrs","addNodeView","openAssetHQHandler","options"],"mappings":"AAAA,SAASA,IAAI,EAAEC,qBAAqB,QAAQ,gBAAgB;AAE5D,SAASC,kBAAkB,QAAQ,wBAAwB;AAU3D,OAAO,MAAMC,cAAcH,KAAKI,MAAM,CAAC;IACrCC,MAAM;IAENC,WAAW;IAEXC,UAAU;IAEVC,OAAO;IAEPC,WAAW;IAEXC,YAAY;IAEZC,QAAQ;IAERC;QACE,OAAO;YACL;gBACEC,KAAK,CAAC,eAAe,EAAE,IAAI,CAACR,IAAI,CAAC,EAAE,CAAC;YACtC;SACD;IACH;IAEAS;QACE,OAAO;YAAC;YAAO;gBAAE,aAAa,IAAI,CAACT,IAAI;YAAC;SAAE;IAC5C;IAEAU;QACE,OAAO;YACLC,MAAM;gBAAEC,SAAS;YAAK;QACxB;IACF;IACAC;QACE,OAAO;YACLC,gBACE,CAACH,OACD,CAAC,EAAEI,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BL,MAAM;wBACNM,OAAO;4BACLN;wBACF;oBACF;gBACF;QACJ;IACF;IAEAO;QACE,MAAMC,qBAAqB,IAAI,CAACC,OAAO,CACpCD,kBAAkB;QACrB,OAAOvB,sBAAsBC,mBAAmBsB;IAClD;AACF,GAAG;AAEH,eAAerB,YAAY"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { Editor } from "@tiptap/react";
|
|
2
|
-
import { openAssetHQType } from "src/fields/TiptapEditor/types.js";
|
|
3
|
-
export declare const ImageUploadBuilder: (openAssetHQHandler: openAssetHQType) => ({ getPos, editor, }: {
|
|
2
|
+
import { AssetType, openAssetHQType } from "src/fields/TiptapEditor/types.js";
|
|
3
|
+
export declare const ImageUploadBuilder: (openAssetHQHandler: openAssetHQType) => ({ getPos, editor, node, }: {
|
|
4
4
|
getPos: () => number;
|
|
5
5
|
editor: Editor;
|
|
6
|
+
node: {
|
|
7
|
+
attrs: {
|
|
8
|
+
type?: AssetType;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
6
11
|
}) => import("react").JSX.Element;
|
|
7
12
|
//# sourceMappingURL=ImageUpload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmB,MAAM,eAAe,CAAC;AAGxD,OAAO,EAEL,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAC1C,eAAO,MAAM,kBAAkB,uBAAwB,eAAe,
|
|
1
|
+
{"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmB,MAAM,eAAe,CAAC;AAGxD,OAAO,EAEL,SAAS,EACT,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAC1C,eAAO,MAAM,kBAAkB,uBAAwB,eAAe,iCAKjE;IACD,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QAAE,KAAK,EAAE;YAAE,IAAI,CAAC,EAAE,SAAS,CAAA;SAAE,CAAA;KAAE,CAAC;CACvC,gCAiEF,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { NodeViewWrapper } from "@tiptap/react";
|
|
|
3
3
|
import { ImagePlus } from "lucide-react";
|
|
4
4
|
import { useCallback, useState } from "react";
|
|
5
5
|
export const ImageUploadBuilder = (openAssetHQHandler)=>{
|
|
6
|
-
const ImageUpload = ({ getPos, editor })=>{
|
|
6
|
+
const ImageUpload = ({ getPos, editor, node })=>{
|
|
7
7
|
const [done, setDone] = useState(false);
|
|
8
8
|
const onUpload = useCallback((asset)=>{
|
|
9
9
|
if (asset && !done) {
|
|
@@ -51,7 +51,7 @@ export const ImageUploadBuilder = (openAssetHQHandler)=>{
|
|
|
51
51
|
className: "text-black text-sm font-medium uppercase hover:cursor-pointer p-2.5 bg-white rounded-[7px] transition ease-in-out delay-150 hover:scale-110 hover:bg-amber-600 shadow justify-between items-center flex flex-row",
|
|
52
52
|
onClick: (e)=>{
|
|
53
53
|
e.preventDefault();
|
|
54
|
-
openAssetHQHandler(onUpload);
|
|
54
|
+
openAssetHQHandler(onUpload, null, node?.attrs?.type ?? "image");
|
|
55
55
|
},
|
|
56
56
|
children: [
|
|
57
57
|
/*#__PURE__*/ _jsx(ImagePlus, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["import { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport { ImagePlus } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport {\n AssetReturnType,\n openAssetHQType,\n} from \"src/fields/TiptapEditor/types.js\";\nexport const ImageUploadBuilder = (openAssetHQHandler: openAssetHQType) => {\n const ImageUpload = ({\n getPos,\n editor,\n }: {\n getPos: () => number;\n editor: Editor;\n }) => {\n const [done, setDone] = useState(false);\n const onUpload = useCallback(\n (asset: AssetReturnType) => {\n if (asset && !done) {\n console.log(\"asset in ImageUpload itself:\", asset);\n if (asset.type === \"IMAGE\") {\n editor\n .chain()\n .focus()\n .setImageBlock({ src: asset.fullUrl, assetId: asset.id })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n } else {\n console.log(\"calling editor setVideoBlock.\", {\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n });\n editor\n .chain()\n .focus()\n .setVideoBlock({\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n }\n } else {\n console.info(\n \"ImageUpload onUpload called but this is a finished component.\"\n );\n }\n },\n [getPos, editor]\n );\n\n return (\n <NodeViewWrapper>\n <div className=\"p-0 m-0\" data-drag-handle>\n <a\n href=\"#\"\n className=\"text-black text-sm font-medium uppercase hover:cursor-pointer p-2.5 bg-white rounded-[7px] transition ease-in-out delay-150 hover:scale-110 hover:bg-amber-600 shadow justify-between items-center flex flex-row\"\n onClick={(e) => {\n e.preventDefault();\n openAssetHQHandler(onUpload);\n }}\n >\n <ImagePlus className=\"mr-2\" />\n Select an asset\n </a>\n </div>\n </NodeViewWrapper>\n );\n };\n\n return ImageUpload;\n};\n"],"names":["NodeViewWrapper","ImagePlus","useCallback","useState","ImageUploadBuilder","openAssetHQHandler","ImageUpload","getPos","editor","done","setDone","onUpload","asset","console","log","type","chain","focus","setImageBlock","src","fullUrl","assetId","id","deleteRange","from","to","run","videoUrl","poster","playlistUrl","setVideoBlock","info","div","className","data-drag-handle","a","href","onClick","e","preventDefault"],"mappings":";AAAA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["import { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport { ImagePlus } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport {\n AssetReturnType,\n AssetType,\n openAssetHQType,\n} from \"src/fields/TiptapEditor/types.js\";\nexport const ImageUploadBuilder = (openAssetHQHandler: openAssetHQType) => {\n const ImageUpload = ({\n getPos,\n editor,\n node,\n }: {\n getPos: () => number;\n editor: Editor;\n node: { attrs: { type?: AssetType } };\n }) => {\n const [done, setDone] = useState(false);\n const onUpload = useCallback(\n (asset: AssetReturnType) => {\n if (asset && !done) {\n console.log(\"asset in ImageUpload itself:\", asset);\n if (asset.type === \"IMAGE\") {\n editor\n .chain()\n .focus()\n .setImageBlock({ src: asset.fullUrl, assetId: asset.id })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n } else {\n console.log(\"calling editor setVideoBlock.\", {\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n });\n editor\n .chain()\n .focus()\n .setVideoBlock({\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n }\n } else {\n console.info(\n \"ImageUpload onUpload called but this is a finished component.\"\n );\n }\n },\n [getPos, editor]\n );\n\n return (\n <NodeViewWrapper>\n <div className=\"p-0 m-0\" data-drag-handle>\n <a\n href=\"#\"\n className=\"text-black text-sm font-medium uppercase hover:cursor-pointer p-2.5 bg-white rounded-[7px] transition ease-in-out delay-150 hover:scale-110 hover:bg-amber-600 shadow justify-between items-center flex flex-row\"\n onClick={(e) => {\n e.preventDefault();\n openAssetHQHandler(onUpload, null, node?.attrs?.type ?? \"image\");\n }}\n >\n <ImagePlus className=\"mr-2\" />\n Select an asset\n </a>\n </div>\n </NodeViewWrapper>\n );\n };\n\n return ImageUpload;\n};\n"],"names":["NodeViewWrapper","ImagePlus","useCallback","useState","ImageUploadBuilder","openAssetHQHandler","ImageUpload","getPos","editor","node","done","setDone","onUpload","asset","console","log","type","chain","focus","setImageBlock","src","fullUrl","assetId","id","deleteRange","from","to","run","videoUrl","poster","playlistUrl","setVideoBlock","info","div","className","data-drag-handle","a","href","onClick","e","preventDefault","attrs"],"mappings":";AAAA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAM9C,OAAO,MAAMC,qBAAqB,CAACC;IACjC,MAAMC,cAAc,CAAC,EACnBC,MAAM,EACNC,MAAM,EACNC,IAAI,EAKL;QACC,MAAM,CAACC,MAAMC,QAAQ,GAAGR,SAAS;QACjC,MAAMS,WAAWV,YACf,CAACW;YACC,IAAIA,SAAS,CAACH,MAAM;gBAClBI,QAAQC,GAAG,CAAC,gCAAgCF;gBAC5C,IAAIA,MAAMG,IAAI,KAAK,SAAS;oBAC1BR,OACGS,KAAK,GACLC,KAAK,GACLC,aAAa,CAAC;wBAAEC,KAAKP,MAAMQ,OAAO;wBAAEC,SAAST,MAAMU,EAAE;oBAAC,GACtDC,WAAW,CAAC;wBAAEC,MAAMlB;wBAAUmB,IAAInB;oBAAS,GAC3CW,KAAK,GACLS,GAAG;oBACNhB,QAAQ;gBACV,OAAO;oBACLG,QAAQC,GAAG,CAAC,iCAAiC;wBAC3CK,KAAKP,MAAMe,QAAQ;wBACnBC,QAAQhB,MAAMQ,OAAO;wBACrBC,SAAST,MAAMU,EAAE;wBACjBO,aAAajB,MAAMiB,WAAW;oBAChC;oBACAtB,OACGS,KAAK,GACLC,KAAK,GACLa,aAAa,CAAC;wBACbX,KAAKP,MAAMe,QAAQ;wBACnBC,QAAQhB,MAAMQ,OAAO;wBACrBC,SAAST,MAAMU,EAAE;wBACjBO,aAAajB,MAAMiB,WAAW;oBAChC,GACCN,WAAW,CAAC;wBAAEC,MAAMlB;wBAAUmB,IAAInB;oBAAS,GAC3CW,KAAK,GACLS,GAAG;oBACNhB,QAAQ;gBACV;YACF,OAAO;gBACLG,QAAQkB,IAAI,CACV;YAEJ;QACF,GACA;YAACzB;YAAQC;SAAO;QAGlB,qBACE,KAACR;sBACC,cAAA,KAACiC;gBAAIC,WAAU;gBAAUC,kBAAgB;0BACvC,cAAA,MAACC;oBACCC,MAAK;oBACLH,WAAU;oBACVI,SAAS,CAACC;wBACRA,EAAEC,cAAc;wBAChBnC,mBAAmBO,UAAU,MAAMH,MAAMgC,OAAOzB,QAAQ;oBAC1D;;sCAEA,KAACf;4BAAUiC,WAAU;;wBAAS;;;;;IAMxC;IAEA,OAAO5B;AACT,EAAE"}
|
|
@@ -128,7 +128,7 @@ export const GROUPS = [
|
|
|
128
128
|
"img"
|
|
129
129
|
],
|
|
130
130
|
action: (editor)=>{
|
|
131
|
-
editor.chain().focus().setImageUpload().run();
|
|
131
|
+
editor.chain().focus().setImageUpload("image").run();
|
|
132
132
|
}
|
|
133
133
|
},
|
|
134
134
|
{
|
|
@@ -140,7 +140,7 @@ export const GROUPS = [
|
|
|
140
140
|
"video"
|
|
141
141
|
],
|
|
142
142
|
action: (editor)=>{
|
|
143
|
-
editor.chain().focus().setImageUpload().run();
|
|
143
|
+
editor.chain().focus().setImageUpload("video").run();
|
|
144
144
|
}
|
|
145
145
|
},
|
|
146
146
|
{
|
|
@@ -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 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":"AAAA,SACEA,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,SAAS,EACTC,IAAI,EAEJC,IAAI,EACJC,WAAW,EAEXC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,UAAU,EACVC,KAAK,EAELC,OAAO,EACPC,KAAK,EACLC,OAAO,QACF,eAAe;AAGtB,OAAO,MAAMC,SAAkB;IAC7B;QACEC,MAAM;QACNC,OAAO;QACPC,UAAU;YACR;gBACEF,MAAM;gBACNG,OAAO;gBACPC,MAAMrB;gBACNsB,aAAa;gBACbC,SAAS;oBAAC;iBAAK;gBACfC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGC,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GAAGC,GAAG;gBACrD;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMpB;gBACNqB,aAAa;gBACbC,SAAS;oBAAC;iBAAK;gBACfC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGC,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GAAGC,GAAG;gBACrD;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMnB;gBACNoB,aAAa;gBACbC,SAAS;oBAAC;iBAAK;gBACfC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGC,UAAU,CAAC;wBAAEC,OAAO;oBAAE,GAAGC,GAAG;gBACrD;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMf;gBACNgB,aAAa;gBACbC,SAAS;oBAAC;iBAAK;gBACfC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGI,gBAAgB,GAAGD,GAAG;gBAC/C;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMd;gBACNe,aAAa;gBACbC,SAAS;oBAAC;iBAAK;gBACfC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGK,iBAAiB,GAAGF,GAAG;gBAChD;YACF;YACA,IAAI;YACJ,sBAAsB;YACtB,wBAAwB;YACxB,oBAAoB;YACpB,8CAA8C;YAC9C,uBAAuB;YACvB,0BAA0B;YAC1B,oDAAoD;YACpD,OAAO;YACP,KAAK;YACL;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMX;gBACNY,aAAa;gBACbE,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGM,aAAa,GAAGH,GAAG;gBAC5C;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMV;gBACNW,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGS,YAAY,GAAGN,GAAG;gBAC3C;YACF;SACD;IACH;IACA;QACEb,MAAM;QACNC,OAAO;QACPC,UAAU;YACR;gBACEF,MAAM;gBACNG,OAAO;gBACPC,MAAMT;gBACNU,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OACGC,KAAK,GACLC,KAAK,GACLU,WAAW,CAAC;wBAAEC,MAAM;wBAAGC,MAAM;wBAAGC,eAAe;oBAAM,GACrDV,GAAG;gBACR;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMlB;gBACNmB,aAAa;gBACbC,SAAS;oBAAC;iBAAM;gBAChBC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGc,cAAc,GAAGX,GAAG;gBAC7C;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMP;gBACNQ,aAAa;gBACbC,SAAS;oBAAC;iBAAQ;gBAClBC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGc,cAAc,GAAGX,GAAG;gBAC7C;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMvB;gBACNwB,aAAa;gBACbC,SAAS;oBAAC;iBAAO;gBACjBW,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OACGC,KAAK,GACLC,KAAK,GACLe,UAAU,GACVf,KAAK,CAACF,OAAOkB,KAAK,CAACC,SAAS,CAACC,IAAI,GAAG,GACpCf,GAAG;gBACR;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMb;gBACNc,aAAa;gBACbC,SAAS;oBAAC;iBAAK;gBACfC,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGmB,iBAAiB,GAAGhB,GAAG;gBAChD;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMxB;gBACN0B,SAAS;oBAAC;iBAAU;gBACpBD,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGoB,qBAAqB,GAAGjB,GAAG;gBACpD;YACF;SACD;IACH;IACA;QACEb,MAAM;QACNC,OAAO;QACPC,UAAU;YACR;gBACEF,MAAM;gBACNG,OAAO;gBACPC,MAAMhB;gBACNkB,SAAS;oBAAC;iBAAS;gBACnBD,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OACGC,KAAK,GACLC,KAAK,GACLqB,SAAS,CAAC;wBACTC,KAAK;oBACP,GACCnB,GAAG;gBACR;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMR;gBACNU,SAAS;oBAAC;oBAAK;iBAAU;gBACzBD,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGuB,aAAa,GAAGpB,GAAG;gBAC5C;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMtB;gBACNwB,SAAS;oBAAC;oBAAQ;iBAAW;gBAC7BD,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGwB,cAAc,GAAGrB,GAAG;gBAC7C;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMjB;gBACNmB,SAAS;oBAAC;iBAAY;gBACtBD,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAGyB,eAAe,GAAGtB,GAAG;gBAC9C;YACF;YACA;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMN;gBACNQ,SAAS;oBAAC;iBAAU;gBACpBD,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAG0B,aAAa,GAAGvB,GAAG;gBAC5C;YACF;YACA,IAAI;YACJ,yBAAyB;YACzB,wBAAwB;YACxB,mBAAmB;YACnB,8BAA8B;YAC9B,iBAAiB;YACjB,oEAAoE;YACpE,gEAAgE;YAChE,0BAA0B;YAC1B,0DAA0D;YAC1D,OAAO;YACP,KAAK;YACL,IAAI;YACJ,sBAAsB;YACtB,6BAA6B;YAC7B,oBAAoB;YACpB,2BAA2B;YAC3B,4CAA4C;YAC5C,6DAA6D;YAC7D,0BAA0B;YAE1B,oDAAoD;YACpD,OAAO;YACP,KAAK;YAEL;gBACEb,MAAM;gBACNG,OAAO;gBACPC,MAAMZ;gBACNc,SAAS;oBAAC;iBAAS;gBACnBD,aAAa;gBACbY,gBAAgB,CAACT,SAAWA,OAAOU,QAAQ,CAAC;gBAC5CX,QAAQ,CAACC;oBACPA,OAAOC,KAAK,GAAGC,KAAK,GAAG2B,YAAY,GAAGxB,GAAG;gBAC3C;YACF;SACD;IACH;CACD,CAAC;AAEF,eAAed,OAAO"}
|
|
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(\"image\").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(\"video\").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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"}
|
|
@@ -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").
|
|
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":"extension-kit.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"names":[],"mappings":"AAyDA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,UAAU,iBAAiB;IACzB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,kBAAkB,EAAE,eAAe,CAAC;CACrC;AAED,eAAO,MAAM,YAAY,iCAGtB,iBAAiB,+
|
|
1
|
+
{"version":3,"file":"extension-kit.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"names":[],"mappings":"AAyDA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,UAAU,iBAAiB;IACzB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,kBAAkB,EAAE,eAAe,CAAC;CACrC;AAED,eAAO,MAAM,YAAY,iCAGtB,iBAAiB,+LAuInB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"sourcesContent":["import {\n AICommand,\n BlockquoteFigure,\n CharacterCount,\n Color,\n Column,\n // emojiSuggestion,\n Columns,\n Document,\n Dropcursor,\n Facebook,\n Figcaption,\n FileHandler,\n Focus,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalRule,\n VideoBlock,\n ImageBlock,\n AudioBlock,\n InsideLinks,\n Instagram,\n Link,\n Linkedin,\n Placeholder,\n Selection,\n SlashCommand,\n StarterKit,\n Subscript,\n Superscript,\n Table,\n TableCell,\n TableHeader,\n TableOfContents,\n TableRow,\n TaskItem,\n TaskList,\n TextAlign,\n TextStyle,\n Tiktok,\n TrailingNode,\n Twitter,\n Typography,\n Underline,\n Youtube,\n} from \"./index.js\";\n\nimport { CodeBlockLowlight } from \"@tiptap/extension-code-block-lowlight\";\nimport lowlight from \"lowlight\";\nimport TextDirection from \"tiptap-text-direction\";\nimport { ImageUpload } from \"./ImageUpload/ImageUpload.js\";\nimport { TableOfContentsNode } from \"./TableOfContentsNode/TableOfContentsNode.js\";\n\nimport History from \"@tiptap/extension-history\";\nimport API from \"../lib/api.js\";\nimport { openAssetHQType } from \"../types.js\";\nimport { Iframe } from \"./Iframe/iframe.js\";\nimport { Markdown } from \"tiptap-markdown\";\n\ninterface ExtensionKitProps {\n dir?: \"rtl\" | \"ltr\";\n openAssetHQHandler: openAssetHQType;\n}\n\nexport const ExtensionKit = ({\n dir,\n openAssetHQHandler,\n}: ExtensionKitProps) => [\n Markdown,\n Document,\n Columns,\n TaskList,\n TaskItem.configure({\n nested: true,\n }),\n Column,\n Selection,\n Heading.configure({\n levels: [1, 2, 3, 4, 5, 6],\n }),\n HorizontalRule,\n StarterKit.configure({\n document: false,\n dropcursor: false,\n heading: false,\n horizontalRule: false,\n blockquote: false,\n history: false,\n codeBlock: false,\n }),\n CodeBlockLowlight.configure({\n lowlight,\n defaultLanguage: null,\n }),\n TextStyle,\n FontSize,\n FontFamily,\n Color,\n TrailingNode,\n Link.configure({\n openOnClick: false,\n }),\n Highlight.configure({ multicolor: true }),\n Underline,\n CharacterCount.configure({ limit: 50000 }),\n TableOfContents,\n TableOfContentsNode,\n ImageUpload.configure({\n openAssetHQHandler,\n }),\n ImageBlock,\n VideoBlock,\n AudioBlock,\n FileHandler.configure({\n allowedMimeTypes: [\"image/png\", \"image/jpeg\", \"image/gif\", \"image/webp\"],\n onDrop: (currentEditor, files, pos) => {\n const file = files[0];\n (async () => {\n openAssetHQHandler((asset) => {\n
|
|
1
|
+
{"version":3,"sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"sourcesContent":["import {\n AICommand,\n BlockquoteFigure,\n CharacterCount,\n Color,\n Column,\n // emojiSuggestion,\n Columns,\n Document,\n Dropcursor,\n Facebook,\n Figcaption,\n FileHandler,\n Focus,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalRule,\n VideoBlock,\n ImageBlock,\n AudioBlock,\n InsideLinks,\n Instagram,\n Link,\n Linkedin,\n Placeholder,\n Selection,\n SlashCommand,\n StarterKit,\n Subscript,\n Superscript,\n Table,\n TableCell,\n TableHeader,\n TableOfContents,\n TableRow,\n TaskItem,\n TaskList,\n TextAlign,\n TextStyle,\n Tiktok,\n TrailingNode,\n Twitter,\n Typography,\n Underline,\n Youtube,\n} from \"./index.js\";\n\nimport { CodeBlockLowlight } from \"@tiptap/extension-code-block-lowlight\";\nimport lowlight from \"lowlight\";\nimport TextDirection from \"tiptap-text-direction\";\nimport { ImageUpload } from \"./ImageUpload/ImageUpload.js\";\nimport { TableOfContentsNode } from \"./TableOfContentsNode/TableOfContentsNode.js\";\n\nimport History from \"@tiptap/extension-history\";\nimport API from \"../lib/api.js\";\nimport { openAssetHQType } from \"../types.js\";\nimport { Iframe } from \"./Iframe/iframe.js\";\nimport { Markdown } from \"tiptap-markdown\";\n\ninterface ExtensionKitProps {\n dir?: \"rtl\" | \"ltr\";\n openAssetHQHandler: openAssetHQType;\n}\n\nexport const ExtensionKit = ({\n dir,\n openAssetHQHandler,\n}: ExtensionKitProps) => [\n Markdown,\n Document,\n Columns,\n TaskList,\n TaskItem.configure({\n nested: true,\n }),\n Column,\n Selection,\n Heading.configure({\n levels: [1, 2, 3, 4, 5, 6],\n }),\n HorizontalRule,\n StarterKit.configure({\n document: false,\n dropcursor: false,\n heading: false,\n horizontalRule: false,\n blockquote: false,\n history: false,\n codeBlock: false,\n }),\n CodeBlockLowlight.configure({\n lowlight,\n defaultLanguage: null,\n }),\n TextStyle,\n FontSize,\n FontFamily,\n Color,\n TrailingNode,\n Link.configure({\n openOnClick: false,\n }),\n Highlight.configure({ multicolor: true }),\n Underline,\n CharacterCount.configure({ limit: 50000 }),\n TableOfContents,\n TableOfContentsNode,\n ImageUpload.configure({\n openAssetHQHandler,\n }),\n ImageBlock,\n VideoBlock,\n AudioBlock,\n FileHandler.configure({\n allowedMimeTypes: [\"image/png\", \"image/jpeg\", \"image/gif\", \"image/webp\"],\n onDrop: (currentEditor, files, pos) => {\n const file = files[0];\n (async () => {\n openAssetHQHandler(\n (asset) => {\n currentEditor\n .chain()\n .setImageBlockAt({ pos, src: asset.fullUrl })\n .focus()\n .run();\n },\n file,\n \"image\"\n );\n })();\n },\n onPaste: (currentEditor, files) => {\n files.forEach(async () => {\n const url = await API.uploadImage();\n\n return currentEditor\n .chain()\n .setImageBlockAt({\n pos: currentEditor.state.selection.anchor,\n src: url,\n })\n .focus()\n .run();\n });\n },\n }),\n // Emoji.configure({\n // enableEmoticons: true,\n // suggestion: emojiSuggestion,\n // }),\n TextAlign.extend({\n addKeyboardShortcuts() {\n return {};\n },\n }).configure({\n types: [\"heading\", \"paragraph\"],\n }),\n Subscript,\n Superscript,\n Table,\n TableCell,\n TableHeader,\n TableRow,\n Typography,\n Placeholder.configure({\n includeChildren: true,\n showOnlyCurrent: false,\n placeholder: () => \"\",\n }),\n SlashCommand,\n Focus,\n Figcaption,\n BlockquoteFigure,\n Dropcursor.configure({\n width: 2,\n class: \"ProseMirror-dropcursor border-black\",\n }),\n History,\n Iframe,\n Twitter,\n Tiktok,\n Instagram,\n Facebook,\n Linkedin,\n Youtube,\n InsideLinks,\n TextDirection.configure({\n types: [\n \"heading\",\n \"paragraph\",\n \"orderedList\",\n \"bulletList\",\n \"listItem\",\n \"blockquoteFigure\",\n \"codeBlock\",\n \"tableCell\",\n \"tableRow\",\n \"table\",\n \"column\",\n ],\n }),\n AICommand,\n];\n\nexport default ExtensionKit;\n"],"names":["AICommand","BlockquoteFigure","CharacterCount","Color","Column","Columns","Document","Dropcursor","Facebook","Figcaption","FileHandler","Focus","FontFamily","FontSize","Heading","Highlight","HorizontalRule","VideoBlock","ImageBlock","AudioBlock","InsideLinks","Instagram","Link","Linkedin","Placeholder","Selection","SlashCommand","StarterKit","Subscript","Superscript","Table","TableCell","TableHeader","TableOfContents","TableRow","TaskItem","TaskList","TextAlign","TextStyle","Tiktok","TrailingNode","Twitter","Typography","Underline","Youtube","CodeBlockLowlight","lowlight","TextDirection","ImageUpload","TableOfContentsNode","History","API","Iframe","Markdown","ExtensionKit","dir","openAssetHQHandler","configure","nested","levels","document","dropcursor","heading","horizontalRule","blockquote","history","codeBlock","defaultLanguage","openOnClick","multicolor","limit","allowedMimeTypes","onDrop","currentEditor","files","pos","file","asset","chain","setImageBlockAt","src","fullUrl","focus","run","onPaste","forEach","url","uploadImage","state","selection","anchor","extend","addKeyboardShortcuts","types","includeChildren","showOnlyCurrent","placeholder","width","class"],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { openAssetHQType } from "../../types.js";
|
|
2
2
|
import { TiptapProps } from "./types.js";
|
|
3
|
-
export declare const BlockEditor: ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable, autoFocus, }: TiptapProps & {
|
|
3
|
+
export declare const BlockEditor: ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable, autoFocus, dir, }: TiptapProps & {
|
|
4
4
|
openAssetHQHandler?: openAssetHQType;
|
|
5
5
|
additionalContext?: Record<string, any>;
|
|
6
6
|
autoFocus?: boolean;
|
|
7
7
|
isEditable?: boolean;
|
|
8
|
+
dir?: "ltr" | "rtl" | "auto";
|
|
8
9
|
}) => import("react").JSX.Element;
|
|
9
10
|
export default BlockEditor;
|
|
10
11
|
//# sourceMappingURL=BlockEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockEditor.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"BlockEditor.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,kGAQrB,WAAW,GAAG;IACf,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;CAC9B,gCA+DA,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -15,7 +15,7 @@ import { Sidebar } from "../Sidebar/Sidebar.js";
|
|
|
15
15
|
import { ContentItemMenu } from "../menus/ContentItemMenu/ContentItemMenu.js";
|
|
16
16
|
import { TextMenu } from "../menus/TextMenu/TextMenu.js";
|
|
17
17
|
import { LinkMenu } from "../menus/index.js";
|
|
18
|
-
export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable = true, autoFocus = true })=>{
|
|
18
|
+
export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable = true, autoFocus = true, dir })=>{
|
|
19
19
|
const menuContainerRef = useRef(null);
|
|
20
20
|
const editorRef = useRef(null);
|
|
21
21
|
const { editor, users, characterCount, leftSidebar } = useBlockEditor({
|
|
@@ -35,6 +35,7 @@ export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additio
|
|
|
35
35
|
children: /*#__PURE__*/ _jsxs("div", {
|
|
36
36
|
className: "flex h-full overflow-visible",
|
|
37
37
|
ref: menuContainerRef,
|
|
38
|
+
dir: dir,
|
|
38
39
|
children: [
|
|
39
40
|
isEditable && /*#__PURE__*/ _jsx(Sidebar, {
|
|
40
41
|
isOpen: leftSidebar.isOpen,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"sourcesContent":["\"use client\";\nimport { EditorContent } from \"@tiptap/react\";\nimport { useEffect, useMemo, useRef } from \"react\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { useTranslation } from \"@payloadcms/ui/providers/Translation\";\nimport { EditorContext } from \"../../context/EditorContext.js\";\nimport { IframeMenu } from \"../../extensions/Iframe/menus/index.js\";\nimport ImageBlockMenu from \"../../extensions/ImageBlock/components/ImageBlockMenu.js\";\nimport VideoBlockMenu from \"../../extensions/VideoBlock/components/VideoBlockMenu.js\";\nimport { InsideLinksMenu } from \"../../extensions/InsideLinks/menus/index.js\";\nimport { ColumnsMenu } from \"../../extensions/MultiColumn/menus/ColumnsMenu.js\";\nimport { SocialMediaMenu } from \"../../extensions/SocialMedia/menus/index.js\";\nimport {\n TableColumnMenu,\n TableRowMenu,\n} from \"../../extensions/Table/menus/index.js\";\nimport { useBlockEditor } from \"../../hooks/useBlockEditor.js\";\nimport { openAssetHQType } from \"../../types.js\";\nimport { Sidebar } from \"../Sidebar/Sidebar.js\";\nimport { ContentItemMenu } from \"../menus/ContentItemMenu/ContentItemMenu.js\";\nimport { TextMenu } from \"../menus/TextMenu/TextMenu.js\";\nimport { LinkMenu } from \"../menus/index.js\";\nimport { TiptapProps } from \"./types.js\";\nexport const BlockEditor = ({\n handleChange,\n content,\n openAssetHQHandler,\n additionalContext,\n isEditable = true,\n autoFocus = true,\n}: TiptapProps & {\n openAssetHQHandler?: openAssetHQType;\n additionalContext?: Record<string, any>;\n autoFocus?: boolean;\n isEditable?: boolean;\n}) => {\n const menuContainerRef = useRef(null);\n const editorRef = useRef<HTMLDivElement>(null);\n\n const { editor, users, characterCount, leftSidebar } = useBlockEditor({\n content: content,\n handleChange: handleChange,\n openAssetHQHandler: openAssetHQHandler,\n additionalContext: additionalContext,\n autoFocus,\n isEditable,\n });\n\n const displayedUsers = users.slice(0, 3);\n\n const providerValue = useMemo(() => {\n return {};\n }, []);\n\n return (\n editor && (\n <EditorContext.Provider value={providerValue}>\n <div
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"sourcesContent":["\"use client\";\nimport { EditorContent } from \"@tiptap/react\";\nimport { useEffect, useMemo, useRef } from \"react\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { useTranslation } from \"@payloadcms/ui/providers/Translation\";\nimport { EditorContext } from \"../../context/EditorContext.js\";\nimport { IframeMenu } from \"../../extensions/Iframe/menus/index.js\";\nimport ImageBlockMenu from \"../../extensions/ImageBlock/components/ImageBlockMenu.js\";\nimport VideoBlockMenu from \"../../extensions/VideoBlock/components/VideoBlockMenu.js\";\nimport { InsideLinksMenu } from \"../../extensions/InsideLinks/menus/index.js\";\nimport { ColumnsMenu } from \"../../extensions/MultiColumn/menus/ColumnsMenu.js\";\nimport { SocialMediaMenu } from \"../../extensions/SocialMedia/menus/index.js\";\nimport {\n TableColumnMenu,\n TableRowMenu,\n} from \"../../extensions/Table/menus/index.js\";\nimport { useBlockEditor } from \"../../hooks/useBlockEditor.js\";\nimport { openAssetHQType } from \"../../types.js\";\nimport { Sidebar } from \"../Sidebar/Sidebar.js\";\nimport { ContentItemMenu } from \"../menus/ContentItemMenu/ContentItemMenu.js\";\nimport { TextMenu } from \"../menus/TextMenu/TextMenu.js\";\nimport { LinkMenu } from \"../menus/index.js\";\nimport { TiptapProps } from \"./types.js\";\nexport const BlockEditor = ({\n handleChange,\n content,\n openAssetHQHandler,\n additionalContext,\n isEditable = true,\n autoFocus = true,\n dir,\n}: TiptapProps & {\n openAssetHQHandler?: openAssetHQType;\n additionalContext?: Record<string, any>;\n autoFocus?: boolean;\n isEditable?: boolean;\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n}) => {\n const menuContainerRef = useRef(null);\n const editorRef = useRef<HTMLDivElement>(null);\n\n const { editor, users, characterCount, leftSidebar } = useBlockEditor({\n content: content,\n handleChange: handleChange,\n openAssetHQHandler: openAssetHQHandler,\n additionalContext: additionalContext,\n autoFocus,\n isEditable,\n });\n\n const displayedUsers = users.slice(0, 3);\n\n const providerValue = useMemo(() => {\n return {};\n }, []);\n\n return (\n editor && (\n <EditorContext.Provider value={providerValue}>\n <div\n className=\"flex h-full overflow-visible\"\n ref={menuContainerRef}\n dir={dir}\n >\n {isEditable && (\n <Sidebar\n isOpen={leftSidebar.isOpen}\n onClose={leftSidebar.close}\n editor={editor}\n />\n )}\n <div className=\"relative flex flex-col flex-1 h-full justify-center items-center \">\n <EditorContent\n editor={editor}\n ref={editorRef}\n className=\"flex-1 overflow-y-visible w-full h-full outline-none outline-offset-0\"\n style={{\n outline: \"none\",\n }}\n />\n {isEditable && (\n <>\n <ContentItemMenu editor={editor} />\n <LinkMenu editor={editor} appendTo={menuContainerRef} />\n <TextMenu editor={editor} />\n <IframeMenu editor={editor} appendTo={menuContainerRef} />\n <SocialMediaMenu editor={editor} appendTo={menuContainerRef} />\n <InsideLinksMenu editor={editor} appendTo={menuContainerRef} />\n <ColumnsMenu editor={editor} appendTo={menuContainerRef} />\n <TableRowMenu editor={editor} appendTo={menuContainerRef} />\n <TableColumnMenu editor={editor} appendTo={menuContainerRef} />\n <ImageBlockMenu editor={editor} appendTo={menuContainerRef} />\n <VideoBlockMenu editor={editor} appendTo={menuContainerRef} />\n </>\n )}\n </div>\n </div>\n </EditorContext.Provider>\n )\n );\n};\n\nexport default BlockEditor;\n"],"names":["EditorContent","useMemo","useRef","EditorContext","IframeMenu","ImageBlockMenu","VideoBlockMenu","InsideLinksMenu","ColumnsMenu","SocialMediaMenu","TableColumnMenu","TableRowMenu","useBlockEditor","Sidebar","ContentItemMenu","TextMenu","LinkMenu","BlockEditor","handleChange","content","openAssetHQHandler","additionalContext","isEditable","autoFocus","dir","menuContainerRef","editorRef","editor","users","characterCount","leftSidebar","displayedUsers","slice","providerValue","Provider","value","div","className","ref","isOpen","onClose","close","style","outline","appendTo"],"mappings":"AAAA;;AACA,SAASA,aAAa,QAAQ,gBAAgB;AAC9C,SAAoBC,OAAO,EAAEC,MAAM,QAAQ,QAAQ;AAInD,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,UAAU,QAAQ,yCAAyC;AACpE,OAAOC,oBAAoB,2DAA2D;AACtF,OAAOC,oBAAoB,2DAA2D;AACtF,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SAASC,WAAW,QAAQ,oDAAoD;AAChF,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SACEC,eAAe,EACfC,YAAY,QACP,wCAAwC;AAC/C,SAASC,cAAc,QAAQ,gCAAgC;AAE/D,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SAASC,QAAQ,QAAQ,gCAAgC;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAE7C,OAAO,MAAMC,cAAc,CAAC,EAC1BC,YAAY,EACZC,OAAO,EACPC,kBAAkB,EAClBC,iBAAiB,EACjBC,aAAa,IAAI,EACjBC,YAAY,IAAI,EAChBC,GAAG,EAOJ;IACC,MAAMC,mBAAmBvB,OAAO;IAChC,MAAMwB,YAAYxB,OAAuB;IAEzC,MAAM,EAAEyB,MAAM,EAAEC,KAAK,EAAEC,cAAc,EAAEC,WAAW,EAAE,GAAGlB,eAAe;QACpEO,SAASA;QACTD,cAAcA;QACdE,oBAAoBA;QACpBC,mBAAmBA;QACnBE;QACAD;IACF;IAEA,MAAMS,iBAAiBH,MAAMI,KAAK,CAAC,GAAG;IAEtC,MAAMC,gBAAgBhC,QAAQ;QAC5B,OAAO,CAAC;IACV,GAAG,EAAE;IAEL,OACE0B,wBACE,KAACxB,cAAc+B,QAAQ;QAACC,OAAOF;kBAC7B,cAAA,MAACG;YACCC,WAAU;YACVC,KAAKb;YACLD,KAAKA;;gBAEJF,4BACC,KAACT;oBACC0B,QAAQT,YAAYS,MAAM;oBAC1BC,SAASV,YAAYW,KAAK;oBAC1Bd,QAAQA;;8BAGZ,MAACS;oBAAIC,WAAU;;sCACb,KAACrC;4BACC2B,QAAQA;4BACRW,KAAKZ;4BACLW,WAAU;4BACVK,OAAO;gCACLC,SAAS;4BACX;;wBAEDrB,4BACC;;8CACE,KAACR;oCAAgBa,QAAQA;;8CACzB,KAACX;oCAASW,QAAQA;oCAAQiB,UAAUnB;;8CACpC,KAACV;oCAASY,QAAQA;;8CAClB,KAACvB;oCAAWuB,QAAQA;oCAAQiB,UAAUnB;;8CACtC,KAAChB;oCAAgBkB,QAAQA;oCAAQiB,UAAUnB;;8CAC3C,KAAClB;oCAAgBoB,QAAQA;oCAAQiB,UAAUnB;;8CAC3C,KAACjB;oCAAYmB,QAAQA;oCAAQiB,UAAUnB;;8CACvC,KAACd;oCAAagB,QAAQA;oCAAQiB,UAAUnB;;8CACxC,KAACf;oCAAgBiB,QAAQA;oCAAQiB,UAAUnB;;8CAC3C,KAACpB;oCAAesB,QAAQA;oCAAQiB,UAAUnB;;8CAC1C,KAACnB;oCAAeqB,QAAQA;oCAAQiB,UAAUnB;;;;;;;;;AAQ1D,EAAE;AAEF,eAAeR,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/fields/TiptapEditor/types.d.ts"],"sourcesContent":["export type openAssetHQType = (\n listener: (asset: AssetReturnType) => void,\n file?: File\n) => void;\n\nexport type HitItem = {\n caption: string;\n description: string;\n fileName: string;\n fileSize: number;\n id: string;\n s3key: string;\n source: string;\n title: string;\n type: \"VIDEO\" | \"IMAGE\";\n updated_at: string;\n created_at: string;\n userId: string;\n tags: string[];\n celebrities: string[];\n videos: {\n aspectRatio: string;\n assetId: string;\n averageBitrate: number;\n createdAt: Date;\n downloaded: boolean;\n s3Key: string;\n duration: number;\n fileName: string;\n fileSize: number | null;\n frameRate: number;\n height: number;\n id: string;\n mimeType: string;\n newsAgencyVideoAssetId: string;\n providerSubId: string;\n sampleRate: number;\n updatedAt: Date;\n videoCodec: string;\n width: number;\n }[];\n};\nexport type SelectedAssetInModal = HitItem & {\n selectedVideo?: HitItem[\"videos\"][0];\n};\nexport type AssetReturnType = SelectedAssetInModal & {\n fullUrl: string;\n videoUrl?: string;\n renditions: Record<number, string>;\n playlistUrl?: string;\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/TiptapEditor/types.d.ts"],"sourcesContent":["export type AssetType = \"image\" | \"audio\" | \"video\" | \"others\" | \"all\";\nexport type openAssetHQType = (\n listener: (asset: AssetReturnType) => void,\n file?: File,\n assetType?: AssetType\n) => void;\n\nexport type HitItem = {\n caption: string;\n description: string;\n fileName: string;\n fileSize: number;\n id: string;\n s3key: string;\n source: string;\n title: string;\n type: \"VIDEO\" | \"IMAGE\";\n updated_at: string;\n created_at: string;\n userId: string;\n tags: string[];\n celebrities: string[];\n videos: {\n aspectRatio: string;\n assetId: string;\n averageBitrate: number;\n createdAt: Date;\n downloaded: boolean;\n s3Key: string;\n duration: number;\n fileName: string;\n fileSize: number | null;\n frameRate: number;\n height: number;\n id: string;\n mimeType: string;\n newsAgencyVideoAssetId: string;\n providerSubId: string;\n sampleRate: number;\n updatedAt: Date;\n videoCodec: string;\n width: number;\n }[];\n};\nexport type SelectedAssetInModal = HitItem & {\n selectedVideo?: HitItem[\"videos\"][0];\n};\nexport type AssetReturnType = SelectedAssetInModal & {\n fullUrl: string;\n videoUrl?: string;\n renditions: Record<number, string>;\n playlistUrl?: string;\n};\n"],"names":[],"mappings":"AA+CA,WAKE"}
|