payload-richtext-tiptap 0.0.106 → 0.0.108

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.
@@ -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,gCAuGzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
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;AAyDvC,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,gCA+GzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -9,6 +9,7 @@ import { DropdownCategoryTitle } from "../../../ui/Dropdown/Dropdown.js";
9
9
  import { Icon } from "../../../ui/Icon.js";
10
10
  import { Surface } from "../../../ui/Surface.js";
11
11
  import { Toolbar } from "../../../ui/Toolbar.js";
12
+ import { useMemo } from "react";
12
13
  const options = [
13
14
  // {
14
15
  // value: 'translate',
@@ -49,6 +50,17 @@ const options = [
49
50
  const AISelectorCommands = ({ messages, onSelect, editor })=>{
50
51
  const { code } = useLocale();
51
52
  const editorSelection = editor?.state?.selection?.content?.()?.content?.toJSON();
53
+ const sortedLanguages = useMemo(()=>{
54
+ const editorLanguage = editor.storage?.aiCommand?.language;
55
+ return languages.sort((a, b)=>{
56
+ if (editorLanguage?.includes(a.value)) return -1;
57
+ if (editorLanguage?.includes(b.value)) return 1;
58
+ return 0;
59
+ });
60
+ }, [
61
+ languages,
62
+ editor.storage?.aiCommand?.language
63
+ ]);
52
64
  return /*#__PURE__*/ _jsxs(_Fragment, {
53
65
  children: [
54
66
  /*#__PURE__*/ _jsx(DropdownCategoryTitle, {
@@ -91,7 +103,7 @@ const AISelectorCommands = ({ messages, onSelect, editor })=>{
91
103
  /*#__PURE__*/ _jsx(DropdownCategoryTitle, {
92
104
  children: "Languages"
93
105
  }),
94
- languages.map((lang)=>/*#__PURE__*/ _jsx(Toolbar.Button, {
106
+ sortedLanguages.map((lang)=>/*#__PURE__*/ _jsx(Toolbar.Button, {
95
107
  onClick: ()=>{
96
108
  const editorSelection = editor.state.selection.content().content.toJSON();
97
109
  onSelect("", {
@@ -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 i18next from \"i18next\";\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\";\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 const editorSelection = editor?.state?.selection?.content?.()?.content?.toJSON()\n\n return (\n <>\n <DropdownCategoryTitle>Edit or review selection</DropdownCategoryTitle>\n {editorSelection && <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 <span className=\"text-xs ml-1 px-2 py-0.5 bg-blue-100 text-blue-700 rounded-full dark:bg-blue-700 dark:text-blue-100 align-baseline\">\n Beta\n </span>\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 });\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 <span className=\"text-xs ml-1 px-2 py-0.5 bg-blue-100 text-blue-700 rounded-full dark:bg-blue-700 dark:text-blue-100 align-baseline\">\n Beta\n </span>\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 });\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 <span className=\"text-xs ml-1 px-2 py-0.5 bg-blue-100 text-blue-700 rounded-full dark:bg-blue-700 dark:text-blue-100 align-baseline\">\n Beta\n </span>\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AISelectorCommands;\n"],"names":["useLocale","Popover","i18next","ArrowDownWideNarrow","CheckCheck","ChevronDown","Languages","RefreshCcwDot","StepForward","WrapText","languages","getPrevText","DropdownCategoryTitle","Icon","Surface","Toolbar","options","value","label","icon","AISelectorCommands","messages","onSelect","editor","code","editorSelection","state","selection","content","toJSON","Root","Trigger","asChild","Button","className","type","tooltip","t","span","Content","side","align","sideOffset","map","lang","onClick","option","language","from","to","empty","doc","textBetween","storage","aiCommand","Divider","horizontal","text","chars"],"mappings":"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"}
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 i18next from \"i18next\";\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 { useMemo } from \"react\";\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 const editorSelection = editor?.state?.selection?.content?.()?.content?.toJSON()\n const sortedLanguages = useMemo(() => {\n const editorLanguage = editor.storage?.aiCommand?.language\n return languages.sort((a, b) => {\n if (editorLanguage?.includes(a.value)) return -1;\n if (editorLanguage?.includes(b.value)) return 1;\n return 0;\n })\n },[languages, editor.storage?.aiCommand?.language]);\n\n return (\n <>\n <DropdownCategoryTitle>Edit or review selection</DropdownCategoryTitle>\n {editorSelection && <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 <span className=\"text-xs ml-1 px-2 py-0.5 bg-blue-100 text-blue-700 rounded-full dark:bg-blue-700 dark:text-blue-100 align-baseline\">\n Beta\n </span>\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 {sortedLanguages.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 });\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 <span className=\"text-xs ml-1 px-2 py-0.5 bg-blue-100 text-blue-700 rounded-full dark:bg-blue-700 dark:text-blue-100 align-baseline\">\n Beta\n </span>\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 });\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 <span className=\"text-xs ml-1 px-2 py-0.5 bg-blue-100 text-blue-700 rounded-full dark:bg-blue-700 dark:text-blue-100 align-baseline\">\n Beta\n </span>\n </Toolbar.Button>\n </>\n );\n};\n\nexport default AISelectorCommands;\n"],"names":["useLocale","Popover","i18next","ArrowDownWideNarrow","CheckCheck","ChevronDown","Languages","RefreshCcwDot","StepForward","WrapText","languages","getPrevText","DropdownCategoryTitle","Icon","Surface","Toolbar","useMemo","options","value","label","icon","AISelectorCommands","messages","onSelect","editor","code","editorSelection","state","selection","content","toJSON","sortedLanguages","editorLanguage","storage","aiCommand","language","sort","a","b","includes","Root","Trigger","asChild","Button","className","type","tooltip","t","span","Content","side","align","sideOffset","map","lang","onClick","option","from","to","empty","doc","textBetween","Divider","horizontal","text","chars"],"mappings":"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"}