@ai-stack/payloadcms 3.0.0-beta.65.2 → 3.0.0-beta.95.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/ai/models/anthropic/index.d.ts.map +1 -1
  2. package/dist/ai/models/anthropic/index.js +3 -3
  3. package/dist/ai/models/anthropic/index.js.map +1 -1
  4. package/dist/ai/models/elevenLabs/index.d.ts.map +1 -1
  5. package/dist/ai/models/elevenLabs/index.js +1 -11
  6. package/dist/ai/models/elevenLabs/index.js.map +1 -1
  7. package/dist/ai/models/index.js +2 -2
  8. package/dist/ai/models/index.js.map +1 -1
  9. package/dist/ai/models/openai/index.d.ts.map +1 -1
  10. package/dist/ai/models/openai/index.js +3 -2
  11. package/dist/ai/models/openai/index.js.map +1 -1
  12. package/dist/ai/prompts.d.ts +1 -0
  13. package/dist/ai/prompts.d.ts.map +1 -1
  14. package/dist/ai/prompts.js +5 -2
  15. package/dist/ai/prompts.js.map +1 -1
  16. package/dist/ai/{editor → schemas}/lexical.schema.d.ts +2 -2
  17. package/dist/ai/schemas/lexical.schema.d.ts.map +1 -0
  18. package/dist/ai/schemas/lexical.schema.js.map +1 -0
  19. package/dist/collections/Instructions.d.ts.map +1 -1
  20. package/dist/collections/Instructions.js +9 -12
  21. package/dist/collections/Instructions.js.map +1 -1
  22. package/dist/endpoints/index.d.ts +1 -1
  23. package/dist/endpoints/index.d.ts.map +1 -1
  24. package/dist/endpoints/index.js +17 -50
  25. package/dist/endpoints/index.js.map +1 -1
  26. package/dist/exports/client.d.ts +4 -0
  27. package/dist/exports/client.d.ts.map +1 -0
  28. package/dist/exports/client.js +5 -0
  29. package/dist/exports/client.js.map +1 -0
  30. package/dist/exports/fields.d.ts +2 -1
  31. package/dist/exports/fields.d.ts.map +1 -1
  32. package/dist/exports/fields.js +2 -0
  33. package/dist/exports/fields.js.map +1 -1
  34. package/dist/fields/DescriptionField/DescriptionField.d.ts +1 -2
  35. package/dist/fields/DescriptionField/DescriptionField.d.ts.map +1 -1
  36. package/dist/fields/DescriptionField/DescriptionField.js +2 -1
  37. package/dist/fields/DescriptionField/DescriptionField.js.map +1 -1
  38. package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts +1 -2
  39. package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts.map +1 -1
  40. package/dist/fields/DescriptionField/DescriptionFieldComponent.js +2 -1
  41. package/dist/fields/DescriptionField/DescriptionFieldComponent.js.map +1 -1
  42. package/dist/fields/LexicalEditor/ActionsFeatureComponent.js +1 -1
  43. package/dist/fields/LexicalEditor/ActionsFeatureComponent.js.map +1 -1
  44. package/dist/fields/LexicalEditor/feature.server.d.ts +1 -7
  45. package/dist/fields/LexicalEditor/feature.server.d.ts.map +1 -1
  46. package/dist/fields/LexicalEditor/feature.server.js +3 -11
  47. package/dist/fields/LexicalEditor/feature.server.js.map +1 -1
  48. package/dist/fields/PromptEditorField/PromptEditorField.d.ts +1 -1
  49. package/dist/fields/PromptEditorField/PromptEditorField.d.ts.map +1 -1
  50. package/dist/fields/PromptEditorField/PromptEditorField.js +32 -51
  51. package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
  52. package/dist/fields/SelectField/SelectField.d.ts +9 -2
  53. package/dist/fields/SelectField/SelectField.d.ts.map +1 -1
  54. package/dist/fields/SelectField/SelectField.js +26 -23
  55. package/dist/fields/SelectField/SelectField.js.map +1 -1
  56. package/dist/index.d.ts +2 -2
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +3 -3
  59. package/dist/index.js.map +1 -1
  60. package/dist/init.d.ts.map +1 -1
  61. package/dist/init.js +14 -2
  62. package/dist/init.js.map +1 -1
  63. package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts +8 -0
  64. package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts.map +1 -0
  65. package/dist/libraries/autocomplete/AutocompleteTextArea.js +435 -0
  66. package/dist/libraries/autocomplete/AutocompleteTextArea.js.map +1 -0
  67. package/dist/libraries/autocomplete/AutocompleteTextArea.module.scss +35 -0
  68. package/dist/libraries/handlebars/asyncHandlebars.d.ts +2 -0
  69. package/dist/libraries/handlebars/asyncHandlebars.d.ts.map +1 -0
  70. package/dist/libraries/handlebars/asyncHandlebars.js +5 -0
  71. package/dist/libraries/handlebars/asyncHandlebars.js.map +1 -0
  72. package/dist/libraries/handlebars/helpers.d.ts +2 -0
  73. package/dist/libraries/handlebars/helpers.d.ts.map +1 -0
  74. package/dist/libraries/handlebars/helpers.js +22 -0
  75. package/dist/libraries/handlebars/helpers.js.map +1 -0
  76. package/dist/libraries/handlebars/helpersMap.d.ts +12 -0
  77. package/dist/libraries/handlebars/helpersMap.d.ts.map +1 -0
  78. package/dist/libraries/handlebars/helpersMap.js +13 -0
  79. package/dist/libraries/handlebars/helpersMap.js.map +1 -0
  80. package/dist/libraries/handlebars/replacePlaceholders.d.ts +2 -0
  81. package/dist/libraries/handlebars/replacePlaceholders.d.ts.map +1 -0
  82. package/dist/libraries/handlebars/replacePlaceholders.js +8 -0
  83. package/dist/libraries/handlebars/replacePlaceholders.js.map +1 -0
  84. package/dist/plugin.d.ts.map +1 -1
  85. package/dist/plugin.js +6 -3
  86. package/dist/plugin.js.map +1 -1
  87. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts +1 -3
  88. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts.map +1 -1
  89. package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
  90. package/dist/providers/InstructionsProvider/useInstructions.d.ts +4 -0
  91. package/dist/providers/InstructionsProvider/useInstructions.d.ts.map +1 -0
  92. package/dist/providers/InstructionsProvider/useInstructions.js +34 -0
  93. package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -0
  94. package/dist/types.d.ts +1 -1
  95. package/dist/types.d.ts.map +1 -1
  96. package/dist/types.js.map +1 -1
  97. package/dist/ui/Actions/Actions.js +32 -39
  98. package/dist/ui/Actions/Actions.js.map +1 -1
  99. package/dist/ui/Actions/hooks/useGenerate.d.ts.map +1 -1
  100. package/dist/ui/Actions/hooks/useGenerate.js +4 -4
  101. package/dist/ui/Actions/hooks/useGenerate.js.map +1 -1
  102. package/dist/utilities/getFieldBySchemaPath.d.ts +2 -2
  103. package/dist/utilities/getFieldBySchemaPath.d.ts.map +1 -1
  104. package/dist/utilities/getFieldBySchemaPath.js.map +1 -1
  105. package/dist/utilities/getFieldInfo.d.ts +3 -0
  106. package/dist/utilities/getFieldInfo.d.ts.map +1 -0
  107. package/dist/utilities/getFieldInfo.js +14 -0
  108. package/dist/utilities/getFieldInfo.js.map +1 -0
  109. package/dist/utilities/updateFieldsConfig.d.ts.map +1 -1
  110. package/dist/utilities/updateFieldsConfig.js +1 -5
  111. package/dist/utilities/updateFieldsConfig.js.map +1 -1
  112. package/package.json +59 -38
  113. package/dist/ai/editor/lexical.schema.d.ts.map +0 -1
  114. package/dist/ai/editor/lexical.schema.js.map +0 -1
  115. package/dist/ai/models/style.d.ts +0 -2
  116. package/dist/ai/models/style.d.ts.map +0 -1
  117. package/dist/ai/models/style.js +0 -31
  118. package/dist/ai/models/style.js.map +0 -1
  119. package/dist/providers/InstructionsProvider/hook.d.ts +0 -9
  120. package/dist/providers/InstructionsProvider/hook.d.ts.map +0 -1
  121. package/dist/providers/InstructionsProvider/hook.js +0 -17
  122. package/dist/providers/InstructionsProvider/hook.js.map +0 -1
  123. package/dist/providers/InstructionsProvider/index.d.ts +0 -5
  124. package/dist/providers/InstructionsProvider/index.d.ts.map +0 -1
  125. package/dist/providers/InstructionsProvider/index.js +0 -10
  126. package/dist/providers/InstructionsProvider/index.js.map +0 -1
  127. package/dist/ui/Floatype/Floatype.d.ts +0 -21
  128. package/dist/ui/Floatype/Floatype.d.ts.map +0 -1
  129. package/dist/ui/Floatype/Floatype.js +0 -245
  130. package/dist/ui/Floatype/Floatype.js.map +0 -1
  131. package/dist/ui/Floatype/floatype.module.css +0 -25
  132. /package/dist/ai/{editor → schemas}/lexical.schema.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/libraries/handlebars/replacePlaceholders.ts"],"sourcesContent":["import { asyncHandlebars } from './asyncHandlebars.js'\n\nexport const replacePlaceholders = (prompt: string, values: object) => {\n return asyncHandlebars.compile(prompt, { trackIds: true })(values)\n}\n"],"names":["asyncHandlebars","replacePlaceholders","prompt","values","compile","trackIds"],"mappings":"AAAA,SAASA,eAAe,QAAQ,uBAAsB;AAEtD,OAAO,MAAMC,sBAAsB,CAACC,QAAgBC;IAClD,OAAOH,gBAAgBI,OAAO,CAACF,QAAQ;QAAEG,UAAU;IAAK,GAAGF;AAC7D,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAY9C,QAAA,MAAM,eAAe,iBACJ,YAAY,sBACV,MAAM,KAAG,MAkGzB,CAAA;AAEH,OAAO,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAW9C,QAAA,MAAM,eAAe,iBACJ,YAAY,sBACV,MAAM,KAAG,MAsGzB,CAAA;AAEH,OAAO,EAAE,eAAe,EAAE,CAAA"}
