@ai-stack/payloadcms 3.0.0-beta.95.1 → 3.2.1-beta
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 +2 -2
- package/README.md +19 -17
- package/dist/ai/models/anthropic/generateRichText.d.ts.map +1 -1
- package/dist/ai/models/anthropic/generateRichText.js +2 -2
- package/dist/ai/models/anthropic/generateRichText.js.map +1 -1
- package/dist/ai/models/anthropic/index.d.ts.map +1 -1
- package/dist/ai/models/anthropic/index.js +8 -32
- package/dist/ai/models/anthropic/index.js.map +1 -1
- package/dist/ai/models/elevenLabs/generateVoice.d.ts +1 -1
- package/dist/ai/models/elevenLabs/index.d.ts.map +1 -1
- package/dist/ai/models/elevenLabs/index.js +4 -3
- package/dist/ai/models/elevenLabs/index.js.map +1 -1
- package/dist/ai/models/openai/generateImage.d.ts +1 -1
- package/dist/ai/models/openai/generateRichText.js +2 -2
- package/dist/ai/models/openai/generateRichText.js.map +1 -1
- package/dist/ai/models/openai/generateVoice.d.ts +1 -1
- package/dist/ai/models/openai/index.d.ts.map +1 -1
- package/dist/ai/models/openai/index.js +9 -35
- package/dist/ai/models/openai/index.js.map +1 -1
- package/dist/ai/prompts.d.ts +1 -1
- package/dist/ai/prompts.d.ts.map +1 -1
- package/dist/ai/prompts.js +6 -3
- package/dist/ai/prompts.js.map +1 -1
- package/dist/ai/schemas/lexicalJsonSchema.d.ts +2 -0
- package/dist/ai/schemas/lexicalJsonSchema.d.ts.map +1 -0
- package/dist/ai/schemas/lexicalJsonSchema.js +317 -0
- package/dist/ai/schemas/lexicalJsonSchema.js.map +1 -0
- package/dist/ai/utils/generateFileNameByPrompt.js.map +1 -1
- package/dist/ai/utils/systemGenerate.d.ts +5 -0
- package/dist/ai/utils/systemGenerate.d.ts.map +1 -0
- package/dist/ai/utils/{generateSeedPrompt.js → systemGenerate.js} +2 -2
- package/dist/ai/utils/systemGenerate.js.map +1 -0
- package/dist/collections/Instructions.d.ts +1 -1
- package/dist/collections/Instructions.d.ts.map +1 -1
- package/dist/collections/Instructions.js +177 -85
- package/dist/collections/Instructions.js.map +1 -1
- package/dist/defaults.d.ts +1 -1
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +1 -1
- package/dist/defaults.js.map +1 -1
- package/dist/endpoints/fetchFields.d.ts +3 -0
- package/dist/endpoints/fetchFields.d.ts.map +1 -0
- package/dist/endpoints/fetchFields.js +21 -0
- package/dist/endpoints/fetchFields.js.map +1 -0
- package/dist/endpoints/index.d.ts.map +1 -1
- package/dist/endpoints/index.js +12 -18
- package/dist/endpoints/index.js.map +1 -1
- package/dist/exports/client.d.ts +0 -1
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +0 -1
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/fields.d.ts +2 -0
- package/dist/exports/fields.d.ts.map +1 -1
- package/dist/exports/fields.js +2 -0
- package/dist/exports/fields.js.map +1 -1
- package/dist/fields/ComposeField/ComposeField.d.ts +3 -0
- package/dist/fields/ComposeField/ComposeField.d.ts.map +1 -0
- package/dist/fields/ComposeField/ComposeField.js +24 -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 +28 -0
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.js.map +1 -0
- package/dist/fields/LexicalEditor/feature.client.d.ts +4 -1
- package/dist/fields/LexicalEditor/feature.client.d.ts.map +1 -1
- package/dist/fields/LexicalEditor/feature.client.js +15 -7
- package/dist/fields/LexicalEditor/feature.client.js.map +1 -1
- package/dist/fields/PromptEditorField/PromptEditorField.d.ts +2 -2
- package/dist/fields/PromptEditorField/PromptEditorField.d.ts.map +1 -1
- package/dist/fields/PromptEditorField/PromptEditorField.js +4 -8
- package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
- package/dist/fields/SelectField/SelectField.d.ts +3 -2
- package/dist/fields/SelectField/SelectField.d.ts.map +1 -1
- package/dist/fields/SelectField/SelectField.js +2 -3
- package/dist/fields/SelectField/SelectField.js.map +1 -1
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -6
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +2 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +22 -21
- package/dist/init.js.map +1 -1
- package/dist/libraries/autocomplete/AutocompleteTextArea.js +9 -7
- package/dist/libraries/autocomplete/AutocompleteTextArea.js.map +1 -1
- package/dist/libraries/handlebars/asyncHandlebars.js +1 -1
- package/dist/libraries/handlebars/asyncHandlebars.js.map +1 -1
- package/dist/libraries/handlebars/helpers.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +30 -41
- package/dist/plugin.js.map +1 -1
- package/dist/providers/FieldProvider/FieldProvider.d.ts +15 -0
- package/dist/providers/FieldProvider/FieldProvider.d.ts.map +1 -0
- package/dist/providers/FieldProvider/FieldProvider.js +33 -0
- package/dist/providers/FieldProvider/FieldProvider.js.map +1 -0
- package/dist/providers/FieldProvider/useFieldProps.d.ts +6 -0
- package/dist/providers/FieldProvider/useFieldProps.d.ts.map +1 -0
- package/dist/providers/FieldProvider/useFieldProps.js +12 -0
- package/dist/providers/FieldProvider/useFieldProps.js.map +1 -0
- package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts +5 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts.map +1 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.js +12 -7
- package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
- package/dist/providers/InstructionsProvider/useInstructions.d.ts +2 -2
- package/dist/providers/InstructionsProvider/useInstructions.d.ts.map +1 -1
- package/dist/providers/InstructionsProvider/useInstructions.js +17 -4
- package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -1
- package/dist/types.d.ts +9 -41
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -4
- package/dist/types.js.map +1 -1
- package/dist/ui/Compose/Compose.d.ts +9 -0
- package/dist/ui/Compose/Compose.d.ts.map +1 -0
- package/dist/ui/{Actions/Actions.js → Compose/Compose.js} +49 -39
- package/dist/ui/Compose/Compose.js.map +1 -0
- package/dist/ui/{Actions → Compose}/UndoRedoActions.d.ts.map +1 -1
- package/dist/ui/{Actions → Compose}/UndoRedoActions.js +15 -2
- package/dist/ui/Compose/UndoRedoActions.js.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/menu/Item.d.ts +1 -1
- package/dist/ui/{Actions → Compose}/hooks/menu/Item.d.ts.map +1 -1
- package/dist/ui/{Actions → Compose}/hooks/menu/Item.js +2 -2
- package/dist/ui/{Actions → Compose}/hooks/menu/Item.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/menu/TranslateMenu.js +11 -11
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/menu/items.d.ts +8 -8
- package/dist/ui/{Actions → Compose}/hooks/menu/items.d.ts.map +1 -1
- package/dist/ui/{Actions → Compose}/hooks/menu/items.js.map +1 -1
- package/dist/ui/{Actions → Compose}/hooks/menu/itemsMap.d.ts +1 -1
- package/dist/ui/Compose/hooks/menu/itemsMap.d.ts.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/menu/itemsMap.js +1 -2
- package/dist/ui/Compose/hooks/menu/itemsMap.js.map +1 -0
- package/dist/ui/Compose/hooks/menu/useMenu.d.ts.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/menu/useMenu.js +2 -1
- package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/useGenerate.d.ts +3 -1
- package/dist/ui/Compose/hooks/useGenerate.d.ts.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/useGenerate.js +19 -24
- package/dist/ui/Compose/hooks/useGenerate.js.map +1 -0
- package/dist/ui/Compose/hooks/useHistory.d.ts.map +1 -0
- package/dist/ui/{Actions → Compose}/hooks/useHistory.js +6 -3
- package/dist/ui/Compose/hooks/useHistory.js.map +1 -0
- package/dist/utilities/setSafeLexicalState.d.ts +2 -2
- package/dist/utilities/setSafeLexicalState.d.ts.map +1 -1
- package/dist/utilities/setSafeLexicalState.js +5 -12
- package/dist/utilities/setSafeLexicalState.js.map +1 -1
- package/dist/utilities/updateFieldsConfig.d.ts.map +1 -1
- package/dist/utilities/updateFieldsConfig.js +18 -6
- package/dist/utilities/updateFieldsConfig.js.map +1 -1
- package/package.json +32 -37
- package/dist/ai/schemas/lexical.schema.d.ts +0 -31
- package/dist/ai/schemas/lexical.schema.d.ts.map +0 -1
- package/dist/ai/schemas/lexical.schema.js +0 -102
- package/dist/ai/schemas/lexical.schema.js.map +0 -1
- package/dist/ai/utils/generateSeedPrompt.d.ts +0 -5
- package/dist/ai/utils/generateSeedPrompt.d.ts.map +0 -1
- package/dist/ai/utils/generateSeedPrompt.js.map +0 -1
- package/dist/fields/DescriptionField/DescriptionField.d.ts +0 -2
- package/dist/fields/DescriptionField/DescriptionField.d.ts.map +0 -1
- package/dist/fields/DescriptionField/DescriptionField.js +0 -16
- package/dist/fields/DescriptionField/DescriptionField.js.map +0 -1
- package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts +0 -3
- package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts.map +0 -1
- package/dist/fields/DescriptionField/DescriptionFieldComponent.js +0 -19
- package/dist/fields/DescriptionField/DescriptionFieldComponent.js.map +0 -1
- package/dist/fields/LexicalEditor/ActionsFeatureComponent.d.ts +0 -2
- package/dist/fields/LexicalEditor/ActionsFeatureComponent.d.ts.map +0 -1
- package/dist/fields/LexicalEditor/ActionsFeatureComponent.js +0 -15
- package/dist/fields/LexicalEditor/ActionsFeatureComponent.js.map +0 -1
- package/dist/ui/Actions/Actions.d.ts +0 -5
- package/dist/ui/Actions/Actions.d.ts.map +0 -1
- package/dist/ui/Actions/Actions.js.map +0 -1
- package/dist/ui/Actions/UndoRedoActions.js.map +0 -1
- package/dist/ui/Actions/hooks/menu/TranslateMenu.d.ts.map +0 -1
- package/dist/ui/Actions/hooks/menu/TranslateMenu.js.map +0 -1
- package/dist/ui/Actions/hooks/menu/itemsMap.d.ts.map +0 -1
- package/dist/ui/Actions/hooks/menu/itemsMap.js.map +0 -1
- package/dist/ui/Actions/hooks/menu/useMenu.d.ts.map +0 -1
- package/dist/ui/Actions/hooks/menu/useMenu.js.map +0 -1
- package/dist/ui/Actions/hooks/useGenerate.d.ts.map +0 -1
- package/dist/ui/Actions/hooks/useGenerate.js.map +0 -1
- package/dist/ui/Actions/hooks/useHistory.d.ts.map +0 -1
- package/dist/ui/Actions/hooks/useHistory.js.map +0 -1
- package/dist/utilities/jsonToZod.d.ts +0 -3
- package/dist/utilities/jsonToZod.d.ts.map +0 -1
- package/dist/utilities/jsonToZod.js +0 -33
- package/dist/utilities/jsonToZod.js.map +0 -1
- /package/dist/ui/{Actions → Compose}/UndoRedoActions.d.ts +0 -0
- /package/dist/ui/{Actions/actions.module.scss → Compose/compose.module.scss} +0 -0
- /package/dist/ui/{Actions → Compose}/hooks/menu/TranslateMenu.d.ts +0 -0
- /package/dist/ui/{Actions → Compose}/hooks/menu/items.js +0 -0
- /package/dist/ui/{Actions → Compose}/hooks/menu/menu.module.scss +0 -0
- /package/dist/ui/{Actions → Compose}/hooks/menu/useMenu.d.ts +0 -0
- /package/dist/ui/{Actions → Compose}/hooks/useHistory.d.ts +0 -0
|
@@ -1,33 +1,31 @@
|
|
|
1
1
|
import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client';
|
|
2
|
-
import { useConfig,
|
|
2
|
+
import { useConfig, useField, useForm, useLocale } from '@payloadcms/ui';
|
|
3
|
+
import { jsonSchema } from 'ai';
|
|
3
4
|
import { useCompletion, experimental_useObject as useObject } from 'ai/react';
|
|
4
|
-
import { useCallback, useEffect } from 'react';
|
|
5
|
-
import { PLUGIN_API_ENDPOINT_GENERATE, PLUGIN_API_ENDPOINT_GENERATE_UPLOAD, PLUGIN_INSTRUCTIONS_TABLE } from '../../../defaults.js';
|
|
6
|
-
import {
|
|
7
|
-
import { getFieldBySchemaPath } from '../../../utilities/getFieldBySchemaPath.js';
|
|
8
|
-
import { jsonSchemaToZod } from '../../../utilities/jsonToZod.js';
|
|
5
|
+
import { useCallback, useEffect, useMemo } from 'react';
|
|
6
|
+
import { PLUGIN_API_ENDPOINT_GENERATE, PLUGIN_API_ENDPOINT_GENERATE_UPLOAD, PLUGIN_INSTRUCTIONS_TABLE, PLUGIN_NAME } from '../../../defaults.js';
|
|
7
|
+
import { useFieldProps } from '../../../providers/FieldProvider/useFieldProps.js';
|
|
9
8
|
import { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js';
|
|
10
9
|
import { useHistory } from './useHistory.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const { type, path: pathFromContext, schemaPath } = useFieldProps();
|
|
10
|
+
export const useGenerate = ({ instructionId })=>{
|
|
11
|
+
const { type, path: pathFromContext } = useFieldProps();
|
|
14
12
|
const editorConfigContext = useEditorConfigContext();
|
|
15
13
|
const { editor } = editorConfigContext;
|
|
16
|
-
const {
|
|
14
|
+
const { config } = useConfig();
|
|
15
|
+
const { routes: { api }, serverURL } = config;
|
|
17
16
|
const { setValue } = useField({
|
|
18
17
|
path: pathFromContext
|
|
19
18
|
});
|
|
20
19
|
const { set: setHistory } = useHistory();
|
|
21
|
-
const { id: instructionId } = useInstructions({
|
|
22
|
-
path: schemaPath
|
|
23
|
-
});
|
|
24
20
|
const { getData } = useForm();
|
|
25
21
|
const localFromContext = useLocale();
|
|
26
22
|
const { config: { collections } } = useConfig();
|
|
27
23
|
const collection = collections.find((collection)=>collection.slug === PLUGIN_INSTRUCTIONS_TABLE);
|
|
28
|
-
const { custom: { editorConfig } = {} } = collection.admin;
|
|
29
|
-
const { schema:
|
|
30
|
-
const
|
|
24
|
+
const { custom: { [PLUGIN_NAME]: { editorConfig = {} } = {} } = {} } = collection.admin;
|
|
25
|
+
const { schema: editorSchema = {} } = editorConfig;
|
|
26
|
+
const memoizedSchema = useMemo(()=>jsonSchema(editorSchema), [
|
|
27
|
+
editorSchema
|
|
28
|
+
]);
|
|
31
29
|
const { isLoading: loadingObject, object, stop, submit } = useObject({
|
|
32
30
|
api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,
|
|
33
31
|
onError: (error)=>{
|
|
@@ -41,7 +39,7 @@ export const useGenerate = ()=>{
|
|
|
41
39
|
console.log('onFinish: result ', result);
|
|
42
40
|
}
|
|
43
41
|
},
|
|
44
|
-
schema:
|
|
42
|
+
schema: memoizedSchema
|
|
45
43
|
});
|
|
46
44
|
useEffect(()=>{
|
|
47
45
|
if (!object) return;
|
|
@@ -57,7 +55,7 @@ export const useGenerate = ()=>{
|
|
|
57
55
|
object
|
|
58
56
|
]);
|
|
59
57
|
const { complete, completion, isLoading: loadingCompletion } = useCompletion({
|
|
60
|
-
api:
|
|
58
|
+
api: `${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE}`,
|
|
61
59
|
onError: (error)=>{
|
|
62
60
|
console.error('Error generating text:', error);
|
|
63
61
|
},
|
|
@@ -112,14 +110,12 @@ export const useGenerate = ()=>{
|
|
|
112
110
|
]);
|
|
113
111
|
const generateUpload = useCallback(async ()=>{
|
|
114
112
|
const doc = getData();
|
|
115
|
-
|
|
116
|
-
return fetch(`/api${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {
|
|
113
|
+
return fetch(`${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {
|
|
117
114
|
body: JSON.stringify({
|
|
118
115
|
doc,
|
|
119
116
|
locale: localFromContext?.code,
|
|
120
117
|
options: {
|
|
121
|
-
instructionId
|
|
122
|
-
uploadCollectionSlug: fieldInfo.relationTo || 'media'
|
|
118
|
+
instructionId
|
|
123
119
|
}
|
|
124
120
|
}),
|
|
125
121
|
credentials: 'include',
|
|
@@ -145,8 +141,7 @@ export const useGenerate = ()=>{
|
|
|
145
141
|
}, [
|
|
146
142
|
getData,
|
|
147
143
|
localFromContext?.code,
|
|
148
|
-
instructionId
|
|
149
|
-
setValue
|
|
144
|
+
instructionId
|
|
150
145
|
]);
|
|
151
146
|
const generate = useCallback(async (options)=>{
|
|
152
147
|
if (type === 'richText') {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/Compose/hooks/useGenerate.ts"],"sourcesContent":["import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { useConfig, useField, useForm, useLocale } from '@payloadcms/ui'\nimport { jsonSchema } from 'ai'\nimport { useCompletion, experimental_useObject as useObject } from 'ai/react'\nimport { useCallback, useEffect, useMemo } from 'react'\n\nimport type { ActionMenuItems, GenerateTextarea } from '../../../types.js'\n\nimport {\n PLUGIN_API_ENDPOINT_GENERATE,\n PLUGIN_API_ENDPOINT_GENERATE_UPLOAD,\n PLUGIN_INSTRUCTIONS_TABLE,\n PLUGIN_NAME,\n} from '../../../defaults.js'\nimport { useFieldProps } from '../../../providers/FieldProvider/useFieldProps.js'\nimport { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js'\nimport { useHistory } from './useHistory.js'\n\ntype ActionCallbackParams = { action: ActionMenuItems; params?: unknown }\n\nexport const useGenerate = ({ instructionId }: { instructionId: string }) => {\n const { type, path: pathFromContext } = useFieldProps()\n const editorConfigContext = useEditorConfigContext()\n const { editor } = editorConfigContext\n\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const { set: setHistory } = useHistory()\n\n const { getData } = useForm()\n const localFromContext = useLocale()\n const {\n config: { collections },\n } = useConfig()\n\n const collection = collections.find((collection) => collection.slug === PLUGIN_INSTRUCTIONS_TABLE)\n const { custom: { [PLUGIN_NAME]: { editorConfig = {} } = {} } = {} } = collection.admin\n const { schema: editorSchema = {} } = editorConfig\n\n const memoizedSchema = useMemo(() => jsonSchema(editorSchema), [editorSchema])\n\n const {\n isLoading: loadingObject,\n object,\n stop, // TODO: Implement this function\n submit,\n } = useObject({\n api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating object:', error)\n },\n onFinish: (result) => {\n if (result.object) {\n setHistory(result.object)\n setValue(result.object)\n } else {\n console.log('onFinish: result ', result)\n }\n },\n schema: memoizedSchema,\n })\n\n useEffect(() => {\n if (!object) return\n\n requestAnimationFrame(() => {\n if (!editor) {\n setValue(object)\n return\n }\n\n // Currently this is being used as setValue for RichText component does not render new changes right away.\n setSafeLexicalState(object, editor)\n })\n }, [object])\n\n const {\n complete,\n completion,\n isLoading: loadingCompletion,\n } = useCompletion({\n api: `${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating text:', error)\n },\n onFinish: (prompt, result) => {\n setHistory(result)\n },\n streamProtocol: 'data',\n })\n\n useEffect(() => {\n if (!completion) return\n\n requestAnimationFrame(() => {\n setValue(completion)\n })\n }, [completion])\n\n const streamObject = useCallback(\n ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n const options = {\n action,\n actionParams: params,\n instructionId,\n }\n\n submit({\n doc,\n locale: localFromContext?.code,\n options,\n })\n },\n [getData, localFromContext?.code, instructionId],\n )\n\n const streamText = useCallback(\n async ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n\n const options = {\n action,\n actionParams: params,\n instructionId,\n }\n\n await complete('', {\n body: {\n doc,\n locale: localFromContext?.code,\n options,\n },\n })\n },\n [getData, localFromContext?.code, instructionId],\n )\n\n const generateUpload = useCallback(async () => {\n const doc = getData()\n\n return fetch(`${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {\n body: JSON.stringify({\n doc,\n locale: localFromContext?.code,\n options: {\n instructionId,\n },\n } satisfies Parameters<GenerateTextarea>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n .then(async (uploadResponse) => {\n if (uploadResponse.ok) {\n const { result } = await uploadResponse.json()\n if (!result) throw new Error('generateUpload: Something went wrong')\n\n setValue(result?.id)\n setHistory(result?.id)\n } else {\n const { errors = [] } = await uploadResponse.json()\n const errStr = errors.map((error) => error.message).join(', ')\n throw new Error(errStr)\n }\n return uploadResponse\n })\n .catch((error) => {\n console.error('Error generating your upload', error)\n })\n }, [getData, localFromContext?.code, instructionId])\n\n const generate = useCallback(\n async (options?: ActionCallbackParams) => {\n if (type === 'richText') {\n return streamObject(options)\n }\n\n if (['text', 'textarea'].includes(type)) {\n return streamText(options)\n }\n\n if (type === 'upload') {\n return generateUpload()\n }\n },\n [generateUpload, streamObject, streamText, type],\n )\n\n return {\n generate,\n isLoading: loadingCompletion || loadingObject,\n }\n}\n"],"names":["useEditorConfigContext","useConfig","useField","useForm","useLocale","jsonSchema","useCompletion","experimental_useObject","useObject","useCallback","useEffect","useMemo","PLUGIN_API_ENDPOINT_GENERATE","PLUGIN_API_ENDPOINT_GENERATE_UPLOAD","PLUGIN_INSTRUCTIONS_TABLE","PLUGIN_NAME","useFieldProps","setSafeLexicalState","useHistory","useGenerate","instructionId","type","path","pathFromContext","editorConfigContext","editor","config","routes","api","serverURL","setValue","set","setHistory","getData","localFromContext","collections","collection","find","slug","custom","editorConfig","admin","schema","editorSchema","memoizedSchema","isLoading","loadingObject","object","stop","submit","onError","error","console","onFinish","result","log","requestAnimationFrame","complete","completion","loadingCompletion","prompt","streamProtocol","streamObject","action","params","doc","options","actionParams","locale","code","streamText","body","generateUpload","fetch","JSON","stringify","credentials","headers","method","then","uploadResponse","ok","json","Error","id","errors","errStr","map","message","join","catch","generate","includes"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHistory.d.ts","sourceRoot":"","sources":["../../../../src/ui/Compose/hooks/useHistory.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,UAAU;;;;;gBAkEZ,GAAG;;CAoEb,CAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { useDocumentInfo, useField
|
|
2
|
+
import { useDocumentInfo, useField } from '@payloadcms/ui';
|
|
3
3
|
import { useCallback, useEffect } from 'react';
|
|
4
4
|
import { PLUGIN_NAME } from '../../../defaults.js';
|
|
5
|
+
import { useFieldProps } from '../../../providers/FieldProvider/useFieldProps.js';
|
|
5
6
|
const STORAGE_KEY = `${PLUGIN_NAME}-fields-history`;
|
|
6
7
|
export const useHistory = ()=>{
|
|
7
8
|
const { id } = useDocumentInfo();
|
|
@@ -23,7 +24,9 @@ export const useHistory = ()=>{
|
|
|
23
24
|
}
|
|
24
25
|
}, []);
|
|
25
26
|
const saveToLocalStorage = useCallback((newGlobalHistory)=>{
|
|
26
|
-
|
|
27
|
+
if (typeof localStorage !== 'undefined') {
|
|
28
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(newGlobalHistory));
|
|
29
|
+
}
|
|
27
30
|
}, []);
|
|
28
31
|
// Clear previous history
|
|
29
32
|
const clearHistory = useCallback(()=>{
|
|
@@ -31,7 +34,7 @@ export const useHistory = ()=>{
|
|
|
31
34
|
...getLatestHistory()
|
|
32
35
|
};
|
|
33
36
|
Object.keys(latestHistory).forEach((k)=>{
|
|
34
|
-
if (!k.startsWith(id
|
|
37
|
+
if (!k.startsWith(id?.toString())) {
|
|
35
38
|
delete latestHistory[k];
|
|
36
39
|
}
|
|
37
40
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/Compose/hooks/useHistory.ts"],"sourcesContent":["'use client'\n\nimport { useDocumentInfo, useField } from '@payloadcms/ui'\nimport { useCallback, useEffect } from 'react'\n\nimport { PLUGIN_NAME } from '../../../defaults.js'\nimport { useFieldProps } from '../../../providers/FieldProvider/useFieldProps.js'\n\nconst STORAGE_KEY = `${PLUGIN_NAME}-fields-history`\n\ninterface HistoryState {\n [path: string]: {\n currentIndex: number\n history: any[]\n }\n}\n\nexport const useHistory = () => {\n const { id } = useDocumentInfo()\n const { path: pathFromContext, schemaPath } = useFieldProps()\n const { value: currentFieldValue } = useField<string>({\n path: pathFromContext,\n })\n\n const fieldKey = `${id}.${schemaPath}`\n\n const getLatestHistory = useCallback((): HistoryState => {\n try {\n // This condition is applied, as it was somehow triggering on server side\n if (typeof localStorage !== 'undefined') {\n return JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}')\n }\n return {}\n } catch (e) {\n console.error('Error parsing history:', e)\n return {}\n }\n }, [])\n\n const saveToLocalStorage = useCallback((newGlobalHistory: HistoryState) => {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(newGlobalHistory))\n }\n }, [])\n\n // Clear previous history\n const clearHistory = useCallback(() => {\n const latestHistory = { ...getLatestHistory() }\n Object.keys(latestHistory).forEach((k) => {\n if (!k.startsWith(id?.toString())) {\n delete latestHistory[k]\n }\n })\n saveToLocalStorage(latestHistory)\n }, [id, fieldKey, getLatestHistory, saveToLocalStorage])\n\n useEffect(() => {\n // This is applied to clear out the document history which is not currently in use\n clearHistory()\n\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || {\n currentIndex: -1,\n history: [],\n }\n\n let newIndex = currentIndex\n if (currentIndex == -1) {\n newIndex = 0\n if (currentFieldValue) {\n history[newIndex] = currentFieldValue\n }\n }\n\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newIndex, history },\n }\n\n saveToLocalStorage(newGlobalHistory)\n }, [fieldKey])\n\n const set = useCallback(\n (data: any) => {\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || {\n currentIndex: -1,\n history: [],\n }\n const newHistory = [...history.slice(0, currentIndex + 1), data]\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newHistory.length - 1, history: newHistory },\n }\n saveToLocalStorage(newGlobalHistory)\n return data\n },\n [fieldKey, getLatestHistory, saveToLocalStorage],\n )\n\n const undo = useCallback(() => {\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || { currentIndex: -1, history: [] }\n if (currentIndex > 0) {\n const newIndex = currentIndex - 1\n const newValue = history[newIndex]\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newIndex, history },\n }\n saveToLocalStorage(newGlobalHistory)\n return newValue\n }\n return undefined\n }, [fieldKey, getLatestHistory, saveToLocalStorage])\n\n const redo = useCallback(() => {\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || { currentIndex: -1, history: [] }\n if (currentIndex < history.length - 1) {\n const newIndex = currentIndex + 1\n const newValue = history[newIndex]\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newIndex, history },\n }\n saveToLocalStorage(newGlobalHistory)\n return newValue\n }\n return undefined\n }, [fieldKey, getLatestHistory, saveToLocalStorage])\n\n const getLatestFieldHistory = useCallback(() => {\n const latestHistory = getLatestHistory()\n return latestHistory[fieldKey] || { currentIndex: -1, history: [] }\n }, [getLatestHistory, fieldKey])\n\n const fieldHistory = getLatestFieldHistory()\n\n const canUndo = fieldHistory.currentIndex > 0\n const canRedo = fieldHistory.currentIndex < fieldHistory.history.length - 1\n const currentValue = fieldHistory.history[fieldHistory.currentIndex]\n\n return {\n canRedo,\n canUndo,\n currentValue,\n redo,\n set,\n undo,\n }\n}\n"],"names":["useDocumentInfo","useField","useCallback","useEffect","PLUGIN_NAME","useFieldProps","STORAGE_KEY","useHistory","id","path","pathFromContext","schemaPath","value","currentFieldValue","fieldKey","getLatestHistory","localStorage","JSON","parse","getItem","e","console","error","saveToLocalStorage","newGlobalHistory","setItem","stringify","clearHistory","latestHistory","Object","keys","forEach","k","startsWith","toString","currentIndex","history","newIndex","set","data","newHistory","slice","length","undo","newValue","undefined","redo","getLatestFieldHistory","fieldHistory","canUndo","canRedo","currentValue"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LexicalEditor } from 'lexical';
|
|
2
|
-
type EditorAction = '
|
|
1
|
+
import type { LexicalEditor } from 'lexical';
|
|
2
|
+
type EditorAction = 'replace' | 'update';
|
|
3
3
|
export declare const setSafeLexicalState: (state: any, editorInstance: LexicalEditor, action?: EditorAction) => void;
|
|
4
4
|
export {};
|
|
5
5
|
//# sourceMappingURL=setSafeLexicalState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setSafeLexicalState.d.ts","sourceRoot":"","sources":["../../src/utilities/setSafeLexicalState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"setSafeLexicalState.d.ts","sourceRoot":"","sources":["../../src/utilities/setSafeLexicalState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,KAAK,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAA;AAExC,eAAO,MAAM,mBAAmB,+BAEd,aAAa,WACrB,YAAY,SAYrB,CAAA"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
import { $getRoot } from 'lexical';
|
|
2
1
|
export const setSafeLexicalState = (state, editorInstance, action = 'replace')=>{
|
|
3
2
|
try {
|
|
4
3
|
const editorState = editorInstance.parseEditorState(state);
|
|
5
|
-
if (editorState.isEmpty())
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
;
|
|
10
|
-
editorInstance.setEditorState(editorState);
|
|
11
|
-
}, {
|
|
12
|
-
discrete: true
|
|
13
|
-
});
|
|
4
|
+
if (editorState.isEmpty()) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
editorInstance.setEditorState(editorState);
|
|
14
8
|
} catch (e) {
|
|
15
|
-
// console.error('
|
|
16
|
-
// setValue(object) //TODO: This breaks the editor find a better way to handle objects that are not valid
|
|
9
|
+
// console.error('Shh....:', e)
|
|
17
10
|
}
|
|
18
11
|
};
|
|
19
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/setSafeLexicalState.ts"],"sourcesContent":["import { LexicalEditor } from 'lexical'\n\
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/setSafeLexicalState.ts"],"sourcesContent":["import type { LexicalEditor } from 'lexical'\n\ntype EditorAction = 'replace' | 'update'\n\nexport const setSafeLexicalState = (\n state,\n editorInstance: LexicalEditor,\n action: EditorAction = 'replace',\n) => {\n try {\n const editorState = editorInstance.parseEditorState(state)\n if (editorState.isEmpty()) {\n return\n }\n\n editorInstance.setEditorState(editorState)\n } catch (e) {\n // console.error('Shh....:', e)\n }\n}\n"],"names":["setSafeLexicalState","state","editorInstance","action","editorState","parseEditorState","isEmpty","setEditorState","e"],"mappings":"AAIA,OAAO,MAAMA,sBAAsB,CACjCC,OACAC,gBACAC,SAAuB,SAAS;IAEhC,IAAI;QACF,MAAMC,cAAcF,eAAeG,gBAAgB,CAACJ;QACpD,IAAIG,YAAYE,OAAO,IAAI;YACzB;QACF;QAEAJ,eAAeK,cAAc,CAACH;IAChC,EAAE,OAAOI,GAAG;IACV,+BAA+B;IACjC;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateFieldsConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/updateFieldsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,uBAAuB,EAAE,gBAAgB,CAAA;CAC1C;AAED,eAAO,MAAM,kBAAkB,qBAAsB,gBAAgB,KAAG,
|
|
1
|
+
{"version":3,"file":"updateFieldsConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/updateFieldsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,uBAAuB,EAAE,gBAAgB,CAAA;CAC1C;AAED,eAAO,MAAM,kBAAkB,qBAAsB,gBAAgB,KAAG,kBAkGvE,CAAA"}
|
|
@@ -3,7 +3,8 @@ export const updateFieldsConfig = (collectionConfig)=>{
|
|
|
3
3
|
function updateField(field, parentPath = '') {
|
|
4
4
|
const currentPath = parentPath ? `${parentPath}.${field.name}` : field.name;
|
|
5
5
|
const currentSchemaPath = `${collectionConfig.slug}.${currentPath}`;
|
|
6
|
-
|
|
6
|
+
// Disabled fields/ field types
|
|
7
|
+
if (field.admin?.disabled || field.admin?.readOnly || field.admin?.hidden || field.type === 'row') {
|
|
7
8
|
return field;
|
|
8
9
|
}
|
|
9
10
|
// Map field path for global fieldInstructionsMap to load related instructions
|
|
@@ -19,7 +20,8 @@ export const updateFieldsConfig = (collectionConfig)=>{
|
|
|
19
20
|
...schemaPathMap,
|
|
20
21
|
[currentSchemaPath]: {
|
|
21
22
|
type: field.type,
|
|
22
|
-
label: field.label || field.name
|
|
23
|
+
label: field.label || field.name,
|
|
24
|
+
relationTo: field.relationTo
|
|
23
25
|
}
|
|
24
26
|
};
|
|
25
27
|
}
|
|
@@ -29,13 +31,21 @@ export const updateFieldsConfig = (collectionConfig)=>{
|
|
|
29
31
|
'textarea',
|
|
30
32
|
'upload'
|
|
31
33
|
].includes(field.type)) {
|
|
34
|
+
let customField = {};
|
|
35
|
+
// Custom fields don't fully adhere to the Payload schema, making it difficult to
|
|
36
|
+
// determine which components support injecting ComposeField as a Description.
|
|
37
|
+
if (field.admin?.components?.Field || field.admin?.components?.Description) {
|
|
38
|
+
// TODO: Do something?
|
|
39
|
+
customField = {};
|
|
40
|
+
}
|
|
32
41
|
return {
|
|
33
42
|
...field,
|
|
34
43
|
admin: {
|
|
35
44
|
...field.admin,
|
|
36
45
|
components: {
|
|
37
46
|
...field.admin?.components || {},
|
|
38
|
-
Description: '@ai-stack/payloadcms/
|
|
47
|
+
Description: '@ai-stack/payloadcms/fields#ComposeField',
|
|
48
|
+
...customField
|
|
39
49
|
}
|
|
40
50
|
}
|
|
41
51
|
};
|
|
@@ -49,10 +59,12 @@ export const updateFieldsConfig = (collectionConfig)=>{
|
|
|
49
59
|
if (field.tabs) {
|
|
50
60
|
return {
|
|
51
61
|
...field,
|
|
52
|
-
tabs: field.tabs.map((tab)=>
|
|
62
|
+
tabs: field.tabs.map((tab)=>{
|
|
63
|
+
return {
|
|
53
64
|
...tab,
|
|
54
|
-
fields: tab.fields.map((subField)=>updateField(subField,
|
|
55
|
-
}
|
|
65
|
+
fields: tab.fields.map((subField)=>updateField(subField, tab.name))
|
|
66
|
+
};
|
|
67
|
+
})
|
|
56
68
|
};
|
|
57
69
|
}
|
|
58
70
|
if (field.blocks) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/updateFieldsConfig.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\ninterface UpdateFieldsConfig {\n schemaPathMap: Record<string, string>\n updatedCollectionConfig: CollectionConfig\n}\n\nexport const updateFieldsConfig = (collectionConfig: CollectionConfig): UpdateFieldsConfig => {\n let schemaPathMap = {}\n function updateField(field: any, parentPath = ''): any {\n const currentPath = parentPath ? `${parentPath}.${field.name}` : field.name\n const currentSchemaPath = `${collectionConfig.slug}.${currentPath}`\n\n if (field.admin?.disabled
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/updateFieldsConfig.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\ninterface UpdateFieldsConfig {\n schemaPathMap: Record<string, string>\n updatedCollectionConfig: CollectionConfig\n}\n\nexport const updateFieldsConfig = (collectionConfig: CollectionConfig): UpdateFieldsConfig => {\n let schemaPathMap = {}\n\n function updateField(field: any, parentPath = ''): any {\n const currentPath = parentPath ? `${parentPath}.${field.name}` : field.name\n const currentSchemaPath = `${collectionConfig.slug}.${currentPath}`\n\n // Disabled fields/ field types\n if (\n field.admin?.disabled ||\n field.admin?.readOnly ||\n field.admin?.hidden ||\n field.type === 'row'\n ) {\n return field\n }\n\n // Map field path for global fieldInstructionsMap to load related instructions\n // This is done due to save extra API call to get instructions when Field components are loaded in admin\n // Doing is will only call instructions data when user clicks on settings\n if (['richText', 'text', 'textarea', 'upload'].includes(field.type)) {\n schemaPathMap = {\n ...schemaPathMap,\n [currentSchemaPath]: {\n type: field.type,\n label: field.label || field.name,\n relationTo: field.relationTo,\n },\n }\n }\n\n // Inject AI actions, richText is not included here as it has to be explicitly defined by user\n if (['text', 'textarea', 'upload'].includes(field.type)) {\n let customField = {}\n\n // Custom fields don't fully adhere to the Payload schema, making it difficult to\n // determine which components support injecting ComposeField as a Description.\n if (field.admin?.components?.Field || field.admin?.components?.Description) {\n // TODO: Do something?\n customField = {}\n }\n\n return {\n ...field,\n admin: {\n ...field.admin,\n components: {\n ...(field.admin?.components || {}),\n Description: '@ai-stack/payloadcms/fields#ComposeField',\n ...customField,\n },\n },\n }\n }\n\n if (field.fields) {\n return {\n ...field,\n fields: field.fields.map((subField: any) => updateField(subField, currentPath)),\n }\n }\n\n if (field.tabs) {\n return {\n ...field,\n tabs: field.tabs.map((tab: any) => {\n return {\n ...tab,\n fields: tab.fields.map((subField: any) => updateField(subField, tab.name)),\n }\n }),\n }\n }\n\n if (field.blocks) {\n return {\n ...field,\n blocks: field.blocks.map((block: any) => ({\n ...block,\n fields: block.fields.map((subField: any) =>\n updateField(subField, `${currentPath}.${block.slug}`),\n ),\n })),\n }\n }\n\n return field\n }\n\n const updatedCollectionConfig = {\n ...collectionConfig,\n fields: collectionConfig.fields.map((field) => updateField(field)),\n }\n\n return {\n schemaPathMap,\n updatedCollectionConfig,\n }\n}\n"],"names":["updateFieldsConfig","collectionConfig","schemaPathMap","updateField","field","parentPath","currentPath","name","currentSchemaPath","slug","admin","disabled","readOnly","hidden","type","includes","label","relationTo","customField","components","Field","Description","fields","map","subField","tabs","tab","blocks","block","updatedCollectionConfig"],"mappings":"AAOA,OAAO,MAAMA,qBAAqB,CAACC;IACjC,IAAIC,gBAAgB,CAAC;IAErB,SAASC,YAAYC,KAAU,EAAEC,aAAa,EAAE;QAC9C,MAAMC,cAAcD,aAAa,GAAGA,WAAW,CAAC,EAAED,MAAMG,IAAI,EAAE,GAAGH,MAAMG,IAAI;QAC3E,MAAMC,oBAAoB,GAAGP,iBAAiBQ,IAAI,CAAC,CAAC,EAAEH,aAAa;QAEnE,+BAA+B;QAC/B,IACEF,MAAMM,KAAK,EAAEC,YACbP,MAAMM,KAAK,EAAEE,YACbR,MAAMM,KAAK,EAAEG,UACbT,MAAMU,IAAI,KAAK,OACf;YACA,OAAOV;QACT;QAEA,8EAA8E;QAC9E,wGAAwG;QACxG,yEAAyE;QACzE,IAAI;YAAC;YAAY;YAAQ;YAAY;SAAS,CAACW,QAAQ,CAACX,MAAMU,IAAI,GAAG;YACnEZ,gBAAgB;gBACd,GAAGA,aAAa;gBAChB,CAACM,kBAAkB,EAAE;oBACnBM,MAAMV,MAAMU,IAAI;oBAChBE,OAAOZ,MAAMY,KAAK,IAAIZ,MAAMG,IAAI;oBAChCU,YAAYb,MAAMa,UAAU;gBAC9B;YACF;QACF;QAEA,8FAA8F;QAC9F,IAAI;YAAC;YAAQ;YAAY;SAAS,CAACF,QAAQ,CAACX,MAAMU,IAAI,GAAG;YACvD,IAAII,cAAc,CAAC;YAEnB,iFAAiF;YACjF,8EAA8E;YAC9E,IAAId,MAAMM,KAAK,EAAES,YAAYC,SAAShB,MAAMM,KAAK,EAAES,YAAYE,aAAa;gBAC1E,sBAAsB;gBACtBH,cAAc,CAAC;YACjB;YAEA,OAAO;gBACL,GAAGd,KAAK;gBACRM,OAAO;oBACL,GAAGN,MAAMM,KAAK;oBACdS,YAAY;wBACV,GAAIf,MAAMM,KAAK,EAAES,cAAc,CAAC,CAAC;wBACjCE,aAAa;wBACb,GAAGH,WAAW;oBAChB;gBACF;YACF;QACF;QAEA,IAAId,MAAMkB,MAAM,EAAE;YAChB,OAAO;gBACL,GAAGlB,KAAK;gBACRkB,QAAQlB,MAAMkB,MAAM,CAACC,GAAG,CAAC,CAACC,WAAkBrB,YAAYqB,UAAUlB;YACpE;QACF;QAEA,IAAIF,MAAMqB,IAAI,EAAE;YACd,OAAO;gBACL,GAAGrB,KAAK;gBACRqB,MAAMrB,MAAMqB,IAAI,CAACF,GAAG,CAAC,CAACG;oBACpB,OAAO;wBACL,GAAGA,GAAG;wBACNJ,QAAQI,IAAIJ,MAAM,CAACC,GAAG,CAAC,CAACC,WAAkBrB,YAAYqB,UAAUE,IAAInB,IAAI;oBAC1E;gBACF;YACF;QACF;QAEA,IAAIH,MAAMuB,MAAM,EAAE;YAChB,OAAO;gBACL,GAAGvB,KAAK;gBACRuB,QAAQvB,MAAMuB,MAAM,CAACJ,GAAG,CAAC,CAACK,QAAgB,CAAA;wBACxC,GAAGA,KAAK;wBACRN,QAAQM,MAAMN,MAAM,CAACC,GAAG,CAAC,CAACC,WACxBrB,YAAYqB,UAAU,GAAGlB,YAAY,CAAC,EAAEsB,MAAMnB,IAAI,EAAE;oBAExD,CAAA;YACF;QACF;QAEA,OAAOL;IACT;IAEA,MAAMyB,0BAA0B;QAC9B,GAAG5B,gBAAgB;QACnBqB,QAAQrB,iBAAiBqB,MAAM,CAACC,GAAG,CAAC,CAACnB,QAAUD,YAAYC;IAC7D;IAEA,OAAO;QACLF;QACA2B;IACF;AACF,EAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-stack/payloadcms",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.1-beta",
|
|
4
4
|
"private": false,
|
|
5
5
|
"bugs": "https://github.com/ashbuilds/payload-ai/issues",
|
|
6
6
|
"repository": "https://github.com/ashbuilds/payload-ai",
|
|
@@ -20,43 +20,33 @@
|
|
|
20
20
|
"ai-writing-tool"
|
|
21
21
|
],
|
|
22
22
|
"type": "module",
|
|
23
|
-
"main": "dist/index.js",
|
|
24
|
-
"types": "dist/index.d.ts",
|
|
23
|
+
"main": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
25
|
"exports": {
|
|
26
26
|
".": {
|
|
27
27
|
"import": "./dist/index.js",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"default": "./dist/index.js"
|
|
30
30
|
},
|
|
31
|
-
"./
|
|
32
|
-
"import": "./dist/exports/
|
|
33
|
-
"types": "./dist/exports/
|
|
34
|
-
"default": "./dist/exports/
|
|
31
|
+
"./types": {
|
|
32
|
+
"import": "./dist/exports/types.js",
|
|
33
|
+
"types": "./dist/exports/types.d.ts",
|
|
34
|
+
"default": "./dist/exports/types.js"
|
|
35
35
|
},
|
|
36
36
|
"./fields": {
|
|
37
37
|
"import": "./dist/exports/fields.js",
|
|
38
38
|
"types": "./dist/exports/fields.d.ts",
|
|
39
39
|
"default": "./dist/exports/fields.js"
|
|
40
40
|
},
|
|
41
|
-
"./
|
|
42
|
-
"import": "./dist/exports/
|
|
43
|
-
"types": "./dist/exports/
|
|
44
|
-
"default": "./dist/exports/
|
|
41
|
+
"./client": {
|
|
42
|
+
"import": "./dist/exports/client.js",
|
|
43
|
+
"types": "./dist/exports/client.d.ts",
|
|
44
|
+
"default": "./dist/exports/client.js"
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
"files": [
|
|
48
48
|
"dist"
|
|
49
49
|
],
|
|
50
|
-
"scripts": {
|
|
51
|
-
"build": "pnpm build:types && pnpm build:swc",
|
|
52
|
-
"build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths --copy-files",
|
|
53
|
-
"build:dev": "pnpm build --watch",
|
|
54
|
-
"build:types": "tsc --emitDeclarationOnly",
|
|
55
|
-
"clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
|
|
56
|
-
"lint": "eslint src",
|
|
57
|
-
"lint:fix": "eslint --fix src",
|
|
58
|
-
"prepublishOnly": "pnpm clean && pnpm build"
|
|
59
|
-
},
|
|
60
50
|
"dependencies": {
|
|
61
51
|
"@ai-sdk/anthropic": "^0.0.38",
|
|
62
52
|
"@ai-sdk/openai": "^0.0.43",
|
|
@@ -65,19 +55,17 @@
|
|
|
65
55
|
"@anthropic-ai/sdk": "^0.24.3",
|
|
66
56
|
"@langchain/core": "^0.2.31",
|
|
67
57
|
"@langchain/openai": "^0.2.8",
|
|
68
|
-
"@lexical/html": "
|
|
58
|
+
"@lexical/html": "0.20.0",
|
|
69
59
|
"ai": "^3.3.20",
|
|
70
60
|
"elevenlabs": "^0.8.2",
|
|
61
|
+
"get-input-selection": "^1.1.4",
|
|
71
62
|
"handlebars": "4.7.8",
|
|
72
63
|
"handlebars-async-helpers": "^1.0.6",
|
|
73
64
|
"langchain": "^0.2.17",
|
|
74
|
-
"lexical": "^0.
|
|
65
|
+
"lexical": "^0.20.0",
|
|
75
66
|
"locale-codes": "^1.3.1",
|
|
76
|
-
"openai": "^4.56.1",
|
|
77
|
-
"zod": "^3.23.8",
|
|
78
|
-
"zod-to-json-schema": "^3.23.2",
|
|
79
|
-
"get-input-selection": "^1.1.4",
|
|
80
67
|
"lodash.isequal": "^4.5.0",
|
|
68
|
+
"openai": "^4.56.1",
|
|
81
69
|
"scroll-into-view-if-needed": "^3.1.0",
|
|
82
70
|
"textarea-caret": "^3.0.2"
|
|
83
71
|
},
|
|
@@ -86,6 +74,7 @@
|
|
|
86
74
|
"@eslint/js": "^9.9.1",
|
|
87
75
|
"@swc/cli": "0.4.0",
|
|
88
76
|
"@types/dot-object": "2.1.6",
|
|
77
|
+
"@types/handlebars": "^4.1.0",
|
|
89
78
|
"@types/react": "npm:types-react@19.0.0-beta.2",
|
|
90
79
|
"@types/react-dom": "npm:types-react-dom@19.0.0-beta.2",
|
|
91
80
|
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
|
@@ -102,7 +91,6 @@
|
|
|
102
91
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
103
92
|
"eslint-plugin-regexp": "^2.6.0",
|
|
104
93
|
"globals": "^15.9.0",
|
|
105
|
-
"payload": "3.0.0-beta.95",
|
|
106
94
|
"prettier": "^3.3.3",
|
|
107
95
|
"react": "19.0.0-rc-f994737d14-20240522",
|
|
108
96
|
"react-dom": "19.0.0-rc-f994737d14-20240522",
|
|
@@ -111,16 +99,23 @@
|
|
|
111
99
|
"typescript-eslint": "^7.18.0"
|
|
112
100
|
},
|
|
113
101
|
"peerDependencies": {
|
|
114
|
-
"@payloadcms/richtext-lexical": "3.
|
|
115
|
-
"@payloadcms/translations": "3.
|
|
116
|
-
"@payloadcms/ui": "3.
|
|
117
|
-
"payload": "3.
|
|
102
|
+
"@payloadcms/richtext-lexical": "^3.2.1",
|
|
103
|
+
"@payloadcms/translations": "^3.2.1",
|
|
104
|
+
"@payloadcms/ui": "^3.2.1",
|
|
105
|
+
"payload": "^3.2.1"
|
|
118
106
|
},
|
|
119
107
|
"publishConfig": {
|
|
120
|
-
"main": "./dist/index.js",
|
|
121
|
-
"types": "./dist/index.d.ts",
|
|
122
108
|
"@ai-stack:registry": "https://registry.npmjs.org",
|
|
123
109
|
"access": "public",
|
|
124
110
|
"provenance": true
|
|
111
|
+
},
|
|
112
|
+
"scripts": {
|
|
113
|
+
"build": "pnpm build:types && pnpm build:swc",
|
|
114
|
+
"build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths --copy-files",
|
|
115
|
+
"build:dev": "pnpm build --watch",
|
|
116
|
+
"build:types": "tsc --emitDeclarationOnly",
|
|
117
|
+
"clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
|
|
118
|
+
"lint": "eslint src",
|
|
119
|
+
"lint:fix": "eslint --fix src"
|
|
125
120
|
}
|
|
126
|
-
}
|
|
121
|
+
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const LexicalBaseNode: z.ZodObject<{
|
|
3
|
-
type: z.ZodString;
|
|
4
|
-
children: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
|
|
5
|
-
direction: z.ZodOptional<z.ZodNullable<z.ZodEnum<["ltr"]>>>;
|
|
6
|
-
format: z.ZodOptional<z.ZodString>;
|
|
7
|
-
indent: z.ZodOptional<z.ZodNumber>;
|
|
8
|
-
version: z.ZodOptional<z.ZodNumber>;
|
|
9
|
-
}, "strip", z.ZodTypeAny, {
|
|
10
|
-
type?: string;
|
|
11
|
-
children?: any[];
|
|
12
|
-
direction?: "ltr";
|
|
13
|
-
format?: string;
|
|
14
|
-
indent?: number;
|
|
15
|
-
version?: number;
|
|
16
|
-
}, {
|
|
17
|
-
type?: string;
|
|
18
|
-
children?: any[];
|
|
19
|
-
direction?: "ltr";
|
|
20
|
-
format?: string;
|
|
21
|
-
indent?: number;
|
|
22
|
-
version?: number;
|
|
23
|
-
}>;
|
|
24
|
-
export declare const lexicalSchema: (customNodes?: (typeof LexicalBaseNode)[]) => z.ZodObject<{
|
|
25
|
-
root: any;
|
|
26
|
-
}, "strip", z.ZodTypeAny, {
|
|
27
|
-
root?: any;
|
|
28
|
-
}, {
|
|
29
|
-
root?: any;
|
|
30
|
-
}>;
|
|
31
|
-
//# sourceMappingURL=lexical.schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lexical.schema.d.ts","sourceRoot":"","sources":["../../../src/ai/schemas/lexical.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAA;AAEF,eAAO,MAAM,aAAa,iBAAkB,CAAC,OAAO,eAAe,CAAC,EAAE;;;;;;EA0ErE,CAAA"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export const LexicalBaseNode = z.object({
|
|
3
|
-
type: z.string(),
|
|
4
|
-
children: z.array(z.any()).optional(),
|
|
5
|
-
direction: z.enum([
|
|
6
|
-
'ltr'
|
|
7
|
-
]).nullable().optional(),
|
|
8
|
-
format: z.string().optional(),
|
|
9
|
-
indent: z.number().optional(),
|
|
10
|
-
version: z.number().optional()
|
|
11
|
-
});
|
|
12
|
-
export const lexicalSchema = (customNodes)=>{
|
|
13
|
-
const BaseNode = z.object({
|
|
14
|
-
type: z.string(),
|
|
15
|
-
children: z.array(z.lazy(()=>Node)).optional(),
|
|
16
|
-
direction: z.enum([
|
|
17
|
-
'ltr'
|
|
18
|
-
]).nullable().optional(),
|
|
19
|
-
format: z.string().optional(),
|
|
20
|
-
indent: z.number().optional(),
|
|
21
|
-
version: z.number().optional()
|
|
22
|
-
});
|
|
23
|
-
const TextNode = BaseNode.extend({
|
|
24
|
-
type: z.literal('text'),
|
|
25
|
-
format: z.number().optional(),
|
|
26
|
-
text: z.string()
|
|
27
|
-
});
|
|
28
|
-
const LinkNode = BaseNode.extend({
|
|
29
|
-
id: z.string(),
|
|
30
|
-
type: z.literal('link'),
|
|
31
|
-
fields: z.object({
|
|
32
|
-
linkType: z.string(),
|
|
33
|
-
newTab: z.boolean(),
|
|
34
|
-
url: z.string()
|
|
35
|
-
})
|
|
36
|
-
});
|
|
37
|
-
const ListItemNode = BaseNode.extend({
|
|
38
|
-
type: z.literal('listitem'),
|
|
39
|
-
checked: z.boolean().optional(),
|
|
40
|
-
value: z.number()
|
|
41
|
-
});
|
|
42
|
-
const ListNode = BaseNode.extend({
|
|
43
|
-
type: z.literal('list'),
|
|
44
|
-
listType: z.enum([
|
|
45
|
-
'check',
|
|
46
|
-
'number',
|
|
47
|
-
'bullet'
|
|
48
|
-
]),
|
|
49
|
-
start: z.number(),
|
|
50
|
-
tag: z.enum([
|
|
51
|
-
'ul',
|
|
52
|
-
'ol'
|
|
53
|
-
])
|
|
54
|
-
});
|
|
55
|
-
const HeadingNode = BaseNode.extend({
|
|
56
|
-
type: z.literal('heading'),
|
|
57
|
-
tag: z.enum([
|
|
58
|
-
'h1',
|
|
59
|
-
'h2',
|
|
60
|
-
'h3',
|
|
61
|
-
'h4'
|
|
62
|
-
])
|
|
63
|
-
});
|
|
64
|
-
// Example of custom node - wip
|
|
65
|
-
const MediaNode = BaseNode.extend({
|
|
66
|
-
type: z.literal('block'),
|
|
67
|
-
version: z.literal(2),
|
|
68
|
-
fields: z.object({
|
|
69
|
-
id: z.string(),
|
|
70
|
-
media: z.string(),
|
|
71
|
-
position: z.enum([
|
|
72
|
-
'fullscreen',
|
|
73
|
-
'default'
|
|
74
|
-
]),
|
|
75
|
-
blockName: z.string(),
|
|
76
|
-
blockType: z.literal('mediaBlock')
|
|
77
|
-
})
|
|
78
|
-
});
|
|
79
|
-
const Node = z.union([
|
|
80
|
-
TextNode,
|
|
81
|
-
LinkNode,
|
|
82
|
-
ListItemNode,
|
|
83
|
-
ListNode,
|
|
84
|
-
HeadingNode,
|
|
85
|
-
BaseNode.extend({
|
|
86
|
-
type: z.enum([
|
|
87
|
-
'paragraph',
|
|
88
|
-
'quote',
|
|
89
|
-
'horizontalrule'
|
|
90
|
-
])
|
|
91
|
-
}),
|
|
92
|
-
...customNodes || []
|
|
93
|
-
]);
|
|
94
|
-
const RootNode = BaseNode.extend({
|
|
95
|
-
type: z.literal('root')
|
|
96
|
-
});
|
|
97
|
-
return z.object({
|
|
98
|
-
root: RootNode
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
//# sourceMappingURL=lexical.schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ai/schemas/lexical.schema.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const LexicalBaseNode = z.object({\n type: z.string(),\n children: z.array(z.any()).optional(),\n direction: z.enum(['ltr']).nullable().optional(),\n format: z.string().optional(),\n indent: z.number().optional(),\n version: z.number().optional(),\n})\n\nexport const lexicalSchema = (customNodes?: (typeof LexicalBaseNode)[]) => {\n const BaseNode = z.object({\n type: z.string(),\n children: z.array(z.lazy(() => Node)).optional(),\n direction: z.enum(['ltr']).nullable().optional(),\n format: z.string().optional(),\n indent: z.number().optional(),\n version: z.number().optional(),\n })\n\n const TextNode = BaseNode.extend({\n type: z.literal('text'),\n format: z.number().optional(),\n text: z.string(),\n })\n\n const LinkNode = BaseNode.extend({\n id: z.string(),\n type: z.literal('link'),\n fields: z.object({\n linkType: z.string(),\n newTab: z.boolean(),\n url: z.string(),\n }),\n })\n\n const ListItemNode = BaseNode.extend({\n type: z.literal('listitem'),\n checked: z.boolean().optional(),\n value: z.number(),\n })\n\n const ListNode = BaseNode.extend({\n type: z.literal('list'),\n listType: z.enum(['check', 'number', 'bullet']),\n start: z.number(),\n tag: z.enum(['ul', 'ol']),\n })\n\n const HeadingNode = BaseNode.extend({\n type: z.literal('heading'),\n tag: z.enum(['h1', 'h2', 'h3', 'h4']),\n })\n\n // Example of custom node - wip\n const MediaNode = BaseNode.extend({\n type: z.literal('block'),\n version: z.literal(2),\n fields: z.object({\n id: z.string(),\n media: z.string(),\n position: z.enum(['fullscreen', 'default']),\n blockName: z.string(),\n blockType: z.literal('mediaBlock'),\n }),\n })\n\n const Node = z.union([\n TextNode,\n LinkNode,\n ListItemNode,\n ListNode,\n HeadingNode,\n BaseNode.extend({ type: z.enum(['paragraph', 'quote', 'horizontalrule']) }),\n ...(customNodes || []),\n ])\n\n const RootNode = BaseNode.extend({\n type: z.literal('root'),\n })\n\n return z.object({\n root: RootNode,\n })\n}\n"],"names":["z","LexicalBaseNode","object","type","string","children","array","any","optional","direction","enum","nullable","format","indent","number","version","lexicalSchema","customNodes","BaseNode","lazy","Node","TextNode","extend","literal","text","LinkNode","id","fields","linkType","newTab","boolean","url","ListItemNode","checked","value","ListNode","listType","start","tag","HeadingNode","MediaNode","media","position","blockName","blockType","union","RootNode","root"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateSeedPrompt.d.ts","sourceRoot":"","sources":["../../../src/ai/utils/generateSeedPrompt.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,SAAgB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,oBAmBhF,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ai/utils/generateSeedPrompt.ts"],"sourcesContent":["import { anthropic } from '@ai-sdk/anthropic'\nimport { openai } from '@ai-sdk/openai'\nimport { generateText } from 'ai'\n\nimport { PLUGIN_DEFAULT_ANTHROPIC_MODEL, PLUGIN_DEFAULT_OPENAI_MODEL } from '../../defaults.js'\n\nexport const generateSeedPrompt = async (data: { prompt: string; system: string }) => {\n const { prompt, system } = data\n let model = null\n\n if (process.env.OPENAI_API_KEY) {\n model = openai(PLUGIN_DEFAULT_OPENAI_MODEL)\n } else if (process.env.ANTHROPIC_API_KEY) {\n model = anthropic(PLUGIN_DEFAULT_ANTHROPIC_MODEL)\n } else {\n throw new Error('- AI Plugin: Please check your environment variables!')\n }\n\n const { text } = await generateText({\n model,\n prompt,\n system,\n })\n\n return text\n}\n"],"names":["anthropic","openai","generateText","PLUGIN_DEFAULT_ANTHROPIC_MODEL","PLUGIN_DEFAULT_OPENAI_MODEL","generateSeedPrompt","data","prompt","system","model","process","env","OPENAI_API_KEY","ANTHROPIC_API_KEY","Error","text"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAC7C,SAASC,MAAM,QAAQ,iBAAgB;AACvC,SAASC,YAAY,QAAQ,KAAI;AAEjC,SAASC,8BAA8B,EAAEC,2BAA2B,QAAQ,oBAAmB;AAE/F,OAAO,MAAMC,qBAAqB,OAAOC;IACvC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAC3B,IAAIG,QAAQ;IAEZ,IAAIC,QAAQC,GAAG,CAACC,cAAc,EAAE;QAC9BH,QAAQR,OAAOG;IACjB,OAAO,IAAIM,QAAQC,GAAG,CAACE,iBAAiB,EAAE;QACxCJ,QAAQT,UAAUG;IACpB,OAAO;QACL,MAAM,IAAIW,MAAM;IAClB;IAEA,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMb,aAAa;QAClCO;QACAF;QACAC;IACF;IAEA,OAAOO;AACT,EAAC"}
|