payload-richtext-tiptap 0.0.42 → 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.
Files changed (36) hide show
  1. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.d.ts.map +1 -1
  2. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js +29 -14
  3. package/dist/src/fields/TiptapEditor/extensions/AICommand/AICommand.js.map +1 -1
  4. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.d.ts.map +1 -1
  5. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js +39 -27
  6. package/dist/src/fields/TiptapEditor/extensions/AICommand/AIMenuList.js.map +1 -1
  7. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.d.ts.map +1 -1
  8. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js +52 -227
  9. package/dist/src/fields/TiptapEditor/extensions/AICommand/groups.js.map +1 -1
  10. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.d.ts +1 -1
  11. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.d.ts.map +1 -1
  12. package/dist/src/fields/TiptapEditor/extensions/AICommand/types.js.map +1 -1
  13. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.d.ts +3 -0
  14. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.d.ts.map +1 -0
  15. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.js +35 -0
  16. package/dist/src/fields/TiptapEditor/extensions/Paragraph/AIEditorParagraph.js.map +1 -0
  17. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.d.ts.map +1 -1
  18. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js +35 -26
  19. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
  20. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
  21. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js +2 -2
  22. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
  23. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.d.ts +6 -0
  24. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.d.ts.map +1 -1
  25. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js +1 -1
  26. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.js.map +1 -1
  27. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts +2 -1
  28. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts.map +1 -1
  29. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js +60 -85
  30. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
  31. package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.d.ts.map +1 -1
  32. package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js +5 -1
  33. package/dist/src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.js.map +1 -1
  34. package/dist/src/styles.css +4 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +1 -1