package/dist/plugin.js CHANGED
@@ -1,11 +1,10 @@
1
1
  import { deepMerge } from 'payload/shared';
2
2
  import { zodToJsonSchema } from 'zod-to-json-schema';
3
- import { lexicalSchema } from './ai/editor/lexical.schema.js';
3
+ import { lexicalSchema } from './ai/schemas/lexical.schema.js';
4
4
  import { Instructions } from './collections/Instructions.js';
5
5
  import { PLUGIN_INSTRUCTIONS_MAP_GLOBAL, PLUGIN_NAME } from './defaults.js';
6
6
  import { endpoints } from './endpoints/index.js';
7
7
  import { init } from './init.js';
8
- import { InstructionsProvider } from './providers/InstructionsProvider/index.js';
9
8
  import { translations } from './translations/index.js';
10
9
  import { isPluginActivated } from './utilities/isPluginActivated.js';
11
10
  import { updateFieldsConfig } from './utilities/updateFieldsConfig.js';
@@ -46,7 +45,11 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
46
45
  const { collections: collectionSlugs = [] } = pluginConfig;
47
46
  incomingConfig.admin.components.providers = [
48
47
  ...incomingConfig.admin.components.providers ?? [],
49
- InstructionsProvider
48
+ {
49
+ clientProps: {},
50
+ path: '@ai-stack/payloadcms/client#InstructionsProvider',
51
+ serverProps: {}
52
+ }
50
53
  ];
