payload-richtext-tiptap 0.0.41 → 0.0.43
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/Components.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/Components.js +3 -3
- package/dist/src/fields/TiptapEditor/Components.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.d.ts +4 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js +223 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.d.ts +5 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js +135 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.d.ts +10 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.js +29 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/CommandButton.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.d.ts +5 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.js +123 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/MenuList.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.d.ts +4 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js +85 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/index.d.ts +2 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/index.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/index.js +3 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/index.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/types.d.ts +22 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/types.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js +3 -0
- package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js +3 -2
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.d.ts +2 -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 +38 -21
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.d.ts +3 -0
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.js +35 -0
- package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js +35 -26
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +3 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.js +23 -16
- package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/index.d.ts +1 -0
- package/dist/src/fields/TiptapEditor/extensions/index.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/index.js +1 -0
- package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts +4 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +3 -2
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.d.ts +14 -0
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js +94 -0
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js.map +1 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts +8 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js +168 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.d.ts +2 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.d.ts.map +1 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.js +3 -0
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/index.js.map +1 -0
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js +29 -17
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js +5 -1
- package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.d.ts +3 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js +4 -3
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/extract.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/extract.js +6 -5
- package/dist/src/fields/TiptapEditor/lib/extract.js.map +1 -1
- package/dist/src/fields/TiptapEditor/types.d.js +3 -0
- package/dist/src/fields/TiptapEditor/types.d.js.map +1 -0
- package/dist/src/styles.css +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { DropdownButton } from "../../features/ui/Dropdown/Dropdown.js";
|
|
4
|
+
import { Surface } from "../../features/ui/Surface.js";
|
|
5
|
+
import { Icon } from "../../features/ui/Icon.js";
|
|
6
|
+
export const MenuList = /*#__PURE__*/ React.forwardRef((props, ref)=>{
|
|
7
|
+
const scrollContainer = useRef(null);
|
|
8
|
+
const activeItem = useRef(null);
|
|
9
|
+
const [selectedGroupIndex, setSelectedGroupIndex] = useState(0);
|
|
10
|
+
const [selectedCommandIndex, setSelectedCommandIndex] = useState(0);
|
|
11
|
+
// Anytime the groups change, i.e. the user types to narrow it down, we want to
|
|
12
|
+
// reset the current selection to the first menu item
|
|
13
|
+
useEffect(()=>{
|
|
14
|
+
setSelectedGroupIndex(0);
|
|
15
|
+
setSelectedCommandIndex(0);
|
|
16
|
+
}, [
|
|
17
|
+
props.items
|
|
18
|
+
]);
|
|
19
|
+
const selectItem = useCallback((groupIndex, commandIndex)=>{
|
|
20
|
+
const command = props.items[groupIndex].commands[commandIndex];
|
|
21
|
+
props.command(command);
|
|
22
|
+
}, [
|
|
23
|
+
props
|
|
24
|
+
]);
|
|
25
|
+
React.useImperativeHandle(ref, ()=>({
|
|
26
|
+
onKeyDown: ({ event })=>{
|
|
27
|
+
if (event.key === "ArrowDown") {
|
|
28
|
+
if (!props.items.length) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const commands = props.items[selectedGroupIndex].commands;
|
|
32
|
+
let newCommandIndex = selectedCommandIndex + 1;
|
|
33
|
+
let newGroupIndex = selectedGroupIndex;
|
|
34
|
+
if (commands.length - 1 < newCommandIndex) {
|
|
35
|
+
newCommandIndex = 0;
|
|
36
|
+
newGroupIndex = selectedGroupIndex + 1;
|
|
37
|
+
}
|
|
38
|
+
if (props.items.length - 1 < newGroupIndex) {
|
|
39
|
+
newGroupIndex = 0;
|
|
40
|
+
}
|
|
41
|
+
setSelectedCommandIndex(newCommandIndex);
|
|
42
|
+
setSelectedGroupIndex(newGroupIndex);
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
if (event.key === "ArrowUp") {
|
|
46
|
+
if (!props.items.length) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
let newCommandIndex = selectedCommandIndex - 1;
|
|
50
|
+
let newGroupIndex = selectedGroupIndex;
|
|
51
|
+
if (newCommandIndex < 0) {
|
|
52
|
+
newGroupIndex = selectedGroupIndex - 1;
|
|
53
|
+
newCommandIndex = props.items[newGroupIndex]?.commands.length - 1 || 0;
|
|
54
|
+
}
|
|
55
|
+
if (newGroupIndex < 0) {
|
|
56
|
+
newGroupIndex = props.items.length - 1;
|
|
57
|
+
newCommandIndex = props.items[newGroupIndex].commands.length - 1;
|
|
58
|
+
}
|
|
59
|
+
setSelectedCommandIndex(newCommandIndex);
|
|
60
|
+
setSelectedGroupIndex(newGroupIndex);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
if (event.key === "Enter") {
|
|
64
|
+
if (!props.items.length || selectedGroupIndex === -1 || selectedCommandIndex === -1) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
selectItem(selectedGroupIndex, selectedCommandIndex);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
useEffect(()=>{
|
|
74
|
+
if (activeItem.current && scrollContainer.current) {
|
|
75
|
+
const offsetTop = activeItem.current.offsetTop;
|
|
76
|
+
const offsetHeight = activeItem.current.offsetHeight;
|
|
77
|
+
scrollContainer.current.scrollTop = offsetTop - offsetHeight;
|
|
78
|
+
}
|
|
79
|
+
}, [
|
|
80
|
+
selectedCommandIndex,
|
|
81
|
+
selectedGroupIndex
|
|
82
|
+
]);
|
|
83
|
+
const createCommandClickHandler = useCallback((groupIndex, commandIndex)=>{
|
|
84
|
+
return ()=>{
|
|
85
|
+
selectItem(groupIndex, commandIndex);
|
|
86
|
+
};
|
|
87
|
+
}, [
|
|
88
|
+
selectItem
|
|
89
|
+
]);
|
|
90
|
+
if (!props.items.length) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
return /*#__PURE__*/ _jsx(Surface, {
|
|
94
|
+
ref: scrollContainer,
|
|
95
|
+
className: "text-black max-h-[min(80vh,24rem)] overflow-auto flex-wrap mb-8 p-2",
|
|
96
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
97
|
+
className: "grid grid-cols-1 gap-0.5",
|
|
98
|
+
children: props.items.map((group, groupIndex)=>/*#__PURE__*/ _jsxs(React.Fragment, {
|
|
99
|
+
children: [
|
|
100
|
+
/*#__PURE__*/ _jsx("div", {
|
|
101
|
+
className: "text-neutral-500 text-[0.65rem] col-[1/-1] mx-2 mt-4 font-semibold tracking-wider select-none uppercase first:mt-0.5",
|
|
102
|
+
children: group.title
|
|
103
|
+
}, `${group.title}`),
|
|
104
|
+
group.commands.map((command, commandIndex)=>/*#__PURE__*/ _jsxs(DropdownButton, {
|
|
105
|
+
isActive: selectedGroupIndex === groupIndex && selectedCommandIndex === commandIndex,
|
|
106
|
+
onClick: createCommandClickHandler(groupIndex, commandIndex),
|
|
107
|
+
children: [
|
|
108
|
+
/*#__PURE__*/ _jsx(Icon, {
|
|
109
|
+
icon: command.icon,
|
|
110
|
+
className: "mr-1"
|
|
111
|
+
}),
|
|
112
|
+
command.label
|
|
113
|
+
]
|
|
114
|
+
}, `${command.label}`))
|
|
115
|
+
]
|
|
116
|
+
}, `${group.title}-wrapper`))
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
MenuList.displayName = "MenuList";
|
|
121
|
+
export default MenuList;
|
|
122
|
+
|
|
123
|
+
//# sourceMappingURL=MenuList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/MenuList.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { DropdownButton } from \"../../features/ui/Dropdown/Dropdown.js\";\nimport { Surface } from \"../../features/ui/Surface.js\";\nimport { Command, MenuListProps } from \"./types.js\";\n\nimport { Icon } from \"../../features/ui/Icon.js\";\n\nexport const MenuList = React.forwardRef((props: MenuListProps, ref) => {\n const scrollContainer = useRef<HTMLDivElement>(null);\n const activeItem = useRef<HTMLButtonElement>(null);\n const [selectedGroupIndex, setSelectedGroupIndex] = useState(0);\n const [selectedCommandIndex, setSelectedCommandIndex] = useState(0);\n\n // Anytime the groups change, i.e. the user types to narrow it down, we want to\n // reset the current selection to the first menu item\n useEffect(() => {\n setSelectedGroupIndex(0);\n setSelectedCommandIndex(0);\n }, [props.items]);\n\n const selectItem = useCallback(\n (groupIndex: number, commandIndex: number) => {\n const command = props.items[groupIndex].commands[commandIndex];\n props.command(command);\n },\n [props]\n );\n\n React.useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }: { event: React.KeyboardEvent }) => {\n if (event.key === \"ArrowDown\") {\n if (!props.items.length) {\n return false;\n }\n\n const commands = props.items[selectedGroupIndex].commands;\n\n let newCommandIndex = selectedCommandIndex + 1;\n let newGroupIndex = selectedGroupIndex;\n\n if (commands.length - 1 < newCommandIndex) {\n newCommandIndex = 0;\n newGroupIndex = selectedGroupIndex + 1;\n }\n\n if (props.items.length - 1 < newGroupIndex) {\n newGroupIndex = 0;\n }\n\n setSelectedCommandIndex(newCommandIndex);\n setSelectedGroupIndex(newGroupIndex);\n\n return true;\n }\n\n if (event.key === \"ArrowUp\") {\n if (!props.items.length) {\n return false;\n }\n\n let newCommandIndex = selectedCommandIndex - 1;\n let newGroupIndex = selectedGroupIndex;\n\n if (newCommandIndex < 0) {\n newGroupIndex = selectedGroupIndex - 1;\n newCommandIndex =\n props.items[newGroupIndex]?.commands.length - 1 || 0;\n }\n\n if (newGroupIndex < 0) {\n newGroupIndex = props.items.length - 1;\n newCommandIndex = props.items[newGroupIndex].commands.length - 1;\n }\n\n setSelectedCommandIndex(newCommandIndex);\n setSelectedGroupIndex(newGroupIndex);\n\n return true;\n }\n\n if (event.key === \"Enter\") {\n if (\n !props.items.length ||\n selectedGroupIndex === -1 ||\n selectedCommandIndex === -1\n ) {\n return false;\n }\n\n selectItem(selectedGroupIndex, selectedCommandIndex);\n\n return true;\n }\n\n return false;\n },\n }));\n\n useEffect(() => {\n if (activeItem.current && scrollContainer.current) {\n const offsetTop = activeItem.current.offsetTop;\n const offsetHeight = activeItem.current.offsetHeight;\n\n scrollContainer.current.scrollTop = offsetTop - offsetHeight;\n }\n }, [selectedCommandIndex, selectedGroupIndex]);\n\n const createCommandClickHandler = useCallback(\n (groupIndex: number, commandIndex: number) => {\n return () => {\n selectItem(groupIndex, commandIndex);\n };\n },\n [selectItem]\n );\n\n if (!props.items.length) {\n return null;\n }\n\n return (\n <Surface\n ref={scrollContainer}\n className=\"text-black max-h-[min(80vh,24rem)] overflow-auto flex-wrap mb-8 p-2\"\n >\n <div className=\"grid grid-cols-1 gap-0.5\">\n {props.items.map((group, groupIndex: number) => (\n <React.Fragment key={`${group.title}-wrapper`}>\n <div\n className=\"text-neutral-500 text-[0.65rem] col-[1/-1] mx-2 mt-4 font-semibold tracking-wider select-none uppercase first:mt-0.5\"\n key={`${group.title}`}\n >\n {group.title}\n </div>\n {group.commands.map((command: Command, commandIndex: number) => (\n <DropdownButton\n key={`${command.label}`}\n isActive={\n selectedGroupIndex === groupIndex &&\n selectedCommandIndex === commandIndex\n }\n onClick={createCommandClickHandler(groupIndex, commandIndex)}\n >\n <Icon icon={command.icon} className=\"mr-1\" />\n {command.label}\n </DropdownButton>\n ))}\n </React.Fragment>\n ))}\n </div>\n </Surface>\n );\n});\n\nMenuList.displayName = \"MenuList\";\n\nexport default MenuList;\n"],"names":["React","useCallback","useEffect","useRef","useState","DropdownButton","Surface","Icon","MenuList","forwardRef","props","ref","scrollContainer","activeItem","selectedGroupIndex","setSelectedGroupIndex","selectedCommandIndex","setSelectedCommandIndex","items","selectItem","groupIndex","commandIndex","command","commands","useImperativeHandle","onKeyDown","event","key","length","newCommandIndex","newGroupIndex","current","offsetTop","offsetHeight","scrollTop","createCommandClickHandler","className","div","map","group","Fragment","title","isActive","onClick","icon","label","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/groups.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,eAAO,MAAM,MAAM,EAAE,KAAK,EAqFzB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Pen } from "lucide-react";
|
|
2
|
+
export const GROUPS = [
|
|
3
|
+
{
|
|
4
|
+
name: "draft",
|
|
5
|
+
title: "Draft with AI",
|
|
6
|
+
commands: [
|
|
7
|
+
{
|
|
8
|
+
name: "brainstorm",
|
|
9
|
+
label: "Brainstorm Ideas...",
|
|
10
|
+
description: "Brainstorm ideas on ",
|
|
11
|
+
icon: Pen,
|
|
12
|
+
action: (editor)=>{
|
|
13
|
+
// "Brainstorm ideas on "
|
|
14
|
+
return "Brainstorm ideas on ";
|
|
15
|
+
// editor.chain().focus().setHeading({ level: 1 }).run();
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "blog",
|
|
20
|
+
label: "Blog post...",
|
|
21
|
+
description: "Blog post",
|
|
22
|
+
action: (editor)=>{
|
|
23
|
+
return "Write a blog post about ";
|
|
24
|
+
// "Write a blog post about "
|
|
25
|
+
// editor.chain().focus().setHeading({ level: 1 }).run();
|
|
26
|
+
},
|
|
27
|
+
icon: Pen
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "outline",
|
|
31
|
+
label: "Outline...",
|
|
32
|
+
description: "Outline",
|
|
33
|
+
action: (editor)=>{
|
|
34
|
+
return "Write an outline about ";
|
|
35
|
+
// editor.chain().focus().setHeading({ level: 1 }).run();
|
|
36
|
+
},
|
|
37
|
+
icon: Pen
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "social",
|
|
41
|
+
label: "Social Media post...",
|
|
42
|
+
description: "Social Media post",
|
|
43
|
+
icon: Pen,
|
|
44
|
+
action: (editor)=>{
|
|
45
|
+
return;
|
|
46
|
+
"Write a social media post about ";
|
|
47
|
+
// editor.chain().focus().setHeading({ level: 1 }).run();
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "press",
|
|
52
|
+
label: "Press release...",
|
|
53
|
+
description: "Press release",
|
|
54
|
+
icon: Pen,
|
|
55
|
+
action: (editor)=>{
|
|
56
|
+
return "Write a press release about ";
|
|
57
|
+
// editor.chain().focus().setHeading({ level: 1 }).run();
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "creative",
|
|
62
|
+
label: "Creative Story...",
|
|
63
|
+
description: "Creative Story",
|
|
64
|
+
action: (editor)=>{
|
|
65
|
+
return "Write a creative story about ";
|
|
66
|
+
// editor.chain().focus().setHeading({ level: 1 }).run();
|
|
67
|
+
},
|
|
68
|
+
icon: Pen
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "essay",
|
|
72
|
+
label: "Essay...",
|
|
73
|
+
description: "Essay",
|
|
74
|
+
action: (editor)=>{
|
|
75
|
+
return "Write an essay about ";
|
|
76
|
+
// editor.chain().focus().setHeading({ level: 1 }).run();
|
|
77
|
+
},
|
|
78
|
+
icon: Pen
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
];
|
|
83
|
+
export default GROUPS;
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/groups.ts"],"sourcesContent":["import {\n Book,\n Columns2,\n Facebook,\n Heading1,\n Heading2,\n Heading3,\n Image,\n Instagram,\n Link,\n Linkedin,\n List,\n ListOrdered,\n ListTodo,\n Minus,\n Music,\n Pen,\n Quote,\n SquareCode,\n Table,\n Twitch,\n Twitter,\n Youtube,\n} from \"lucide-react\";\nimport { Group } from \"./types.js\";\n\nexport const GROUPS: Group[] = [\n {\n name: \"draft\",\n title: \"Draft with AI\",\n commands: [\n {\n name: \"brainstorm\",\n label: \"Brainstorm Ideas...\",\n description: \"Brainstorm ideas on \",\n icon: Pen,\n action: (editor) => {\n // \"Brainstorm ideas on \"\n return \"Brainstorm ideas on \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"blog\",\n label: \"Blog post...\",\n description: \"Blog post\",\n action: (editor) => {\n return \"Write a blog post about \";\n\n // \"Write a blog post about \"\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n {\n name: \"outline\",\n label: \"Outline...\",\n description: \"Outline\",\n\n action: (editor) => {\n return \"Write an outline about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n\n {\n name: \"social\",\n label: \"Social Media post...\",\n description: \"Social Media post\",\n\n icon: Pen,\n action: (editor) => {\n return;\n (\"Write a social media post about \");\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"press\",\n label: \"Press release...\",\n description: \"Press release\",\n\n icon: Pen,\n action: (editor) => {\n return \"Write a press release about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n },\n {\n name: \"creative\",\n label: \"Creative Story...\",\n description: \"Creative Story\",\n action: (editor) => {\n return \"Write a creative story about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n {\n name: \"essay\",\n label: \"Essay...\",\n description: \"Essay\",\n action: (editor) => {\n return \"Write an essay about \";\n // editor.chain().focus().setHeading({ level: 1 }).run();\n },\n icon: Pen,\n },\n ],\n },\n];\n\nexport default GROUPS;\n"],"names":["Pen","GROUPS","name","title","commands","label","description","icon","action","editor"],"mappings":"AAAA,SAgBEA,GAAG,QAOE,eAAe;AAGtB,OAAO,MAAMC,SAAkB;IAC7B;QACEC,MAAM;QACNC,OAAO;QACPC,UAAU;YACR;gBACEF,MAAM;gBACNG,OAAO;gBACPC,aAAa;gBACbC,MAAMP;gBACNQ,QAAQ,CAACC;oBACP,0BAA0B;oBAC1B,OAAO;gBACP,yDAAyD;gBAC3D;YACF;YACA;gBACEP,MAAM;gBACNG,OAAO;gBACPC,aAAa;gBACbE,QAAQ,CAACC;oBACP,OAAO;gBAEP,8BAA8B;gBAC9B,yDAAyD;gBAC3D;gBACAF,MAAMP;YACR;YACA;gBACEE,MAAM;gBACNG,OAAO;gBACPC,aAAa;gBAEbE,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;gBACAF,MAAMP;YACR;YAEA;gBACEE,MAAM;gBACNG,OAAO;gBACPC,aAAa;gBAEbC,MAAMP;gBACNQ,QAAQ,CAACC;oBACP;oBACC;gBACD,yDAAyD;gBAC3D;YACF;YACA;gBACEP,MAAM;gBACNG,OAAO;gBACPC,aAAa;gBAEbC,MAAMP;gBACNQ,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;YACF;YACA;gBACEP,MAAM;gBACNG,OAAO;gBACPC,aAAa;gBACbE,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;gBACAF,MAAMP;YACR;YACA;gBACEE,MAAM;gBACNG,OAAO;gBACPC,aAAa;gBACbE,QAAQ,CAACC;oBACP,OAAO;gBACP,yDAAyD;gBAC3D;gBACAF,MAAMP;YACR;SACD;IACH;CACD,CAAC;AAEF,eAAeC,OAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/index.ts"],"sourcesContent":["export * from \"./AICommand.js\";\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Editor } from "@tiptap/core";
|
|
2
|
+
import { LucideIcon } from "lucide-react";
|
|
3
|
+
export interface Group {
|
|
4
|
+
name: string;
|
|
5
|
+
title: string;
|
|
6
|
+
commands: Command[];
|
|
7
|
+
}
|
|
8
|
+
export interface Command {
|
|
9
|
+
name: string;
|
|
10
|
+
label: string;
|
|
11
|
+
description: string;
|
|
12
|
+
aliases?: string[];
|
|
13
|
+
icon: LucideIcon;
|
|
14
|
+
action: (editor: Editor) => any;
|
|
15
|
+
shouldBeHidden?: (editor: Editor) => boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface AIMenuListProps {
|
|
18
|
+
editor: Editor;
|
|
19
|
+
items: Group[];
|
|
20
|
+
command: (command: Command) => void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,CAAC;IAChC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/types.ts"],"sourcesContent":["import { Editor } from \"@tiptap/core\";\nimport { LucideIcon } from \"lucide-react\";\n\nexport interface Group {\n name: string;\n title: string;\n commands: Command[];\n}\n\nexport interface Command {\n name: string;\n label: string;\n description: string;\n aliases?: string[];\n icon: LucideIcon;\n action: (editor: Editor) => any;\n shouldBeHidden?: (editor: Editor) => boolean;\n}\n\nexport interface AIMenuListProps {\n editor: Editor;\n items: Group[];\n command: (command: Command) => void;\n}\n"],"names":[],"mappings":"AAmBA,WAIC"}
|
|
@@ -1 +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;AAI5D,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,WAAW,EAAE;YACX,cAAc,EAAE,MAAM,UAAU,CAAC;SAClC,CAAC;KACH;CACF;AAED,eAAO,MAAM,WAAW,gBAyCtB,CAAC;AAEH,eAAe,WAAW,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Node, ReactNodeViewRenderer } from "@tiptap/react";
|
|
2
|
-
import {
|
|
2
|
+
import { ImageUploadBuilder } from "./view/ImageUpload.js";
|
|
3
3
|
export const ImageUpload = Node.create({
|
|
4
4
|
name: "imageUpload",
|
|
5
5
|
isolating: true,
|
|
@@ -29,7 +29,8 @@ export const ImageUpload = Node.create({
|
|
|
29
29
|
};
|
|
30
30
|
},
|
|
31
31
|
addNodeView () {
|
|
32
|
-
|
|
32
|
+
const openAssetHQHandler = this.options.openAssetHQHandler;
|
|
33
|
+
return ReactNodeViewRenderer(ImageUploadBuilder(openAssetHQHandler));
|
|
33
34
|
}
|
|
34
35
|
});
|
|
35
36
|
export default ImageUpload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/ImageUpload.ts"],"sourcesContent":["import { Node, ReactNodeViewRenderer } from \"@tiptap/react\";\nimport {
|
|
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 }) =>\n commands.insertContent(`<div data-type=\"${this.name}\"></div>`),\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","addCommands","setImageUpload","commands","insertContent","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,gBACE,IACA,CAAC,EAAEC,QAAQ,EAAE,GACXA,SAASC,aAAa,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAACb,IAAI,CAAC,QAAQ,CAAC;QACnE;IACF;IAEAc;QACE,MAAMC,qBAAqB,IAAI,CAACC,OAAO,CACpCD,kBAAkB;QACrB,OAAOnB,sBAAsBC,mBAAmBkB;IAClD;AACF,GAAG;AAEH,eAAejB,YAAY"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Editor } from "@tiptap/react";
|
|
2
|
-
|
|
2
|
+
import { openAssetHQType } from "src/fields/TiptapEditor/types.js";
|
|
3
|
+
export declare const ImageUploadBuilder: (openAssetHQHandler: openAssetHQType) => ({ getPos, editor, }: {
|
|
3
4
|
getPos: () => number;
|
|
4
5
|
editor: Editor;
|
|
5
6
|
}) => import("react").JSX.Element;
|
|
6
|
-
export default ImageUpload;
|
|
7
7
|
//# 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;
|
|
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;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,eAAO,MAAM,kBAAkB,uBAAwB,eAAe,2BAIjE;IACD,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,gCAiEF,CAAC"}
|
|
@@ -1,27 +1,44 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { NodeViewWrapper } from "@tiptap/react";
|
|
3
3
|
import { useCallback } from "react";
|
|
4
|
-
export const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
4
|
+
export const ImageUploadBuilder = (openAssetHQHandler)=>{
|
|
5
|
+
const ImageUpload = ({ getPos, editor })=>{
|
|
6
|
+
const onUpload = useCallback((url)=>{
|
|
7
|
+
if (url) {
|
|
8
|
+
editor.chain().focus().setImageBlock({
|
|
9
|
+
src: url
|
|
10
|
+
}).deleteRange({
|
|
11
|
+
from: getPos(),
|
|
12
|
+
to: getPos()
|
|
13
|
+
}).focus().run();
|
|
14
|
+
}
|
|
15
|
+
}, [
|
|
16
|
+
getPos,
|
|
17
|
+
editor
|
|
18
|
+
]);
|
|
19
|
+
return /*#__PURE__*/ _jsx(NodeViewWrapper, {
|
|
20
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
21
|
+
className: "p-0 m-0",
|
|
22
|
+
"data-drag-handle": true,
|
|
23
|
+
children: /*#__PURE__*/ _jsx("a", {
|
|
24
|
+
href: "#",
|
|
25
|
+
style: {
|
|
26
|
+
padding: 5,
|
|
27
|
+
borderRadius: 5,
|
|
28
|
+
backgroundColor: "blue",
|
|
29
|
+
color: "white",
|
|
30
|
+
cursor: "pointer"
|
|
31
|
+
},
|
|
32
|
+
onClick: (e)=>{
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
openAssetHQHandler(onUpload);
|
|
35
|
+
},
|
|
36
|
+
children: "Upload Image"
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
return ImageUpload;
|
|
24
42
|
};
|
|
25
|
-
export default ImageUpload;
|
|
26
43
|
|
|
27
44
|
//# sourceMappingURL=ImageUpload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["import { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["import { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\nimport { openAssetHQType } 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 onUpload = useCallback(\n (url: string) => {\n if (url) {\n editor\n .chain()\n .focus()\n .setImageBlock({ src: url })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n }\n },\n [getPos, editor]\n );\n\n return (\n <NodeViewWrapper>\n <div className=\"p-0 m-0\" data-drag-handle>\n {/* <RenderFields\n fieldMap={[\n {\n name: \"media\",\n type: \"upload\",\n cellComponentProps: {\n name: \"media\",\n schemaPath: \"media\",\n },\n fieldComponentProps: {},\n fieldIsPresentational: true,\n isFieldAffectingData: false,\n localized: false,\n },\n ]}\n path=\"media\"\n readOnly={false}\n schemaPath=\"\"\n // fieldTypes={fieldTypes}\n // fields={sidebarFields}\n // permissions={permissions.fields}\n // readOnly={!hasSavePermission}\n /> */}\n <a\n href=\"#\"\n style={{\n padding: 5,\n borderRadius: 5,\n backgroundColor: \"blue\",\n color: \"white\",\n cursor: \"pointer\",\n }}\n onClick={(e) => {\n e.preventDefault();\n openAssetHQHandler(onUpload);\n }}\n >\n Upload Image\n </a>\n {/* <ImageUploader onUpload={onUpload} /> */}\n </div>\n </NodeViewWrapper>\n );\n };\n\n return ImageUpload;\n};\n"],"names":["NodeViewWrapper","useCallback","ImageUploadBuilder","openAssetHQHandler","ImageUpload","getPos","editor","onUpload","url","chain","focus","setImageBlock","src","deleteRange","from","to","run","div","className","data-drag-handle","a","href","style","padding","borderRadius","backgroundColor","color","cursor","onClick","e","preventDefault"],"mappings":";AAAA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,SAASC,WAAW,QAAQ,QAAQ;AAEpC,OAAO,MAAMC,qBAAqB,CAACC;IACjC,MAAMC,cAAc,CAAC,EACnBC,MAAM,EACNC,MAAM,EAIP;QACC,MAAMC,WAAWN,YACf,CAACO;YACC,IAAIA,KAAK;gBACPF,OACGG,KAAK,GACLC,KAAK,GACLC,aAAa,CAAC;oBAAEC,KAAKJ;gBAAI,GACzBK,WAAW,CAAC;oBAAEC,MAAMT;oBAAUU,IAAIV;gBAAS,GAC3CK,KAAK,GACLM,GAAG;YACR;QACF,GACA;YAACX;YAAQC;SAAO;QAGlB,qBACE,KAACN;sBACC,cAAA,KAACiB;gBAAIC,WAAU;gBAAUC,kBAAgB;0BAwBvC,cAAA,KAACC;oBACCC,MAAK;oBACLC,OAAO;wBACLC,SAAS;wBACTC,cAAc;wBACdC,iBAAiB;wBACjBC,OAAO;wBACPC,QAAQ;oBACV;oBACAC,SAAS,CAACC;wBACRA,EAAEC,cAAc;wBAChB3B,mBAAmBI;oBACrB;8BACD;;;;IAOT;IAEA,OAAOH;AACT,EAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIEditorParagraph.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.tsx"],"names":[],"mappings":";AAEA,wBAgCE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { NodeViewContent, NodeViewWrapper } from "@tiptap/react";
|
|
3
|
+
export default ((props)=>{
|
|
4
|
+
console.log("PROPS", props);
|
|
5
|
+
return /*#__PURE__*/ _jsx(NodeViewWrapper, {
|
|
6
|
+
onClick: ()=>{
|
|
7
|
+
props?.editor?.commands?.setNodeSelection(props.getPos());
|
|
8
|
+
},
|
|
9
|
+
children: /*#__PURE__*/ _jsx(NodeViewContent, {
|
|
10
|
+
contentEditable: "false",
|
|
11
|
+
children: props?.node?.type?.spec?.draggable ? /*#__PURE__*/ _jsx("div", {
|
|
12
|
+
draggable: "true",
|
|
13
|
+
"data-drag-handle": "",
|
|
14
|
+
style: {
|
|
15
|
+
width: "100%"
|
|
16
|
+
},
|
|
17
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
18
|
+
className: "w-full bg-zinc-100 py-8 px-6 flex items-center justify-center gap-2 socialMediaCard",
|
|
19
|
+
draggable: "true",
|
|
20
|
+
"data-drag-handle": "",
|
|
21
|
+
contentEditable: "false",
|
|
22
|
+
children: /*#__PURE__*/ _jsx("p", {
|
|
23
|
+
className: "w-full flex items-center justify-start mt-0",
|
|
24
|
+
style: {
|
|
25
|
+
marginTop: 0
|
|
26
|
+
},
|
|
27
|
+
children: "TEEEEE"
|
|
28
|
+
})
|
|
29
|
+
})
|
|
30
|
+
}) : null
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=AIEditorParagraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\n\nexport default (props) => {\n console.log(\"PROPS\", props);\n return (\n <NodeViewWrapper\n onClick={() => {\n props?.editor?.commands?.setNodeSelection(props.getPos());\n }}\n >\n <NodeViewContent contentEditable=\"false\">\n {props?.node?.type?.spec?.draggable ? (\n <div draggable=\"true\" data-drag-handle=\"\" style={{ width: \"100%\" }}>\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 <p\n className=\"w-full flex items-center justify-start mt-0\"\n style={{\n marginTop: 0,\n }}\n >\n TEEEEE\n {/* {text} */}\n </p>\n </div>\n </div>\n ) : null}\n </NodeViewContent>\n </NodeViewWrapper>\n );\n};\n"],"names":["NodeViewContent","NodeViewWrapper","props","console","log","onClick","editor","commands","setNodeSelection","getPos","contentEditable","node","type","spec","draggable","div","data-drag-handle","style","width","className","p","marginTop"],"mappings":";AAAA,SAASA,eAAe,EAAEC,eAAe,QAAQ,gBAAgB;AAEjE,eAAe,CAAA,CAACC;IACdC,QAAQC,GAAG,CAAC,SAASF;IACrB,qBACE,KAACD;QACCI,SAAS;YACPH,OAAOI,QAAQC,UAAUC,iBAAiBN,MAAMO,MAAM;QACxD;kBAEA,cAAA,KAACT;YAAgBU,iBAAgB;sBAC9BR,OAAOS,MAAMC,MAAMC,MAAMC,0BACxB,KAACC;gBAAID,WAAU;gBAAOE,oBAAiB;gBAAGC,OAAO;oBAAEC,OAAO;gBAAO;0BAC/D,cAAA,KAACH;oBACCI,WAAU;oBACVL,WAAU;oBACVE,oBAAiB;oBACjBN,iBAAgB;8BAEhB,cAAA,KAACU;wBACCD,WAAU;wBACVF,OAAO;4BACLI,WAAW;wBACb;kCACD;;;iBAMH;;;AAIZ,CAAA,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuList.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/MenuList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,EAAW,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuList.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/SlashCommand/MenuList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,EAAW,aAAa,EAAE,MAAM,YAAY,CAAC;AAKpD,eAAO,MAAM,QAAQ,+EAoJnB,CAAC;AAIH,eAAe,QAAQ,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
3
3
|
import { DropdownButton } from "../../features/ui/Dropdown/Dropdown.js";
|
|
4
4
|
import { Surface } from "../../features/ui/Surface.js";
|
|
5
5
|
import { Icon } from "../../features/ui/Icon.js";
|
|
6
|
+
import { AICommandPanel } from "../../features/panels/AICommandPanel/AICommandPanel.js";
|
|
6
7
|
export const MenuList = /*#__PURE__*/ React.forwardRef((props, ref)=>{
|
|
7
8
|
const scrollContainer = useRef(null);
|
|
8
9
|
const activeItem = useRef(null);
|
|
@@ -90,31 +91,39 @@ export const MenuList = /*#__PURE__*/ React.forwardRef((props, ref)=>{
|
|
|
90
91
|
if (!props.items.length) {
|
|
91
92
|
return null;
|
|
92
93
|
}
|
|
93
|
-
return /*#__PURE__*/
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
94
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
95
|
+
children: [
|
|
96
|
+
/*#__PURE__*/ _jsx(AICommandPanel, {
|
|
97
|
+
editor: props.editor,
|
|
98
|
+
onOpenChange: ()=>{}
|
|
99
|
+
}),
|
|
100
|
+
/*#__PURE__*/ _jsx(Surface, {
|
|
101
|
+
ref: scrollContainer,
|
|
102
|
+
className: "text-black max-h-[min(80vh,24rem)] overflow-auto flex-wrap mb-8 p-2",
|
|
103
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
104
|
+
className: "grid grid-cols-1 gap-0.5",
|
|
105
|
+
children: props.items.map((group, groupIndex)=>/*#__PURE__*/ _jsxs(React.Fragment, {
|
|
106
|
+
children: [
|
|
107
|
+
/*#__PURE__*/ _jsx("div", {
|
|
108
|
+
className: "text-neutral-500 text-[0.65rem] col-[1/-1] mx-2 mt-4 font-semibold tracking-wider select-none uppercase first:mt-0.5",
|
|
109
|
+
children: group.title
|
|
110
|
+
}, `${group.title}`),
|
|
111
|
+
group.commands.map((command, commandIndex)=>/*#__PURE__*/ _jsxs(DropdownButton, {
|
|
112
|
+
isActive: selectedGroupIndex === groupIndex && selectedCommandIndex === commandIndex,
|
|
113
|
+
onClick: createCommandClickHandler(groupIndex, commandIndex),
|
|
114
|
+
children: [
|
|
115
|
+
/*#__PURE__*/ _jsx(Icon, {
|
|
116
|
+
icon: command.icon,
|
|
117
|
+
className: "mr-1"
|
|
118
|
+
}),
|
|
119
|
+
command.label
|
|
120
|
+
]
|
|
121
|
+
}, `${command.label}`))
|
|
122
|
+
]
|
|
123
|
+
}, `${group.title}-wrapper`))
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
]
|
|
118
127
|
});
|
|
119
128
|
});
|
|
120
129
|
MenuList.displayName = "MenuList";
|