payload-richtext-tiptap 0.0.118 → 0.0.119
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/hooks/useTextmenuCommands.js +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/AIEditorPanel.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -47,7 +47,7 @@ export const useTextmenuCommands = (editor)=>{
|
|
|
47
47
|
}).run(), [
|
|
48
48
|
editor
|
|
49
49
|
]);
|
|
50
|
-
const onClearHighlight = useCallback(()=>editor.chain().focus().
|
|
50
|
+
const onClearHighlight = useCallback(()=>editor.chain().focus().run(), [
|
|
51
51
|
editor
|
|
52
52
|
]);
|
|
53
53
|
const onLink = useCallback((url, inNewTab)=>editor.chain().focus().setLink({
|
package/dist/src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.ts"],"sourcesContent":["import { Editor } from '@tiptap/react'\nimport { useCallback } from 'react'\n\nexport const useTextmenuCommands = (editor: Editor) => {\n const onBold = useCallback(() => editor.chain().focus().toggleBold().run(), [editor])\n const onItalic = useCallback(() => editor.chain().focus().toggleItalic().run(), [editor])\n const onStrike = useCallback(() => editor.chain().focus().toggleStrike().run(), [editor])\n const onUnderline = useCallback(() => editor.chain().focus().toggleUnderline().run(), [editor])\n const onCode = useCallback(() => editor.chain().focus().toggleCode().run(), [editor])\n const onCodeBlock = useCallback(() => editor.chain().focus().toggleCodeBlock().run(), [editor])\n\n const onSubscript = useCallback(() => editor.chain().focus().toggleSubscript().run(), [editor])\n const onSuperscript = useCallback(\n () => editor.chain().focus().toggleSuperscript().run(),\n [editor],\n )\n const onAlignLeft = useCallback(() => editor.chain().focus().setTextAlign('left').run(), [editor])\n const onAlignCenter = useCallback(\n () => editor.chain().focus().setTextAlign('center').run(),\n [editor],\n )\n const onAlignRight = useCallback(\n () => editor.chain().focus().setTextAlign('right').run(),\n [editor],\n )\n const onAlignJustify = useCallback(\n () => editor.chain().focus().setTextAlign('justify').run(),\n [editor],\n )\n\n const onChangeColor = useCallback(\n (color: string) => editor.chain().setColor(color).run(),\n [editor],\n )\n const onClearColor = useCallback(() => editor.chain().focus().unsetColor().run(), [editor])\n\n const onChangeHighlight = useCallback(\n (color: string) => editor.chain().setHighlight({ color }).run(),\n [editor],\n )\n const onClearHighlight = useCallback(\n () => editor.chain().focus().
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/hooks/useTextmenuCommands.ts"],"sourcesContent":["import { Editor } from '@tiptap/react'\nimport { useCallback } from 'react'\n\nexport const useTextmenuCommands = (editor: Editor) => {\n const onBold = useCallback(() => editor.chain().focus().toggleBold().run(), [editor])\n const onItalic = useCallback(() => editor.chain().focus().toggleItalic().run(), [editor])\n const onStrike = useCallback(() => editor.chain().focus().toggleStrike().run(), [editor])\n const onUnderline = useCallback(() => editor.chain().focus().toggleUnderline().run(), [editor])\n const onCode = useCallback(() => editor.chain().focus().toggleCode().run(), [editor])\n const onCodeBlock = useCallback(() => editor.chain().focus().toggleCodeBlock().run(), [editor])\n\n const onSubscript = useCallback(() => editor.chain().focus().toggleSubscript().run(), [editor])\n const onSuperscript = useCallback(\n () => editor.chain().focus().toggleSuperscript().run(),\n [editor],\n )\n const onAlignLeft = useCallback(() => editor.chain().focus().setTextAlign('left').run(), [editor])\n const onAlignCenter = useCallback(\n () => editor.chain().focus().setTextAlign('center').run(),\n [editor],\n )\n const onAlignRight = useCallback(\n () => editor.chain().focus().setTextAlign('right').run(),\n [editor],\n )\n const onAlignJustify = useCallback(\n () => editor.chain().focus().setTextAlign('justify').run(),\n [editor],\n )\n\n const onChangeColor = useCallback(\n (color: string) => editor.chain().setColor(color).run(),\n [editor],\n )\n const onClearColor = useCallback(() => editor.chain().focus().unsetColor().run(), [editor])\n\n const onChangeHighlight = useCallback(\n (color: string) => editor.chain().setHighlight({ color }).run(),\n [editor],\n )\n const onClearHighlight = useCallback(\n () => editor.chain().focus().run(),\n [editor],\n )\n\n const onLink = useCallback(\n (url: string, inNewTab?: boolean) =>\n editor\n .chain()\n .focus()\n .setLink({ href: url, target: inNewTab ? '_blank' : '' })\n .run(),\n [editor],\n )\n\n // const onSetFont = useCallback(\n // (font: string) => {\n // if (!font || font.length === 0) {\n // return editor.chain().focus().unsetFontFamily().run()\n // }\n // return editor.chain().focus().setFontFamily(font).run()\n // },\n // [editor],\n // )\n\n const onSetFontSize = useCallback(\n (fontSize: string) => {\n if (!fontSize || fontSize.length === 0) {\n return editor.chain().focus().unsetFontSize().run()\n }\n return editor.chain().focus().setFontSize(fontSize).run()\n },\n [editor],\n )\n\n // AI Commands\n const onCompleteSentence = useCallback(() => {\n // TODO\n }, [editor])\n const onEmojify = useCallback(() => {\n // TODO\n }, [editor])\n const onFixSpelling = useCallback(() => {\n // TODO\n }, [editor])\n const onMakeLonger = useCallback(() => {\n // TODO\n }, [editor])\n const onMakeShorter = useCallback(() => {\n // TODO\n }, [editor])\n const onSimplify = useCallback(() => {\n // TODO\n }, [editor])\n const onTldr = useCallback(() => {\n // TODO\n }, [editor])\n const onTone = useCallback(() => {\n // TODO\n }, [editor])\n const onTranslate = useCallback(() => {\n // TODO\n }, [editor])\n\n const onClearFormatting = useCallback(() => {\n editor.chain().focus().clearNodes().unsetAllMarks().run()\n }, [editor])\n\n return {\n onBold,\n onItalic,\n onStrike,\n onUnderline,\n onCode,\n onCodeBlock,\n onSubscript,\n onSuperscript,\n onAlignLeft,\n onAlignCenter,\n onAlignRight,\n onAlignJustify,\n onChangeColor,\n onClearColor,\n onChangeHighlight,\n onClearHighlight,\n // onSetFont,\n onSetFontSize,\n onLink,\n onCompleteSentence,\n onEmojify,\n onFixSpelling,\n onMakeLonger,\n onMakeShorter,\n onSimplify,\n onTldr,\n onTone,\n onTranslate,\n onClearFormatting,\n }\n}\n"],"names":["useCallback","useTextmenuCommands","editor","onBold","chain","focus","toggleBold","run","onItalic","toggleItalic","onStrike","toggleStrike","onUnderline","toggleUnderline","onCode","toggleCode","onCodeBlock","toggleCodeBlock","onSubscript","toggleSubscript","onSuperscript","toggleSuperscript","onAlignLeft","setTextAlign","onAlignCenter","onAlignRight","onAlignJustify","onChangeColor","color","setColor","onClearColor","unsetColor","onChangeHighlight","setHighlight","onClearHighlight","onLink","url","inNewTab","setLink","href","target","onSetFontSize","fontSize","length","unsetFontSize","setFontSize","onCompleteSentence","onEmojify","onFixSpelling","onMakeLonger","onMakeShorter","onSimplify","onTldr","onTone","onTranslate","onClearFormatting","clearNodes","unsetAllMarks"],"mappings":"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"}
|
|
@@ -131,7 +131,7 @@ export const AIEditorPanel = ({ editor, onOpenChange })=>{
|
|
|
131
131
|
hasCompletion ? /*#__PURE__*/ _jsx(AICompletionCommands, {
|
|
132
132
|
editor: editor,
|
|
133
133
|
onDiscard: ()=>{
|
|
134
|
-
editor?.chain()?.
|
|
134
|
+
editor?.chain()?.focus()?.run();
|
|
135
135
|
onOpenChange(false);
|
|
136
136
|
},
|
|
137
137
|
completion: 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, useRef, useState } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport i18next from \"i18next\";\nimport Markdown from \"react-markdown\";\nimport { extractMarkdown } from \"../../../lib/extract.js\";\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 { checkJsonCompletion, 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 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, completion]);\n\n return (\n <Surface\n className={`p-2 min-w-[20rem] `}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {(hasCompletion && completion?.length > 10 && (checkJsonCompletion(completion) ? !isLoading : true)) && (\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 (Beta) 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 <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 (Beta) what to do next\"\n : i18next.t(\"askAiPlaceholder\") || \"Ask AI (Beta) 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()?.
|
|
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, useRef, useState } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport i18next from \"i18next\";\nimport Markdown from \"react-markdown\";\nimport { extractMarkdown } from \"../../../lib/extract.js\";\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 { checkJsonCompletion, 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 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, completion]);\n\n return (\n <Surface\n className={`p-2 min-w-[20rem] `}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {(hasCompletion && completion?.length > 10 && (checkJsonCompletion(completion) ? !isLoading : true)) && (\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 (Beta) 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 <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 (Beta) what to do next\"\n : i18next.t(\"askAiPlaceholder\") || \"Ask AI (Beta) 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()?.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","i18next","Markdown","extractMarkdown","getPrevText","AICompletionCommands","AISelectorCommands","Surface","Toolbar","CrazySpinner","ScrollArea","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","body","option","command","language","then","text","chars","className","style","width","div","dir","type","content","ref","value","onChange","target","placeholder","t","autoFocus","onKeyDown","key","Button","onClick","onDiscard","chain","focus","run","messages","onSelect","options"],"mappings":"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"}
|