51
54
  updatedConfig = {
52
55
  ...incomingConfig,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { Config } from 'payload'\n\nimport { deepMerge } from 'payload/shared'\nimport { zodToJsonSchema } from 'zod-to-json-schema'\n\nimport type { PluginConfig } from './types.js'\n\nimport { lexicalSchema } from './ai/editor/lexical.schema.js'\nimport { Instructions } from './collections/Instructions.js'\nimport { PLUGIN_INSTRUCTIONS_MAP_GLOBAL, PLUGIN_NAME } from './defaults.js'\nimport { endpoints } from './endpoints/index.js'\nimport { init } from './init.js'\nimport { InstructionsProvider } from './providers/InstructionsProvider/index.js'\nimport { translations } from './translations/index.js'\nimport { isPluginActivated } from './utilities/isPluginActivated.js'\nimport { updateFieldsConfig } from './utilities/updateFieldsConfig.js'\n\nconst payloadAiPlugin =\n (pluginConfig: PluginConfig) =>\n (incomingConfig: Config): Config => {\n const isActivated = isPluginActivated()\n let updatedConfig: Config = { ...incomingConfig }\n let collectionsFieldPathMap = {}\n\n if (isActivated) {\n // Inject editor schema to config, so that it can be accessed when /textarea endpoint will hit\n const zodLexicalSchema = lexicalSchema(pluginConfig.editorConfig?.nodes)\n\n if (pluginConfig.debugging) {\n Instructions.admin.hidden = false\n }\n\n Instructions.admin.custom = {\n ...(Instructions.admin.custom || {}),\n [PLUGIN_NAME]: {\n editorConfig: {\n // Used in admin client for useObject hook\n schema: zodToJsonSchema(zodLexicalSchema),\n },\n },\n }\n\n Instructions.custom = {\n ...(Instructions.custom || {}),\n [PLUGIN_NAME]: {\n editorConfig: {\n // Used in textarea endpoint for llm\n schema: zodLexicalSchema,\n },\n },\n }\n\n const collections = [...(incomingConfig.collections ?? []), Instructions]\n const { collections: collectionSlugs = [] } = pluginConfig\n\n incomingConfig.admin.components.providers = [\n ...(incomingConfig.admin.components.providers ?? []),\n InstructionsProvider,\n ]\n\n updatedConfig = {\n ...incomingConfig,\n collections: collections.map((collection) => {\n if (collectionSlugs[collection.slug]) {\n const { schemaPathMap, updatedCollectionConfig } = updateFieldsConfig(collection)\n collectionsFieldPathMap = {\n ...collectionsFieldPathMap,\n ...schemaPathMap,\n }\n return updatedCollectionConfig\n }\n\n return collection\n }),\n endpoints: [...(incomingConfig.endpoints ?? []), endpoints.textarea, endpoints.upload],\n globals: [\n ...incomingConfig.globals || [],\n {\n slug: PLUGIN_INSTRUCTIONS_MAP_GLOBAL,\n access: {\n read: () => true,\n },\n admin: {\n hidden: !pluginConfig.debugging,\n },\n fields: [\n {\n name: 'map',\n type: 'json',\n },\n ],\n },\n ],\n i18n: {\n ...incomingConfig.i18n,\n translations: {\n ...deepMerge(translations, incomingConfig.i18n?.translations),\n },\n },\n }\n }\n\n updatedConfig.onInit = async (payload) => {\n if (incomingConfig.onInit) await incomingConfig.onInit(payload)\n\n if (!isActivated) {\n payload.logger.warn(`— AI Plugin: Not activated. Please verify your environment keys.`)\n return\n }\n\n await init(payload, collectionsFieldPathMap).catch((error) => {\n console.error(error)\n payload.logger.error(`— AI Plugin: Initialization Error: ${error}`)\n })\n }\n\n return updatedConfig\n }\n\nexport { payloadAiPlugin }\n"],"names":["deepMerge","zodToJsonSchema","lexicalSchema","Instructions","PLUGIN_INSTRUCTIONS_MAP_GLOBAL","PLUGIN_NAME","endpoints","init","InstructionsProvider","translations","isPluginActivated","updateFieldsConfig","payloadAiPlugin","pluginConfig","incomingConfig","isActivated","updatedConfig","collectionsFieldPathMap","zodLexicalSchema","editorConfig","nodes","debugging","admin","hidden","custom","schema","collections","collectionSlugs","components","providers","map","collection","slug","schemaPathMap","updatedCollectionConfig","textarea","upload","globals","access","read","fields","name","type","i18n","onInit","payload","logger","warn","catch","error","console"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { Config } from 'payload'\n\nimport { deepMerge } from 'payload/shared'\nimport { zodToJsonSchema } from 'zod-to-json-schema'\n\nimport type { PluginConfig } from './types.js'\n\nimport { lexicalSchema } from './ai/schemas/lexical.schema.js'\nimport { Instructions } from './collections/Instructions.js'\nimport { PLUGIN_INSTRUCTIONS_MAP_GLOBAL, PLUGIN_NAME } from './defaults.js'\nimport { endpoints } from './endpoints/index.js'\nimport { init } from './init.js'\nimport { translations } from './translations/index.js'\nimport { isPluginActivated } from './utilities/isPluginActivated.js'\nimport { updateFieldsConfig } from './utilities/updateFieldsConfig.js'\n\nconst payloadAiPlugin =\n (pluginConfig: PluginConfig) =>\n (incomingConfig: Config): Config => {\n const isActivated = isPluginActivated()\n let updatedConfig: Config = { ...incomingConfig }\n let collectionsFieldPathMap = {}\n\n if (isActivated) {\n // Inject editor schema to config, so that it can be accessed when /textarea endpoint will hit\n const zodLexicalSchema = lexicalSchema(pluginConfig.editorConfig?.nodes)\n\n if (pluginConfig.debugging) {\n Instructions.admin.hidden = false\n }\n\n Instructions.admin.custom = {\n ...(Instructions.admin.custom || {}),\n [PLUGIN_NAME]: {\n editorConfig: {\n // Used in admin client for useObject hook\n schema: zodToJsonSchema(zodLexicalSchema),\n },\n },\n }\n\n Instructions.custom = {\n ...(Instructions.custom || {}),\n [PLUGIN_NAME]: {\n editorConfig: {\n // Used in textarea endpoint for llm\n schema: zodLexicalSchema,\n },\n },\n }\n\n const collections = [...(incomingConfig.collections ?? []), Instructions]\n const { collections: collectionSlugs = [] } = pluginConfig\n\n incomingConfig.admin.components.providers = [\n ...(incomingConfig.admin.components.providers ?? []),\n {\n clientProps: {},\n path: '@ai-stack/payloadcms/client#InstructionsProvider',\n serverProps: {},\n },\n ]\n\n updatedConfig = {\n ...incomingConfig,\n collections: collections.map((collection) => {\n if (collectionSlugs[collection.slug]) {\n const { schemaPathMap, updatedCollectionConfig } = updateFieldsConfig(collection)\n collectionsFieldPathMap = {\n ...collectionsFieldPathMap,\n ...schemaPathMap,\n }\n return updatedCollectionConfig\n }\n\n return collection\n }),\n endpoints: [...(incomingConfig.endpoints ?? []), endpoints.textarea, endpoints.upload],\n globals: [\n ...(incomingConfig.globals || []),\n {\n slug: PLUGIN_INSTRUCTIONS_MAP_GLOBAL,\n access: {\n read: () => true,\n },\n admin: {\n hidden: !pluginConfig.debugging,\n },\n fields: [\n {\n name: 'map',\n type: 'json',\n },\n ],\n },\n ],\n i18n: {\n ...incomingConfig.i18n,\n translations: {\n ...deepMerge(translations, incomingConfig.i18n?.translations),\n },\n },\n }\n }\n\n updatedConfig.onInit = async (payload) => {\n if (incomingConfig.onInit) await incomingConfig.onInit(payload)\n\n if (!isActivated) {\n payload.logger.warn(`— AI Plugin: Not activated. Please verify your environment keys.`)\n return\n }\n\n await init(payload, collectionsFieldPathMap).catch((error) => {\n console.error(error)\n payload.logger.error(`— AI Plugin: Initialization Error: ${error}`)\n })\n }\n\n return updatedConfig\n }\n\nexport { payloadAiPlugin }\n"],"names":["deepMerge","zodToJsonSchema","lexicalSchema","Instructions","PLUGIN_INSTRUCTIONS_MAP_GLOBAL","PLUGIN_NAME","endpoints","init","translations","isPluginActivated","updateFieldsConfig","payloadAiPlugin","pluginConfig","incomingConfig","isActivated","updatedConfig","collectionsFieldPathMap","zodLexicalSchema","editorConfig","nodes","debugging","admin","hidden","custom","schema","collections","collectionSlugs","components","providers","clientProps","path","serverProps","map","collection","slug","schemaPathMap","updatedCollectionConfig","textarea","upload","globals","access","read","fields","name","type","i18n","onInit","payload","logger","warn","catch","error","console"],"mappings":"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"}
@@ -2,7 +2,5 @@ import React from 'react';
2
2
  export declare const InstructionsContext: React.Context<{
3
3
  instructions: any;
4
4
  }>;
5
- export declare const InstructionsProvider: ({ children }: {
6
- children: React.ReactNode;
7
- }) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const InstructionsProvider: React.FC;
8
6
  //# sourceMappingURL=InstructionsProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InstructionsProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/InstructionsProvider/InstructionsProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6C,MAAM,OAAO,CAAA;AAQjE,eAAO,MAAM,mBAAmB;;EAAgC,CAAA;AAEhE,eAAO,MAAM,oBAAoB,iBAAkB;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAqB/E,CAAA"}
1
+ {"version":3,"file":"InstructionsProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/InstructionsProvider/InstructionsProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6C,MAAM,OAAO,CAAA;AAQjE,eAAO,MAAM,mBAAmB;;EAAgC,CAAA;AAEhE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAqBxC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/InstructionsProvider/InstructionsProvider.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useEffect, useState } from 'react'\n\nimport { PLUGIN_INSTRUCTIONS_MAP_GLOBAL } from '../../defaults.js'\n\nconst initialContext = {\n instructions: undefined,\n}\n\nexport const InstructionsContext = createContext(initialContext)\n\nexport const InstructionsProvider = ({ children }: { children: React.ReactNode }) => {\n const [instructions, setInstructionsState] = useState({})\n\n // This is here because each field have separate instructions and\n // their ID is needed to edit them for Drawer, so instead of fetching it\n // one by one its map is saved in globals during build\n useEffect(() => {\n fetch(`/api/globals/${PLUGIN_INSTRUCTIONS_MAP_GLOBAL}`)\n .then((res) => {\n res.json().then((data) => {\n setInstructionsState(data.map)\n })\n })\n .catch((err) => {\n console.error('InstructionsProvider:', err)\n })\n }, [])\n\n return (\n <InstructionsContext.Provider value={{ instructions }}>{children}</InstructionsContext.Provider>\n )\n}\n"],"names":["React","createContext","useEffect","useState","PLUGIN_INSTRUCTIONS_MAP_GLOBAL","initialContext","instructions","undefined","InstructionsContext","InstructionsProvider","children","setInstructionsState","fetch","then","res","json","data","map","catch","err","console","error","Provider","value"],"mappings":"AAAA;;AAEA,OAAOA,SAASC,aAAa,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAEjE,SAASC,8BAA8B,QAAQ,oBAAmB;AAElE,MAAMC,iBAAiB;IACrBC,cAAcC;AAChB;AAEA,OAAO,MAAMC,oCAAsBP,cAAcI,gBAAe;AAEhE,OAAO,MAAMI,uBAAuB,CAAC,EAAEC,QAAQ,EAAiC;IAC9E,MAAM,CAACJ,cAAcK,qBAAqB,GAAGR,SAAS,CAAC;IAEvD,iEAAiE;IACjE,wEAAwE;IACxE,sDAAsD;IACtDD,UAAU;QACRU,MAAM,CAAC,aAAa,EAAER,+BAA+B,CAAC,EACnDS,IAAI,CAAC,CAACC;YACLA,IAAIC,IAAI,GAAGF,IAAI,CAAC,CAACG;gBACfL,qBAAqBK,KAAKC,GAAG;YAC/B;QACF,GACCC,KAAK,CAAC,CAACC;YACNC,QAAQC,KAAK,CAAC,yBAAyBF;QACzC;IACJ,GAAG,EAAE;IAEL,qBACE,KAACX,oBAAoBc,QAAQ;QAACC,OAAO;YAAEjB;QAAa;kBAAII;;AAE5D,EAAC"}
1
+ {"version":3,"sources":["../../../src/providers/InstructionsProvider/InstructionsProvider.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useEffect, useState } from 'react'\n\nimport { PLUGIN_INSTRUCTIONS_MAP_GLOBAL } from '../../defaults.js'\n\nconst initialContext = {\n instructions: undefined,\n}\n\nexport const InstructionsContext = createContext(initialContext)\n\nexport const InstructionsProvider: React.FC = ({ children }: { children: React.ReactNode }) => {\n const [instructions, setInstructionsState] = useState({})\n\n // This is here because each field have separate instructions and\n // their ID is needed to edit them for Drawer, so instead of fetching it\n // one by one its map is saved in globals during build\n useEffect(() => {\n fetch(`/api/globals/${PLUGIN_INSTRUCTIONS_MAP_GLOBAL}`)\n .then((res) => {\n res.json().then((data) => {\n setInstructionsState(data.map)\n })\n })\n .catch((err) => {\n console.error('InstructionsProvider:', err)\n })\n }, [])\n\n return (\n <InstructionsContext.Provider value={{ instructions }}>{children}</InstructionsContext.Provider>\n )\n}\n"],"names":["React","createContext","useEffect","useState","PLUGIN_INSTRUCTIONS_MAP_GLOBAL","initialContext","instructions","undefined","InstructionsContext","InstructionsProvider","children","setInstructionsState","fetch","then","res","json","data","map","catch","err","console","error","Provider","value"],"mappings":"AAAA;;AAEA,OAAOA,SAASC,aAAa,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAEjE,SAASC,8BAA8B,QAAQ,oBAAmB;AAElE,MAAMC,iBAAiB;IACrBC,cAAcC;AAChB;AAEA,OAAO,MAAMC,oCAAsBP,cAAcI,gBAAe;AAEhE,OAAO,MAAMI,uBAAiC,CAAC,EAAEC,QAAQ,EAAiC;IACxF,MAAM,CAACJ,cAAcK,qBAAqB,GAAGR,SAAS,CAAC;IAEvD,iEAAiE;IACjE,wEAAwE;IACxE,sDAAsD;IACtDD,UAAU;QACRU,MAAM,CAAC,aAAa,EAAER,+BAA+B,CAAC,EACnDS,IAAI,CAAC,CAACC;YACLA,IAAIC,IAAI,GAAGF,IAAI,CAAC,CAACG;gBACfL,qBAAqBK,KAAKC,GAAG;YAC/B;QACF,GACCC,KAAK,CAAC,CAACC;YACNC,QAAQC,KAAK,CAAC,yBAAyBF;QACzC;IACJ,GAAG,EAAE;IAEL,qBACE,KAACX,oBAAoBc,QAAQ;QAACC,OAAO;YAAEjB;QAAa;kBAAII;;AAE5D,EAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const useInstructions: ({ path }: {
2
+ path: any;
3
+ }) => any;
4
+ //# sourceMappingURL=useInstructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInstructions.d.ts","sourceRoot":"","sources":["../../../src/providers/InstructionsProvider/useInstructions.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe;;SAkC3B,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { useContext } from 'react';
2
+ import { InstructionsContext } from './InstructionsProvider.js';
3
+ import { handlebarsHelpers, handlebarsHelpersMap } from '../../libraries/handlebars/helpersMap.js';
4
+ export const useInstructions = ({ path })=>{
5
+ const context = useContext(InstructionsContext);
6
+ //Fields are used for autocompletion in PromptTextareaField
7
+ const fields = Object.keys(context.instructions || {}).map((key)=>{
8
+ return key.split('.').slice(1).join('.');
9
+ });
10
+ const promptEditorSuggestions = [
11
+ ...fields
12
+ ].reduce((acc, f)=>{
13
+ const fieldKey = Object.keys(context.instructions).find((k)=>k.endsWith(f));
14
+ const fieldInfo = context.instructions[fieldKey];
15
+ const helpers = handlebarsHelpers.filter((h)=>handlebarsHelpersMap[h]?.field === fieldInfo.fieldType);
16
+ if (helpers.length) {
17
+ for (const helper of helpers){
18
+ acc.push(helper + ` ${f}`);
19
+ }
20
+ return acc;
21
+ }
22
+ acc.push(f);
23
+ return acc;
24
+ }, []);
25
+ return {
26
+ ...context,
27
+ ...context.instructions[path] || {},
28
+ fields,
29
+ map: context.instructions,
30
+ promptEditorSuggestions
31
+ };
32
+ };
33
+
34
+ //# sourceMappingURL=useInstructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/providers/InstructionsProvider/useInstructions.ts"],"sourcesContent":["import { useContext } from 'react'\n\nimport { InstructionsContext } from './InstructionsProvider.js'\nimport { handlebarsHelpers, handlebarsHelpersMap } from '../../libraries/handlebars/helpersMap.js'\n\nexport const useInstructions = ({ path }) => {\n const context = useContext(InstructionsContext)\n\n //Fields are used for autocompletion in PromptTextareaField\n const fields = Object.keys(context.instructions || {}).map((key) => {\n return key.split('.').slice(1).join('.')\n })\n\n const promptEditorSuggestions = [...fields].reduce((acc, f) => {\n const fieldKey = Object.keys(context.instructions).find((k) => k.endsWith(f))\n const fieldInfo = context.instructions[fieldKey]\n\n const helpers = handlebarsHelpers.filter(\n (h) => handlebarsHelpersMap[h]?.field === fieldInfo.fieldType,\n )\n\n if (helpers.length) {\n for (const helper of helpers) {\n acc.push(helper + ` ${f}`)\n }\n return acc\n }\n\n acc.push(f)\n return acc\n }, [])\n\n return {\n ...context,\n ...(context.instructions[path] || {}),\n fields,\n map: context.instructions,\n promptEditorSuggestions,\n }\n}\n"],"names":["useContext","InstructionsContext","handlebarsHelpers","handlebarsHelpersMap","useInstructions","path","context","fields","Object","keys","instructions","map","key","split","slice","join","promptEditorSuggestions","reduce","acc","f","fieldKey","find","k","endsWith","fieldInfo","helpers","filter","h","field","fieldType","length","helper","push"],"mappings":"AAAA,SAASA,UAAU,QAAQ,QAAO;AAElC,SAASC,mBAAmB,QAAQ,4BAA2B;AAC/D,SAASC,iBAAiB,EAAEC,oBAAoB,QAAQ,2CAA0C;AAElG,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,IAAI,EAAE;IACtC,MAAMC,UAAUN,WAAWC;IAE3B,2DAA2D;IAC3D,MAAMM,SAASC,OAAOC,IAAI,CAACH,QAAQI,YAAY,IAAI,CAAC,GAAGC,GAAG,CAAC,CAACC;QAC1D,OAAOA,IAAIC,KAAK,CAAC,KAAKC,KAAK,CAAC,GAAGC,IAAI,CAAC;IACtC;IAEA,MAAMC,0BAA0B;WAAIT;KAAO,CAACU,MAAM,CAAC,CAACC,KAAKC;QACvD,MAAMC,WAAWZ,OAAOC,IAAI,CAACH,QAAQI,YAAY,EAAEW,IAAI,CAAC,CAACC,IAAMA,EAAEC,QAAQ,CAACJ;QAC1E,MAAMK,YAAYlB,QAAQI,YAAY,CAACU,SAAS;QAEhD,MAAMK,UAAUvB,kBAAkBwB,MAAM,CACtC,CAACC,IAAMxB,oBAAoB,CAACwB,EAAE,EAAEC,UAAUJ,UAAUK,SAAS;QAG/D,IAAIJ,QAAQK,MAAM,EAAE;YAClB,KAAK,MAAMC,UAAUN,QAAS;gBAC5BP,IAAIc,IAAI,CAACD,SAAS,CAAC,CAAC,EAAEZ,EAAE,CAAC;YAC3B;YACA,OAAOD;QACT;QAEAA,IAAIc,IAAI,CAACb;QACT,OAAOD;IACT,GAAG,EAAE;IAEL,OAAO;QACL,GAAGZ,OAAO;QACV,GAAIA,QAAQI,YAAY,CAACL,KAAK,IAAI,CAAC,CAAC;QACpCE;QACAI,KAAKL,QAAQI,YAAY;QACzBM;IACF;AACF,EAAC"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Endpoint, Field, GroupField } from 'payload';
2
2
  import { CSSProperties, MouseEventHandler } from 'react';
3
- import { LexicalBaseNode } from './ai/editor/lexical.schema.js';
3
+ import { LexicalBaseNode } from './ai/schemas/lexical.schema.js';
4
4
  export interface PluginConfig {
5
5
  collections: {
6
6
  [key: string]: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +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/editor/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}\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":"AAsFA;;;CAGC,GACD,WA4BC"}
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}\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":"AAsFA;;;CAGC,GACD,WA4BC"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client';
4
- import { FieldDescription, Popup, useDocumentDrawer, useField, useFieldProps } from '@payloadcms/ui';
4
+ import { Popup, useDocumentDrawer, useField, useFieldProps } from '@payloadcms/ui';
5
5
  import React, { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import { PLUGIN_INSTRUCTIONS_TABLE } from '../../defaults.js';
7
7
  import { setSafeLexicalState } from '../../utilities/setSafeLexicalState.js';
@@ -129,47 +129,40 @@ export const Actions = ({ descriptionProps = {}, instructionId })=>{
129
129
  }
130
130
  // DO NOT PROVIDE lexicalEditor as a dependency, it freaks out and does not update the editor after first undo/redo
131
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, {
132
+ return /*#__PURE__*/ _jsx(React.Fragment, {
133
+ children: /*#__PURE__*/ _jsxs("label", {
134
+ className: `${styles.actions}`,
135
+ onClick: (e)=>e.preventDefault(),
136
+ ref: actionsRef,
137
+ children: [
138
+ /*#__PURE__*/ _jsx(DocumentDrawer, {
139
+ onSave: ()=>{
140
+ closeDrawer();
141
+ }
142
+ }),
143
+ /*#__PURE__*/ _jsx(Popup, {
144
+ button: /*#__PURE__*/ _jsx(PluginIcon, {
157
145
  isLoading: isProcessing || isLoading
158
146
  }),
159
- /*#__PURE__*/ _jsx(UndoRedoActions, {
160
- onChange: (val)=>{
161
- setValue(val);
162
- setIfValueIsLexicalState(val);
163
- }
164
- })
165
- ]
166
- }),
167
- /*#__PURE__*/ _jsx("div", {
168
- children: /*#__PURE__*/ _jsx(FieldDescription, {
169
- ...descriptionProps
147
+ render: ({ close })=>{
148
+ return /*#__PURE__*/ _jsx(Menu, {
149
+ isLoading: isProcessing || isLoading,
150
+ onClose: close
151
+ });
152
+ },
153
+ verticalAlign: "bottom"
154
+ }),
155
+ /*#__PURE__*/ _jsx(ActiveComponent, {
156
+ isLoading: isProcessing || isLoading
157
+ }),
158
+ /*#__PURE__*/ _jsx(UndoRedoActions, {
159
+ onChange: (val)=>{
160
+ setValue(val);
161
+ setIfValueIsLexicalState(val);
162
+ }
170
163
  })
171
- })
172
- ]
164
+ ]
165
+ })
173
166
  });
174
167
  };
