@ai-stack/payloadcms 3.0.0-beta.104
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/LICENSE.md +21 -0
- package/README.md +137 -0
- package/dist/ai/analyse.d.ts +2 -0
- package/dist/ai/analyse.d.ts.map +1 -0
- package/dist/ai/analyse.js +3 -0
- package/dist/ai/analyse.js.map +1 -0
- package/dist/ai/models/anthropic/generateRichText.d.ts +2 -0
- package/dist/ai/models/anthropic/generateRichText.d.ts.map +1 -0
- package/dist/ai/models/anthropic/generateRichText.js +38 -0
- package/dist/ai/models/anthropic/generateRichText.js.map +1 -0
- package/dist/ai/models/anthropic/index.d.ts +3 -0
- package/dist/ai/models/anthropic/index.d.ts.map +1 -0
- package/dist/ai/models/anthropic/index.js +112 -0
- package/dist/ai/models/anthropic/index.js.map +1 -0
- package/dist/ai/models/elevenLabs/generateVoice.d.ts +10 -0
- package/dist/ai/models/elevenLabs/generateVoice.d.ts.map +1 -0
- package/dist/ai/models/elevenLabs/generateVoice.js +20 -0
- package/dist/ai/models/elevenLabs/generateVoice.js.map +1 -0
- package/dist/ai/models/elevenLabs/index.d.ts +3 -0
- package/dist/ai/models/elevenLabs/index.d.ts.map +1 -0
- package/dist/ai/models/elevenLabs/index.js +129 -0
- package/dist/ai/models/elevenLabs/index.js.map +1 -0
- package/dist/ai/models/elevenLabs/voices.d.ts +4 -0
- package/dist/ai/models/elevenLabs/voices.d.ts.map +1 -0
- package/dist/ai/models/elevenLabs/voices.js +24 -0
- package/dist/ai/models/elevenLabs/voices.js.map +1 -0
- package/dist/ai/models/example-prompt-rich-text.md +47 -0
- package/dist/ai/models/example.d.ts +73 -0
- package/dist/ai/models/example.d.ts.map +1 -0
- package/dist/ai/models/example.js +126 -0
- package/dist/ai/models/example.js.map +1 -0
- package/dist/ai/models/index.d.ts +3 -0
- package/dist/ai/models/index.d.ts.map +1 -0
- package/dist/ai/models/index.js +11 -0
- package/dist/ai/models/index.js.map +1 -0
- package/dist/ai/models/openai/generateImage.d.ts +10 -0
- package/dist/ai/models/openai/generateImage.d.ts.map +1 -0
- package/dist/ai/models/openai/generateImage.js +20 -0
- package/dist/ai/models/openai/generateImage.js.map +1 -0
- package/dist/ai/models/openai/generateRichText.d.ts +2 -0
- package/dist/ai/models/openai/generateRichText.d.ts.map +1 -0
- package/dist/ai/models/openai/generateRichText.js +38 -0
- package/dist/ai/models/openai/generateRichText.js.map +1 -0
- package/dist/ai/models/openai/generateVoice.d.ts +7 -0
- package/dist/ai/models/openai/generateVoice.d.ts.map +1 -0
- package/dist/ai/models/openai/generateVoice.js +19 -0
- package/dist/ai/models/openai/generateVoice.js.map +1 -0
- package/dist/ai/models/openai/index.d.ts +3 -0
- package/dist/ai/models/openai/index.d.ts.map +1 -0
- package/dist/ai/models/openai/index.js +276 -0
- package/dist/ai/models/openai/index.js.map +1 -0
- package/dist/ai/prompts.d.ts +25 -0
- package/dist/ai/prompts.d.ts.map +1 -0
- package/dist/ai/prompts.js +214 -0
- package/dist/ai/prompts.js.map +1 -0
- package/dist/ai/schemas/lexical.schema.d.ts +31 -0
- package/dist/ai/schemas/lexical.schema.d.ts.map +1 -0
- package/dist/ai/schemas/lexical.schema.js +102 -0
- package/dist/ai/schemas/lexical.schema.js.map +1 -0
- package/dist/ai/utils/generateFileNameByPrompt.d.ts +2 -0
- package/dist/ai/utils/generateFileNameByPrompt.d.ts.map +1 -0
- package/dist/ai/utils/generateFileNameByPrompt.js +21 -0
- package/dist/ai/utils/generateFileNameByPrompt.js.map +1 -0
- package/dist/ai/utils/generateSeedPrompt.d.ts +5 -0
- package/dist/ai/utils/generateSeedPrompt.d.ts.map +1 -0
- package/dist/ai/utils/generateSeedPrompt.js +23 -0
- package/dist/ai/utils/generateSeedPrompt.js.map +1 -0
- package/dist/collections/Instructions.d.ts +3 -0
- package/dist/collections/Instructions.d.ts.map +1 -0
- package/dist/collections/Instructions.js +109 -0
- package/dist/collections/Instructions.js.map +1 -0
- package/dist/defaults.d.ts +10 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +13 -0
- package/dist/defaults.js.map +1 -0
- package/dist/endpoints/index.d.ts +3 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/index.js +141 -0
- package/dist/endpoints/index.js.map +1 -0
- package/dist/exports/client.d.ts +3 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +4 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/fields.d.ts +4 -0
- package/dist/exports/fields.d.ts.map +1 -0
- package/dist/exports/fields.js +5 -0
- package/dist/exports/fields.js.map +1 -0
- package/dist/exports/types.d.ts +3 -0
- package/dist/exports/types.d.ts.map +1 -0
- package/dist/exports/types.js +3 -0
- package/dist/exports/types.js.map +1 -0
- package/dist/fields/ComposeField/ComposeField.d.ts +4 -0
- package/dist/fields/ComposeField/ComposeField.d.ts.map +1 -0
- package/dist/fields/ComposeField/ComposeField.js +18 -0
- package/dist/fields/ComposeField/ComposeField.js.map +1 -0
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts +2 -0
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts.map +1 -0
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.js +15 -0
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.js.map +1 -0
- package/dist/fields/LexicalEditor/feature.client.d.ts +2 -0
- package/dist/fields/LexicalEditor/feature.client.d.ts.map +1 -0
- package/dist/fields/LexicalEditor/feature.client.js +13 -0
- package/dist/fields/LexicalEditor/feature.client.js.map +1 -0
- package/dist/fields/LexicalEditor/feature.server.d.ts +2 -0
- package/dist/fields/LexicalEditor/feature.server.d.ts.map +1 -0
- package/dist/fields/LexicalEditor/feature.server.js +12 -0
- package/dist/fields/LexicalEditor/feature.server.js.map +1 -0
- package/dist/fields/PromptEditorField/PromptEditorField.d.ts +4 -0
- package/dist/fields/PromptEditorField/PromptEditorField.d.ts.map +1 -0
- package/dist/fields/PromptEditorField/PromptEditorField.js +41 -0
- package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -0
- package/dist/fields/SelectField/SelectField.d.ts +10 -0
- package/dist/fields/SelectField/SelectField.d.ts.map +1 -0
- package/dist/fields/SelectField/SelectField.js +41 -0
- package/dist/fields/SelectField/SelectField.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +4 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +81 -0
- package/dist/init.js.map +1 -0
- package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts +8 -0
- package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts.map +1 -0
- package/dist/libraries/autocomplete/AutocompleteTextArea.js +437 -0
- package/dist/libraries/autocomplete/AutocompleteTextArea.js.map +1 -0
- package/dist/libraries/autocomplete/AutocompleteTextArea.module.scss +35 -0
- package/dist/libraries/handlebars/asyncHandlebars.d.ts +2 -0
- package/dist/libraries/handlebars/asyncHandlebars.d.ts.map +1 -0
- package/dist/libraries/handlebars/asyncHandlebars.js +5 -0
- package/dist/libraries/handlebars/asyncHandlebars.js.map +1 -0
- package/dist/libraries/handlebars/helpers.d.ts +2 -0
- package/dist/libraries/handlebars/helpers.d.ts.map +1 -0
- package/dist/libraries/handlebars/helpers.js +22 -0
- package/dist/libraries/handlebars/helpers.js.map +1 -0
- package/dist/libraries/handlebars/helpersMap.d.ts +12 -0
- package/dist/libraries/handlebars/helpersMap.d.ts.map +1 -0
- package/dist/libraries/handlebars/helpersMap.js +13 -0
- package/dist/libraries/handlebars/helpersMap.js.map +1 -0
- package/dist/libraries/handlebars/replacePlaceholders.d.ts +2 -0
- package/dist/libraries/handlebars/replacePlaceholders.d.ts.map +1 -0
- package/dist/libraries/handlebars/replacePlaceholders.js +8 -0
- package/dist/libraries/handlebars/replacePlaceholders.js.map +1 -0
- package/dist/plugin.d.ts +5 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +121 -0
- package/dist/plugin.js.map +1 -0
- package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts +6 -0
- package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts.map +1 -0
- package/dist/providers/InstructionsProvider/InstructionsProvider.js +31 -0
- package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -0
- package/dist/providers/InstructionsProvider/useInstructions.d.ts +4 -0
- package/dist/providers/InstructionsProvider/useInstructions.d.ts.map +1 -0
- package/dist/providers/InstructionsProvider/useInstructions.js +38 -0
- package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -0
- package/dist/styles.d.js +2 -0
- package/dist/styles.d.js.map +1 -0
- package/dist/translations/en.json +4 -0
- package/dist/translations/es.json +4 -0
- package/dist/translations/fa.json +4 -0
- package/dist/translations/fr.json +4 -0
- package/dist/translations/index.d.ts +38 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +36 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/translations/pl.json +4 -0
- package/dist/translations/ru.json +4 -0
- package/dist/translations/translation-schema.json +16 -0
- package/dist/translations/uk.json +4 -0
- package/dist/types.d.ts +94 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/Compose/Compose.d.ts +9 -0
- package/dist/ui/Compose/Compose.d.ts.map +1 -0
- package/dist/ui/Compose/Compose.js +176 -0
- package/dist/ui/Compose/Compose.js.map +1 -0
- package/dist/ui/Compose/UndoRedoActions.d.ts +4 -0
- package/dist/ui/Compose/UndoRedoActions.d.ts.map +1 -0
- package/dist/ui/Compose/UndoRedoActions.js +56 -0
- package/dist/ui/Compose/UndoRedoActions.js.map +1 -0
- package/dist/ui/Compose/compose.module.scss +19 -0
- package/dist/ui/Compose/hooks/menu/Item.d.ts +5 -0
- package/dist/ui/Compose/hooks/menu/Item.d.ts.map +1 -0
- package/dist/ui/Compose/hooks/menu/Item.js +32 -0
- package/dist/ui/Compose/hooks/menu/Item.js.map +1 -0
- package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts +4 -0
- package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts.map +1 -0
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js +78 -0
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js.map +1 -0
- package/dist/ui/Compose/hooks/menu/items.d.ts +9 -0
- package/dist/ui/Compose/hooks/menu/items.d.ts.map +1 -0
- package/dist/ui/Compose/hooks/menu/items.js +12 -0
- package/dist/ui/Compose/hooks/menu/items.js.map +1 -0
- package/dist/ui/Compose/hooks/menu/itemsMap.d.ts +11 -0
- package/dist/ui/Compose/hooks/menu/itemsMap.d.ts.map +1 -0
- package/dist/ui/Compose/hooks/menu/itemsMap.js +68 -0
- package/dist/ui/Compose/hooks/menu/itemsMap.js.map +1 -0
- package/dist/ui/Compose/hooks/menu/menu.module.scss +109 -0
- package/dist/ui/Compose/hooks/menu/useMenu.d.ts +11 -0
- package/dist/ui/Compose/hooks/menu/useMenu.d.ts.map +1 -0
- package/dist/ui/Compose/hooks/menu/useMenu.js +93 -0
- package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -0
- package/dist/ui/Compose/hooks/useGenerate.d.ts +11 -0
- package/dist/ui/Compose/hooks/useGenerate.d.ts.map +1 -0
- package/dist/ui/Compose/hooks/useGenerate.js +175 -0
- package/dist/ui/Compose/hooks/useGenerate.js.map +1 -0
- package/dist/ui/Compose/hooks/useHistory.d.ts +9 -0
- package/dist/ui/Compose/hooks/useHistory.d.ts.map +1 -0
- package/dist/ui/Compose/hooks/useHistory.js +171 -0
- package/dist/ui/Compose/hooks/useHistory.js.map +1 -0
- package/dist/ui/Icons/Icons.d.ts +45 -0
- package/dist/ui/Icons/Icons.d.ts.map +1 -0
- package/dist/ui/Icons/Icons.js +154 -0
- package/dist/ui/Icons/Icons.js.map +1 -0
- package/dist/ui/Icons/LottieAnimation.d.ts +5 -0
- package/dist/ui/Icons/LottieAnimation.d.ts.map +1 -0
- package/dist/ui/Icons/LottieAnimation.js +100 -0
- package/dist/ui/Icons/LottieAnimation.js.map +1 -0
- package/dist/ui/Icons/icons.module.css +26 -0
- package/dist/utilities/getFieldBySchemaPath.d.ts +3 -0
- package/dist/utilities/getFieldBySchemaPath.d.ts.map +1 -0
- package/dist/utilities/getFieldBySchemaPath.js +37 -0
- package/dist/utilities/getFieldBySchemaPath.js.map +1 -0
- package/dist/utilities/getFieldInfo.d.ts +3 -0
- package/dist/utilities/getFieldInfo.d.ts.map +1 -0
- package/dist/utilities/getFieldInfo.js +14 -0
- package/dist/utilities/getFieldInfo.js.map +1 -0
- package/dist/utilities/isPluginActivated.d.ts +2 -0
- package/dist/utilities/isPluginActivated.d.ts.map +1 -0
- package/dist/utilities/isPluginActivated.js +5 -0
- package/dist/utilities/isPluginActivated.js.map +1 -0
- package/dist/utilities/jsonToZod.d.ts +3 -0
- package/dist/utilities/jsonToZod.d.ts.map +1 -0
- package/dist/utilities/jsonToZod.js +33 -0
- package/dist/utilities/jsonToZod.js.map +1 -0
- package/dist/utilities/lexicalToHTML.d.ts +4 -0
- package/dist/utilities/lexicalToHTML.d.ts.map +1 -0
- package/dist/utilities/lexicalToHTML.js +11 -0
- package/dist/utilities/lexicalToHTML.js.map +1 -0
- package/dist/utilities/setSafeLexicalState.d.ts +5 -0
- package/dist/utilities/setSafeLexicalState.d.ts.map +1 -0
- package/dist/utilities/setSafeLexicalState.js +20 -0
- package/dist/utilities/setSafeLexicalState.js.map +1 -0
- package/dist/utilities/updateFieldsConfig.d.ts +8 -0
- package/dist/utilities/updateFieldsConfig.d.ts.map +1 -0
- package/dist/utilities/updateFieldsConfig.js +89 -0
- package/dist/utilities/updateFieldsConfig.js.map +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { Collection, Endpoint, Field, GroupField } from 'payload'\nimport { CSSProperties, MouseEventHandler } from 'react'\nimport { LexicalBaseNode } from './ai/schemas/lexical.schema.js'\n\nexport interface PluginConfig {\n collections: {\n [key: string]: boolean\n }\n fields?: Field[]\n globals?: string[]\n interfaceName?: string\n editorConfig?: { nodes: (typeof LexicalBaseNode)[] }\n debugging?: boolean\n generatePromptOnInit?: boolean\n}\n\nexport interface GenerationModel {\n fields: string[]\n handler?: (payload: any, options: any) => Promise<any>\n id: string\n name: string\n output: 'audio' | 'file' | 'image' | 'json' | 'text' | 'video'\n settings?: GroupField\n supportsPromptOptimization?: boolean\n}\n\nexport interface GenerationConfig {\n models: GenerationModel[]\n provider: string\n}\n\nexport type GenerateTextarea<T = any> = (args: {\n doc: T\n locale?: string\n options?: any\n}) => Promise<string> | string\n\nexport interface Instructions {\n 'collection-slug': string\n id: string\n 'model-id': string\n prompt: string\n}\n\nexport interface Endpoints {\n textarea: Omit<Endpoint, 'root'>\n upload: Omit<Endpoint, 'root'>\n}\n\nexport type ActionMenuItems =\n | 'Compose'\n | 'Expand'\n | 'Proofread'\n | 'Rephrase'\n | 'Settings'\n | 'Simplify'\n | 'Summarize'\n | 'Tone'\n | 'Translate'\n\nexport type ActionMenuEvents =\n | 'onCompose'\n | 'onExpand'\n | 'onProofread'\n | 'onRephrase'\n | 'onSettings'\n | 'onSimplify'\n | 'onSummarize'\n | 'onTone'\n | 'onTranslate'\n\nexport type UseMenuEvents = {\n [key in ActionMenuEvents]?: (data?: unknown) => void\n}\n\nexport type BaseItemProps<T = any> = {\n children?: React.ReactNode\n disabled?: boolean\n hideIcon?: boolean\n onClick: (data?: unknown) => void\n onMouseEnter?: MouseEventHandler<T> | undefined\n onMouseLeave?: MouseEventHandler<T> | undefined\n style?: CSSProperties | undefined\n isMenu?: boolean\n isActive?: boolean\n}\n\n/**\n * This interface was referenced by `Config`'s JSON-Schema\n * via the `definition` \"plugin-ai-instructions\".\n */\nexport interface PluginAiInstruction {\n id: string\n 'schema-path'?: string | null\n 'field-type'?: ('text' | 'textarea' | 'upload' | 'richText') | null\n 'model-id'?: ('openai-gpt-text' | 'dall-e' | 'tts' | 'openai-gpt-object') | null\n prompt?: string | null\n 'openai-gpt-text-settings'?: {\n model?: ('gpt-4o' | 'gpt-4-turbo' | 'gpt-4o-mini' | 'gpt-3.5-turbo') | null\n }\n 'dalle-e-settings'?: {\n version?: ('dall-e-3' | 'dall-e-2') | null\n size?: ('256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792') | null\n style?: ('vivid' | 'natural') | null\n 'enable-prompt-optimization'?: boolean | null\n }\n 'openai-tts-settings'?: {\n voice?: ('alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer') | null\n model?: ('tts-1' | 'tts-1-hd') | null\n response_format?: ('mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm') | null\n speed?: number | null\n }\n 'openai-gpt-object-settings'?: {\n model?: ('gpt-4o' | 'gpt-4-turbo' | 'gpt-4o-mini' | 'gpt-4o-2024-08-06') | null\n system?: string | null\n layout?: string | null\n }\n updatedAt: string\n createdAt: string\n}\n"],"names":[],"mappings":"AAuFA;;;CAGC,GACD,WA4BC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { FieldDescriptionClientProps } from 'payload';
|
|
3
|
+
type ComposeProps = {
|
|
4
|
+
descriptionProps?: FieldDescriptionClientProps;
|
|
5
|
+
instructionId: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const Compose: FC<ComposeProps>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=Compose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Compose.d.ts","sourceRoot":"","sources":["../../../src/ui/Compose/Compose.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAE,EAAE,EAA4C,MAAM,OAAO,CAAA;AAS3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAiBrD,KAAK,YAAY,GAAG;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAA;IAC9C,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAgJpC,CAAA"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client';
|
|
4
|
+
import { FieldDescription, Popup, useDocumentDrawer, useField, useFieldProps } from '@payloadcms/ui';
|
|
5
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
|
+
import { PLUGIN_INSTRUCTIONS_TABLE } from '../../defaults.js';
|
|
7
|
+
import { setSafeLexicalState } from '../../utilities/setSafeLexicalState.js';
|
|
8
|
+
import { PluginIcon } from '../Icons/Icons.js';
|
|
9
|
+
import { UndoRedoActions } from './UndoRedoActions.js';
|
|
10
|
+
import styles from './compose.module.scss';
|
|
11
|
+
import { useMenu } from './hooks/menu/useMenu.js';
|
|
12
|
+
import { useGenerate } from './hooks/useGenerate.js';
|
|
13
|
+
function findParentWithClass(element, className) {
|
|
14
|
+
// Base case: if the element is null or we've reached the top of the DOM
|
|
15
|
+
if (!element || element === document.body) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
// Check if the current element has the class we're looking for
|
|
19
|
+
if (element.classList.contains(className)) {
|
|
20
|
+
return element;
|
|
21
|
+
}
|
|
22
|
+
// Recursively call the function on the parent element
|
|
23
|
+
return findParentWithClass(element.parentElement, className);
|
|
24
|
+
}
|
|
25
|
+
export const Compose = (props)=>{
|
|
26
|
+
const [DocumentDrawer, _, { closeDrawer, openDrawer }] = useDocumentDrawer({
|
|
27
|
+
id: props.instructionId,
|
|
28
|
+
collectionSlug: PLUGIN_INSTRUCTIONS_TABLE
|
|
29
|
+
});
|
|
30
|
+
const { type: fieldType, path: pathFromContext, schemaPath } = useFieldProps();
|
|
31
|
+
const { editor: lexicalEditor, editorContainerRef } = useEditorConfigContext();
|
|
32
|
+
// Below snippet is used to show/hide the actions menu on AI enabled fields
|
|
33
|
+
const [input, setInput] = useState(null);
|
|
34
|
+
const actionsRef = useRef(null);
|
|
35
|
+
// Set input element for current field
|
|
36
|
+
useEffect(()=>{
|
|
37
|
+
if (!actionsRef.current) return;
|
|
38
|
+
const fieldId = `field-${pathFromContext.replace(/\./g, '__')}`;
|
|
39
|
+
const inputElement = document.getElementById(fieldId);
|
|
40
|
+
if (!inputElement && fieldType === 'richText') {
|
|
41
|
+
setInput(editorContainerRef.current);
|
|
42
|
+
} else {
|
|
43
|
+
actionsRef.current.setAttribute('for', fieldId);
|
|
44
|
+
setInput(inputElement);
|
|
45
|
+
}
|
|
46
|
+
}, [
|
|
47
|
+
pathFromContext,
|
|
48
|
+
schemaPath,
|
|
49
|
+
actionsRef,
|
|
50
|
+
editorContainerRef
|
|
51
|
+
]);
|
|
52
|
+
// Show or hide actions menu on field
|
|
53
|
+
useEffect(()=>{
|
|
54
|
+
if (!input || !actionsRef.current) return;
|
|
55
|
+
actionsRef.current.classList.add(styles.actions_hidden);
|
|
56
|
+
input.addEventListener('click', (event)=>{
|
|
57
|
+
document.querySelectorAll('.ai-plugin-active')?.forEach((element)=>{
|
|
58
|
+
const actionElement = element.querySelector(`.${styles.actions}`);
|
|
59
|
+
if (actionElement) {
|
|
60
|
+
actionElement.classList.add(styles.actions_hidden);
|
|
61
|
+
element.classList.remove('ai-plugin-active');
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
actionsRef.current.classList.remove(styles.actions_hidden);
|
|
65
|
+
const parentWithClass = findParentWithClass(event.target, 'field-type');
|
|
66
|
+
parentWithClass.classList.add('ai-plugin-active');
|
|
67
|
+
});
|
|
68
|
+
}, [
|
|
69
|
+
input,
|
|
70
|
+
actionsRef
|
|
71
|
+
]);
|
|
72
|
+
const [isProcessing, setIsProcessing] = useState(false);
|
|
73
|
+
const { generate, isLoading } = useGenerate();
|
|
74
|
+
const { ActiveComponent, Menu } = useMenu({
|
|
75
|
+
onCompose: async ()=>{
|
|
76
|
+
console.log('Composing...');
|
|
77
|
+
setIsProcessing(true);
|
|
78
|
+
await generate({
|
|
79
|
+
action: 'Compose'
|
|
80
|
+
}).finally(()=>{
|
|
81
|
+
setIsProcessing(false);
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
onExpand: async ()=>{
|
|
85
|
+
console.log('Expanding...');
|
|
86
|
+
await generate({
|
|
87
|
+
action: 'Expand'
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
onProofread: async ()=>{
|
|
91
|
+
console.log('Proofreading...');
|
|
92
|
+
await generate({
|
|
93
|
+
action: 'Proofread'
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
onRephrase: async ()=>{
|
|
97
|
+
console.log('Rephrasing...');
|
|
98
|
+
await generate({
|
|
99
|
+
action: 'Rephrase'
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
onSettings: openDrawer,
|
|
103
|
+
onSimplify: async ()=>{
|
|
104
|
+
console.log('Simplifying...');
|
|
105
|
+
await generate({
|
|
106
|
+
action: 'Simplify'
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
onSummarize: async ()=>{
|
|
110
|
+
console.log('Summarizing...');
|
|
111
|
+
await generate({
|
|
112
|
+
action: 'Summarize'
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
onTranslate: async (data)=>{
|
|
116
|
+
console.log('Translating...');
|
|
117
|
+
await generate({
|
|
118
|
+
action: 'Translate',
|
|
119
|
+
params: data
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
const { setValue } = useField({
|
|
124
|
+
path: pathFromContext
|
|
125
|
+
});
|
|
126
|
+
const setIfValueIsLexicalState = useCallback((val)=>{
|
|
127
|
+
if (val.root && lexicalEditor) {
|
|
128
|
+
setSafeLexicalState(JSON.stringify(val), lexicalEditor);
|
|
129
|
+
}
|
|
130
|
+
// DO NOT PROVIDE lexicalEditor as a dependency, it freaks out and does not update the editor after first undo/redo
|
|
131
|
+
}, []);
|
|
132
|
+
return /*#__PURE__*/ _jsxs(React.Fragment, {
|
|
133
|
+
children: [
|
|
134
|
+
/*#__PURE__*/ _jsxs("label", {
|
|
135
|
+
className: `${styles.actions}`,
|
|
136
|
+
onClick: (e)=>e.preventDefault(),
|
|
137
|
+
ref: actionsRef,
|
|
138
|
+
children: [
|
|
139
|
+
/*#__PURE__*/ _jsx(DocumentDrawer, {
|
|
140
|
+
onSave: ()=>{
|
|
141
|
+
closeDrawer();
|
|
142
|
+
}
|
|
143
|
+
}),
|
|
144
|
+
/*#__PURE__*/ _jsx(Popup, {
|
|
145
|
+
button: /*#__PURE__*/ _jsx(PluginIcon, {
|
|
146
|
+
isLoading: isProcessing || isLoading
|
|
147
|
+
}),
|
|
148
|
+
render: ({ close })=>{
|
|
149
|
+
return /*#__PURE__*/ _jsx(Menu, {
|
|
150
|
+
isLoading: isProcessing || isLoading,
|
|
151
|
+
onClose: close
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
verticalAlign: "bottom"
|
|
155
|
+
}),
|
|
156
|
+
/*#__PURE__*/ _jsx(ActiveComponent, {
|
|
157
|
+
isLoading: isProcessing || isLoading
|
|
158
|
+
}),
|
|
159
|
+
/*#__PURE__*/ _jsx(UndoRedoActions, {
|
|
160
|
+
onChange: (val)=>{
|
|
161
|
+
setValue(val);
|
|
162
|
+
setIfValueIsLexicalState(val);
|
|
163
|
+
}
|
|
164
|
+
})
|
|
165
|
+
]
|
|
166
|
+
}),
|
|
167
|
+
props.descriptionProps ? /*#__PURE__*/ _jsx("div", {
|
|
168
|
+
children: /*#__PURE__*/ _jsx(FieldDescription, {
|
|
169
|
+
...props.descriptionProps
|
|
170
|
+
})
|
|
171
|
+
}) : null
|
|
172
|
+
]
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
//# sourceMappingURL=Compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/Compose/Compose.tsx"],"sourcesContent":["'use client'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { FieldDescription, Popup, useDocumentDrawer, useField, useFieldProps } from '@payloadcms/ui'\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { PLUGIN_INSTRUCTIONS_TABLE } from '../../defaults.js'\nimport { setSafeLexicalState } from '../../utilities/setSafeLexicalState.js'\nimport { PluginIcon } from '../Icons/Icons.js'\nimport { UndoRedoActions } from './UndoRedoActions.js'\nimport styles from './compose.module.scss'\nimport { useMenu } from './hooks/menu/useMenu.js'\nimport { useGenerate } from './hooks/useGenerate.js'\nimport { FieldDescriptionClientProps } from 'payload'\n\nfunction findParentWithClass(element, className) {\n // Base case: if the element is null or we've reached the top of the DOM\n if (!element || element === document.body) {\n return null\n }\n\n // Check if the current element has the class we're looking for\n if (element.classList.contains(className)) {\n return element\n }\n\n // Recursively call the function on the parent element\n return findParentWithClass(element.parentElement, className)\n}\n\ntype ComposeProps = {\n descriptionProps?: FieldDescriptionClientProps\n instructionId: string\n}\n\nexport const Compose: FC<ComposeProps> = (props) => {\n const [DocumentDrawer, _, { closeDrawer, openDrawer }] = useDocumentDrawer({\n id: props.instructionId,\n collectionSlug: PLUGIN_INSTRUCTIONS_TABLE,\n })\n\n const { type: fieldType, path: pathFromContext, schemaPath } = useFieldProps()\n const { editor: lexicalEditor, editorContainerRef } = useEditorConfigContext()\n\n // Below snippet is used to show/hide the actions menu on AI enabled fields\n const [input, setInput] = useState(null)\n const actionsRef = useRef(null)\n\n // Set input element for current field\n useEffect(() => {\n if (!actionsRef.current) return\n\n const fieldId = `field-${pathFromContext.replace(/\\./g, '__')}`\n const inputElement = document.getElementById(fieldId)\n\n if (!inputElement && fieldType === 'richText') {\n setInput(editorContainerRef.current)\n } else {\n actionsRef.current.setAttribute('for', fieldId)\n setInput(inputElement)\n }\n }, [pathFromContext, schemaPath, actionsRef, editorContainerRef])\n\n // Show or hide actions menu on field\n useEffect(() => {\n if (!input || !actionsRef.current) return\n\n actionsRef.current.classList.add(styles.actions_hidden)\n input.addEventListener('click', (event) => {\n document.querySelectorAll('.ai-plugin-active')?.forEach((element) => {\n const actionElement = element.querySelector(`.${styles.actions}`)\n if (actionElement) {\n actionElement.classList.add(styles.actions_hidden)\n element.classList.remove('ai-plugin-active')\n }\n })\n\n actionsRef.current.classList.remove(styles.actions_hidden)\n const parentWithClass = findParentWithClass(event.target, 'field-type')\n parentWithClass.classList.add('ai-plugin-active')\n })\n }, [input, actionsRef])\n\n const [isProcessing, setIsProcessing] = useState(false)\n const { generate, isLoading } = useGenerate()\n\n const { ActiveComponent, Menu } = useMenu({\n onCompose: async () => {\n console.log('Composing...')\n setIsProcessing(true)\n await generate({\n action: 'Compose',\n }).finally(() => {\n setIsProcessing(false)\n })\n },\n onExpand: async () => {\n console.log('Expanding...')\n await generate({\n action: 'Expand',\n })\n },\n onProofread: async () => {\n console.log('Proofreading...')\n await generate({\n action: 'Proofread',\n })\n },\n onRephrase: async () => {\n console.log('Rephrasing...')\n await generate({\n action: 'Rephrase',\n })\n },\n onSettings: openDrawer,\n onSimplify: async () => {\n console.log('Simplifying...')\n await generate({\n action: 'Simplify',\n })\n },\n onSummarize: async () => {\n console.log('Summarizing...')\n await generate({\n action: 'Summarize',\n })\n },\n onTranslate: async (data) => {\n console.log('Translating...')\n await generate({\n action: 'Translate',\n params: data,\n })\n },\n })\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const setIfValueIsLexicalState = useCallback((val: any) => {\n if (val.root && lexicalEditor) {\n setSafeLexicalState(JSON.stringify(val), lexicalEditor)\n }\n\n // DO NOT PROVIDE lexicalEditor as a dependency, it freaks out and does not update the editor after first undo/redo\n }, [])\n\n return (\n <React.Fragment>\n <label className={`${styles.actions}`} onClick={(e) => e.preventDefault()} ref={actionsRef}>\n <DocumentDrawer\n onSave={() => {\n closeDrawer()\n }}\n />\n <Popup\n button={<PluginIcon isLoading={isProcessing || isLoading} />}\n render={({ close }) => {\n return <Menu isLoading={isProcessing || isLoading} onClose={close} />\n }}\n verticalAlign=\"bottom\"\n />\n <ActiveComponent isLoading={isProcessing || isLoading} />\n <UndoRedoActions\n onChange={(val) => {\n setValue(val)\n setIfValueIsLexicalState(val)\n }}\n />\n </label>\n {/*Render incoming description field*/}\n {props.descriptionProps ? (\n <div>\n <FieldDescription {...props.descriptionProps} />\n </div>\n ) : null}\n </React.Fragment>\n )\n}\n"],"names":["useEditorConfigContext","FieldDescription","Popup","useDocumentDrawer","useField","useFieldProps","React","useCallback","useEffect","useRef","useState","PLUGIN_INSTRUCTIONS_TABLE","setSafeLexicalState","PluginIcon","UndoRedoActions","styles","useMenu","useGenerate","findParentWithClass","element","className","document","body","classList","contains","parentElement","Compose","props","DocumentDrawer","_","closeDrawer","openDrawer","id","instructionId","collectionSlug","type","fieldType","path","pathFromContext","schemaPath","editor","lexicalEditor","editorContainerRef","input","setInput","actionsRef","current","fieldId","replace","inputElement","getElementById","setAttribute","add","actions_hidden","addEventListener","event","querySelectorAll","forEach","actionElement","querySelector","actions","remove","parentWithClass","target","isProcessing","setIsProcessing","generate","isLoading","ActiveComponent","Menu","onCompose","console","log","action","finally","onExpand","onProofread","onRephrase","onSettings","onSimplify","onSummarize","onTranslate","data","params","setValue","setIfValueIsLexicalState","val","root","JSON","stringify","Fragment","label","onClick","e","preventDefault","ref","onSave","button","render","close","onClose","verticalAlign","onChange","descriptionProps","div"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UndoRedoActions.d.ts","sourceRoot":"","sources":["../../../src/ui/Compose/UndoRedoActions.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,iBAAkB;IAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,4CA0DjF,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useHistory } from './hooks/useHistory.js';
|
|
3
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
4
|
+
export const UndoRedoActions = ({ onChange })=>{
|
|
5
|
+
const { canRedo, canUndo, redo, undo } = useHistory();
|
|
6
|
+
const redoHistoryValue = useCallback((event)=>{
|
|
7
|
+
event.stopPropagation();
|
|
8
|
+
const value = redo();
|
|
9
|
+
if (value) {
|
|
10
|
+
onChange(value);
|
|
11
|
+
}
|
|
12
|
+
}, [
|
|
13
|
+
redo
|
|
14
|
+
]);
|
|
15
|
+
const undoHistoryValue = useCallback((event)=>{
|
|
16
|
+
event.stopPropagation();
|
|
17
|
+
const value = undo();
|
|
18
|
+
if (value) {
|
|
19
|
+
onChange(value);
|
|
20
|
+
}
|
|
21
|
+
}, [
|
|
22
|
+
undo
|
|
23
|
+
]);
|
|
24
|
+
// Delay rendering until the client-side hydration is complete
|
|
25
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
26
|
+
useEffect(()=>{
|
|
27
|
+
setIsMounted(true);
|
|
28
|
+
}, []);
|
|
29
|
+
if (!isMounted || !canUndo && !canRedo) return null;
|
|
30
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
31
|
+
children: [
|
|
32
|
+
/*#__PURE__*/ _jsx("button", {
|
|
33
|
+
onClick: undoHistoryValue,
|
|
34
|
+
type: "button",
|
|
35
|
+
disabled: !canUndo,
|
|
36
|
+
className: `btn btn--size-small btn--style-secondary ${!canUndo && 'btn--disabled'}`,
|
|
37
|
+
style: {
|
|
38
|
+
marginBlock: 0
|
|
39
|
+
},
|
|
40
|
+
children: "Undo"
|
|
41
|
+
}),
|
|
42
|
+
/*#__PURE__*/ _jsx("button", {
|
|
43
|
+
onClick: redoHistoryValue,
|
|
44
|
+
type: "button",
|
|
45
|
+
disabled: !canRedo,
|
|
46
|
+
className: `btn btn--size-small btn--style-secondary ${!canRedo && 'btn--disabled'}`,
|
|
47
|
+
style: {
|
|
48
|
+
marginBlock: 0
|
|
49
|
+
},
|
|
50
|
+
children: "Redo"
|
|
51
|
+
})
|
|
52
|
+
]
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=UndoRedoActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/Compose/UndoRedoActions.tsx"],"sourcesContent":["import { useHistory } from './hooks/useHistory.js'\nimport React, { MouseEventHandler, useCallback, useEffect, useState } from 'react'\n\nexport const UndoRedoActions = ({ onChange }: { onChange: (val: unknown) => void }) => {\n const { canRedo, canUndo, redo, undo } = useHistory()\n\n const redoHistoryValue = useCallback<MouseEventHandler>(\n (event) => {\n event.stopPropagation()\n\n const value = redo()\n if (value) {\n onChange(value)\n }\n },\n [redo],\n )\n\n const undoHistoryValue = useCallback<MouseEventHandler>(\n (event) => {\n event.stopPropagation()\n\n const value = undo()\n if (value) {\n onChange(value)\n }\n },\n [undo],\n )\n\n // Delay rendering until the client-side hydration is complete\n const [isMounted, setIsMounted] = useState(false)\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n if (!isMounted || (!canUndo && !canRedo)) return null\n\n return (\n <>\n <button\n onClick={undoHistoryValue}\n type=\"button\"\n disabled={!canUndo}\n className={`btn btn--size-small btn--style-secondary ${!canUndo && 'btn--disabled'}`}\n style={{ marginBlock: 0 }}\n >\n Undo\n </button>\n <button\n onClick={redoHistoryValue}\n type=\"button\"\n disabled={!canRedo}\n className={`btn btn--size-small btn--style-secondary ${!canRedo && 'btn--disabled'}`}\n style={{ marginBlock: 0 }}\n >\n Redo\n </button>\n </>\n )\n}\n"],"names":["useHistory","React","useCallback","useEffect","useState","UndoRedoActions","onChange","canRedo","canUndo","redo","undo","redoHistoryValue","event","stopPropagation","value","undoHistoryValue","isMounted","setIsMounted","button","onClick","type","disabled","className","style","marginBlock"],"mappings":";AAAA,SAASA,UAAU,QAAQ,wBAAuB;AAClD,OAAOC,SAA4BC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAElF,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,QAAQ,EAAwC;IAChF,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGV;IAEzC,MAAMW,mBAAmBT,YACvB,CAACU;QACCA,MAAMC,eAAe;QAErB,MAAMC,QAAQL;QACd,IAAIK,OAAO;YACTR,SAASQ;QACX;IACF,GACA;QAACL;KAAK;IAGR,MAAMM,mBAAmBb,YACvB,CAACU;QACCA,MAAMC,eAAe;QAErB,MAAMC,QAAQJ;QACd,IAAII,OAAO;YACTR,SAASQ;QACX;IACF,GACA;QAACJ;KAAK;IAGR,8DAA8D;IAC9D,MAAM,CAACM,WAAWC,aAAa,GAAGb,SAAS;IAE3CD,UAAU;QACRc,aAAa;IACf,GAAG,EAAE;IAEL,IAAI,CAACD,aAAc,CAACR,WAAW,CAACD,SAAU,OAAO;IAEjD,qBACE;;0BACE,KAACW;gBACCC,SAASJ;gBACTK,MAAK;gBACLC,UAAU,CAACb;gBACXc,WAAW,CAAC,yCAAyC,EAAE,CAACd,WAAW,gBAAgB,CAAC;gBACpFe,OAAO;oBAAEC,aAAa;gBAAE;0BACzB;;0BAGD,KAACN;gBACCC,SAASR;gBACTS,MAAK;gBACLC,UAAU,CAACd;gBACXe,WAAW,CAAC,yCAAyC,EAAE,CAACf,WAAW,gBAAgB,CAAC;gBACpFgB,OAAO;oBAAEC,aAAa;gBAAE;0BACzB;;;;AAKP,EAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.actions {
|
|
2
|
+
position: relative;
|
|
3
|
+
margin: 5px 0;
|
|
4
|
+
display: flex;
|
|
5
|
+
gap: 10px;
|
|
6
|
+
padding: 5px 0;
|
|
7
|
+
transition: all 0.3s ease;
|
|
8
|
+
max-height: 100px;
|
|
9
|
+
opacity: 1;
|
|
10
|
+
align-items: center;
|
|
11
|
+
|
|
12
|
+
&_hidden {
|
|
13
|
+
max-height: 0;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
padding: 0 5px;
|
|
16
|
+
margin: 0;
|
|
17
|
+
opacity: 0;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BaseItemProps } from '../../../../types.js';
|
|
3
|
+
export declare const Item: React.FC<BaseItemProps>;
|
|
4
|
+
export declare const createMenuItem: (IconComponent: any, initialText: any) => React.MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
5
|
+
//# sourceMappingURL=Item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/Item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAA;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAKzD,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAaxC,CAAA;AAED,eAAO,MAAM,cAAc,mIACyC,aAAa,6CAM7E,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { memo } from 'react';
|
|
3
|
+
import { ArrowIcon } from '../../../Icons/Icons.js';
|
|
4
|
+
import styles from './menu.module.scss';
|
|
5
|
+
export const Item = /*#__PURE__*/ memo(({ children, disabled, onClick, isActive, ...rest })=>/*#__PURE__*/ _jsx("span", {
|
|
6
|
+
className: styles.generate_button + ' ' + (isActive ? styles.active : ''),
|
|
7
|
+
"data-disabled": disabled,
|
|
8
|
+
onClick: !disabled ? onClick : null,
|
|
9
|
+
onKeyDown: !disabled ? onClick : null,
|
|
10
|
+
role: "presentation",
|
|
11
|
+
...rest,
|
|
12
|
+
children: children
|
|
13
|
+
}));
|
|
14
|
+
export const createMenuItem = (IconComponent, initialText)=>/*#__PURE__*/ memo(({ children, disabled, hideIcon, onClick, isMenu, ...rest })=>/*#__PURE__*/ _jsxs(Item, {
|
|
15
|
+
disabled: disabled,
|
|
16
|
+
onClick: onClick,
|
|
17
|
+
...rest,
|
|
18
|
+
children: [
|
|
19
|
+
hideIcon || /*#__PURE__*/ _jsx(IconComponent, {
|
|
20
|
+
size: 18
|
|
21
|
+
}),
|
|
22
|
+
children || /*#__PURE__*/ _jsx("span", {
|
|
23
|
+
className: styles.text,
|
|
24
|
+
children: initialText
|
|
25
|
+
}),
|
|
26
|
+
isMenu && /*#__PURE__*/ _jsx(ArrowIcon, {
|
|
27
|
+
size: 18
|
|
28
|
+
})
|
|
29
|
+
]
|
|
30
|
+
}));
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=Item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/Item.tsx"],"sourcesContent":["import React, { memo } from 'react'\n\nimport type { BaseItemProps } from '../../../../types.js'\n\nimport { ArrowIcon } from '../../../Icons/Icons.js'\nimport styles from './menu.module.scss'\n\nexport const Item: React.FC<BaseItemProps> = memo(\n ({ children, disabled, onClick, isActive, ...rest }) => (\n <span\n className={styles.generate_button + ' ' + (isActive ? styles.active : '')}\n data-disabled={disabled}\n onClick={!disabled ? onClick : null}\n onKeyDown={!disabled ? onClick : null}\n role=\"presentation\"\n {...rest}\n >\n {children}\n </span>\n ),\n)\n\nexport const createMenuItem = (IconComponent, initialText) =>\n memo(({ children, disabled, hideIcon, onClick, isMenu, ...rest }: BaseItemProps) => (\n <Item disabled={disabled} onClick={onClick} {...rest}>\n {hideIcon || <IconComponent size={18} />}\n {children || <span className={styles.text}>{initialText}</span>}\n {isMenu && <ArrowIcon size={18} />}\n </Item>\n ))\n"],"names":["React","memo","ArrowIcon","styles","Item","children","disabled","onClick","isActive","rest","span","className","generate_button","active","data-disabled","onKeyDown","role","createMenuItem","IconComponent","initialText","hideIcon","isMenu","size","text"],"mappings":";AAAA,OAAOA,SAASC,IAAI,QAAQ,QAAO;AAInC,SAASC,SAAS,QAAQ,0BAAyB;AACnD,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,qBAAgCH,KAC3C,CAAC,EAAEI,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGC,MAAM,iBACjD,KAACC;QACCC,WAAWR,OAAOS,eAAe,GAAG,MAAOJ,CAAAA,WAAWL,OAAOU,MAAM,GAAG,EAAC;QACvEC,iBAAeR;QACfC,SAAS,CAACD,WAAWC,UAAU;QAC/BQ,WAAW,CAACT,WAAWC,UAAU;QACjCS,MAAK;QACJ,GAAGP,IAAI;kBAEPJ;QAGN;AAED,OAAO,MAAMY,iBAAiB,CAACC,eAAeC,4BAC5ClB,KAAK,CAAC,EAAEI,QAAQ,EAAEC,QAAQ,EAAEc,QAAQ,EAAEb,OAAO,EAAEc,MAAM,EAAE,GAAGZ,MAAqB,iBAC7E,MAACL;YAAKE,UAAUA;YAAUC,SAASA;YAAU,GAAGE,IAAI;;gBACjDW,0BAAY,KAACF;oBAAcI,MAAM;;gBACjCjB,0BAAY,KAACK;oBAAKC,WAAWR,OAAOoB,IAAI;8BAAGJ;;gBAC3CE,wBAAU,KAACnB;oBAAUoB,MAAM;;;YAE9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TranslateMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/TranslateMenu.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa;;6CA0EzB,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import locales from 'locale-codes';
|
|
4
|
+
import { Translate } from './items.js';
|
|
5
|
+
import { Item } from './Item.js';
|
|
6
|
+
import styles from './menu.module.scss';
|
|
7
|
+
export const TranslateMenu = ({ onClick })=>{
|
|
8
|
+
const [show, setShow] = useState(false);
|
|
9
|
+
const filteredLocales = locales.all.filter((a)=>{
|
|
10
|
+
return a.tag && a.location;
|
|
11
|
+
});
|
|
12
|
+
const [languages, setLanguages] = useState(filteredLocales);
|
|
13
|
+
const [inputFocus, setInputFocus] = useState(false);
|
|
14
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
15
|
+
className: styles.menu,
|
|
16
|
+
onMouseLeave: ()=>{
|
|
17
|
+
if (!inputFocus) {
|
|
18
|
+
setShow(false);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
children: [
|
|
22
|
+
/*#__PURE__*/ _jsx(Translate, {
|
|
23
|
+
onClick: ()=>{
|
|
24
|
+
setShow(!show);
|
|
25
|
+
},
|
|
26
|
+
onMouseEnter: ()=>setShow(true),
|
|
27
|
+
isMenu: true,
|
|
28
|
+
isActive: show
|
|
29
|
+
}),
|
|
30
|
+
/*#__PURE__*/ _jsx("div", {
|
|
31
|
+
className: styles.hoverMenu,
|
|
32
|
+
"data-show": show,
|
|
33
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
34
|
+
className: `${styles.menu} ${styles.subMenu}`,
|
|
35
|
+
children: [
|
|
36
|
+
/*#__PURE__*/ _jsx(Item, {
|
|
37
|
+
onClick: ()=>{},
|
|
38
|
+
style: {
|
|
39
|
+
position: 'sticky',
|
|
40
|
+
top: 0,
|
|
41
|
+
padding: '0 0 5px 0',
|
|
42
|
+
background: 'transparent'
|
|
43
|
+
},
|
|
44
|
+
children: /*#__PURE__*/ _jsx("input", {
|
|
45
|
+
className: styles.menuInput,
|
|
46
|
+
placeholder: 'Search...',
|
|
47
|
+
onFocus: ()=>setInputFocus(true),
|
|
48
|
+
onBlur: ()=>setInputFocus(false),
|
|
49
|
+
onChange: (event)=>{
|
|
50
|
+
const value = event.target.value;
|
|
51
|
+
setLanguages(filteredLocales.filter((l)=>{
|
|
52
|
+
const lowerCaseValue = value.toLowerCase();
|
|
53
|
+
return l.name.toLowerCase().startsWith(lowerCaseValue) || l.location.toLowerCase().startsWith(lowerCaseValue) || l.tag.toLowerCase().startsWith(lowerCaseValue);
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
}),
|
|
58
|
+
languages.map((locale)=>{
|
|
59
|
+
return /*#__PURE__*/ _jsx(Item, {
|
|
60
|
+
onClick: ()=>{
|
|
61
|
+
onClick({
|
|
62
|
+
locale: locale.tag
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
66
|
+
className: styles.ellipsis,
|
|
67
|
+
children: `${locale.location} (${locale.tag})`
|
|
68
|
+
})
|
|
69
|
+
}, locale.tag);
|
|
70
|
+
})
|
|
71
|
+
]
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=TranslateMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/TranslateMenu.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport locales from 'locale-codes'\n\nimport { Translate } from './items.js'\nimport { Item } from './Item.js'\nimport styles from './menu.module.scss'\n\nexport const TranslateMenu = ({ onClick }) => {\n const [show, setShow] = useState(false)\n\n const filteredLocales = locales.all.filter((a) => {\n return a.tag && a.location\n })\n\n const [languages, setLanguages] = useState(filteredLocales)\n const [inputFocus, setInputFocus] = useState(false)\n\n return (\n <div\n className={styles.menu}\n onMouseLeave={() => {\n if (!inputFocus) {\n setShow(false)\n }\n }}\n >\n <Translate\n onClick={() => {\n setShow(!show)\n }}\n onMouseEnter={() => setShow(true)}\n isMenu={true}\n isActive={show}\n ></Translate>\n <div className={styles.hoverMenu} data-show={show}>\n <div className={`${styles.menu} ${styles.subMenu}`}>\n <Item\n onClick={() => {}}\n style={{\n position: 'sticky',\n top: 0,\n padding: '0 0 5px 0',\n background: 'transparent',\n }}\n >\n <input\n className={styles.menuInput}\n placeholder={'Search...'}\n onFocus={() => setInputFocus(true)}\n onBlur={() => setInputFocus(false)}\n onChange={(event) => {\n const value = event.target.value\n setLanguages(\n filteredLocales.filter((l) => {\n const lowerCaseValue = value.toLowerCase()\n return (\n l.name.toLowerCase().startsWith(lowerCaseValue) ||\n l.location.toLowerCase().startsWith(lowerCaseValue) ||\n l.tag.toLowerCase().startsWith(lowerCaseValue)\n )\n }),\n )\n }}\n />\n </Item>\n {languages.map((locale) => {\n return (\n <Item\n key={locale.tag}\n onClick={() => {\n onClick({ locale: locale.tag })\n }}\n >\n <span className={styles.ellipsis}>{`${locale.location} (${locale.tag})`}</span>\n </Item>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["React","useState","locales","Translate","Item","styles","TranslateMenu","onClick","show","setShow","filteredLocales","all","filter","a","tag","location","languages","setLanguages","inputFocus","setInputFocus","div","className","menu","onMouseLeave","onMouseEnter","isMenu","isActive","hoverMenu","data-show","subMenu","style","position","top","padding","background","input","menuInput","placeholder","onFocus","onBlur","onChange","event","value","target","l","lowerCaseValue","toLowerCase","name","startsWith","map","locale","span","ellipsis"],"mappings":";AAAA,OAAOA,SAASC,QAAQ,QAAQ,QAAO;AACvC,OAAOC,aAAa,eAAc;AAElC,SAASC,SAAS,QAAQ,aAAY;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,OAAO,EAAE;IACvC,MAAM,CAACC,MAAMC,QAAQ,GAAGR,SAAS;IAEjC,MAAMS,kBAAkBR,QAAQS,GAAG,CAACC,MAAM,CAAC,CAACC;QAC1C,OAAOA,EAAEC,GAAG,IAAID,EAAEE,QAAQ;IAC5B;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGhB,SAASS;IAC3C,MAAM,CAACQ,YAAYC,cAAc,GAAGlB,SAAS;IAE7C,qBACE,MAACmB;QACCC,WAAWhB,OAAOiB,IAAI;QACtBC,cAAc;YACZ,IAAI,CAACL,YAAY;gBACfT,QAAQ;YACV;QACF;;0BAEA,KAACN;gBACCI,SAAS;oBACPE,QAAQ,CAACD;gBACX;gBACAgB,cAAc,IAAMf,QAAQ;gBAC5BgB,QAAQ;gBACRC,UAAUlB;;0BAEZ,KAACY;gBAAIC,WAAWhB,OAAOsB,SAAS;gBAAEC,aAAWpB;0BAC3C,cAAA,MAACY;oBAAIC,WAAW,CAAC,EAAEhB,OAAOiB,IAAI,CAAC,CAAC,EAAEjB,OAAOwB,OAAO,CAAC,CAAC;;sCAChD,KAACzB;4BACCG,SAAS,KAAO;4BAChBuB,OAAO;gCACLC,UAAU;gCACVC,KAAK;gCACLC,SAAS;gCACTC,YAAY;4BACd;sCAEA,cAAA,KAACC;gCACCd,WAAWhB,OAAO+B,SAAS;gCAC3BC,aAAa;gCACbC,SAAS,IAAMnB,cAAc;gCAC7BoB,QAAQ,IAAMpB,cAAc;gCAC5BqB,UAAU,CAACC;oCACT,MAAMC,QAAQD,MAAME,MAAM,CAACD,KAAK;oCAChCzB,aACEP,gBAAgBE,MAAM,CAAC,CAACgC;wCACtB,MAAMC,iBAAiBH,MAAMI,WAAW;wCACxC,OACEF,EAAEG,IAAI,CAACD,WAAW,GAAGE,UAAU,CAACH,mBAChCD,EAAE7B,QAAQ,CAAC+B,WAAW,GAAGE,UAAU,CAACH,mBACpCD,EAAE9B,GAAG,CAACgC,WAAW,GAAGE,UAAU,CAACH;oCAEnC;gCAEJ;;;wBAGH7B,UAAUiC,GAAG,CAAC,CAACC;4BACd,qBACE,KAAC9C;gCAECG,SAAS;oCACPA,QAAQ;wCAAE2C,QAAQA,OAAOpC,GAAG;oCAAC;gCAC/B;0CAEA,cAAA,KAACqC;oCAAK9B,WAAWhB,OAAO+C,QAAQ;8CAAG,CAAC,EAAEF,OAAOnC,QAAQ,CAAC,EAAE,EAAEmC,OAAOpC,GAAG,CAAC,CAAC,CAAC;;+BALlEoC,OAAOpC,GAAG;wBAQrB;;;;;;AAKV,EAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const Proofread: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
2
|
+
export declare const Rephrase: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
3
|
+
export declare const Translate: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
4
|
+
export declare const Expand: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
5
|
+
export declare const Summarize: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
6
|
+
export declare const Simplify: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
7
|
+
export declare const Compose: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
8
|
+
export declare const Settings: import("react").MemoExoticComponent<({ children, disabled, hideIcon, onClick, isMenu, ...rest }: import("../../../../types.js").BaseItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
9
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/items.tsx"],"names":[],"mappings":"AAYA,eAAO,MAAM,SAAS,4LAA8C,CAAA;AACpE,eAAO,MAAM,QAAQ,4LAA2C,CAAA;AAChE,eAAO,MAAM,SAAS,4LAA6C,CAAA;AACnE,eAAO,MAAM,MAAM,4LAA0C,CAAA;AAC7D,eAAO,MAAM,SAAS,4LAA6C,CAAA;AACnE,eAAO,MAAM,QAAQ,4LAA0C,CAAA;AAC/D,eAAO,MAAM,OAAO,4LAA4C,CAAA;AAChE,eAAO,MAAM,QAAQ,4LAAuC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DocsAddOnIcon, EditNoteIcon, SegmentIcon, SpellCheckIcon, StylusNoteIcon, SummarizeIcon, TranslateIcon, TuneIcon } from '../../../Icons/Icons.js';
|
|
2
|
+
import { createMenuItem } from './Item.js';
|
|
3
|
+
export const Proofread = createMenuItem(SpellCheckIcon, 'Proofread');
|
|
4
|
+
export const Rephrase = createMenuItem(EditNoteIcon, 'Rephrase');
|
|
5
|
+
export const Translate = createMenuItem(TranslateIcon, 'Translate');
|
|
6
|
+
export const Expand = createMenuItem(DocsAddOnIcon, 'Expand');
|
|
7
|
+
export const Summarize = createMenuItem(SummarizeIcon, 'Summarize');
|
|
8
|
+
export const Simplify = createMenuItem(SegmentIcon, 'Simplify');
|
|
9
|
+
export const Compose = createMenuItem(StylusNoteIcon, 'Compose');
|
|
10
|
+
export const Settings = createMenuItem(TuneIcon, 'Settings');
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/items.tsx"],"sourcesContent":["import {\n DocsAddOnIcon,\n EditNoteIcon,\n SegmentIcon,\n SpellCheckIcon,\n StylusNoteIcon,\n SummarizeIcon,\n TranslateIcon,\n TuneIcon,\n} from '../../../Icons/Icons.js'\nimport { createMenuItem } from './Item.js'\n\nexport const Proofread = createMenuItem(SpellCheckIcon, 'Proofread')\nexport const Rephrase = createMenuItem(EditNoteIcon, 'Rephrase')\nexport const Translate = createMenuItem(TranslateIcon, 'Translate')\nexport const Expand = createMenuItem(DocsAddOnIcon, 'Expand')\nexport const Summarize = createMenuItem(SummarizeIcon, 'Summarize')\nexport const Simplify = createMenuItem(SegmentIcon, 'Simplify')\nexport const Compose = createMenuItem(StylusNoteIcon, 'Compose')\nexport const Settings = createMenuItem(TuneIcon, 'Settings')\n"],"names":["DocsAddOnIcon","EditNoteIcon","SegmentIcon","SpellCheckIcon","StylusNoteIcon","SummarizeIcon","TranslateIcon","TuneIcon","createMenuItem","Proofread","Rephrase","Translate","Expand","Summarize","Simplify","Compose","Settings"],"mappings":"AAAA,SACEA,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,aAAa,EACbC,QAAQ,QACH,0BAAyB;AAChC,SAASC,cAAc,QAAQ,YAAW;AAE1C,OAAO,MAAMC,YAAYD,eAAeL,gBAAgB,aAAY;AACpE,OAAO,MAAMO,WAAWF,eAAeP,cAAc,YAAW;AAChE,OAAO,MAAMU,YAAYH,eAAeF,eAAe,aAAY;AACnE,OAAO,MAAMM,SAASJ,eAAeR,eAAe,UAAS;AAC7D,OAAO,MAAMa,YAAYL,eAAeH,eAAe,aAAY;AACnE,OAAO,MAAMS,WAAWN,eAAeN,aAAa,YAAW;AAC/D,OAAO,MAAMa,UAAUP,eAAeJ,gBAAgB,WAAU;AAChE,OAAO,MAAMY,WAAWR,eAAeD,UAAU,YAAW"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ActionMenuItems, BaseItemProps } from '../../../../types.js';
|
|
3
|
+
type MenuItemsMapType = {
|
|
4
|
+
component: React.FC<BaseItemProps>;
|
|
5
|
+
excludedFor?: string[];
|
|
6
|
+
loadingText?: string;
|
|
7
|
+
name: ActionMenuItems;
|
|
8
|
+
};
|
|
9
|
+
export declare const menuItemsMap: MenuItemsMapType[];
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=itemsMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"itemsMap.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/itemsMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAK1E,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,gBAAgB,EAoB1C,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Compose, Expand, Proofread, Rephrase, Settings, Simplify, Summarize } from './items.js';
|
|
3
|
+
import { TranslateMenu } from './TranslateMenu.js';
|
|
4
|
+
export const menuItemsMap = [
|
|
5
|
+
{
|
|
6
|
+
name: 'Proofread',
|
|
7
|
+
component: Proofread,
|
|
8
|
+
excludedFor: [
|
|
9
|
+
'upload'
|
|
10
|
+
],
|
|
11
|
+
loadingText: 'Proofreading'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Rephrase',
|
|
15
|
+
component: Rephrase,
|
|
16
|
+
excludedFor: [
|
|
17
|
+
'upload'
|
|
18
|
+
],
|
|
19
|
+
loadingText: 'Rephrasing'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Translate',
|
|
23
|
+
component: TranslateMenu,
|
|
24
|
+
excludedFor: [
|
|
25
|
+
'upload'
|
|
26
|
+
],
|
|
27
|
+
loadingText: 'Translating'
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Expand',
|
|
31
|
+
component: Expand,
|
|
32
|
+
excludedFor: [
|
|
33
|
+
'upload',
|
|
34
|
+
'text'
|
|
35
|
+
],
|
|
36
|
+
loadingText: 'Expanding'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
// Turned off - WIP
|
|
40
|
+
name: 'Summarize',
|
|
41
|
+
component: Summarize,
|
|
42
|
+
excludedFor: [
|
|
43
|
+
'upload',
|
|
44
|
+
'text',
|
|
45
|
+
'richText'
|
|
46
|
+
],
|
|
47
|
+
loadingText: 'Summarizing'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'Simplify',
|
|
51
|
+
component: Simplify,
|
|
52
|
+
excludedFor: [
|
|
53
|
+
'upload'
|
|
54
|
+
],
|
|
55
|
+
loadingText: 'Simplifying'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Compose',
|
|
59
|
+
component: Compose,
|
|
60
|
+
loadingText: 'Composing'
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'Settings',
|
|
64
|
+
component: Settings
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=itemsMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/itemsMap.ts"],"sourcesContent":["import React from 'react'\n\nimport type { ActionMenuItems, BaseItemProps } from '../../../../types.js'\n\nimport { Compose, Expand, Proofread, Rephrase, Settings, Simplify, Summarize } from './items.js'\nimport { TranslateMenu } from './TranslateMenu.js'\n\ntype MenuItemsMapType = {\n component: React.FC<BaseItemProps>\n excludedFor?: string[]\n loadingText?: string\n name: ActionMenuItems\n}\n\nexport const menuItemsMap: MenuItemsMapType[] = [\n { name: 'Proofread', component: Proofread, excludedFor: ['upload'], loadingText: 'Proofreading' },\n { name: 'Rephrase', component: Rephrase, excludedFor: ['upload'], loadingText: 'Rephrasing' },\n {\n name: 'Translate',\n component: TranslateMenu,\n excludedFor: ['upload'],\n loadingText: 'Translating',\n },\n { name: 'Expand', component: Expand, excludedFor: ['upload', 'text'], loadingText: 'Expanding' },\n {\n // Turned off - WIP\n name: 'Summarize',\n component: Summarize,\n excludedFor: ['upload', 'text', 'richText'],\n loadingText: 'Summarizing',\n },\n { name: 'Simplify', component: Simplify, excludedFor: ['upload'], loadingText: 'Simplifying' },\n { name: 'Compose', component: Compose, loadingText: 'Composing' },\n { name: 'Settings', component: Settings },\n]\n"],"names":["React","Compose","Expand","Proofread","Rephrase","Settings","Simplify","Summarize","TranslateMenu","menuItemsMap","name","component","excludedFor","loadingText"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,OAAO,EAAEC,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,aAAY;AAChG,SAASC,aAAa,QAAQ,qBAAoB;AASlD,OAAO,MAAMC,eAAmC;IAC9C;QAAEC,MAAM;QAAaC,WAAWR;QAAWS,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAe;IAChG;QAAEH,MAAM;QAAYC,WAAWP;QAAUQ,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAa;IAC5F;QACEH,MAAM;QACNC,WAAWH;QACXI,aAAa;YAAC;SAAS;QACvBC,aAAa;IACf;IACA;QAAEH,MAAM;QAAUC,WAAWT;QAAQU,aAAa;YAAC;YAAU;SAAO;QAAEC,aAAa;IAAY;IAC/F;QACE,mBAAmB;QACnBH,MAAM;QACNC,WAAWJ;QACXK,aAAa;YAAC;YAAU;YAAQ;SAAW;QAC3CC,aAAa;IACf;IACA;QAAEH,MAAM;QAAYC,WAAWL;QAAUM,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAc;IAC7F;QAAEH,MAAM;QAAWC,WAAWV;QAASY,aAAa;IAAY;IAChE;QAAEH,MAAM;QAAYC,WAAWN;IAAS;CACzC,CAAA"}
|