payload-richtext-tiptap 0.0.94 → 0.0.95
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/features/menus/TextMenu/components/ai-completion-command.js +3 -3
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js +3 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js +2 -2
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.d.ts +1 -0
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.js +3 -0
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Check, TextQuote, TrashIcon } from "lucide-react";
|
|
3
3
|
import { Toolbar } from "../../../ui/Toolbar.js";
|
|
4
|
-
import { formatCompletion } from "../../../panels/AIEditorPanel/utils.js";
|
|
4
|
+
import { checkJsonCompletion, formatCompletion } from "../../../panels/AIEditorPanel/utils.js";
|
|
5
5
|
const AICompletionCommands = ({ completion, onDiscard, editor })=>{
|
|
6
6
|
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
7
7
|
children: [
|
|
@@ -13,7 +13,7 @@ const AICompletionCommands = ({ completion, onDiscard, editor })=>{
|
|
|
13
13
|
editor.chain().focus().insertContentAt({
|
|
14
14
|
from: selection.from,
|
|
15
15
|
to: selection.to
|
|
16
|
-
}, completion
|
|
16
|
+
}, checkJsonCompletion(completion) ? formatCompletion(completion) : completion).run();
|
|
17
17
|
},
|
|
18
18
|
children: [
|
|
19
19
|
/*#__PURE__*/ _jsx(Check, {
|
|
@@ -27,7 +27,7 @@ const AICompletionCommands = ({ completion, onDiscard, editor })=>{
|
|
|
27
27
|
value: "insert",
|
|
28
28
|
onClick: ()=>{
|
|
29
29
|
const selection = editor.view.state.selection;
|
|
30
|
-
editor.chain().focus().insertContentAt(selection.to + 1, completion
|
|
30
|
+
editor.chain().focus().insertContentAt(selection.to + 1, checkJsonCompletion(completion) ? formatCompletion(completion) : completion).run();
|
|
31
31
|
},
|
|
32
32
|
children: [
|
|
33
33
|
/*#__PURE__*/ _jsx(TextQuote, {
|
package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.tsx"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { Check, TextQuote, TrashIcon } from \"lucide-react\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\nimport { formatCompletion } from \"../../../panels/AIEditorPanel/utils.js\";\n\nconst AICompletionCommands = ({\n completion,\n onDiscard,\n editor,\n}: {\n editor: Editor;\n completion: string;\n onDiscard: () => void;\n}) => {\n return (\n <>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n value=\"replace\"\n onClick={() => {\n const selection = editor.view.state.selection;\n\n editor\n .chain()\n .focus()\n .insertContentAt(\n {\n from: selection.from,\n to: selection.to,\n },\n completion
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-completion-command.tsx"],"sourcesContent":["import { Editor } from \"@tiptap/react\";\nimport { Check, TextQuote, TrashIcon } from \"lucide-react\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\nimport { checkJsonCompletion, formatCompletion } from \"../../../panels/AIEditorPanel/utils.js\";\n\nconst AICompletionCommands = ({\n completion,\n onDiscard,\n editor,\n}: {\n editor: Editor;\n completion: string;\n onDiscard: () => void;\n}) => {\n return (\n <>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n value=\"replace\"\n onClick={() => {\n const selection = editor.view.state.selection;\n\n editor\n .chain()\n .focus()\n .insertContentAt(\n {\n from: selection.from,\n to: selection.to,\n },\n checkJsonCompletion(completion) ? formatCompletion(completion) : completion\n )\n .run();\n }}\n >\n <Check className=\"h-4 w-4 text-muted-foreground\" />\n Replace selection\n </Toolbar.Button>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start\"\n value=\"insert\"\n onClick={() => {\n const selection = editor.view.state.selection;\n editor\n .chain()\n .focus()\n .insertContentAt(selection.to + 1,\n checkJsonCompletion(completion) ? formatCompletion(completion) : completion\n )\n .run();\n }}\n >\n <TextQuote className=\"h-4 w-4 text-muted-foreground\" />\n Insert below\n </Toolbar.Button>\n <Toolbar.Divider horizontal />\n\n <Toolbar.Button\n onClick={onDiscard}\n value=\"thrash\"\n className=\"w-full text-red-500 bg-red-500 dark:text-red-500 hover:bg-red-500 dark:hover:text-red-500 dark:hover:bg-red-500 bg-opacity-10 hover:bg-opacity-20 dark:hover:bg-opacity-20\"\n >\n <TrashIcon className=\"h-4 w-4 text-muted-foreground\" />\n Discard\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AICompletionCommands;\n"],"names":["Check","TextQuote","TrashIcon","Toolbar","checkJsonCompletion","formatCompletion","AICompletionCommands","completion","onDiscard","editor","Button","className","value","onClick","selection","view","state","chain","focus","insertContentAt","from","to","run","Divider","horizontal"],"mappings":";AACA,SAASA,KAAK,EAAEC,SAAS,EAAEC,SAAS,QAAQ,eAAe;AAC3D,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ,yCAAyC;AAE/F,MAAMC,uBAAuB,CAAC,EAC5BC,UAAU,EACVC,SAAS,EACTC,MAAM,EAKP;IACC,qBACE;;0BACE,MAACN,QAAQO,MAAM;gBACbC,WAAU;gBACVC,OAAM;gBACNC,SAAS;oBACP,MAAMC,YAAYL,OAAOM,IAAI,CAACC,KAAK,CAACF,SAAS;oBAE7CL,OACGQ,KAAK,GACLC,KAAK,GACLC,eAAe,CACd;wBACEC,MAAMN,UAAUM,IAAI;wBACpBC,IAAIP,UAAUO,EAAE;oBAClB,GACAjB,oBAAoBG,cAAcF,iBAAiBE,cAAcA,YAElEe,GAAG;gBACR;;kCAEA,KAACtB;wBAAMW,WAAU;;oBAAkC;;;0BAGrD,MAACR,QAAQO,MAAM;gBACbC,WAAU;gBACVC,OAAM;gBACNC,SAAS;oBACP,MAAMC,YAAYL,OAAOM,IAAI,CAACC,KAAK,CAACF,SAAS;oBAC7CL,OACGQ,KAAK,GACLC,KAAK,GACLC,eAAe,CAACL,UAAUO,EAAE,GAAG,GAC9BjB,oBAAoBG,cAAcF,iBAAiBE,cAAcA,YAElEe,GAAG;gBACR;;kCAEA,KAACrB;wBAAUU,WAAU;;oBAAkC;;;0BAGzD,KAACR,QAAQoB,OAAO;gBAACC,UAAU;;0BAE3B,MAACrB,QAAQO,MAAM;gBACbG,SAASL;gBACTI,OAAM;gBACND,WAAU;;kCAEV,KAACT;wBAAUS,WAAU;;oBAAkC;;;;;AAK/D;AAEA,eAAeL,qBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-selector-commands.d.ts","sourceRoot":"","sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAwDvC,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CACR,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,KAC7D,IAAI,CAAC;CACX;AAED,QAAA,MAAM,kBAAkB,oCAIrB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ai-selector-commands.d.ts","sourceRoot":"","sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAwDvC,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CACR,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,KAC7D,IAAI,CAAC;CACX;AAED,QAAA,MAAM,kBAAkB,oCAIrB,uBAAuB,gCA8FzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js
CHANGED
|
@@ -136,12 +136,14 @@ const AISelectorCommands = ({ messages, onSelect, editor })=>{
|
|
|
136
136
|
}),
|
|
137
137
|
/*#__PURE__*/ _jsxs(Toolbar.Button, {
|
|
138
138
|
onClick: ()=>{
|
|
139
|
+
const editorSelection = editor.state.selection.content().content.toJSON();
|
|
139
140
|
const text = messages ? messages : getPrevText(editor, {
|
|
140
141
|
chars: 5000
|
|
141
142
|
});
|
|
142
143
|
onSelect(text, {
|
|
143
144
|
option: "continue",
|
|
144
|
-
language: editor?.storage?.aiCommand?.language ?? code ?? "en"
|
|
145
|
+
language: editor?.storage?.aiCommand?.language ?? code ?? "en",
|
|
146
|
+
selection: editorSelection
|
|
145
147
|
});
|
|
146
148
|
},
|
|
147
149
|
value: "continue",
|
package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.tsx"],"sourcesContent":["import { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { Editor } from \"@tiptap/react\";\nimport {\n ArrowDownWideNarrow,\n CheckCheck,\n ChevronDown,\n Languages,\n RefreshCcwDot,\n StepForward,\n WrapText,\n} from \"lucide-react\";\nimport { languages } from \"../../../../lib/constants.js\";\nimport { getPrevText } from \"../../../../lib/utils/index.js\";\nimport { DropdownCategoryTitle } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Surface } from \"../../../ui/Surface.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\nimport i18next from \"i18next\";\nconst options = [\n // {\n // value: 'translate',\n // label: 'Translate text',\n // icon: WrapText,\n // },\n {\n value: \"summarize\",\n label: \"Summarize text\",\n icon: WrapText,\n },\n {\n value: \"rewrite\",\n label: \"Rewrite into Axios\",\n icon: WrapText,\n },\n {\n value: \"improve\",\n label: \"Improve writing\",\n icon: RefreshCcwDot,\n },\n\n {\n value: \"fix\",\n label: \"Fix grammar\",\n icon: CheckCheck,\n },\n {\n value: \"shorter\",\n label: \"Make shorter\",\n icon: ArrowDownWideNarrow,\n },\n {\n value: \"longer\",\n label: \"Make longer\",\n icon: WrapText,\n },\n];\n\ninterface AISelectorCommandsProps {\n editor: Editor;\n messages?: string;\n onSelect: (\n value: string,\n options: { option: string; language?: string, selection?: JSON }\n ) => void;\n}\n\nconst AISelectorCommands = ({\n messages,\n onSelect,\n editor,\n}: AISelectorCommandsProps) => {\n const { code } = useLocale();\n return (\n <>\n <DropdownCategoryTitle>Edit or review selection</DropdownCategoryTitle>\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n type=\"button\"\n // active={!!states.currentHighlight}\n tooltip={i18next.t(\"highlightText\") || \"Highlight text\"}\n >\n <Icon icon={Languages} className=\"h-4 w-4 text-blue-500\" />\n Translate text\n <Icon icon={ChevronDown} className=\"h-4 w-4 text-blue-500\" />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" sideOffset={8} asChild>\n <Surface className=\"flex flex-col min-w-[15rem] p-2 max-h-[20rem] overflow-auto\">\n <DropdownCategoryTitle>Languages</DropdownCategoryTitle>\n\n {languages.map((lang) => (\n <Toolbar.Button\n onClick={() => {\n const editorSelection =editor.state.selection.content().content.toJSON()\n\n onSelect(\"\", {\n option: \"translate\",\n language: lang.value,\n selection: editorSelection\n });\n }}\n className=\"gap-2 px-4 w-full flex justify-start \"\n key={lang.value}\n >\n {lang.label}\n </Toolbar.Button>\n ))}\n </Surface>\n </Popover.Content>\n </Popover.Root>\n\n {options.map((option) => (\n <Toolbar.Button\n // onSelect={(value) => {\n // const slice = editor.state.selection.content()\n // const text = editor?.storage?.markdown?.serializer.serialize(slice.content)\n // onSelect(text, option.value)\n // }}\n onClick={() => {\n const { from, to, empty } = editor.state.selection;\n const editorSelection =editor.state.selection.content().content.toJSON()\n\n const content = messages\n ? messages ?? \"\"\n : editor.state.doc.textBetween(from, to, \" \");\n onSelect(content, {\n option: option.value,\n language: editor?.storage?.aiCommand?.language ?? code ?? \"en\",\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-selector-commands.tsx"],"sourcesContent":["import { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { Editor } from \"@tiptap/react\";\nimport {\n ArrowDownWideNarrow,\n CheckCheck,\n ChevronDown,\n Languages,\n RefreshCcwDot,\n StepForward,\n WrapText,\n} from \"lucide-react\";\nimport { languages } from \"../../../../lib/constants.js\";\nimport { getPrevText } from \"../../../../lib/utils/index.js\";\nimport { DropdownCategoryTitle } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../../ui/Icon.js\";\nimport { Surface } from \"../../../ui/Surface.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\nimport i18next from \"i18next\";\nconst options = [\n // {\n // value: 'translate',\n // label: 'Translate text',\n // icon: WrapText,\n // },\n {\n value: \"summarize\",\n label: \"Summarize text\",\n icon: WrapText,\n },\n {\n value: \"rewrite\",\n label: \"Rewrite into Axios\",\n icon: WrapText,\n },\n {\n value: \"improve\",\n label: \"Improve writing\",\n icon: RefreshCcwDot,\n },\n\n {\n value: \"fix\",\n label: \"Fix grammar\",\n icon: CheckCheck,\n },\n {\n value: \"shorter\",\n label: \"Make shorter\",\n icon: ArrowDownWideNarrow,\n },\n {\n value: \"longer\",\n label: \"Make longer\",\n icon: WrapText,\n },\n];\n\ninterface AISelectorCommandsProps {\n editor: Editor;\n messages?: string;\n onSelect: (\n value: string,\n options: { option: string; language?: string, selection?: JSON }\n ) => void;\n}\n\nconst AISelectorCommands = ({\n messages,\n onSelect,\n editor,\n}: AISelectorCommandsProps) => {\n const { code } = useLocale();\n return (\n <>\n <DropdownCategoryTitle>Edit or review selection</DropdownCategoryTitle>\n <Popover.Root>\n <Popover.Trigger asChild>\n <Toolbar.Button\n className=\"gap-2 px-4 w-full flex justify-start \"\n type=\"button\"\n // active={!!states.currentHighlight}\n tooltip={i18next.t(\"highlightText\") || \"Highlight text\"}\n >\n <Icon icon={Languages} className=\"h-4 w-4 text-blue-500\" />\n Translate text\n <Icon icon={ChevronDown} className=\"h-4 w-4 text-blue-500\" />\n </Toolbar.Button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" sideOffset={8} asChild>\n <Surface className=\"flex flex-col min-w-[15rem] p-2 max-h-[20rem] overflow-auto\">\n <DropdownCategoryTitle>Languages</DropdownCategoryTitle>\n\n {languages.map((lang) => (\n <Toolbar.Button\n onClick={() => {\n const editorSelection = editor.state.selection.content().content.toJSON()\n\n onSelect(\"\", {\n option: \"translate\",\n language: lang.value,\n selection: editorSelection\n });\n }}\n className=\"gap-2 px-4 w-full flex justify-start \"\n key={lang.value}\n >\n {lang.label}\n </Toolbar.Button>\n ))}\n </Surface>\n </Popover.Content>\n </Popover.Root>\n\n {options.map((option) => (\n <Toolbar.Button\n // onSelect={(value) => {\n // const slice = editor.state.selection.content()\n // const text = editor?.storage?.markdown?.serializer.serialize(slice.content)\n // onSelect(text, option.value)\n // }}\n onClick={() => {\n const { from, to, empty } = editor.state.selection;\n const editorSelection = editor.state.selection.content().content.toJSON()\n\n const content = messages\n ? messages ?? \"\"\n : editor.state.doc.textBetween(from, to, \" \");\n onSelect(content, {\n option: option.value,\n language: editor?.storage?.aiCommand?.language ?? code ?? \"en\",\n selection: editorSelection\n });\n }}\n className=\" gap-2 px-4 w-full flex justify-start\"\n key={option.value}\n value={option.value}\n >\n <option.icon className=\"h-4 w-4 text-blue-500\" />\n {option.label}\n </Toolbar.Button>\n ))}\n <Toolbar.Divider horizontal />\n <DropdownCategoryTitle>Use AI to do more</DropdownCategoryTitle>\n <Toolbar.Button\n onClick={() => {\n const editorSelection = editor.state.selection.content().content.toJSON()\n\n const text = messages\n ? messages\n : getPrevText(editor, { chars: 5000 });\n onSelect(text, {\n option: \"continue\",\n language: editor?.storage?.aiCommand?.language ?? code ?? \"en\",\n selection: editorSelection\n });\n }}\n value=\"continue\"\n className=\"gap-2 px-4 w-full flex justify-start\"\n >\n <StepForward className=\"h-4 w-4 text-blue-500\" />\n Continue writing\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AISelectorCommands;\n"],"names":["useLocale","Popover","ArrowDownWideNarrow","CheckCheck","ChevronDown","Languages","RefreshCcwDot","StepForward","WrapText","languages","getPrevText","DropdownCategoryTitle","Icon","Surface","Toolbar","i18next","options","value","label","icon","AISelectorCommands","messages","onSelect","editor","code","Root","Trigger","asChild","Button","className","type","tooltip","t","Content","side","align","sideOffset","map","lang","onClick","editorSelection","state","selection","content","toJSON","option","language","from","to","empty","doc","textBetween","storage","aiCommand","Divider","horizontal","text","chars"],"mappings":";AAAA,SAASA,SAAS,QAAQ,kCAAkC;AAC5D,YAAYC,aAAa,0BAA0B;AAEnD,SACEC,mBAAmB,EACnBC,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,aAAa,EACbC,WAAW,EACXC,QAAQ,QACH,eAAe;AACtB,SAASC,SAAS,QAAQ,+BAA+B;AACzD,SAASC,WAAW,QAAQ,iCAAiC;AAC7D,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,QAAQ,yBAAyB;AACjD,OAAOC,aAAa,UAAU;AAC9B,MAAMC,UAAU;IACd,IAAI;IACJ,wBAAwB;IACxB,6BAA6B;IAC7B,oBAAoB;IACpB,KAAK;IACL;QACEC,OAAO;QACPC,OAAO;QACPC,MAAMX;IACR;IACA;QACES,OAAO;QACPC,OAAO;QACPC,MAAMX;IACR;IACA;QACES,OAAO;QACPC,OAAO;QACPC,MAAMb;IACR;IAEA;QACEW,OAAO;QACPC,OAAO;QACPC,MAAMhB;IACR;IACA;QACEc,OAAO;QACPC,OAAO;QACPC,MAAMjB;IACR;IACA;QACEe,OAAO;QACPC,OAAO;QACPC,MAAMX;IACR;CACD;AAWD,MAAMY,qBAAqB,CAAC,EAC1BC,QAAQ,EACRC,QAAQ,EACRC,MAAM,EACkB;IACxB,MAAM,EAAEC,IAAI,EAAE,GAAGxB;IACjB,qBACE;;0BACE,KAACW;0BAAsB;;0BACvB,MAACV,QAAQwB,IAAI;;kCACX,KAACxB,QAAQyB,OAAO;wBAACC,OAAO;kCACtB,cAAA,MAACb,QAAQc,MAAM;4BACbC,WAAU;4BACVC,MAAK;4BACL,qCAAqC;4BACrCC,SAAShB,QAAQiB,CAAC,CAAC,oBAAoB;;8CAEvC,KAACpB;oCAAKO,MAAMd;oCAAWwB,WAAU;;gCAA0B;8CAE3D,KAACjB;oCAAKO,MAAMf;oCAAayB,WAAU;;;;;kCAGvC,KAAC5B,QAAQgC,OAAO;wBAACC,MAAK;wBAAQC,OAAM;wBAAQC,YAAY;wBAAGT,OAAO;kCAChE,cAAA,MAACd;4BAAQgB,WAAU;;8CACjB,KAAClB;8CAAsB;;gCAEtBF,UAAU4B,GAAG,CAAC,CAACC,qBACd,KAACxB,QAAQc,MAAM;wCACbW,SAAS;4CACP,MAAMC,kBAAkBjB,OAAOkB,KAAK,CAACC,SAAS,CAACC,OAAO,GAAGA,OAAO,CAACC,MAAM;4CAEvEtB,SAAS,IAAI;gDACXuB,QAAQ;gDACRC,UAAUR,KAAKrB,KAAK;gDACpByB,WAAWF;4CACb;wCACF;wCACAX,WAAU;kDAGTS,KAAKpB,KAAK;uCAFNoB,KAAKrB,KAAK;;;;;;YASxBD,QAAQqB,GAAG,CAAC,CAACQ,uBACZ,MAAC/B,QAAQc,MAAM;oBACb,yBAAyB;oBACzB,mDAAmD;oBACnD,gFAAgF;oBAChF,iCAAiC;oBACjC,KAAK;oBACLW,SAAS;wBACP,MAAM,EAAEQ,IAAI,EAAEC,EAAE,EAAEC,KAAK,EAAE,GAAG1B,OAAOkB,KAAK,CAACC,SAAS;wBAClD,MAAMF,kBAAkBjB,OAAOkB,KAAK,CAACC,SAAS,CAACC,OAAO,GAAGA,OAAO,CAACC,MAAM;wBAEvE,MAAMD,UAAUtB,WACZA,YAAY,KACZE,OAAOkB,KAAK,CAACS,GAAG,CAACC,WAAW,CAACJ,MAAMC,IAAI;wBAC3C1B,SAASqB,SAAS;4BAChBE,QAAQA,OAAO5B,KAAK;4BACpB6B,UAAUvB,QAAQ6B,SAASC,WAAWP,YAAYtB,QAAQ;4BAC1DkB,WAAWF;wBACb;oBACF;oBACAX,WAAU;oBAEVZ,OAAO4B,OAAO5B,KAAK;;sCAEnB,KAAC4B,OAAO1B,IAAI;4BAACU,WAAU;;wBACtBgB,OAAO3B,KAAK;;mBAJR2B,OAAO5B,KAAK;0BAOrB,KAACH,QAAQwC,OAAO;gBAACC,UAAU;;0BAC3B,KAAC5C;0BAAsB;;0BACvB,MAACG,QAAQc,MAAM;gBACbW,SAAS;oBACP,MAAMC,kBAAkBjB,OAAOkB,KAAK,CAACC,SAAS,CAACC,OAAO,GAAGA,OAAO,CAACC,MAAM;oBAEvE,MAAMY,OAAOnC,WACTA,WACAX,YAAYa,QAAQ;wBAAEkC,OAAO;oBAAK;oBACtCnC,SAASkC,MAAM;wBACbX,QAAQ;wBACRC,UAAUvB,QAAQ6B,SAASC,WAAWP,YAAYtB,QAAQ;wBAC1DkB,WAAWF;oBACb;gBACF;gBACAvB,OAAM;gBACNY,WAAU;;kCAEV,KAACtB;wBAAYsB,WAAU;;oBAA0B;;;;;AAKzD;AAEA,eAAeT,mBAAmB"}
|
|
@@ -15,7 +15,7 @@ import CrazySpinner from "../../ui/crazy-spinner.js";
|
|
|
15
15
|
import { ScrollArea } from "../../ui/scroll-area.js";
|
|
16
16
|
import i18next from "i18next";
|
|
17
17
|
import { extractMarkdown } from "../../../lib/extract.js";
|
|
18
|
-
import { formatCompletion } from "./utils.js";
|
|
18
|
+
import { checkJsonCompletion, formatCompletion } from "./utils.js";
|
|
19
19
|
export const AIEditorPanel = ({ editor, onOpenChange })=>{
|
|
20
20
|
const [inputValue, setInputValue] = useState("");
|
|
21
21
|
const { code } = useLocale();
|
|
@@ -78,7 +78,7 @@ export const AIEditorPanel = ({ editor, onOpenChange })=>{
|
|
|
78
78
|
className: "prose p-2 px-4 prose-sm",
|
|
79
79
|
dir: i18next.dir(),
|
|
80
80
|
children: /*#__PURE__*/ _jsx(Markdown, {
|
|
81
|
-
children: completion
|
|
81
|
+
children: checkJsonCompletion(completion) ? extractMarkdown({
|
|
82
82
|
type: 'doc',
|
|
83
83
|
content: formatCompletion(completion)
|
|
84
84
|
}) : completion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor } from \"@tiptap/react\";\nimport { useCompletion } from \"ai/react\";\nimport { ArrowRight, Sparkles } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport Markdown from \"react-markdown\";\nimport { getPrevText } from \"../../../lib/utils/index.js\";\nimport AICompletionCommands from \"../../menus/TextMenu/components/ai-completion-command.js\";\nimport AISelectorCommands from \"../../menus/TextMenu/components/ai-selector-commands.js\";\nimport { Surface } from \"../../ui/Surface.js\";\nimport { Toolbar } from \"../../ui/Toolbar.js\";\nimport CrazySpinner from \"../../ui/crazy-spinner.js\";\nimport { ScrollArea } from \"../../ui/scroll-area.js\";\nimport i18next from \"i18next\";\nimport { extractMarkdown } from \"../../../lib/extract.js\";\nimport { convertBody, formatCompletion } from \"./utils.js\";\nexport type AIEditorPanelProps = {\n editor: Editor;\n onOpenChange: (value: boolean) => void;\n};\n\nexport const AIEditorPanel = ({ editor, onOpenChange }: AIEditorPanelProps) => {\n const [inputValue, setInputValue] = useState(\"\");\n const { code } = useLocale();\n const { view } = editor;\n\n const editorNode = view.dom as HTMLElement;\n const boundigClient = editorNode.getBoundingClientRect();\n const inputRef = useRef<HTMLTextAreaElement>(null);\n\n\n\n const { completion, complete, isLoading } = useCompletion({\n // id: \"novel\",\n api: \"/api/generate\",\n onResponse: (response) => {\n if (response.status === 429) {\n console.log(\"You have reached your request limit for the day.\");\n\n return;\n }\n },\n onError: (e) => {\n console.log(\"ERROR\", e.message);\n },\n });\n\n const hasCompletion = completion.length > 0;\n const handleClick = useCallback(() => {\n const editorSelection = editor.state.selection.content().content.toJSON()\n if (completion) {\n return complete(completion, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\", selection: formatCompletion(completion) },\n }).then(() => setInputValue(\"\"));\n }\n const text = getPrevText(editor, { chars: 5000 });\n\n complete(text, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\", selection: editorSelection },\n }).then(() => setInputValue(\"\"));\n }, [code, inputValue]);\n\n return (\n <Surface\n className={`p-2 min-w-[20rem] `}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {hasCompletion && !isLoading && (\n <div className=\"flex w-full\">\n <ScrollArea>\n <div\n className=\"prose p-2 px-4 prose-sm\"\n dir={i18next.dir()}\n >\n <Markdown>{completion
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor } from \"@tiptap/react\";\nimport { useCompletion } from \"ai/react\";\nimport { ArrowRight, Sparkles } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport Markdown from \"react-markdown\";\nimport { getPrevText } from \"../../../lib/utils/index.js\";\nimport AICompletionCommands from \"../../menus/TextMenu/components/ai-completion-command.js\";\nimport AISelectorCommands from \"../../menus/TextMenu/components/ai-selector-commands.js\";\nimport { Surface } from \"../../ui/Surface.js\";\nimport { Toolbar } from \"../../ui/Toolbar.js\";\nimport CrazySpinner from \"../../ui/crazy-spinner.js\";\nimport { ScrollArea } from \"../../ui/scroll-area.js\";\nimport i18next from \"i18next\";\nimport { extractMarkdown } from \"../../../lib/extract.js\";\nimport { checkJsonCompletion, convertBody, formatCompletion } from \"./utils.js\";\nexport type AIEditorPanelProps = {\n editor: Editor;\n onOpenChange: (value: boolean) => void;\n};\n\nexport const AIEditorPanel = ({ editor, onOpenChange }: AIEditorPanelProps) => {\n const [inputValue, setInputValue] = useState(\"\");\n const { code } = useLocale();\n const { view } = editor;\n\n const editorNode = view.dom as HTMLElement;\n const boundigClient = editorNode.getBoundingClientRect();\n const inputRef = useRef<HTMLTextAreaElement>(null);\n\n\n\n const { completion, complete, isLoading } = useCompletion({\n // id: \"novel\",\n api: \"/api/generate\",\n onResponse: (response) => {\n if (response.status === 429) {\n console.log(\"You have reached your request limit for the day.\");\n\n return;\n }\n },\n onError: (e) => {\n console.log(\"ERROR\", e.message);\n },\n });\n\n const hasCompletion = completion.length > 0;\n const handleClick = useCallback(() => {\n const editorSelection = editor.state.selection.content().content.toJSON()\n if (completion) {\n return complete(completion, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\", selection: formatCompletion(completion) },\n }).then(() => setInputValue(\"\"));\n }\n const text = getPrevText(editor, { chars: 5000 });\n\n complete(text, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\", selection: editorSelection },\n }).then(() => setInputValue(\"\"));\n }, [code, inputValue]);\n\n return (\n <Surface\n className={`p-2 min-w-[20rem] `}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {hasCompletion && !isLoading && (\n <div className=\"flex w-full\">\n <ScrollArea>\n <div\n className=\"prose p-2 px-4 prose-sm\"\n dir={i18next.dir()}\n >\n <Markdown>{checkJsonCompletion(completion) ? extractMarkdown({ type: 'doc', content: formatCompletion(completion) as any }) : completion}</Markdown>\n </div>\n </ScrollArea>\n </div>\n )}\n\n {isLoading && (\n <div className=\"flex h-12 w-full items-center px-4 text-sm font-medium text-muted-foreground text-blue-500\">\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 \" />\n AI is thinking\n <div className=\"ml-2 mt-1\">\n <CrazySpinner />\n </div>\n </div>\n )}\n\n {!isLoading && (\n <>\n <div className=\"flex justify-between items-center\">\n {/* <CommandInput\n value={inputValue}\n onValueChange={setInputValue}\n autoFocus\n placeholder={\n hasCompletion ? 'Tell AI what to do next' : 'Ask AI to edit or generate...'\n }\n // onFocus={() => addAIHighlight(editor)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleClick()\n }}\n /> */}\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 text-blue-500 \" />\n <TextareaAutosize\n ref={inputRef}\n className=\"w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none\"\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n }}\n placeholder={\n hasCompletion\n ? i18next.t(\"tellAiPlaceholder\") || \"Tell AI what to do next\"\n : i18next.t(\"askAiPlaceholder\") || \"Ask AI to edit or generate...\"\n }\n autoFocus\n // onFocus={() => {\n // addAIHighlight(editor)}}\n\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleClick();\n }}\n />\n <Toolbar.Button\n // size=\"icon\"\n\n // className=\"absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 rounded-full bg-zinc-100 hover:bg-zinc-150\"\n onClick={handleClick}\n >\n <ArrowRight />\n </Toolbar.Button>\n </div>\n {hasCompletion ? (\n <AICompletionCommands\n editor={editor}\n onDiscard={() => {\n editor.chain().unsetHighlight().focus().run();\n onOpenChange(false);\n }}\n completion={completion}\n />\n ) : (\n <AISelectorCommands\n messages={completion}\n editor={editor}\n onSelect={(value, options) => {\n complete(value, { body: options });\n }}\n />\n )}\n </>\n )}\n </>\n </Surface>\n );\n};\n\n"],"names":["useLocale","useCompletion","ArrowRight","Sparkles","useCallback","useRef","useState","TextareaAutosize","Markdown","getPrevText","AICompletionCommands","AISelectorCommands","Surface","Toolbar","CrazySpinner","ScrollArea","i18next","extractMarkdown","checkJsonCompletion","formatCompletion","AIEditorPanel","editor","onOpenChange","inputValue","setInputValue","code","view","editorNode","dom","boundigClient","getBoundingClientRect","inputRef","completion","complete","isLoading","api","onResponse","response","status","console","log","onError","e","message","hasCompletion","length","handleClick","editorSelection","state","selection","content","toJSON","body","option","command","language","then","text","chars","className","style","width","div","dir","type","ref","value","onChange","target","placeholder","t","autoFocus","onKeyDown","key","Button","onClick","onDiscard","chain","unsetHighlight","focus","run","messages","onSelect","options"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const convertBody: (body: string) => any;
|
|
2
2
|
export declare const jsonFixer: (json: string, provider?: string) => string;
|
|
3
3
|
export declare const formatCompletion: (completion: string) => any;
|
|
4
|
+
export declare const checkJsonCompletion: (completion: string) => boolean;
|
|
4
5
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,SAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,SAAU,MAAM,QAiBvC,CAAA;AAED,eAAO,MAAM,SAAS,SAAU,MAAM,aAAa,MAAM,WA8BxD,CAAC;AAEF,eAAO,MAAM,gBAAgB,eAAgB,MAAM,QAOlD,CAAA;AAED,eAAO,MAAM,mBAAmB,eAAgB,MAAM,YAErD,CAAA"}
|
|
@@ -39,5 +39,8 @@ export const formatCompletion = (completion)=>{
|
|
|
39
39
|
const body = convertBody(translatedText);
|
|
40
40
|
return body;
|
|
41
41
|
};
|
|
42
|
+
export const checkJsonCompletion = (completion)=>{
|
|
43
|
+
return completion.includes("```json") || completion.includes("\"type\":") || completion.includes("\"content\":");
|
|
44
|
+
};
|
|
42
45
|
|
|
43
46
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.ts"],"sourcesContent":["\nimport json5 from 'json5';\n\nexport const convertBody = (body: string) => {\n try {\n let parsedBody = body.replace('```json', '').replace('```', '');\n parsedBody = json5.parse(parsedBody);\n return parsedBody as unknown as object[];\n } catch (error) {\n try {\n const fixedJson = jsonFixer(body);\n return json5.parse(fixedJson);\n } catch (error) {\n console.error('Error occured When parsing translated error: ', error);\n console.error('Error occured When parsing translated body ', body);\n throw new Error(\n `Openapi translate with assistant An error occurred while processing your request .error: ${error} body: ${body}`,\n );\n }\n }\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.ts"],"sourcesContent":["\nimport json5 from 'json5';\n\nexport const convertBody = (body: string) => {\n try {\n let parsedBody = body.replace('```json', '').replace('```', '');\n parsedBody = json5.parse(parsedBody);\n return parsedBody as unknown as object[];\n } catch (error) {\n try {\n const fixedJson = jsonFixer(body);\n return json5.parse(fixedJson);\n } catch (error) {\n console.error('Error occured When parsing translated error: ', error);\n console.error('Error occured When parsing translated body ', body);\n throw new Error(\n `Openapi translate with assistant An error occurred while processing your request .error: ${error} body: ${body}`,\n );\n }\n }\n}\n\nexport const jsonFixer = (json: string, provider?: string) => {\n if (provider === 'bedrock') {\n json += '}';\n }\n let fixedText = json\n .replace('```json', '')\n .replace('```', '')\n .replace(/”/g, '\"')\n .replace(/“/g, '\"')\n .replace(/’/g, \"'\")\n .replace(/‘/g, \"'\");\n\n const regex = /\"text\":\\s*\"([^]*)\"/g;\n\n // Metinde her text alanını kontrol et\n fixedText = fixedText.replace(regex, (match, p1) => {\n let text = p1.trim();\n\n if (!text.startsWith('\"')) {\n text = '\"' + text;\n }\n\n if (!text.endsWith('\"')) {\n text = text + '\"';\n }\n\n return `\"text\": ${text}`;\n });\n\n return fixedText;\n};\n\nexport const formatCompletion = (completion: string) => {\n const translatedText = completion\n .trim()\n .replace(/<translated_text>/g, '')\n .replace('</translated_text>', '');\n const body = convertBody(translatedText)\n return body\n}\n\nexport const checkJsonCompletion = (completion: string) => {\n return completion.includes(\"```json\") || completion.includes(\"\\\"type\\\":\") || completion.includes(\"\\\"content\\\":\")\n}"],"names":["json5","convertBody","body","parsedBody","replace","parse","error","fixedJson","jsonFixer","console","Error","json","provider","fixedText","regex","match","p1","text","trim","startsWith","endsWith","formatCompletion","completion","translatedText","checkJsonCompletion","includes"],"mappings":"AACA,OAAOA,WAAW,QAAQ;AAE1B,OAAO,MAAMC,cAAc,CAACC;IACxB,IAAI;QACA,IAAIC,aAAaD,KAAKE,OAAO,CAAC,WAAW,IAAIA,OAAO,CAAC,OAAO;QAC5DD,aAAaH,MAAMK,KAAK,CAACF;QACzB,OAAOA;IACX,EAAE,OAAOG,OAAO;QACZ,IAAI;YACA,MAAMC,YAAYC,UAAUN;YAC5B,OAAOF,MAAMK,KAAK,CAACE;QACvB,EAAE,OAAOD,OAAO;YACZG,QAAQH,KAAK,CAAC,iDAAiDA;YAC/DG,QAAQH,KAAK,CAAC,+CAA+CJ;YAC7D,MAAM,IAAIQ,MACN,CAAC,yFAAyF,EAAEJ,MAAM,OAAO,EAAEJ,KAAK,CAAC;QAEzH;IACJ;AACJ,EAAC;AAED,OAAO,MAAMM,YAAY,CAACG,MAAcC;IACpC,IAAIA,aAAa,WAAW;QACxBD,QAAQ;IACZ;IACA,IAAIE,YAAYF,KACXP,OAAO,CAAC,WAAW,IACnBA,OAAO,CAAC,OAAO,IACfA,OAAO,CAAC,MAAM,KACdA,OAAO,CAAC,MAAM,KACdA,OAAO,CAAC,MAAM,KACdA,OAAO,CAAC,MAAM;IAEnB,MAAMU,QAAQ;IAEd,sCAAsC;IACtCD,YAAYA,UAAUT,OAAO,CAACU,OAAO,CAACC,OAAOC;QACzC,IAAIC,OAAOD,GAAGE,IAAI;QAElB,IAAI,CAACD,KAAKE,UAAU,CAAC,MAAM;YACvBF,OAAO,MAAMA;QACjB;QAEA,IAAI,CAACA,KAAKG,QAAQ,CAAC,MAAM;YACrBH,OAAOA,OAAO;QAClB;QAEA,OAAO,CAAC,QAAQ,EAAEA,KAAK,CAAC;IAC5B;IAEA,OAAOJ;AACX,EAAE;AAEF,OAAO,MAAMQ,mBAAmB,CAACC;IAC7B,MAAMC,iBAAiBD,WAClBJ,IAAI,GACJd,OAAO,CAAC,sBAAsB,IAC9BA,OAAO,CAAC,sBAAsB;IACnC,MAAMF,OAAOD,YAAYsB;IACzB,OAAOrB;AACX,EAAC;AAED,OAAO,MAAMsB,sBAAsB,CAACF;IAChC,OAAOA,WAAWG,QAAQ,CAAC,cAAcH,WAAWG,QAAQ,CAAC,gBAAgBH,WAAWG,QAAQ,CAAC;AACrG,EAAC"}
|