175
168
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/Actions/Actions.tsx"],"sourcesContent":["'use client'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { FieldDescription, Popup, useDocumentDrawer, useField, useFieldProps } from '@payloadcms/ui'\nimport React, { 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 './actions.module.scss'\nimport { useMenu } from './hooks/menu/useMenu.js'\nimport { useGenerate } from './hooks/useGenerate.js'\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\nexport const Actions = ({ descriptionProps = {}, instructionId }) => {\n const [DocumentDrawer, _, { closeDrawer, openDrawer }] = useDocumentDrawer({\n id: 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...', data)\n await generate({\n action: 'Translate',\n params: data,\n })\n },\n })\n\n const { setValue, value } = useField<string>({\n path: pathFromContext,\n })\n\n const setIfValueIsLexicalState = useCallback((val) => {\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 <div>\n <FieldDescription {...descriptionProps} />\n </div>\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","Actions","descriptionProps","instructionId","DocumentDrawer","_","closeDrawer","openDrawer","id","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","value","setIfValueIsLexicalState","val","root","JSON","stringify","Fragment","label","onClick","e","preventDefault","ref","onSave","button","render","close","onClose","verticalAlign","onChange","div"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/Actions/Actions.tsx"],"sourcesContent":["'use client'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { FieldDescription, Popup, useDocumentDrawer, useField, useFieldProps } from '@payloadcms/ui'\nimport React, { 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 './actions.module.scss'\nimport { useMenu } from './hooks/menu/useMenu.js'\nimport { useGenerate } from './hooks/useGenerate.js'\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\nexport const Actions = ({ descriptionProps = {}, instructionId }) => {\n const [DocumentDrawer, _, { closeDrawer, openDrawer }] = useDocumentDrawer({\n id: 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...', data)\n await generate({\n action: 'Translate',\n params: data,\n })\n },\n })\n\n const { setValue, value } = useField<string>({\n path: pathFromContext,\n })\n\n const setIfValueIsLexicalState = useCallback((val) => {\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 {/*<div>*/}\n {/* <FieldDescription {...descriptionProps} />*/}\n {/*</div>*/}\n </React.Fragment>\n )\n}\n"],"names":["useEditorConfigContext","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","Actions","descriptionProps","instructionId","DocumentDrawer","_","closeDrawer","openDrawer","id","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","value","setIfValueIsLexicalState","val","root","JSON","stringify","Fragment","label","onClick","e","preventDefault","ref","onSave","button","render","close","onClose","verticalAlign","onChange"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGenerate.d.ts","sourceRoot":"","sources":["../../../../src/ui/Actions/hooks/useGenerate.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,mBAAmB,CAAA;AAa1E,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAGzE,eAAO,MAAM,WAAW;yBAqKH,oBAAoB;;CAoBxC,CAAA"}
1
+ {"version":3,"file":"useGenerate.d.ts","sourceRoot":"","sources":["../../../../src/ui/Actions/hooks/useGenerate.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,mBAAmB,CAAA;AAa1E,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAGzE,eAAO,MAAM,WAAW;yBAuKH,oBAAoB;;CAoBxC,CAAA"}
@@ -3,7 +3,7 @@ import { useConfig, useDocumentInfo, useField, useFieldProps, useForm, useLocale
3
3
  import { useCompletion, experimental_useObject as useObject } from 'ai/react';
4
4
  import { useCallback, useEffect } from 'react';
5
5
  import { PLUGIN_API_ENDPOINT_GENERATE, PLUGIN_API_ENDPOINT_GENERATE_UPLOAD, PLUGIN_INSTRUCTIONS_TABLE } from '../../../defaults.js';
6
- import { useInstructions } from '../../../providers/InstructionsProvider/hook.js';
6
+ import { useInstructions } from '../../../providers/InstructionsProvider/useInstructions.js';
7
7
  import { getFieldBySchemaPath } from '../../../utilities/getFieldBySchemaPath.js';
8
8
  import { jsonSchemaToZod } from '../../../utilities/jsonToZod.js';
9
9
  import { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js';
@@ -23,11 +23,11 @@ export const useGenerate = ()=>{
23
23
  });
24
24
  const { getData } = useForm();
25
25
  const localFromContext = useLocale();
26
- const { collections } = useConfig();
26
+ const { config: { collections } } = useConfig();
27
27
  const collection = collections.find((collection)=>collection.slug === PLUGIN_INSTRUCTIONS_TABLE);
28
28
  const { custom: { editorConfig } = {} } = collection.admin;
29
29
  const { schema: DocumentSchema = {} } = editorConfig || {};
30
- const zodSchema = jsonSchemaToZod(DocumentSchema);
30
+ const lexicalZodSchema = jsonSchemaToZod(DocumentSchema);
31
31
  const { isLoading: loadingObject, object, stop, submit } = useObject({
32
32
  api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,
33
33
  onError: (error)=>{
@@ -41,7 +41,7 @@ export const useGenerate = ()=>{
41
41
  console.log('onFinish: result ', result);
42
42
  }
43
43
  },
44
- schema: zodSchema
44
+ schema: lexicalZodSchema
45
45
  });
46
46
  useEffect(()=>{
47
47
  if (!object) return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ui/Actions/hooks/useGenerate.ts"],"sourcesContent":["import type { ClientCollectionConfig, UploadField } from 'payload'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport {\n useConfig,\n useDocumentInfo,\n useField,\n useFieldProps,\n useForm,\n useLocale,\n} from '@payloadcms/ui'\nimport { useCompletion, experimental_useObject as useObject } from 'ai/react'\nimport { useCallback, useEffect } 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} from '../../../defaults.js'\nimport { useInstructions } from '../../../providers/InstructionsProvider/hook.js'\nimport { getFieldBySchemaPath } from '../../../utilities/getFieldBySchemaPath.js'\nimport { jsonSchemaToZod } from '../../../utilities/jsonToZod.js'\nimport { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js'\nimport { useHistory } from './useHistory.js'\n\ntype ActionCallbackParams = { action: ActionMenuItems; params?: unknown }\n\n//TODO: DONATION IDEA - Add a url to donate in cli when user installs the plugin and uses it for couple of times.\nexport const useGenerate = () => {\n const { type, path: pathFromContext, schemaPath } = useFieldProps()\n\n const editorConfigContext = useEditorConfigContext()\n const { editor } = editorConfigContext\n\n const { docConfig } = useDocumentInfo()\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const { set: setHistory } = useHistory()\n const { id: instructionId } = useInstructions({\n path: schemaPath,\n })\n\n const { getData } = useForm()\n const localFromContext = useLocale()\n const { collections } = useConfig()\n const collection = collections.find((collection) => collection.slug === PLUGIN_INSTRUCTIONS_TABLE)\n const { custom: { editorConfig } = {} } = collection.admin\n const { schema: DocumentSchema = {} } = editorConfig || {}\n const zodSchema = jsonSchemaToZod(DocumentSchema)\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: zodSchema,\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: `/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 const fieldInfo = getFieldBySchemaPath(\n docConfig as ClientCollectionConfig,\n schemaPath,\n ) as UploadField\n\n return fetch(`/api${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {\n body: JSON.stringify({\n doc,\n locale: localFromContext?.code,\n options: {\n instructionId,\n uploadCollectionSlug: fieldInfo.relationTo || 'media',\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, setValue])\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","useDocumentInfo","useField","useFieldProps","useForm","useLocale","useCompletion","experimental_useObject","useObject","useCallback","useEffect","PLUGIN_API_ENDPOINT_GENERATE","PLUGIN_API_ENDPOINT_GENERATE_UPLOAD","PLUGIN_INSTRUCTIONS_TABLE","useInstructions","getFieldBySchemaPath","jsonSchemaToZod","setSafeLexicalState","useHistory","useGenerate","type","path","pathFromContext","schemaPath","editorConfigContext","editor","docConfig","setValue","set","setHistory","id","instructionId","getData","localFromContext","collections","collection","find","slug","custom","editorConfig","admin","schema","DocumentSchema","zodSchema","isLoading","loadingObject","object","stop","submit","api","onError","error","console","onFinish","result","log","requestAnimationFrame","complete","completion","loadingCompletion","prompt","streamProtocol","streamObject","action","params","doc","options","actionParams","locale","code","streamText","body","generateUpload","fieldInfo","fetch","JSON","stringify","uploadCollectionSlug","relationTo","credentials","headers","method","then","uploadResponse","ok","json","Error","errors","errStr","map","message","join","catch","generate","includes"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/ui/Actions/hooks/useGenerate.ts"],"sourcesContent":["import type { ClientCollectionConfig, UploadField } from 'payload'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport {\n useConfig,\n useDocumentInfo,\n useField,\n useFieldProps,\n useForm,\n useLocale,\n} from '@payloadcms/ui'\nimport { useCompletion, experimental_useObject as useObject } from 'ai/react'\nimport { useCallback, useEffect } 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} from '../../../defaults.js'\nimport { useInstructions } from '../../../providers/InstructionsProvider/useInstructions.js'\nimport { getFieldBySchemaPath } from '../../../utilities/getFieldBySchemaPath.js'\nimport { jsonSchemaToZod } from '../../../utilities/jsonToZod.js'\nimport { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js'\nimport { useHistory } from './useHistory.js'\n\ntype ActionCallbackParams = { action: ActionMenuItems; params?: unknown }\n\n//TODO: DONATION IDEA - Add a url to donate in cli when user installs the plugin and uses it for couple of times.\nexport const useGenerate = () => {\n const { type, path: pathFromContext, schemaPath } = useFieldProps()\n\n const editorConfigContext = useEditorConfigContext()\n const { editor } = editorConfigContext\n\n const { docConfig } = useDocumentInfo()\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const { set: setHistory } = useHistory()\n const { id: instructionId } = useInstructions({\n path: schemaPath,\n })\n\n const { getData } = useForm()\n const localFromContext = useLocale()\n const {\n config: { collections },\n } = useConfig()\n const collection = collections.find((collection) => collection.slug === PLUGIN_INSTRUCTIONS_TABLE)\n const { custom: { editorConfig } = {} } = collection.admin\n const { schema: DocumentSchema = {} } = editorConfig || {}\n const lexicalZodSchema = jsonSchemaToZod(DocumentSchema)\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: lexicalZodSchema,\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: `/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 const fieldInfo = getFieldBySchemaPath(\n docConfig as ClientCollectionConfig,\n schemaPath,\n ) as UploadField\n\n return fetch(`/api${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {\n body: JSON.stringify({\n doc,\n locale: localFromContext?.code,\n options: {\n instructionId,\n uploadCollectionSlug: fieldInfo.relationTo || 'media',\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, setValue])\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","useDocumentInfo","useField","useFieldProps","useForm","useLocale","useCompletion","experimental_useObject","useObject","useCallback","useEffect","PLUGIN_API_ENDPOINT_GENERATE","PLUGIN_API_ENDPOINT_GENERATE_UPLOAD","PLUGIN_INSTRUCTIONS_TABLE","useInstructions","getFieldBySchemaPath","jsonSchemaToZod","setSafeLexicalState","useHistory","useGenerate","type","path","pathFromContext","schemaPath","editorConfigContext","editor","docConfig","setValue","set","setHistory","id","instructionId","getData","localFromContext","config","collections","collection","find","slug","custom","editorConfig","admin","schema","DocumentSchema","lexicalZodSchema","isLoading","loadingObject","object","stop","submit","api","onError","error","console","onFinish","result","log","requestAnimationFrame","complete","completion","loadingCompletion","prompt","streamProtocol","streamObject","action","params","doc","options","actionParams","locale","code","streamText","body","generateUpload","fieldInfo","fetch","JSON","stringify","uploadCollectionSlug","relationTo","credentials","headers","method","then","uploadResponse","ok","json","Error","errors","errStr","map","message","join","catch","generate","includes"],"mappings":"AAEA,SAASA,sBAAsB,QAAQ,sCAAqC;AAC5E,SACEC,SAAS,EACTC,eAAe,EACfC,QAAQ,EACRC,aAAa,EACbC,OAAO,EACPC,SAAS,QACJ,iBAAgB;AACvB,SAASC,aAAa,EAAEC,0BAA0BC,SAAS,QAAQ,WAAU;AAC7E,SAASC,WAAW,EAAEC,SAAS,QAAQ,QAAO;AAI9C,SACEC,4BAA4B,EAC5BC,mCAAmC,EACnCC,yBAAyB,QACpB,uBAAsB;AAC7B,SAASC,eAAe,QAAQ,6DAA4D;AAC5F,SAASC,oBAAoB,QAAQ,6CAA4C;AACjF,SAASC,eAAe,QAAQ,kCAAiC;AACjE,SAASC,mBAAmB,QAAQ,4CAA2C;AAC/E,SAASC,UAAU,QAAQ,kBAAiB;AAI5C,iHAAiH;AACjH,OAAO,MAAMC,cAAc;IACzB,MAAM,EAAEC,IAAI,EAAEC,MAAMC,eAAe,EAAEC,UAAU,EAAE,GAAGpB;IAEpD,MAAMqB,sBAAsBzB;IAC5B,MAAM,EAAE0B,MAAM,EAAE,GAAGD;IAEnB,MAAM,EAAEE,SAAS,EAAE,GAAGzB;IAEtB,MAAM,EAAE0B,QAAQ,EAAE,GAAGzB,SAAiB;QACpCmB,MAAMC;IACR;IAEA,MAAM,EAAEM,KAAKC,UAAU,EAAE,GAAGX;IAC5B,MAAM,EAAEY,IAAIC,aAAa,EAAE,GAAGjB,gBAAgB;QAC5CO,MAAME;IACR;IAEA,MAAM,EAAES,OAAO,EAAE,GAAG5B;IACpB,MAAM6B,mBAAmB5B;IACzB,MAAM,EACJ6B,QAAQ,EAAEC,WAAW,EAAE,EACxB,GAAGnC;IACJ,MAAMoC,aAAaD,YAAYE,IAAI,CAAC,CAACD,aAAeA,WAAWE,IAAI,KAAKzB;IACxE,MAAM,EAAE0B,QAAQ,EAAEC,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE,GAAGJ,WAAWK,KAAK;IAC1D,MAAM,EAAEC,QAAQC,iBAAiB,CAAC,CAAC,EAAE,GAAGH,gBAAgB,CAAC;IACzD,MAAMI,mBAAmB5B,gBAAgB2B;IAEzC,MAAM,EACJE,WAAWC,aAAa,EACxBC,MAAM,EACNC,IAAI,EACJC,MAAM,EACP,GAAGzC,UAAU;QACZ0C,KAAK,CAAC,IAAI,EAAEvC,6BAA6B,CAAC;QAC1CwC,SAAS,CAACC;YACRC,QAAQD,KAAK,CAAC,4BAA4BA;QAC5C;QACAE,UAAU,CAACC;YACT,IAAIA,OAAOR,MAAM,EAAE;gBACjBlB,WAAW0B,OAAOR,MAAM;gBACxBpB,SAAS4B,OAAOR,MAAM;YACxB,OAAO;gBACLM,QAAQG,GAAG,CAAC,qBAAqBD;YACnC;QACF;QACAb,QAAQE;IACV;IAEAlC,UAAU;QACR,IAAI,CAACqC,QAAQ;QAEbU,sBAAsB;YACpB,IAAI,CAAChC,QAAQ;gBACXE,SAASoB;gBACT;YACF;YAEA,0GAA0G;YAC1G9B,oBAAoB8B,QAAQtB;QAC9B;IACF,GAAG;QAACsB;KAAO;IAEX,MAAM,EACJW,QAAQ,EACRC,UAAU,EACVd,WAAWe,iBAAiB,EAC7B,GAAGtD,cAAc;QAChB4C,KAAK,CAAC,IAAI,EAAEvC,6BAA6B,CAAC;QAC1CwC,SAAS,CAACC;YACRC,QAAQD,KAAK,CAAC,0BAA0BA;QAC1C;QACAE,UAAU,CAACO,QAAQN;YACjB1B,WAAW0B;QACb;QACAO,gBAAgB;IAClB;IAEApD,UAAU;QACR,IAAI,CAACiD,YAAY;QAEjBF,sBAAsB;YACpB9B,SAASgC;QACX;IACF,GAAG;QAACA;KAAW;IAEf,MAAMI,eAAetD,YACnB,CAAC,EAAEuD,SAAS,SAAS,EAAEC,MAAM,EAAwB;QACnD,MAAMC,MAAMlC;QACZ,MAAMmC,UAAU;YACdH;YACAI,cAAcH;YACdlC;QACF;QAEAkB,OAAO;YACLiB;YACAG,QAAQpC,kBAAkBqC;YAC1BH;QACF;IACF,GACA;QAACnC;QAASC,kBAAkBqC;QAAMvC;KAAc;IAGlD,MAAMwC,aAAa9D,YACjB,OAAO,EAAEuD,SAAS,SAAS,EAAEC,MAAM,EAAwB;QACzD,MAAMC,MAAMlC;QAEZ,MAAMmC,UAAU;YACdH;YACAI,cAAcH;YACdlC;QACF;QAEA,MAAM2B,SAAS,IAAI;YACjBc,MAAM;gBACJN;gBACAG,QAAQpC,kBAAkBqC;gBAC1BH;YACF;QACF;IACF,GACA;QAACnC;QAASC,kBAAkBqC;QAAMvC;KAAc;IAGlD,MAAM0C,iBAAiBhE,YAAY;QACjC,MAAMyD,MAAMlC;QAEZ,MAAM0C,YAAY3D,qBAChBW,WACAH;QAGF,OAAOoD,MAAM,CAAC,IAAI,EAAE/D,oCAAoC,CAAC,EAAE;YACzD4D,MAAMI,KAAKC,SAAS,CAAC;gBACnBX;gBACAG,QAAQpC,kBAAkBqC;gBAC1BH,SAAS;oBACPpC;oBACA+C,sBAAsBJ,UAAUK,UAAU,IAAI;gBAChD;YACF;YACAC,aAAa;YACbC,SAAS;gBACP,gBAAgB;YAClB;YACAC,QAAQ;QACV,GACGC,IAAI,CAAC,OAAOC;YACX,IAAIA,eAAeC,EAAE,EAAE;gBACrB,MAAM,EAAE9B,MAAM,EAAE,GAAG,MAAM6B,eAAeE,IAAI;gBAC5C,IAAI,CAAC/B,QAAQ,MAAM,IAAIgC,MAAM;gBAE7B5D,SAAS4B,QAAQzB;gBACjBD,WAAW0B,QAAQzB;YACrB,OAAO;gBACL,MAAM,EAAE0D,SAAS,EAAE,EAAE,GAAG,MAAMJ,eAAeE,IAAI;gBACjD,MAAMG,SAASD,OAAOE,GAAG,CAAC,CAACtC,QAAUA,MAAMuC,OAAO,EAAEC,IAAI,CAAC;gBACzD,MAAM,IAAIL,MAAME;YAClB;YACA,OAAOL;QACT,GACCS,KAAK,CAAC,CAACzC;YACNC,QAAQD,KAAK,CAAC,gCAAgCA;QAChD;IACJ,GAAG;QAACpB;QAASC,kBAAkBqC;QAAMvC;QAAeJ;KAAS;IAE7D,MAAMmE,WAAWrF,YACf,OAAO0D;QACL,IAAI/C,SAAS,YAAY;YACvB,OAAO2C,aAAaI;QACtB;QAEA,IAAI;YAAC;YAAQ;SAAW,CAAC4B,QAAQ,CAAC3E,OAAO;YACvC,OAAOmD,WAAWJ;QACpB;QAEA,IAAI/C,SAAS,UAAU;YACrB,OAAOqD;QACT;IACF,GACA;QAACA;QAAgBV;QAAcQ;QAAYnD;KAAK;IAGlD,OAAO;QACL0E;QACAjD,WAAWe,qBAAqBd;IAClC;AACF,EAAC"}
@@ -1,3 +1,3 @@
1
- import type { ClientCollectionConfig, ClientFieldConfig, CollectionConfig, Field } from 'payload';
2
- export declare const getFieldBySchemaPath: (collectionConfig: ClientCollectionConfig | CollectionConfig, schemaPath: string) => ClientFieldConfig | Field | null;
1
+ import type { ClientCollectionConfig, CollectionConfig, Field } from 'payload';
2
+ export declare const getFieldBySchemaPath: (collectionConfig: ClientCollectionConfig | CollectionConfig, schemaPath: string) => Field | null;
3
3
  //# sourceMappingURL=getFieldBySchemaPath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldBySchemaPath.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldBySchemaPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEjG,eAAO,MAAM,oBAAoB,qBACb,sBAAsB,GAAG,gBAAgB,cAC/C,MAAM,KACjB,iBAAiB,GAAG,KAAK,GAAG,IAyC9B,CAAA"}
1
+ {"version":3,"file":"getFieldBySchemaPath.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldBySchemaPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE9E,eAAO,MAAM,oBAAoB,qBACb,sBAAsB,GAAG,gBAAgB,cAC/C,MAAM,KACjB,KAAK,GAAG,IAyCV,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getFieldBySchemaPath.ts"],"sourcesContent":["import type { ClientCollectionConfig, ClientFieldConfig, CollectionConfig, Field } from 'payload'\n\nexport const getFieldBySchemaPath = (\n collectionConfig: ClientCollectionConfig | CollectionConfig,\n schemaPath: string, // e.g., \"posts.content\"\n): ClientFieldConfig | Field | null => {\n const pathParts = schemaPath.split('.')\n const targetFieldName = pathParts[pathParts.length - 1]\n\n const findField = (fields, remainingPath: string[]): Field | null => {\n for (const field of fields) {\n if (remainingPath.length === 1 && field.name === targetFieldName) {\n return field\n }\n\n if (field.type === 'group' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'array' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n const result = findField(tab.fields, remainingPath)\n if (result) return result\n }\n }\n\n if (field.type === 'blocks') {\n for (const block of field.blocks) {\n if (block.slug === remainingPath[0]) {\n const result = findField(block.fields, remainingPath.slice(1))\n if (result) return result\n }\n }\n }\n }\n\n return null\n }\n\n return findField(collectionConfig.fields, pathParts.slice(1))\n}\n"],"names":["getFieldBySchemaPath","collectionConfig","schemaPath","pathParts","split","targetFieldName","length","findField","fields","remainingPath","field","name","type","result","slice","tab","tabs","block","blocks","slug"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,CAClCC,kBACAC;IAEA,MAAMC,YAAYD,WAAWE,KAAK,CAAC;IACnC,MAAMC,kBAAkBF,SAAS,CAACA,UAAUG,MAAM,GAAG,EAAE;IAEvD,MAAMC,YAAY,CAACC,QAAQC;QACzB,KAAK,MAAMC,SAASF,OAAQ;YAC1B,IAAIC,cAAcH,MAAM,KAAK,KAAKI,MAAMC,IAAI,KAAKN,iBAAiB;gBAChE,OAAOK;YACT;YAEA,IAAIA,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,QAAQ;gBACzB,KAAK,MAAMG,OAAOL,MAAMM,IAAI,CAAE;oBAC5B,MAAMH,SAASN,UAAUQ,IAAIP,MAAM,EAAEC;oBACrC,IAAII,QAAQ,OAAOA;gBACrB;YACF;YAEA,IAAIH,MAAME,IAAI,KAAK,UAAU;gBAC3B,KAAK,MAAMK,SAASP,MAAMQ,MAAM,CAAE;oBAChC,IAAID,MAAME,IAAI,KAAKV,aAAa,CAAC,EAAE,EAAE;wBACnC,MAAMI,SAASN,UAAUU,MAAMT,MAAM,EAAEC,cAAcK,KAAK,CAAC;wBAC3D,IAAID,QAAQ,OAAOA;oBACrB;gBACF;YACF;QACF;QAEA,OAAO;IACT;IAEA,OAAON,UAAUN,iBAAiBO,MAAM,EAAEL,UAAUW,KAAK,CAAC;AAC5D,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getFieldBySchemaPath.ts"],"sourcesContent":["import type { ClientCollectionConfig, CollectionConfig, Field } from 'payload'\n\nexport const getFieldBySchemaPath = (\n collectionConfig: ClientCollectionConfig | CollectionConfig,\n schemaPath: string, // e.g., \"posts.content\"\n): Field | null => {\n const pathParts = schemaPath.split('.')\n const targetFieldName = pathParts[pathParts.length - 1]\n\n const findField = (fields, remainingPath: string[]): Field | null => {\n for (const field of fields) {\n if (remainingPath.length === 1 && field.name === targetFieldName) {\n return field\n }\n\n if (field.type === 'group' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'array' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n const result = findField(tab.fields, remainingPath)\n if (result) return result\n }\n }\n\n if (field.type === 'blocks') {\n for (const block of field.blocks) {\n if (block.slug === remainingPath[0]) {\n const result = findField(block.fields, remainingPath.slice(1))\n if (result) return result\n }\n }\n }\n }\n\n return null\n }\n\n return findField(collectionConfig.fields, pathParts.slice(1))\n}\n"],"names":["getFieldBySchemaPath","collectionConfig","schemaPath","pathParts","split","targetFieldName","length","findField","fields","remainingPath","field","name","type","result","slice","tab","tabs","block","blocks","slug"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,CAClCC,kBACAC;IAEA,MAAMC,YAAYD,WAAWE,KAAK,CAAC;IACnC,MAAMC,kBAAkBF,SAAS,CAACA,UAAUG,MAAM,GAAG,EAAE;IAEvD,MAAMC,YAAY,CAACC,QAAQC;QACzB,KAAK,MAAMC,SAASF,OAAQ;YAC1B,IAAIC,cAAcH,MAAM,KAAK,KAAKI,MAAMC,IAAI,KAAKN,iBAAiB;gBAChE,OAAOK;YACT;YAEA,IAAIA,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,QAAQ;gBACzB,KAAK,MAAMG,OAAOL,MAAMM,IAAI,CAAE;oBAC5B,MAAMH,SAASN,UAAUQ,IAAIP,MAAM,EAAEC;oBACrC,IAAII,QAAQ,OAAOA;gBACrB;YACF;YAEA,IAAIH,MAAME,IAAI,KAAK,UAAU;gBAC3B,KAAK,MAAMK,SAASP,MAAMQ,MAAM,CAAE;oBAChC,IAAID,MAAME,IAAI,KAAKV,aAAa,CAAC,EAAE,EAAE;wBACnC,MAAMI,SAASN,UAAUU,MAAMT,MAAM,EAAEC,cAAcK,KAAK,CAAC;wBAC3D,IAAID,QAAQ,OAAOA;oBACrB;gBACF;YACF;QACF;QAEA,OAAO;IACT;IAEA,OAAON,UAAUN,iBAAiBO,MAAM,EAAEL,UAAUW,KAAK,CAAC;AAC5D,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BasePayload } from 'payload';
2
+ export declare const getFieldInfo: (collections: BasePayload["collections"], schemaPath: string) => any;
3
+ //# sourceMappingURL=getFieldInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFieldInfo.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,eAAO,MAAM,YAAY,gBAAiB,WAAW,CAAC,aAAa,CAAC,cAAc,MAAM,QAUvF,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { getFieldBySchemaPath } from './getFieldBySchemaPath.js';
2
+ export const getFieldInfo = (collections, schemaPath)=>{
3
+ let fieldInfo = null;
4
+ //TODO: Only run below for enabled collections
5
+ for(const collectionsKey in collections){
6
+ const collection = collections[collectionsKey];
7
+ fieldInfo = getFieldBySchemaPath(collection.config, schemaPath);
8
+ if (fieldInfo) {
9
+ return fieldInfo;
10
+ }
11
+ }
12
+ };
13
+
14
+ //# sourceMappingURL=getFieldInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/getFieldInfo.ts"],"sourcesContent":["import type { BasePayload } from 'payload'\n\nimport { getFieldBySchemaPath } from './getFieldBySchemaPath.js'\n\nexport const getFieldInfo = (collections: BasePayload['collections'], schemaPath: string) => {\n let fieldInfo = null\n //TODO: Only run below for enabled collections\n for (const collectionsKey in collections) {\n const collection = collections[collectionsKey]\n fieldInfo = getFieldBySchemaPath(collection.config, schemaPath)\n if (fieldInfo) {\n return fieldInfo\n }\n }\n}\n"],"names":["getFieldBySchemaPath","getFieldInfo","collections","schemaPath","fieldInfo","collectionsKey","collection","config"],"mappings":"AAEA,SAASA,oBAAoB,QAAQ,4BAA2B;AAEhE,OAAO,MAAMC,eAAe,CAACC,aAAyCC;IACpE,IAAIC,YAAY;IAChB,8CAA8C;IAC9C,IAAK,MAAMC,kBAAkBH,YAAa;QACxC,MAAMI,aAAaJ,WAAW,CAACG,eAAe;QAC9CD,YAAYJ,qBAAqBM,WAAWC,MAAM,EAAEJ;QACpD,IAAIC,WAAW;YACb,OAAOA;QACT;IACF;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;AAI/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,kBAiFvE,CAAA"}
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,kBAiFvE,CAAA"}
@@ -1,4 +1,3 @@
1
- import { DescriptionField } from '../fields/DescriptionField/DescriptionField.js';
2
1
  export const updateFieldsConfig = (collectionConfig)=>{
3
2
  let schemaPathMap = {};
4
3
  function updateField(field, parentPath = '') {
@@ -36,10 +35,7 @@ export const updateFieldsConfig = (collectionConfig)=>{
36
35
  ...field.admin,
37
36
  components: {
38
37
  ...field.admin?.components || {},
39
- // @ts-expect-error
40
- Description: DescriptionField({
41
- Description: field.admin?.components?.Description
42
- })
38
+ Description: '@ai-stack/payloadcms/client#DescriptionFieldComponent'
43
39
  }
44
40
  }
45
41
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/updateFieldsConfig.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport { DescriptionField } from '../fields/DescriptionField/DescriptionField.js'\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 || field.admin?.readOnly || field.admin?.hidden) {\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 },\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 return {\n ...field,\n admin: {\n ...field.admin,\n components: {\n ...(field.admin?.components || {}),\n // @ts-expect-error\n Description: DescriptionField({\n Description: field.admin?.components?.Description,\n }),\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 ...tab,\n fields: tab.fields.map((subField: any) => updateField(subField, currentPath)),\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":["DescriptionField","updateFieldsConfig","collectionConfig","schemaPathMap","updateField","field","parentPath","currentPath","name","currentSchemaPath","slug","admin","disabled","readOnly","hidden","includes","type","label","components","Description","fields","map","subField","tabs","tab","blocks","block","updatedCollectionConfig"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ,iDAAgD;AAOjF,OAAO,MAAMC,qBAAqB,CAACC;IACjC,IAAIC,gBAAgB,CAAC;IACrB,SAASC,YAAYC,KAAU,EAAEC,aAAa,EAAE;QAC9C,MAAMC,cAAcD,aAAa,CAAC,EAAEA,WAAW,CAAC,EAAED,MAAMG,IAAI,CAAC,CAAC,GAAGH,MAAMG,IAAI;QAC3E,MAAMC,oBAAoB,CAAC,EAAEP,iBAAiBQ,IAAI,CAAC,CAAC,EAAEH,YAAY,CAAC;QAEnE,IAAIF,MAAMM,KAAK,EAAEC,YAAYP,MAAMM,KAAK,EAAEE,YAAYR,MAAMM,KAAK,EAAEG,QAAQ;YACzE,OAAOT;QACT;QAEA,8EAA8E;QAC9E,wGAAwG;QACxG,yEAAyE;QACzE,IAAI;YAAC;YAAY;YAAQ;YAAY;SAAS,CAACU,QAAQ,CAACV,MAAMW,IAAI,GAAG;YACnEb,gBAAgB;gBACd,GAAGA,aAAa;gBAChB,CAACM,kBAAkB,EAAE;oBACnBO,MAAMX,MAAMW,IAAI;oBAChBC,OAAOZ,MAAMY,KAAK,IAAIZ,MAAMG,IAAI;gBAClC;YACF;QACF;QAEA,8FAA8F;QAC9F,IAAI;YAAC;YAAQ;YAAY;SAAS,CAACO,QAAQ,CAACV,MAAMW,IAAI,GAAG;YACvD,OAAO;gBACL,GAAGX,KAAK;gBACRM,OAAO;oBACL,GAAGN,MAAMM,KAAK;oBACdO,YAAY;wBACV,GAAIb,MAAMM,KAAK,EAAEO,cAAc,CAAC,CAAC;wBACjC,mBAAmB;wBACnBC,aAAanB,iBAAiB;4BAC5BmB,aAAad,MAAMM,KAAK,EAAEO,YAAYC;wBACxC;oBACF;gBACF;YACF;QACF;QAEA,IAAId,MAAMe,MAAM,EAAE;YAChB,OAAO;gBACL,GAAGf,KAAK;gBACRe,QAAQf,MAAMe,MAAM,CAACC,GAAG,CAAC,CAACC,WAAkBlB,YAAYkB,UAAUf;YACpE;QACF;QAEA,IAAIF,MAAMkB,IAAI,EAAE;YACd,OAAO;gBACL,GAAGlB,KAAK;gBACRkB,MAAMlB,MAAMkB,IAAI,CAACF,GAAG,CAAC,CAACG,MAAc,CAAA;wBAClC,GAAGA,GAAG;wBACNJ,QAAQI,IAAIJ,MAAM,CAACC,GAAG,CAAC,CAACC,WAAkBlB,YAAYkB,UAAUf;oBAClE,CAAA;YACF;QACF;QAEA,IAAIF,MAAMoB,MAAM,EAAE;YAChB,OAAO;gBACL,GAAGpB,KAAK;gBACRoB,QAAQpB,MAAMoB,MAAM,CAACJ,GAAG,CAAC,CAACK,QAAgB,CAAA;wBACxC,GAAGA,KAAK;wBACRN,QAAQM,MAAMN,MAAM,CAACC,GAAG,CAAC,CAACC,WACxBlB,YAAYkB,UAAU,CAAC,EAAEf,YAAY,CAAC,EAAEmB,MAAMhB,IAAI,CAAC,CAAC;oBAExD,CAAA;YACF;QACF;QAEA,OAAOL;IACT;IAEA,MAAMsB,0BAA0B;QAC9B,GAAGzB,gBAAgB;QACnBkB,QAAQlB,iBAAiBkB,MAAM,CAACC,GAAG,CAAC,CAAChB,QAAUD,YAAYC;IAC7D;IAEA,OAAO;QACLF;QACAwB;IACF;AACF,EAAC"}
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 || field.admin?.readOnly || field.admin?.hidden) {\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 },\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 return {\n ...field,\n admin: {\n ...field.admin,\n components: {\n ...(field.admin?.components || {}),\n Description: '@ai-stack/payloadcms/client#DescriptionFieldComponent',\n // Description: DescriptionField({\n // Description: field.admin?.components?.Description,\n // }),\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 ...tab,\n fields: tab.fields.map((subField: any) => updateField(subField, currentPath)),\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","includes","type","label","components","Description","fields","map","subField","tabs","tab","blocks","block","updatedCollectionConfig"],"mappings":"AAOA,OAAO,MAAMA,qBAAqB,CAACC;IACjC,IAAIC,gBAAgB,CAAC;IACrB,SAASC,YAAYC,KAAU,EAAEC,aAAa,EAAE;QAC9C,MAAMC,cAAcD,aAAa,CAAC,EAAEA,WAAW,CAAC,EAAED,MAAMG,IAAI,CAAC,CAAC,GAAGH,MAAMG,IAAI;QAC3E,MAAMC,oBAAoB,CAAC,EAAEP,iBAAiBQ,IAAI,CAAC,CAAC,EAAEH,YAAY,CAAC;QAEnE,IAAIF,MAAMM,KAAK,EAAEC,YAAYP,MAAMM,KAAK,EAAEE,YAAYR,MAAMM,KAAK,EAAEG,QAAQ;YACzE,OAAOT;QACT;QAEA,8EAA8E;QAC9E,wGAAwG;QACxG,yEAAyE;QACzE,IAAI;YAAC;YAAY;YAAQ;YAAY;SAAS,CAACU,QAAQ,CAACV,MAAMW,IAAI,GAAG;YACnEb,gBAAgB;gBACd,GAAGA,aAAa;gBAChB,CAACM,kBAAkB,EAAE;oBACnBO,MAAMX,MAAMW,IAAI;oBAChBC,OAAOZ,MAAMY,KAAK,IAAIZ,MAAMG,IAAI;gBAClC;YACF;QACF;QAEA,8FAA8F;QAC9F,IAAI;YAAC;YAAQ;YAAY;SAAS,CAACO,QAAQ,CAACV,MAAMW,IAAI,GAAG;YACvD,OAAO;gBACL,GAAGX,KAAK;gBACRM,OAAO;oBACL,GAAGN,MAAMM,KAAK;oBACdO,YAAY;wBACV,GAAIb,MAAMM,KAAK,EAAEO,cAAc,CAAC,CAAC;wBACjCC,aAAa;oBAIf;gBACF;YACF;QACF;QAEA,IAAId,MAAMe,MAAM,EAAE;YAChB,OAAO;gBACL,GAAGf,KAAK;gBACRe,QAAQf,MAAMe,MAAM,CAACC,GAAG,CAAC,CAACC,WAAkBlB,YAAYkB,UAAUf;YACpE;QACF;QAEA,IAAIF,MAAMkB,IAAI,EAAE;YACd,OAAO;gBACL,GAAGlB,KAAK;gBACRkB,MAAMlB,MAAMkB,IAAI,CAACF,GAAG,CAAC,CAACG,MAAc,CAAA;wBAClC,GAAGA,GAAG;wBACNJ,QAAQI,IAAIJ,MAAM,CAACC,GAAG,CAAC,CAACC,WAAkBlB,YAAYkB,UAAUf;oBAClE,CAAA;YACF;QACF;QAEA,IAAIF,MAAMoB,MAAM,EAAE;YAChB,OAAO;gBACL,GAAGpB,KAAK;gBACRoB,QAAQpB,MAAMoB,MAAM,CAACJ,GAAG,CAAC,CAACK,QAAgB,CAAA;wBACxC,GAAGA,KAAK;wBACRN,QAAQM,MAAMN,MAAM,CAACC,GAAG,CAAC,CAACC,WACxBlB,YAAYkB,UAAU,CAAC,EAAEf,YAAY,CAAC,EAAEmB,MAAMhB,IAAI,CAAC,CAAC;oBAExD,CAAA;YACF;QACF;QAEA,OAAOL;IACT;IAEA,MAAMsB,0BAA0B;QAC9B,GAAGzB,gBAAgB;QACnBkB,QAAQlB,iBAAiBkB,MAAM,CAACC,GAAG,CAAC,CAAChB,QAAUD,YAAYC;IAC7D;IAEA,OAAO;QACLF;QACAwB;IACF;AACF,EAAC"}