@@ -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 ImageBlock,\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 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((url) => {\n currentEditor\n .chain()\n .setImageBlockAt({ pos, src: url })\n .focus()\n .run();\n }, file);\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 // Paragraph,\n InsideLinks,\n TextDirection.configure({\n types: [\"heading\", \"paragraph\"],\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","ImageBlock","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","url","chain","setImageBlockAt","src","focus","run","onPaste","forEach","uploadImage","state","selection","anchor","extend","addKeyboardShortcuts","types","includeChildren","showOnlyCurrent","placeholder","width","class"],"mappings":"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"}
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 ImageBlock,\n InsideLinks,\n Instagram,\n Link,\n Linkedin,\n Placeholder,\n Paragraph,\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 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((url) => {\n currentEditor\n .chain()\n .setImageBlockAt({ pos, src: url })\n .focus()\n .run();\n }, file);\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 Paragraph,\n InsideLinks,\n TextDirection.configure({\n types: [\"heading\", \"paragraph\"],\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","ImageBlock","InsideLinks","Instagram","Link","Linkedin","Placeholder","Paragraph","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","url","chain","setImageBlockAt","src","focus","run","onPaste","forEach","uploadImage","state","selection","anchor","extend","addKeyboardShortcuts","types","includeChildren","showOnlyCurrent","placeholder","width","class"],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import { Editor } from "@tiptap/react";
2
+ export declare const draftPromptOptions: {
3
+ value: string;
4
+ label: string;
5
+ icon: import("lucide-react").LucideIcon;
6
+ prompt: string;
7
+ }[];
2
8
  interface AIDraftSelectorCommandsProps {
3
9
  editor: Editor;
4
10
  onSelect: (value: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-draft-selector-commands.d.ts","sourceRoot":"","sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAqEvC,UAAU,4BAA4B;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,uBAAuB,0BAG1B,4BAA4B,gCAkC9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"ai-draft-selector-commands.d.ts","sourceRoot":"","sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAWvC,eAAO,MAAM,kBAAkB;;;;;GAwD9B,CAAC;AAEF,UAAU,4BAA4B;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,uBAAuB,0BAG1B,4BAA4B,gCAkC9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -4,7 +4,7 @@ import { useAssistant } from "ai/react";
4
4
  import { ArrowDownWideNarrow, CheckCheck, RefreshCcwDot, WrapText } from "lucide-react";
5
5
  import { DropdownCategoryTitle } from "../../../ui/Dropdown/Dropdown.js";
6
6
  import { Toolbar } from "../../../ui/Toolbar.js";
7
- const draftPromptOptions = [
7
+ export const draftPromptOptions = [
8
8
  // {
9
9
  // value: 'translate',
10
10
  // label: 'Translate text',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.tsx"],"sourcesContent":["import { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor } from \"@tiptap/react\";\nimport { useAssistant } from \"ai/react\";\nimport {\n ArrowDownWideNarrow,\n CheckCheck,\n RefreshCcwDot,\n WrapText,\n} from \"lucide-react\";\nimport { DropdownCategoryTitle } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nconst draftPromptOptions = [\n // {\n // value: 'translate',\n // label: 'Translate text',\n // icon: WrapText,\n // },\n {\n value: \"brainstorm\",\n label: \"Brainstorm Ideas...\",\n\n icon: WrapText,\n prompt: \"Brainstorm ideas on \",\n },\n {\n value: \"blog\",\n label: \"Blog post...\",\n\n icon: WrapText,\n prompt: \"Write a blog post about \",\n },\n {\n value: \"outline\",\n label: \"Outline...\",\n\n icon: RefreshCcwDot,\n prompt: \"Write an outline about \",\n },\n\n {\n value: \"social\",\n label: \"Social Media post...\",\n\n icon: CheckCheck,\n prompt: \"Write a social media post about \",\n },\n {\n value: \"press\",\n label: \"Press release...\",\n\n icon: ArrowDownWideNarrow,\n prompt: \"Write a press release about \",\n },\n {\n value: \"creative\",\n label: \"Creative Story...\",\n\n icon: WrapText,\n prompt: \"Write a creative story about \",\n },\n {\n value: \"essay\",\n label: \"Essay...\",\n\n icon: WrapText,\n prompt: \"Write an essay about \",\n },\n];\n\ninterface AIDraftSelectorCommandsProps {\n editor: Editor;\n onSelect: (value: string) => void;\n}\n\nconst AIDraftSelectorCommands = ({\n onSelect,\n editor,\n}: AIDraftSelectorCommandsProps) => {\n const { status, messages, input, submitMessage, handleInputChange } =\n useAssistant({\n api: \"/api/assistant\",\n });\n const { code } = useLocale();\n\n return (\n <>\n <DropdownCategoryTitle>Draft with AI</DropdownCategoryTitle>\n <Toolbar.Divider horizontal />\n\n {draftPromptOptions.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 content = editor.state.doc.textBetween(from, to, \" \");\n onSelect(option.prompt);\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 </>\n );\n};\n\nexport default AIDraftSelectorCommands;\n"],"names":["useLocale","useAssistant","ArrowDownWideNarrow","CheckCheck","RefreshCcwDot","WrapText","DropdownCategoryTitle","Toolbar","draftPromptOptions","value","label","icon","prompt","AIDraftSelectorCommands","onSelect","editor","status","messages","input","submitMessage","handleInputChange","api","code","Divider","horizontal","map","option","Button","onClick","from","to","empty","state","selection","className"],"mappings":";AAAA,SAASA,SAAS,QAAQ,kCAAkC;AAE5D,SAASC,YAAY,QAAQ,WAAW;AACxC,SACEC,mBAAmB,EACnBC,UAAU,EACVC,aAAa,EACbC,QAAQ,QACH,eAAe;AACtB,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,qBAAqB;IACzB,IAAI;IACJ,wBAAwB;IACxB,6BAA6B;IAC7B,oBAAoB;IACpB,KAAK;IACL;QACEC,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMP;QACNQ,QAAQ;IACV;IAEA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMR;QACNS,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMT;QACNU,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;CACD;AAOD,MAAMC,0BAA0B,CAAC,EAC/BC,QAAQ,EACRC,MAAM,EACuB;IAC7B,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,aAAa,EAAEC,iBAAiB,EAAE,GACjEnB,aAAa;QACXoB,KAAK;IACP;IACF,MAAM,EAAEC,IAAI,EAAE,GAAGtB;IAEjB,qBACE;;0BACE,KAACM;0BAAsB;;0BACvB,KAACC,QAAQgB,OAAO;gBAACC,UAAU;;YAE1BhB,mBAAmBiB,GAAG,CAAC,CAACC,uBACvB,MAACnB,QAAQoB,MAAM;oBACb,yBAAyB;oBACzB,mDAAmD;oBACnD,6EAA6E;oBAC7E,iCAAiC;oBACjC,KAAK;oBACLC,SAAS;wBACP,MAAM,EAAEC,IAAI,EAAEC,EAAE,EAAEC,KAAK,EAAE,GAAGhB,OAAOiB,KAAK,CAACC,SAAS;wBAClD,+DAA+D;wBAC/DnB,SAASY,OAAOd,MAAM;oBACxB;oBACAsB,WAAU;oBAEVzB,OAAOiB,OAAOjB,KAAK;;sCAEnB,KAACiB,OAAOf,IAAI;4BAACuB,WAAU;;wBACtBR,OAAOhB,KAAK;;mBAJRgB,OAAOjB,KAAK;;;AAS3B;AAEA,eAAeI,wBAAwB"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.tsx"],"sourcesContent":["import { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor } from \"@tiptap/react\";\nimport { useAssistant } from \"ai/react\";\nimport {\n ArrowDownWideNarrow,\n CheckCheck,\n RefreshCcwDot,\n WrapText,\n} from \"lucide-react\";\nimport { DropdownCategoryTitle } from \"../../../ui/Dropdown/Dropdown.js\";\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\n\nexport const draftPromptOptions = [\n // {\n // value: 'translate',\n // label: 'Translate text',\n // icon: WrapText,\n // },\n {\n value: \"brainstorm\",\n label: \"Brainstorm Ideas...\",\n\n icon: WrapText,\n prompt: \"Brainstorm ideas on \",\n },\n {\n value: \"blog\",\n label: \"Blog post...\",\n\n icon: WrapText,\n prompt: \"Write a blog post about \",\n },\n {\n value: \"outline\",\n label: \"Outline...\",\n\n icon: RefreshCcwDot,\n prompt: \"Write an outline about \",\n },\n\n {\n value: \"social\",\n label: \"Social Media post...\",\n\n icon: CheckCheck,\n prompt: \"Write a social media post about \",\n },\n {\n value: \"press\",\n label: \"Press release...\",\n\n icon: ArrowDownWideNarrow,\n prompt: \"Write a press release about \",\n },\n {\n value: \"creative\",\n label: \"Creative Story...\",\n\n icon: WrapText,\n prompt: \"Write a creative story about \",\n },\n {\n value: \"essay\",\n label: \"Essay...\",\n\n icon: WrapText,\n prompt: \"Write an essay about \",\n },\n];\n\ninterface AIDraftSelectorCommandsProps {\n editor: Editor;\n onSelect: (value: string) => void;\n}\n\nconst AIDraftSelectorCommands = ({\n onSelect,\n editor,\n}: AIDraftSelectorCommandsProps) => {\n const { status, messages, input, submitMessage, handleInputChange } =\n useAssistant({\n api: \"/api/assistant\",\n });\n const { code } = useLocale();\n\n return (\n <>\n <DropdownCategoryTitle>Draft with AI</DropdownCategoryTitle>\n <Toolbar.Divider horizontal />\n\n {draftPromptOptions.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 content = editor.state.doc.textBetween(from, to, \" \");\n onSelect(option.prompt);\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 </>\n );\n};\n\nexport default AIDraftSelectorCommands;\n"],"names":["useLocale","useAssistant","ArrowDownWideNarrow","CheckCheck","RefreshCcwDot","WrapText","DropdownCategoryTitle","Toolbar","draftPromptOptions","value","label","icon","prompt","AIDraftSelectorCommands","onSelect","editor","status","messages","input","submitMessage","handleInputChange","api","code","Divider","horizontal","map","option","Button","onClick","from","to","empty","state","selection","className"],"mappings":";AAAA,SAASA,SAAS,QAAQ,kCAAkC;AAE5D,SAASC,YAAY,QAAQ,WAAW;AACxC,SACEC,mBAAmB,EACnBC,UAAU,EACVC,aAAa,EACbC,QAAQ,QACH,eAAe;AACtB,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,OAAO,MAAMC,qBAAqB;IAChC,IAAI;IACJ,wBAAwB;IACxB,6BAA6B;IAC7B,oBAAoB;IACpB,KAAK;IACL;QACEC,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMP;QACNQ,QAAQ;IACV;IAEA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMR;QACNS,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMT;QACNU,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;IACA;QACEH,OAAO;QACPC,OAAO;QAEPC,MAAMN;QACNO,QAAQ;IACV;CACD,CAAC;AAOF,MAAMC,0BAA0B,CAAC,EAC/BC,QAAQ,EACRC,MAAM,EACuB;IAC7B,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,aAAa,EAAEC,iBAAiB,EAAE,GACjEnB,aAAa;QACXoB,KAAK;IACP;IACF,MAAM,EAAEC,IAAI,EAAE,GAAGtB;IAEjB,qBACE;;0BACE,KAACM;0BAAsB;;0BACvB,KAACC,QAAQgB,OAAO;gBAACC,UAAU;;YAE1BhB,mBAAmBiB,GAAG,CAAC,CAACC,uBACvB,MAACnB,QAAQoB,MAAM;oBACb,yBAAyB;oBACzB,mDAAmD;oBACnD,6EAA6E;oBAC7E,iCAAiC;oBACjC,KAAK;oBACLC,SAAS;wBACP,MAAM,EAAEC,IAAI,EAAEC,EAAE,EAAEC,KAAK,EAAE,GAAGhB,OAAOiB,KAAK,CAACC,SAAS;wBAClD,+DAA+D;wBAC/DnB,SAASY,OAAOd,MAAM;oBACxB;oBACAsB,WAAU;oBAEVzB,OAAOiB,OAAOjB,KAAK;;sCAEnB,KAACiB,OAAOf,IAAI;4BAACuB,WAAU;;wBACtBR,OAAOhB,KAAK;;mBAJRgB,OAAOjB,KAAK;;;AAS3B;AAEA,eAAeI,wBAAwB"}
@@ -1,7 +1,8 @@
1
1
  import { Editor } from "@tiptap/react";
2
2
  export type AICommandPanelProps = {
3
3
  editor: Editor;
4
+ userPrompt?: string;
4
5
  onOpenChange: (value: boolean) => void;
5
6
  };
6
- export declare const AICommandPanel: ({ editor, onOpenChange, }: AICommandPanelProps) => import("react").JSX.Element;
7
+ export declare const AICommandPanel: ({ editor, onOpenChange, userPrompt, ...restProps }: AICommandPanelProps) => import("react").JSX.Element;
7
8
  //# sourceMappingURL=AICommandPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AICommandPanel.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAA4B,MAAM,eAAe,CAAC;AAiBjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,cAAc,8BAGxB,mBAAmB,gCAiMrB,CAAC"}
1
+ {"version":3,"file":"AICommandPanel.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAA4B,MAAM,eAAe,CAAC;AAajE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,cAAc,uDAKxB,mBAAmB,gCAiLrB,CAAC"}
@@ -1,23 +1,19 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useLocale } from "@payloadcms/ui/providers/Locale";
4
- import { useEditor } from "@tiptap/react";
5
3
  import { useCompletion } from "ai/react";
6
- import { ArrowRight, Sparkles } from "lucide-react";
4
+ import { ArrowUpCircle, Sparkles } from "lucide-react";
7
5
  import { useCallback, useEffect, useRef, useState } from "react";
6
+ import Markdown from "react-markdown";
8
7
  import TextareaAutosize from "react-textarea-autosize";
9
- import { Markdown } from "tiptap-markdown";
8
+ import { useLocale } from "@payloadcms/ui/providers/Locale";
10
9
  import { getPrevText } from "../../../lib/utils/index.js";
11
10
  import { isRTL } from "../../../lib/utils/isRtl.js";
12
- import AICompletionCommands from "../../menus/TextMenu/components/ai-completion-command.js";
13
- import { Surface } from "../../ui/Surface.js";
14
- import { Toolbar } from "../../ui/Toolbar.js";
15
11
  import CrazySpinner from "../../ui/crazy-spinner.js";
16
12
  import { ScrollArea } from "../../ui/scroll-area.js";
17
- import AIDraftSelectorCommands from "../../menus/TextMenu/components/ai-draft-selector-commands.js";
18
- import StarterKit from "@tiptap/starter-kit";
19
- export const AICommandPanel = ({ editor, onOpenChange })=>{
20
- const [inputValue, setInputValue] = useState("");
13
+ import { Surface } from "../../ui/Surface.js";
14
+ import { Toolbar } from "../../ui/Toolbar.js";
15
+ export const AICommandPanel = ({ editor, onOpenChange, userPrompt, ...restProps })=>{
16
+ const [inputValue, setInputValue] = useState(userPrompt ?? "");
21
17
  const { code } = useLocale();
22
18
  const { view } = editor;
23
19
  const editorNode = view.dom;
@@ -75,37 +71,25 @@ export const AICommandPanel = ({ editor, onOpenChange })=>{
75
71
  inputValue
76
72
  ]);
77
73
  useEffect(()=>{
78
- if (!isLoading && completion) {
79
- const selection = editor.state.selection;
80
- editor.chain().focus().insertContentAt(selection.to - 1, completion).insertContentAt(selection.to, " ").run();
81
- }
74
+ if (userPrompt) setInputValue(userPrompt);
75
+ }, [
76
+ userPrompt
77
+ ]);
78
+ useEffect(()=>{
79
+ editor.storage.aiCommand.completion = completion;
80
+ // if (!isLoading && completion) {
81
+ // const selection = editor.state.selection;
82
+ // editor
83
+ // .chain()
84
+ // .focus()
85
+ // .insertContentAt(selection.to - 1, completion)
86
+ // .insertContentAt(selection.to, " ")
87
+ // .run();
88
+ // }
82
89
  }, [
83
90
  completion,
84
91
  isLoading
85
92
  ]);
86
- const editorMarkdown = useEditor({
87
- content: completion ?? "",
88
- autofocus: true,
89
- onCreate: ({ editor })=>{
90
- // provider?.on('synced', () => {
91
- // if (editor.isEmpty) {
92
- // editor.commands.setContent(initialContent)
93
- // }
94
- // })
95
- },
96
- extensions: [
97
- StarterKit,
98
- Markdown
99
- ],
100
- editorProps: {
101
- attributes: {
102
- autocomplete: "off",
103
- autocorrect: "off",
104
- autocapitalize: "off",
105
- class: "min-h-full"
106
- }
107
- }
108
- }, []);
109
93
  return /*#__PURE__*/ _jsx(Surface, {
110
94
  className: `p-2 min-w-[20rem] flex flex-col gap-2 `,
111
95
  style: {
@@ -118,7 +102,10 @@ export const AICommandPanel = ({ editor, onOpenChange })=>{
118
102
  children: /*#__PURE__*/ _jsx(ScrollArea, {
119
103
  children: /*#__PURE__*/ _jsx("div", {
120
104
  className: "prose p-2 px-4 prose-sm",
121
- dir: isRTL(completion) ? "rtl" : "ltr"
105
+ dir: isRTL(completion) ? "rtl" : "ltr",
106
+ children: /*#__PURE__*/ _jsx(Markdown, {
107
+ children: completion
108
+ })
122
109
  })
123
110
  })
124
111
  }),
@@ -138,52 +125,40 @@ export const AICommandPanel = ({ editor, onOpenChange })=>{
138
125
  })
139
126
  ]
140
127
  }),
141
- !isLoading && /*#__PURE__*/ _jsxs(_Fragment, {
142
- children: [
143
- /*#__PURE__*/ _jsxs("div", {
144
- className: "flex justify-between items-center ",
145
- children: [
146
- /*#__PURE__*/ _jsx(Sparkles, {
147
- className: "mr-2 h-4 w-4 shrink-0 text-blue-500 "
148
- }),
149
- /*#__PURE__*/ _jsx(TextareaAutosize, {
150
- ref: inputRef,
151
- className: "w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none",
152
- value: inputValue,
153
- onChange: (e)=>{
154
- setInputValue(e.target.value);
155
- },
156
- placeholder: hasCompletion ? "Tell AI what to do next" : "Ask AI to edit or generate...",
157
- autoFocus: true,
158
- // onFocus={() => {
159
- // addAIHighlight(editor)}}
160
- onKeyDown: (e)=>{
161
- if (e.key === "Enter") handleClick();
162
- }
163
- }),
164
- /*#__PURE__*/ _jsx(Toolbar.Button, {
165
- // size="icon"
166
- // className="absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 rounded-full bg-zinc-100 hover:bg-zinc-150"
167
- onClick: handleClick,
168
- children: /*#__PURE__*/ _jsx(ArrowRight, {})
169
- })
170
- ]
171
- }),
172
- hasCompletion ? /*#__PURE__*/ _jsx(AICompletionCommands, {
173
- editor: editor,
174
- onDiscard: ()=>{
175
- editor.chain().unsetHighlight().focus().run();
176
- onOpenChange(false);
177
- },
178
- completion: completion
179
- }) : /*#__PURE__*/ _jsx(AIDraftSelectorCommands, {
180
- editor: editor,
181
- onSelect: (value)=>{
182
- setInputValue(value);
183
- inputRef.current.focus();
184
- }
185
- })
186
- ]
128
+ !isLoading && /*#__PURE__*/ _jsx(_Fragment, {
129
+ children: /*#__PURE__*/ _jsxs("div", {
130
+ className: "flex justify-between items-center ",
131
+ children: [
132
+ /*#__PURE__*/ _jsx(Sparkles, {
133
+ className: "mr-2 h-4 w-4 shrink-0 text-blue-500 "
134
+ }),
135
+ /*#__PURE__*/ _jsx(TextareaAutosize, {
136
+ ref: inputRef,
137
+ style: {
138
+ resize: "none"
139
+ },
140
+ className: "w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none outline-none border-0 ",
141
+ value: inputValue,
142
+ onChange: (e)=>{
143
+ editor.storage.aiCommand.userPrompt = e.target.value;
144
+ setInputValue(e.target.value);
145
+ },
146
+ placeholder: hasCompletion ? "Tell AI what to do next" : "Ask AI to edit or generate...",
147
+ autoFocus: true,
148
+ // onFocus={() => {
149
+ // addAIHighlight(editor)}}
150
+ onKeyDown: (e)=>{
151
+ if (e.key === "Enter") handleClick();
152
+ }
153
+ }),
154
+ /*#__PURE__*/ _jsx(Toolbar.Button, {
155
+ // size="icon"
156
+ // className="absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 rounded-full bg-zinc-100 hover:bg-zinc-150"
157
+ onClick: handleClick,
158
+ children: /*#__PURE__*/ _jsx(ArrowUpCircle, {})
159
+ })
160
+ ]
161
+ })
187
162
  })
188
163
  ]
189
164
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor, EditorContent, useEditor } 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 \"tiptap-markdown\";\nimport { getPrevText } from \"../../../lib/utils/index.js\";\nimport { isRTL } from \"../../../lib/utils/isRtl.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 AIDraftSelectorCommands from \"../../menus/TextMenu/components/ai-draft-selector-commands.js\";\nimport StarterKit from \"@tiptap/starter-kit\";\nexport type AICommandPanelProps = {\n editor: Editor;\n onOpenChange: (value: boolean) => void;\n};\n\nexport const AICommandPanel = ({\n editor,\n onOpenChange,\n}: AICommandPanelProps) => {\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 // const { status, messages, input, submitMessage, handleInputChange } = useAssistant({\n // // id: \"novel\",\n // api: \"/api/assistant\",\n // onResponse: (response) => {\n // if (response.status === 429) {\n // toast.error(\"You have reached your request limit for the day.\");\n // return;\n // }\n // },\n // onError: (e) => {\n // toast.error(e.message);\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\n onError: (e) => {\n console.log(\"ERROR\", e.message);\n },\n });\n\n const hasCompletion = completion.length > 0;\n const handleClick = useCallback(() => {\n if (completion) {\n return complete(completion, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }\n const text = getPrevText(editor, { chars: 5000 });\n\n complete(text, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }, [code, inputValue]);\n\n useEffect(() => {\n if (!isLoading && completion) {\n const selection = editor.state.selection;\n editor\n .chain()\n .focus()\n .insertContentAt(selection.to - 1, completion)\n .insertContentAt(selection.to, \" \")\n .run();\n }\n }, [completion, isLoading]);\n\n const editorMarkdown = useEditor(\n {\n content: completion ?? \"\",\n autofocus: true,\n onCreate: ({ editor }) => {\n // provider?.on('synced', () => {\n // if (editor.isEmpty) {\n // editor.commands.setContent(initialContent)\n // }\n // })\n },\n\n extensions: [StarterKit, Markdown],\n editorProps: {\n attributes: {\n autocomplete: \"off\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n class: \"min-h-full\",\n },\n },\n },\n []\n );\n return (\n <Surface\n className={`p-2 min-w-[20rem] flex flex-col gap-2 `}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {hasCompletion && (\n <div className=\"flex w-full\">\n <ScrollArea>\n <div\n className=\"prose p-2 px-4 prose-sm\"\n dir={isRTL(completion) ? \"rtl\" : \"ltr\"}\n >\n {/* <Markdown>{completion}</Markdown> */}\n </div>\n </ScrollArea>\n </div>\n )}\n\n {isLoading && (\n <div\n className=\"flex h-12 w-full items-center px-4 text-sm font-medium text-muted-foreground text-blue-500\"\n style={{\n width: boundigClient?.width,\n }}\n >\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 ? \"Tell AI what to do next\"\n : \"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 <AIDraftSelectorCommands\n editor={editor}\n onSelect={(value) => {\n setInputValue(value);\n inputRef.current.focus();\n }}\n />\n )}\n </>\n )}\n </>\n </Surface>\n );\n};\n"],"names":["useLocale","useEditor","useCompletion","ArrowRight","Sparkles","useCallback","useEffect","useRef","useState","TextareaAutosize","Markdown","getPrevText","isRTL","AICompletionCommands","Surface","Toolbar","CrazySpinner","ScrollArea","AIDraftSelectorCommands","StarterKit","AICommandPanel","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","body","option","command","language","then","text","chars","selection","state","chain","focus","insertContentAt","to","run","editorMarkdown","content","autofocus","onCreate","extensions","editorProps","attributes","autocomplete","autocorrect","autocapitalize","class","className","style","width","div","dir","ref","value","onChange","target","placeholder","autoFocus","onKeyDown","key","Button","onClick","onDiscard","unsetHighlight","onSelect","current"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCompletion } from \"ai/react\";\nimport { ArrowRight, ArrowUpCircle, Sparkles } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport Markdown from \"react-markdown\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor, EditorContent, useEditor } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\n\nimport { getPrevText } from \"../../../lib/utils/index.js\";\nimport { isRTL } from \"../../../lib/utils/isRtl.js\";\nimport AICompletionCommands from \"../../menus/TextMenu/components/ai-completion-command.js\";\nimport AIDraftSelectorCommands from \"../../menus/TextMenu/components/ai-draft-selector-commands.js\";\nimport AISelectorCommands from \"../../menus/TextMenu/components/ai-selector-commands.js\";\nimport CrazySpinner from \"../../ui/crazy-spinner.js\";\nimport { ScrollArea } from \"../../ui/scroll-area.js\";\nimport { Surface } from \"../../ui/Surface.js\";\nimport { Toolbar } from \"../../ui/Toolbar.js\";\n\nexport type AICommandPanelProps = {\n editor: Editor;\n userPrompt?: string;\n onOpenChange: (value: boolean) => void;\n};\n\nexport const AICommandPanel = ({\n editor,\n onOpenChange,\n userPrompt,\n ...restProps\n}: AICommandPanelProps) => {\n const [inputValue, setInputValue] = useState(userPrompt ?? \"\");\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 // const { status, messages, input, submitMessage, handleInputChange } = useAssistant({\n // // id: \"novel\",\n // api: \"/api/assistant\",\n // onResponse: (response) => {\n // if (response.status === 429) {\n // toast.error(\"You have reached your request limit for the day.\");\n // return;\n // }\n // },\n // onError: (e) => {\n // toast.error(e.message);\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\n onError: (e) => {\n console.log(\"ERROR\", e.message);\n },\n });\n\n const hasCompletion = completion.length > 0;\n const handleClick = useCallback(() => {\n if (completion) {\n return complete(completion, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }\n const text = getPrevText(editor, { chars: 5000 });\n\n complete(text, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }, [code, inputValue]);\n\n useEffect(() => {\n if (userPrompt) setInputValue(userPrompt);\n }, [userPrompt]);\n useEffect(() => {\n editor.storage.aiCommand.completion = completion;\n // if (!isLoading && completion) {\n // const selection = editor.state.selection;\n // editor\n // .chain()\n // .focus()\n // .insertContentAt(selection.to - 1, completion)\n // .insertContentAt(selection.to, \" \")\n // .run();\n\n // }\n }, [completion, isLoading]);\n\n return (\n <Surface\n className={`p-2 min-w-[20rem] flex flex-col gap-2 `}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {hasCompletion && (\n <div className=\"flex w-full\">\n <ScrollArea>\n <div\n className=\"prose p-2 px-4 prose-sm\"\n dir={isRTL(completion) ? \"rtl\" : \"ltr\"}\n >\n <Markdown>{completion}</Markdown>\n </div>\n </ScrollArea>\n </div>\n )}\n\n {isLoading && (\n <div\n className=\"flex h-12 w-full items-center px-4 text-sm font-medium text-muted-foreground text-blue-500\"\n style={{\n width: boundigClient?.width,\n }}\n >\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 style={{ resize: \"none\" }}\n className=\"w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none outline-none border-0 \"\n value={inputValue}\n onChange={(e) => {\n editor.storage.aiCommand.userPrompt = e.target.value;\n\n setInputValue(e.target.value);\n }}\n placeholder={\n hasCompletion\n ? \"Tell AI what to do next\"\n : \"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 <ArrowUpCircle />\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 <AIDraftSelectorCommands\n editor={editor}\n onSelect={(value) => {\n setInputValue(value);\n inputRef.current.focus();\n }}\n />\n )} */}\n </>\n )}\n </>\n </Surface>\n );\n};\n"],"names":["useCompletion","ArrowUpCircle","Sparkles","useCallback","useEffect","useRef","useState","Markdown","TextareaAutosize","useLocale","getPrevText","isRTL","CrazySpinner","ScrollArea","Surface","Toolbar","AICommandPanel","editor","onOpenChange","userPrompt","restProps","inputValue","setInputValue","code","view","editorNode","dom","boundigClient","getBoundingClientRect","inputRef","completion","complete","isLoading","api","onResponse","response","status","console","log","onError","e","message","hasCompletion","length","handleClick","body","option","command","language","then","text","chars","storage","aiCommand","className","style","width","div","dir","ref","resize","value","onChange","target","placeholder","autoFocus","onKeyDown","key","Button","onClick"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,qBAAqB,kBAE/B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAMA,CAAC;AAEF,eAAO,MAAM,cAAc,0DAMxB;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,sBAsBA,CAAC"}
1
+ {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,qBAAqB,kBAE/B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAMA,CAAC;AAEF,eAAO,MAAM,cAAc,0DAMxB;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,sBA0BA,CAAC"}
@@ -13,7 +13,11 @@ export const DropdownButton = ({ children, isActive, onClick, disabled, classNam
13
13
  type: "button",
14
14
  className: buttonClass,
15
15
  disabled: disabled,
16
- onClick: onClick,
16
+ onClick: (e)=>{
17
+ e.preventDefault();
18
+ e.stopPropagation();
19
+ onClick();
20
+ },
17
21
  children: children
18
22
  });
19
23
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../../../lib/utils/index.js\";\n\nexport const DropdownCategoryTitle = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n return (\n <div className=\"text-[.65rem] font-semibold mb-1 uppercase text-neutral-500 dark:text-neutral-400 px-1.5\">\n {children}\n </div>\n );\n};\n\nexport const DropdownButton = ({\n children,\n isActive,\n onClick,\n disabled,\n className,\n}: {\n children: React.ReactNode;\n isActive?: boolean;\n onClick?: () => void;\n disabled?: boolean;\n className?: string;\n}) => {\n const buttonClass = cn(\n \"flex items-center gap-2 p-1.5 text-sm font-medium text-neutral-500 dark:text-neutral-400 text-left bg-transparent w-full rounded outline-none\",\n !isActive && !disabled,\n \"hover:bg-neutral-100 hover:text-neutral-800 dark:hover:bg-neutral-900 dark:hover:text-neutral-200\",\n isActive &&\n !disabled &&\n \"bg-neutral-100 text-neutral-800 dark:bg-neutral-900 dark:text-neutral-200\",\n disabled && \"text-neutral-400 cursor-not-allowed dark:text-neutral-600\",\n className\n );\n\n return (\n <button\n type=\"button\"\n className={buttonClass}\n disabled={disabled}\n onClick={onClick}\n >\n {children}\n </button>\n );\n};\n"],"names":["React","cn","DropdownCategoryTitle","children","div","className","DropdownButton","isActive","onClick","disabled","buttonClass","button","type"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,EAAE,QAAQ,8BAA8B;AAEjD,OAAO,MAAMC,wBAAwB,CAAC,EACpCC,QAAQ,EAGT;IACC,qBACE,KAACC;QAAIC,WAAU;kBACZF;;AAGP,EAAE;AAEF,OAAO,MAAMG,iBAAiB,CAAC,EAC7BH,QAAQ,EACRI,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRJ,SAAS,EAOV;IACC,MAAMK,cAAcT,GAClB,iJACA,CAACM,YAAY,CAACE,UACd,qGACAF,YACE,CAACE,YACD,6EACFA,YAAY,6DACZJ;IAGF,qBACE,KAACM;QACCC,MAAK;QACLP,WAAWK;QACXD,UAAUA;QACVD,SAASA;kBAERL;;AAGP,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/ui/Dropdown/Dropdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../../../lib/utils/index.js\";\n\nexport const DropdownCategoryTitle = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n return (\n <div className=\"text-[.65rem] font-semibold mb-1 uppercase text-neutral-500 dark:text-neutral-400 px-1.5\">\n {children}\n </div>\n );\n};\n\nexport const DropdownButton = ({\n children,\n isActive,\n onClick,\n disabled,\n className,\n}: {\n children: React.ReactNode;\n isActive?: boolean;\n onClick?: () => void;\n disabled?: boolean;\n className?: string;\n}) => {\n const buttonClass = cn(\n \"flex items-center gap-2 p-1.5 text-sm font-medium text-neutral-500 dark:text-neutral-400 text-left bg-transparent w-full rounded outline-none\",\n !isActive && !disabled,\n \"hover:bg-neutral-100 hover:text-neutral-800 dark:hover:bg-neutral-900 dark:hover:text-neutral-200\",\n isActive &&\n !disabled &&\n \"bg-neutral-100 text-neutral-800 dark:bg-neutral-900 dark:text-neutral-200\",\n disabled && \"text-neutral-400 cursor-not-allowed dark:text-neutral-600\",\n className\n );\n\n return (\n <button\n type=\"button\"\n className={buttonClass}\n disabled={disabled}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onClick();\n }}\n >\n {children}\n </button>\n );\n};\n"],"names":["React","cn","DropdownCategoryTitle","children","div","className","DropdownButton","isActive","onClick","disabled","buttonClass","button","type","e","preventDefault","stopPropagation"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,EAAE,QAAQ,8BAA8B;AAEjD,OAAO,MAAMC,wBAAwB,CAAC,EACpCC,QAAQ,EAGT;IACC,qBACE,KAACC;QAAIC,WAAU;kBACZF;;AAGP,EAAE;AAEF,OAAO,MAAMG,iBAAiB,CAAC,EAC7BH,QAAQ,EACRI,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRJ,SAAS,EAOV;IACC,MAAMK,cAAcT,GAClB,iJACA,CAACM,YAAY,CAACE,UACd,qGACAF,YACE,CAACE,YACD,6EACFA,YAAY,6DACZJ;IAGF,qBACE,KAACM;QACCC,MAAK;QACLP,WAAWK;QACXD,UAAUA;QACVD,SAAS,CAACK;YACRA,EAAEC,cAAc;YAChBD,EAAEE,eAAe;YACjBP;QACF;kBAECL;;AAGP,EAAE"}
@@ -2053,6 +2053,10 @@ select {
2053
2053
  user-select: none;
2054
2054
  }
2055
2055
 
2056
+ .resize {
2057
+ resize: both;
2058
+ }
2059
+
2056
2060
  .appearance-none {
2057
2061
  -webkit-appearance: none;
2058
2062
  -moz-appearance: none;