@ai-stack/payloadcms 3.0.0-beta.104.2 → 3.0.0-beta.65.0

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 (202) hide show
  1. package/README.md +2 -16
  2. package/dist/ai/{schemas → editor}/lexical.schema.d.ts +2 -2
  3. package/dist/ai/editor/lexical.schema.d.ts.map +1 -0
  4. package/dist/ai/editor/lexical.schema.js.map +1 -0
  5. package/dist/ai/models/anthropic/generateRichText.js.map +1 -1
  6. package/dist/ai/models/anthropic/index.d.ts.map +1 -1
  7. package/dist/ai/models/anthropic/index.js +4 -43
  8. package/dist/ai/models/anthropic/index.js.map +1 -1
  9. package/dist/ai/models/elevenLabs/index.d.ts.map +1 -1
  10. package/dist/ai/models/elevenLabs/index.js +11 -1
  11. package/dist/ai/models/elevenLabs/index.js.map +1 -1
  12. package/dist/ai/models/index.d.ts.map +1 -1
  13. package/dist/ai/models/index.js +3 -3
  14. package/dist/ai/models/index.js.map +1 -1
  15. package/dist/ai/models/openai/generateRichText.js.map +1 -1
  16. package/dist/ai/models/openai/index.js +3 -3
  17. package/dist/ai/models/openai/index.js.map +1 -1
  18. package/dist/ai/models/style.d.ts +2 -0
  19. package/dist/ai/models/style.d.ts.map +1 -0
  20. package/dist/ai/models/style.js +31 -0
  21. package/dist/ai/models/style.js.map +1 -0
  22. package/dist/ai/prompts.d.ts +6 -7
  23. package/dist/ai/prompts.d.ts.map +1 -1
  24. package/dist/ai/prompts.js +16 -24
  25. package/dist/ai/prompts.js.map +1 -1
  26. package/dist/ai/utils/generateFileNameByPrompt.js.map +1 -1
  27. package/dist/ai/utils/generateSeedPrompt.d.ts.map +1 -1
  28. package/dist/ai/utils/generateSeedPrompt.js +5 -14
  29. package/dist/ai/utils/generateSeedPrompt.js.map +1 -1
  30. package/dist/collections/Instructions.d.ts.map +1 -1
  31. package/dist/collections/Instructions.js +13 -10
  32. package/dist/collections/Instructions.js.map +1 -1
  33. package/dist/defaults.d.ts +2 -3
  34. package/dist/defaults.d.ts.map +1 -1
  35. package/dist/defaults.js +2 -3
  36. package/dist/defaults.js.map +1 -1
  37. package/dist/endpoints/index.d.ts +1 -1
  38. package/dist/endpoints/index.d.ts.map +1 -1
  39. package/dist/endpoints/index.js +51 -17
  40. package/dist/endpoints/index.js.map +1 -1
  41. package/dist/exports/fields.d.ts +1 -3
  42. package/dist/exports/fields.d.ts.map +1 -1
  43. package/dist/exports/fields.js +0 -3
  44. package/dist/exports/fields.js.map +1 -1
  45. package/dist/fields/DescriptionField/DescriptionField.d.ts +3 -0
  46. package/dist/fields/DescriptionField/DescriptionField.d.ts.map +1 -0
  47. package/dist/fields/DescriptionField/DescriptionField.js +15 -0
  48. package/dist/fields/DescriptionField/DescriptionField.js.map +1 -0
  49. package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts +4 -0
  50. package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts.map +1 -0
  51. package/dist/fields/{ComposeField/ComposeField.js → DescriptionField/DescriptionFieldComponent.js} +5 -5
  52. package/dist/fields/DescriptionField/DescriptionFieldComponent.js.map +1 -0
  53. package/dist/fields/LexicalEditor/ActionsFeatureComponent.d.ts +2 -0
  54. package/dist/fields/LexicalEditor/ActionsFeatureComponent.d.ts.map +1 -0
  55. package/dist/fields/LexicalEditor/{ComposeFeatureComponent.js → ActionsFeatureComponent.js} +5 -5
  56. package/dist/fields/LexicalEditor/ActionsFeatureComponent.js.map +1 -0
  57. package/dist/fields/LexicalEditor/feature.client.d.ts +4 -1
  58. package/dist/fields/LexicalEditor/feature.client.d.ts.map +1 -1
  59. package/dist/fields/LexicalEditor/feature.client.js +2 -2
  60. package/dist/fields/LexicalEditor/feature.client.js.map +1 -1
  61. package/dist/fields/LexicalEditor/feature.server.d.ts +7 -1
  62. package/dist/fields/LexicalEditor/feature.server.d.ts.map +1 -1
  63. package/dist/fields/LexicalEditor/feature.server.js +11 -4
  64. package/dist/fields/LexicalEditor/feature.server.js.map +1 -1
  65. package/dist/fields/PromptEditorField/PromptEditorField.d.ts +2 -2
  66. package/dist/fields/PromptEditorField/PromptEditorField.d.ts.map +1 -1
  67. package/dist/fields/PromptEditorField/PromptEditorField.js +51 -32
  68. package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
  69. package/dist/fields/SelectField/SelectField.d.ts +2 -9
  70. package/dist/fields/SelectField/SelectField.d.ts.map +1 -1
  71. package/dist/fields/SelectField/SelectField.js +23 -26
  72. package/dist/fields/SelectField/SelectField.js.map +1 -1
  73. package/dist/index.d.ts +2 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +3 -3
  76. package/dist/index.js.map +1 -1
  77. package/dist/init.d.ts +1 -2
  78. package/dist/init.d.ts.map +1 -1
  79. package/dist/init.js +19 -35
  80. package/dist/init.js.map +1 -1
  81. package/dist/plugin.d.ts.map +1 -1
  82. package/dist/plugin.js +73 -104
  83. package/dist/plugin.js.map +1 -1
  84. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts +3 -1
  85. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts.map +1 -1
  86. package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
  87. package/dist/providers/InstructionsProvider/hook.d.ts +9 -0
  88. package/dist/providers/InstructionsProvider/hook.d.ts.map +1 -0
  89. package/dist/providers/InstructionsProvider/hook.js +17 -0
  90. package/dist/providers/InstructionsProvider/hook.js.map +1 -0
  91. package/dist/providers/InstructionsProvider/index.d.ts +5 -0
  92. package/dist/providers/InstructionsProvider/index.d.ts.map +1 -0
  93. package/dist/providers/InstructionsProvider/index.js +10 -0
  94. package/dist/providers/InstructionsProvider/index.js.map +1 -0
  95. package/dist/types.d.ts +1 -2
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js.map +1 -1
  98. package/dist/ui/Actions/Actions.d.ts +5 -0
  99. package/dist/ui/Actions/Actions.d.ts.map +1 -0
  100. package/dist/ui/{Compose/Compose.js → Actions/Actions.js} +18 -17
  101. package/dist/ui/Actions/Actions.js.map +1 -0
  102. package/dist/ui/{Compose → Actions}/UndoRedoActions.d.ts.map +1 -1
  103. package/dist/ui/{Compose → Actions}/UndoRedoActions.js +2 -15
  104. package/dist/ui/Actions/UndoRedoActions.js.map +1 -0
  105. package/dist/ui/Actions/hooks/highlight.module.scss +3 -0
  106. package/dist/ui/{Compose → Actions}/hooks/menu/Item.d.ts.map +1 -1
  107. package/dist/ui/{Compose → Actions}/hooks/menu/Item.js.map +1 -1
  108. package/dist/ui/Actions/hooks/menu/TranslateMenu.d.ts.map +1 -0
  109. package/dist/ui/{Compose → Actions}/hooks/menu/TranslateMenu.js.map +1 -1
  110. package/dist/ui/{Compose → Actions}/hooks/menu/items.d.ts.map +1 -1
  111. package/dist/ui/{Compose → Actions}/hooks/menu/items.js.map +1 -1
  112. package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.d.ts.map +1 -1
  113. package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.js.map +1 -1
  114. package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.d.ts.map +1 -1
  115. package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.js.map +1 -1
  116. package/dist/ui/{Compose → Actions}/hooks/useGenerate.d.ts.map +1 -1
  117. package/dist/ui/{Compose → Actions}/hooks/useGenerate.js +12 -10
  118. package/dist/ui/Actions/hooks/useGenerate.js.map +1 -0
  119. package/dist/ui/Actions/hooks/useHistory.d.ts.map +1 -0
  120. package/dist/ui/{Compose → Actions}/hooks/useHistory.js +1 -3
  121. package/dist/ui/Actions/hooks/useHistory.js.map +1 -0
  122. package/dist/ui/Floatype/Floatype.d.ts +21 -0
  123. package/dist/ui/Floatype/Floatype.d.ts.map +1 -0
  124. package/dist/ui/Floatype/Floatype.js +245 -0
  125. package/dist/ui/Floatype/Floatype.js.map +1 -0
  126. package/dist/ui/Floatype/floatype.module.css +25 -0
  127. package/dist/utilities/getFieldBySchemaPath.d.ts +2 -2
  128. package/dist/utilities/getFieldBySchemaPath.d.ts.map +1 -1
  129. package/dist/utilities/getFieldBySchemaPath.js.map +1 -1
  130. package/dist/utilities/updateFieldsConfig.d.ts.map +1 -1
  131. package/dist/utilities/updateFieldsConfig.js +8 -14
  132. package/dist/utilities/updateFieldsConfig.js.map +1 -1
  133. package/package.json +50 -72
  134. package/dist/ai/schemas/lexical.schema.d.ts.map +0 -1
  135. package/dist/ai/schemas/lexical.schema.js.map +0 -1
  136. package/dist/exports/client.d.ts +0 -3
  137. package/dist/exports/client.d.ts.map +0 -1
  138. package/dist/exports/client.js +0 -4
  139. package/dist/exports/client.js.map +0 -1
  140. package/dist/fields/ComposeField/ComposeField.d.ts +0 -4
  141. package/dist/fields/ComposeField/ComposeField.d.ts.map +0 -1
  142. package/dist/fields/ComposeField/ComposeField.js.map +0 -1
  143. package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts +0 -2
  144. package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts.map +0 -1
  145. package/dist/fields/LexicalEditor/ComposeFeatureComponent.js.map +0 -1
  146. package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts +0 -8
  147. package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts.map +0 -1
  148. package/dist/libraries/autocomplete/AutocompleteTextArea.js +0 -437
  149. package/dist/libraries/autocomplete/AutocompleteTextArea.js.map +0 -1
  150. package/dist/libraries/autocomplete/AutocompleteTextArea.module.scss +0 -35
  151. package/dist/libraries/handlebars/asyncHandlebars.d.ts +0 -2
  152. package/dist/libraries/handlebars/asyncHandlebars.d.ts.map +0 -1
  153. package/dist/libraries/handlebars/asyncHandlebars.js +0 -5
  154. package/dist/libraries/handlebars/asyncHandlebars.js.map +0 -1
  155. package/dist/libraries/handlebars/helpers.d.ts +0 -2
  156. package/dist/libraries/handlebars/helpers.d.ts.map +0 -1
  157. package/dist/libraries/handlebars/helpers.js +0 -22
  158. package/dist/libraries/handlebars/helpers.js.map +0 -1
  159. package/dist/libraries/handlebars/helpersMap.d.ts +0 -12
  160. package/dist/libraries/handlebars/helpersMap.d.ts.map +0 -1
  161. package/dist/libraries/handlebars/helpersMap.js +0 -13
  162. package/dist/libraries/handlebars/helpersMap.js.map +0 -1
  163. package/dist/libraries/handlebars/replacePlaceholders.d.ts +0 -2
  164. package/dist/libraries/handlebars/replacePlaceholders.d.ts.map +0 -1
  165. package/dist/libraries/handlebars/replacePlaceholders.js +0 -8
  166. package/dist/libraries/handlebars/replacePlaceholders.js.map +0 -1
  167. package/dist/providers/InstructionsProvider/useInstructions.d.ts +0 -4
  168. package/dist/providers/InstructionsProvider/useInstructions.d.ts.map +0 -1
  169. package/dist/providers/InstructionsProvider/useInstructions.js +0 -38
  170. package/dist/providers/InstructionsProvider/useInstructions.js.map +0 -1
  171. package/dist/ui/Compose/Compose.d.ts +0 -9
  172. package/dist/ui/Compose/Compose.d.ts.map +0 -1
  173. package/dist/ui/Compose/Compose.js.map +0 -1
  174. package/dist/ui/Compose/UndoRedoActions.js.map +0 -1
  175. package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts.map +0 -1
  176. package/dist/ui/Compose/hooks/useGenerate.js.map +0 -1
  177. package/dist/ui/Compose/hooks/useHistory.d.ts.map +0 -1
  178. package/dist/ui/Compose/hooks/useHistory.js.map +0 -1
  179. package/dist/utilities/getFieldInfo.d.ts +0 -3
  180. package/dist/utilities/getFieldInfo.d.ts.map +0 -1
  181. package/dist/utilities/getFieldInfo.js +0 -14
  182. package/dist/utilities/getFieldInfo.js.map +0 -1
  183. package/dist/utilities/isPluginActivated.d.ts +0 -2
  184. package/dist/utilities/isPluginActivated.d.ts.map +0 -1
  185. package/dist/utilities/isPluginActivated.js +0 -5
  186. package/dist/utilities/isPluginActivated.js.map +0 -1
  187. /package/dist/ai/{schemas → editor}/lexical.schema.js +0 -0
  188. /package/dist/ui/{Compose → Actions}/UndoRedoActions.d.ts +0 -0
  189. /package/dist/ui/{Compose/compose.module.scss → Actions/actions.module.scss} +0 -0
  190. /package/dist/ui/{Compose → Actions}/hooks/menu/Item.d.ts +0 -0
  191. /package/dist/ui/{Compose → Actions}/hooks/menu/Item.js +0 -0
  192. /package/dist/ui/{Compose → Actions}/hooks/menu/TranslateMenu.d.ts +0 -0
  193. /package/dist/ui/{Compose → Actions}/hooks/menu/TranslateMenu.js +0 -0
  194. /package/dist/ui/{Compose → Actions}/hooks/menu/items.d.ts +0 -0
  195. /package/dist/ui/{Compose → Actions}/hooks/menu/items.js +0 -0
  196. /package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.d.ts +0 -0
  197. /package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.js +0 -0
  198. /package/dist/ui/{Compose → Actions}/hooks/menu/menu.module.scss +0 -0
  199. /package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.d.ts +0 -0
  200. /package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.js +0 -0
  201. /package/dist/ui/{Compose → Actions}/hooks/useGenerate.d.ts +0 -0
  202. /package/dist/ui/{Compose → Actions}/hooks/useHistory.d.ts +0 -0
package/dist/plugin.js CHANGED
@@ -1,124 +1,93 @@
1
1
  import { deepMerge } from 'payload/shared';
2
- import { zodToJsonSchema } from 'zod-to-json-schema';
3
- import { lexicalSchema } from './ai/schemas/lexical.schema.js';
4
2
  import { Instructions } from './collections/Instructions.js';
5
3
  import { PLUGIN_INSTRUCTIONS_MAP_GLOBAL, PLUGIN_NAME } from './defaults.js';
6
4
  import { endpoints } from './endpoints/index.js';
7
5
  import { init } from './init.js';
6
+ import { InstructionsProvider } from './providers/InstructionsProvider/index.js';
8
7
  import { translations } from './translations/index.js';
9
- import { isPluginActivated } from './utilities/isPluginActivated.js';
10
8
  import { updateFieldsConfig } from './utilities/updateFieldsConfig.js';
11
- const defaultPluginConfig = {
12
- collections: {},
13
- generatePromptOnInit: true
14
- };
9
+ import { lexicalSchema } from './ai/editor/lexical.schema.js';
10
+ import { zodToJsonSchema } from 'zod-to-json-schema';
15
11
  const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
16
- pluginConfig = {
17
- ...defaultPluginConfig,
18
- ...pluginConfig
12
+ // Inject editor schema to config, so that it can be accessed when /textarea endpoint will hit
13
+ const zodLexicalSchema = lexicalSchema(pluginConfig.editorConfig?.nodes);
14
+ if (pluginConfig.debugging) {
15
+ Instructions.admin.hidden = false;
16
+ }
17
+ Instructions.admin.custom = {
18
+ ...Instructions.admin.custom || {},
19
+ [PLUGIN_NAME]: {
20
+ editorConfig: {
21
+ // Used in admin client for useObject hook
22
+ schema: zodToJsonSchema(zodLexicalSchema)
23
+ }
24
+ }
19
25
  };
20
- const isActivated = isPluginActivated();
21
- let updatedConfig = {
22
- ...incomingConfig
26
+ Instructions.custom = {
27
+ ...Instructions.custom || {},
28
+ [PLUGIN_NAME]: {
29
+ editorConfig: {
30
+ // Used in textarea endpoint for llm
31
+ schema: zodLexicalSchema
32
+ }
33
+ }
23
34
  };
35
+ const collections = [
36
+ ...incomingConfig.collections ?? [],
37
+ Instructions
38
+ ];
39
+ const { collections: collectionSlugs = [] } = pluginConfig;
24
40
  let collectionsFieldPathMap = {};
25
- if (isActivated) {
26
- // Inject editor schema to config, so that it can be accessed when /textarea endpoint will hit
27
- const zodLexicalSchema = lexicalSchema(pluginConfig.editorConfig?.nodes);
28
- if (pluginConfig.debugging) {
29
- Instructions.admin.hidden = false;
30
- }
31
- Instructions.admin.custom = {
32
- ...Instructions.admin.custom || {},
33
- [PLUGIN_NAME]: {
34
- editorConfig: {
35
- // Used in admin client for useObject hook
36
- schema: zodToJsonSchema(zodLexicalSchema)
37
- }
38
- }
39
- };
40
- Instructions.custom = {
41
- ...Instructions.custom || {},
42
- [PLUGIN_NAME]: {
43
- editorConfig: {
44
- // Used in textarea endpoint for llm
45
- schema: zodLexicalSchema
46
- }
41
+ incomingConfig.admin.components.providers = [
42
+ ...incomingConfig.admin.components.providers ?? [],
43
+ InstructionsProvider
44
+ ];
45
+ const updatedConfig = {
46
+ ...incomingConfig,
47
+ collections: collections.map((collection)=>{
48
+ if (collectionSlugs[collection.slug]) {
49
+ const { schemaPathMap, updatedCollectionConfig } = updateFieldsConfig(collection);
50
+ collectionsFieldPathMap = {
51
+ ...collectionsFieldPathMap,
52
+ ...schemaPathMap
53
+ };
54
+ return updatedCollectionConfig;
47
55
  }
48
- };
49
- const collections = [
50
- ...incomingConfig.collections ?? [],
51
- Instructions
52
- ];
53
- const { collections: collectionSlugs = [] } = pluginConfig;
54
- const { components: { providers = [] } = {} } = incomingConfig.admin || {};
55
- const updatedProviders = [
56
- ...providers ?? [],
56
+ return collection;
57
+ }),
58
+ endpoints: [
59
+ ...incomingConfig.endpoints ?? [],
60
+ endpoints.textarea,
61
+ endpoints.upload
62
+ ],
63
+ globals: [
64
+ ...incomingConfig.globals,
57
65
  {
58
- clientProps: {},
59
- path: '@ai-stack/payloadcms/client#InstructionsProvider',
60
- serverProps: {}
66
+ slug: PLUGIN_INSTRUCTIONS_MAP_GLOBAL,
67
+ access: {
68
+ read: ()=>true
69
+ },
70
+ admin: {
71
+ hidden: !pluginConfig.debugging
72
+ },
73
+ fields: [
74
+ {
75
+ name: 'map',
76
+ type: 'json'
77
+ }
78
+ ]
61
79
  }
62
- ];
63
- incomingConfig.admin = {
64
- ...incomingConfig.admin || {},
65
- components: {
66
- ...incomingConfig.admin?.components ?? {},
67
- providers: updatedProviders
80
+ ],
81
+ i18n: {
82
+ ...incomingConfig.i18n,
83
+ translations: {
84
+ ...deepMerge(translations, incomingConfig.i18n?.translations)
68
85
  }
69
- };
70
- updatedConfig = {
71
- ...incomingConfig,
72
- collections: collections.map((collection)=>{
73
- if (collectionSlugs[collection.slug]) {
74
- const { schemaPathMap, updatedCollectionConfig } = updateFieldsConfig(collection);
75
- collectionsFieldPathMap = {
76
- ...collectionsFieldPathMap,
77
- ...schemaPathMap
78
- };
79
- return updatedCollectionConfig;
80
- }
81
- return collection;
82
- }),
83
- endpoints: [
84
- ...incomingConfig.endpoints ?? [],
85
- endpoints.textarea,
86
- endpoints.upload
87
- ],
88
- globals: [
89
- ...incomingConfig.globals || [],
90
- {
91
- slug: PLUGIN_INSTRUCTIONS_MAP_GLOBAL,
92
- access: {
93
- read: ()=>true
94
- },
95
- admin: {
96
- hidden: !pluginConfig.debugging
97
- },
98
- fields: [
99
- {
100
- name: 'map',
101
- type: 'json'
102
- }
103
- ]
104
- }
105
- ],
106
- i18n: {
107
- ...incomingConfig.i18n || {},
108
- translations: {
109
- ...deepMerge(translations, incomingConfig.i18n?.translations)
110
- }
111
- }
112
- };
113
- }
86
+ }
87
+ };
114
88
  updatedConfig.onInit = async (payload)=>{
115
89
  if (incomingConfig.onInit) await incomingConfig.onInit(payload);
116
- if (!isActivated) {
117
- payload.logger.warn(`— AI Plugin: Not activated. Please verify your environment keys.`);
118
- return;
119
- }
120
- await init(payload, collectionsFieldPathMap, pluginConfig).catch((error)=>{
121
- console.error(error);
90
+ await init(payload, collectionsFieldPathMap).catch((error)=>{
122
91
  payload.logger.error(`— AI Plugin: Initialization Error: ${error}`);
123
92
  });
124
93
  };
@@ -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/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 defaultPluginConfig: PluginConfig = {\n collections: {},\n generatePromptOnInit: true,\n}\n\nconst payloadAiPlugin =\n (pluginConfig: PluginConfig) =>\n (incomingConfig: Config): Config => {\n pluginConfig = { ...defaultPluginConfig, ...pluginConfig }\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 const { components: { providers = [] } = {} } = incomingConfig.admin || {}\n const updatedProviders = [\n ...(providers ?? []),\n {\n clientProps: {},\n path: '@ai-stack/payloadcms/client#InstructionsProvider',\n serverProps: {},\n },\n ]\n\n incomingConfig.admin = {\n ...(incomingConfig.admin || {}),\n components: {\n ...(incomingConfig.admin?.components ?? {}),\n providers: updatedProviders,\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, pluginConfig).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","defaultPluginConfig","collections","generatePromptOnInit","payloadAiPlugin","pluginConfig","incomingConfig","isActivated","updatedConfig","collectionsFieldPathMap","zodLexicalSchema","editorConfig","nodes","debugging","admin","hidden","custom","schema","collectionSlugs","components","providers","updatedProviders","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":"AAEA,SAASA,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,eAAe,QAAQ,qBAAoB;AAIpD,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,YAAY,QAAQ,gCAA+B;AAC5D,SAASC,8BAA8B,EAAEC,WAAW,QAAQ,gBAAe;AAC3E,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,SAASC,kBAAkB,QAAQ,oCAAmC;AAEtE,MAAMC,sBAAoC;IACxCC,aAAa,CAAC;IACdC,sBAAsB;AACxB;AAEA,MAAMC,kBACJ,CAACC,eACD,CAACC;QACCD,eAAe;YAAE,GAAGJ,mBAAmB;YAAE,GAAGI,YAAY;QAAC;QACzD,MAAME,cAAcR;QACpB,IAAIS,gBAAwB;YAAE,GAAGF,cAAc;QAAC;QAChD,IAAIG,0BAA0B,CAAC;QAE/B,IAAIF,aAAa;YACf,8FAA8F;YAC9F,MAAMG,mBAAmBlB,cAAca,aAAaM,YAAY,EAAEC;YAElE,IAAIP,aAAaQ,SAAS,EAAE;gBAC1BpB,aAAaqB,KAAK,CAACC,MAAM,GAAG;YAC9B;YAEAtB,aAAaqB,KAAK,CAACE,MAAM,GAAG;gBAC1B,GAAIvB,aAAaqB,KAAK,CAACE,MAAM,IAAI,CAAC,CAAC;gBACnC,CAACrB,YAAY,EAAE;oBACbgB,cAAc;wBACZ,0CAA0C;wBAC1CM,QAAQ1B,gBAAgBmB;oBAC1B;gBACF;YACF;YAEAjB,aAAauB,MAAM,GAAG;gBACpB,GAAIvB,aAAauB,MAAM,IAAI,CAAC,CAAC;gBAC7B,CAACrB,YAAY,EAAE;oBACbgB,cAAc;wBACZ,oCAAoC;wBACpCM,QAAQP;oBACV;gBACF;YACF;YAEA,MAAMR,cAAc;mBAAKI,eAAeJ,WAAW,IAAI,EAAE;gBAAGT;aAAa;YACzE,MAAM,EAAES,aAAagB,kBAAkB,EAAE,EAAE,GAAGb;YAE9C,MAAM,EAAEc,YAAY,EAAEC,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,GAAGd,eAAeQ,KAAK,IAAI,CAAC;YACzE,MAAMO,mBAAmB;mBACnBD,aAAa,EAAE;gBACnB;oBACEE,aAAa,CAAC;oBACdC,MAAM;oBACNC,aAAa,CAAC;gBAChB;aACD;YAEDlB,eAAeQ,KAAK,GAAG;gBACrB,GAAIR,eAAeQ,KAAK,IAAI,CAAC,CAAC;gBAC9BK,YAAY;oBACV,GAAIb,eAAeQ,KAAK,EAAEK,cAAc,CAAC,CAAC;oBAC1CC,WAAWC;gBACb;YACF;YAEAb,gBAAgB;gBACd,GAAGF,cAAc;gBACjBJ,aAAaA,YAAYuB,GAAG,CAAC,CAACC;oBAC5B,IAAIR,eAAe,CAACQ,WAAWC,IAAI,CAAC,EAAE;wBACpC,MAAM,EAAEC,aAAa,EAAEC,uBAAuB,EAAE,GAAG7B,mBAAmB0B;wBACtEjB,0BAA0B;4BACxB,GAAGA,uBAAuB;4BAC1B,GAAGmB,aAAa;wBAClB;wBACA,OAAOC;oBACT;oBAEA,OAAOH;gBACT;gBACA9B,WAAW;uBAAKU,eAAeV,SAAS,IAAI,EAAE;oBAAGA,UAAUkC,QAAQ;oBAAElC,UAAUmC,MAAM;iBAAC;gBACtFC,SAAS;uBACH1B,eAAe0B,OAAO,IAAI,EAAE;oBAChC;wBACEL,MAAMjC;wBACNuC,QAAQ;4BACNC,MAAM,IAAM;wBACd;wBACApB,OAAO;4BACLC,QAAQ,CAACV,aAAaQ,SAAS;wBACjC;wBACAsB,QAAQ;4BACN;gCACEC,MAAM;gCACNC,MAAM;4BACR;yBACD;oBACH;iBACD;gBACDC,MAAM;oBACJ,GAAIhC,eAAegC,IAAI,IAAI,CAAC,CAAC;oBAC7BxC,cAAc;wBACZ,GAAGR,UAAUQ,cAAcQ,eAAegC,IAAI,EAAExC,aAAa;oBAC/D;gBACF;YACF;QACF;QAEAU,cAAc+B,MAAM,GAAG,OAAOC;YAC5B,IAAIlC,eAAeiC,MAAM,EAAE,MAAMjC,eAAeiC,MAAM,CAACC;YAEvD,IAAI,CAACjC,aAAa;gBAChBiC,QAAQC,MAAM,CAACC,IAAI,CAAC,CAAC,gEAAgE,CAAC;gBACtF;YACF;YAEA,MAAM7C,KAAK2C,SAAS/B,yBAAyBJ,cAAcsC,KAAK,CAAC,CAACC;gBAChEC,QAAQD,KAAK,CAACA;gBACdJ,QAAQC,MAAM,CAACG,KAAK,CAAC,CAAC,mCAAmC,EAAEA,OAAO;YACpE;QACF;QAEA,OAAOpC;IACT;AAEF,SAASJ,eAAe,GAAE"}
1
+ {"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { Config } from 'payload'\nimport { deepMerge } from 'payload/shared'\n\nimport type { PluginConfig } from './types.js'\n\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 { updateFieldsConfig } from './utilities/updateFieldsConfig.js'\nimport { lexicalSchema } from './ai/editor/lexical.schema.js'\n\nimport { zodToJsonSchema } from 'zod-to-json-schema'\n\nconst payloadAiPlugin =\n (pluginConfig: PluginConfig) =>\n (incomingConfig: Config): Config => {\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 let collectionsFieldPathMap = {}\n\n incomingConfig.admin.components.providers = [\n ...(incomingConfig.admin.components.providers ?? []),\n InstructionsProvider,\n ]\n\n const updatedConfig: Config = {\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 updatedConfig.onInit = async (payload) => {\n if (incomingConfig.onInit) await incomingConfig.onInit(payload)\n\n await init(payload, collectionsFieldPathMap).catch((error) => {\n payload.logger.error(`— AI Plugin: Initialization Error: ${error}`)\n })\n }\n\n return updatedConfig\n }\n\nexport { payloadAiPlugin }\n"],"names":["deepMerge","Instructions","PLUGIN_INSTRUCTIONS_MAP_GLOBAL","PLUGIN_NAME","endpoints","init","InstructionsProvider","translations","updateFieldsConfig","lexicalSchema","zodToJsonSchema","payloadAiPlugin","pluginConfig","incomingConfig","zodLexicalSchema","editorConfig","nodes","debugging","admin","hidden","custom","schema","collections","collectionSlugs","collectionsFieldPathMap","components","providers","updatedConfig","map","collection","slug","schemaPathMap","updatedCollectionConfig","textarea","upload","globals","access","read","fields","name","type","i18n","onInit","payload","catch","error","logger"],"mappings":"AACA,SAASA,SAAS,QAAQ,iBAAgB;AAI1C,SAASC,YAAY,QAAQ,gCAA+B;AAC5D,SAASC,8BAA8B,EAAEC,WAAW,QAAQ,gBAAe;AAC3E,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,oBAAoB,QAAQ,4CAA2C;AAChF,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,aAAa,QAAQ,gCAA+B;AAE7D,SAASC,eAAe,QAAQ,qBAAoB;AAEpD,MAAMC,kBACJ,CAACC,eACD,CAACC;QACC,8FAA8F;QAC9F,MAAMC,mBAAmBL,cAAcG,aAAaG,YAAY,EAAEC;QAElE,IAAIJ,aAAaK,SAAS,EAAE;YAC1BhB,aAAaiB,KAAK,CAACC,MAAM,GAAG;QAC9B;QAEAlB,aAAaiB,KAAK,CAACE,MAAM,GAAG;YAC1B,GAAInB,aAAaiB,KAAK,CAACE,MAAM,IAAI,CAAC,CAAC;YACnC,CAACjB,YAAY,EAAE;gBACbY,cAAc;oBACZ,0CAA0C;oBAC1CM,QAAQX,gBAAgBI;gBAC1B;YACF;QACF;QAEAb,aAAamB,MAAM,GAAG;YACpB,GAAInB,aAAamB,MAAM,IAAI,CAAC,CAAC;YAC7B,CAACjB,YAAY,EAAE;gBACbY,cAAc;oBACZ,oCAAoC;oBACpCM,QAAQP;gBACV;YACF;QACF;QAEA,MAAMQ,cAAc;eAAKT,eAAeS,WAAW,IAAI,EAAE;YAAGrB;SAAa;QACzE,MAAM,EAAEqB,aAAaC,kBAAkB,EAAE,EAAE,GAAGX;QAE9C,IAAIY,0BAA0B,CAAC;QAE/BX,eAAeK,KAAK,CAACO,UAAU,CAACC,SAAS,GAAG;eACtCb,eAAeK,KAAK,CAACO,UAAU,CAACC,SAAS,IAAI,EAAE;YACnDpB;SACD;QAED,MAAMqB,gBAAwB;YAC5B,GAAGd,cAAc;YACjBS,aAAaA,YAAYM,GAAG,CAAC,CAACC;gBAC5B,IAAIN,eAAe,CAACM,WAAWC,IAAI,CAAC,EAAE;oBACpC,MAAM,EAAEC,aAAa,EAAEC,uBAAuB,EAAE,GAAGxB,mBAAmBqB;oBACtEL,0BAA0B;wBACxB,GAAGA,uBAAuB;wBAC1B,GAAGO,aAAa;oBAClB;oBACA,OAAOC;gBACT;gBAEA,OAAOH;YACT;YACAzB,WAAW;mBAAKS,eAAeT,SAAS,IAAI,EAAE;gBAAGA,UAAU6B,QAAQ;gBAAE7B,UAAU8B,MAAM;aAAC;YACtFC,SAAS;mBACJtB,eAAesB,OAAO;gBACzB;oBACEL,MAAM5B;oBACNkC,QAAQ;wBACNC,MAAM,IAAM;oBACd;oBACAnB,OAAO;wBACLC,QAAQ,CAACP,aAAaK,SAAS;oBACjC;oBACAqB,QAAQ;wBACN;4BACEC,MAAM;4BACNC,MAAM;wBACR;qBACD;gBACH;aACD;YACDC,MAAM;gBACJ,GAAG5B,eAAe4B,IAAI;gBACtBlC,cAAc;oBACZ,GAAGP,UAAUO,cAAcM,eAAe4B,IAAI,EAAElC,aAAa;gBAC/D;YACF;QACF;QAEAoB,cAAce,MAAM,GAAG,OAAOC;YAC5B,IAAI9B,eAAe6B,MAAM,EAAE,MAAM7B,eAAe6B,MAAM,CAACC;YAEvD,MAAMtC,KAAKsC,SAASnB,yBAAyBoB,KAAK,CAAC,CAACC;gBAClDF,QAAQG,MAAM,CAACD,KAAK,CAAC,CAAC,mCAAmC,EAAEA,MAAM,CAAC;YACpE;QACF;QAEA,OAAOlB;IACT;AAEF,SAAShB,eAAe,GAAE"}
@@ -2,5 +2,7 @@ import React from 'react';
2
2
  export declare const InstructionsContext: React.Context<{
3
3
  instructions: any;
4
4
  }>;
5
- export declare const InstructionsProvider: React.FC;
5
+ export declare const InstructionsProvider: ({ children }: {
6
+ children: React.ReactNode;
7
+ }) => import("react/jsx-runtime").JSX.Element;
6
8
  //# 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,EAAE,KAAK,CAAC,EAqBxC,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,iBAAkB;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAqB/E,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: 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,gCAAgC,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 = ({ 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"}
@@ -0,0 +1,9 @@
1
+ export declare const useInstructions: ({ path }: {
2
+ path: any;
3
+ }) => {
4
+ id: any;
5
+ fields: string[];
6
+ map: any;
7
+ instructions: any;
8
+ };
9
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/providers/InstructionsProvider/hook.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;;;;CAS3B,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { useContext } from 'react';
2
+ import { InstructionsContext } from './InstructionsProvider.js';
3
+ export const useInstructions = ({ path })=>{
4
+ const context = useContext(InstructionsContext);
5
+ //Fields are used for autocompletion in PromptTextareaField
6
+ const fields = Object.keys(context.instructions || {}).map((key)=>{
7
+ return key.split('.').slice(1).join('.');
8
+ });
9
+ return {
10
+ ...context,
11
+ id: context.instructions[path],
12
+ fields,
13
+ map: context.instructions
14
+ };
15
+ };
16
+
17
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/providers/InstructionsProvider/hook.ts"],"sourcesContent":["import { useContext } from 'react'\n\nimport { InstructionsContext } from './InstructionsProvider.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 return { ...context, id: context.instructions[path], fields, map: context.instructions }\n}\n"],"names":["useContext","InstructionsContext","useInstructions","path","context","fields","Object","keys","instructions","map","key","split","slice","join","id"],"mappings":"AAAA,SAASA,UAAU,QAAQ,QAAO;AAElC,SAASC,mBAAmB,QAAQ,4BAA2B;AAE/D,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,IAAI,EAAE;IACtC,MAAMC,UAAUJ,WAAWC;IAE3B,2DAA2D;IAC3D,MAAMI,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,OAAO;QAAE,GAAGT,OAAO;QAAEU,IAAIV,QAAQI,YAAY,CAACL,KAAK;QAAEE;QAAQI,KAAKL,QAAQI,YAAY;IAAC;AACzF,EAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const InstructionsProvider: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/InstructionsProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAEA,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { InstructionsProvider as Provider } from './InstructionsProvider.js';
4
+ export const InstructionsProvider = ({ children })=>{
5
+ return /*#__PURE__*/ _jsx(Provider, {
6
+ children: children
7
+ });
8
+ };
9
+
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/providers/InstructionsProvider/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { InstructionsProvider as Provider } from './InstructionsProvider.js'\n\nexport const InstructionsProvider: React.FC<{\n children: React.ReactNode\n}> = ({ children }) => {\n return <Provider>{children}</Provider>\n}\n"],"names":["React","InstructionsProvider","Provider","children"],"mappings":";AAAA,OAAOA,WAAW,QAAO;AAEzB,SAASC,wBAAwBC,QAAQ,QAAQ,4BAA2B;AAE5E,OAAO,MAAMD,uBAER,CAAC,EAAEE,QAAQ,EAAE;IAChB,qBAAO,KAACD;kBAAUC;;AACpB,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/schemas/lexical.schema.js';
3
+ import { LexicalBaseNode } from './ai/editor/lexical.schema.js';
4
4
  export interface PluginConfig {
5
5
  collections: {
6
6
  [key: string]: boolean;
@@ -12,7 +12,6 @@ export interface PluginConfig {
12
12
  nodes: (typeof LexicalBaseNode)[];
13
13
  };
14
14
  debugging?: boolean;
15
- generatePromptOnInit?: boolean;
16
15
  }
17
16
  export interface GenerationModel {
18
17
  fields: string[];
@@ -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/schemas/lexical.schema.js'\n\nexport interface PluginConfig {\n collections: {\n [key: string]: boolean\n }\n fields?: Field[]\n globals?: string[]\n interfaceName?: string\n editorConfig?: { nodes: (typeof LexicalBaseNode)[] }\n debugging?: boolean\n generatePromptOnInit?: boolean\n}\n\nexport interface GenerationModel {\n fields: string[]\n handler?: (payload: any, options: any) => Promise<any>\n id: string\n name: string\n output: 'audio' | 'file' | 'image' | 'json' | 'text' | 'video'\n settings?: GroupField\n supportsPromptOptimization?: boolean\n}\n\nexport interface GenerationConfig {\n models: GenerationModel[]\n provider: string\n}\n\nexport type GenerateTextarea<T = any> = (args: {\n doc: T\n locale?: string\n options?: any\n}) => Promise<string> | string\n\nexport interface Instructions {\n 'collection-slug': string\n id: string\n 'model-id': string\n prompt: string\n}\n\nexport interface Endpoints {\n textarea: Omit<Endpoint, 'root'>\n upload: Omit<Endpoint, 'root'>\n}\n\nexport type ActionMenuItems =\n | 'Compose'\n | 'Expand'\n | 'Proofread'\n | 'Rephrase'\n | 'Settings'\n | 'Simplify'\n | 'Summarize'\n | 'Tone'\n | 'Translate'\n\nexport type ActionMenuEvents =\n | 'onCompose'\n | 'onExpand'\n | 'onProofread'\n | 'onRephrase'\n | 'onSettings'\n | 'onSimplify'\n | 'onSummarize'\n | 'onTone'\n | 'onTranslate'\n\nexport type UseMenuEvents = {\n [key in ActionMenuEvents]?: (data?: unknown) => void\n}\n\nexport type BaseItemProps<T = any> = {\n children?: React.ReactNode\n disabled?: boolean\n hideIcon?: boolean\n onClick: (data?: unknown) => void\n onMouseEnter?: MouseEventHandler<T> | undefined\n onMouseLeave?: MouseEventHandler<T> | undefined\n style?: CSSProperties | undefined\n isMenu?: boolean\n isActive?: boolean\n}\n\n/**\n * This interface was referenced by `Config`'s JSON-Schema\n * via the `definition` \"plugin-ai-instructions\".\n */\nexport interface PluginAiInstruction {\n id: string\n 'schema-path'?: string | null\n 'field-type'?: ('text' | 'textarea' | 'upload' | 'richText') | null\n 'model-id'?: ('openai-gpt-text' | 'dall-e' | 'tts' | 'openai-gpt-object') | null\n prompt?: string | null\n 'openai-gpt-text-settings'?: {\n model?: ('gpt-4o' | 'gpt-4-turbo' | 'gpt-4o-mini' | 'gpt-3.5-turbo') | null\n }\n 'dalle-e-settings'?: {\n version?: ('dall-e-3' | 'dall-e-2') | null\n size?: ('256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792') | null\n style?: ('vivid' | 'natural') | null\n 'enable-prompt-optimization'?: boolean | null\n }\n 'openai-tts-settings'?: {\n voice?: ('alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer') | null\n model?: ('tts-1' | 'tts-1-hd') | null\n response_format?: ('mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm') | null\n speed?: number | null\n }\n 'openai-gpt-object-settings'?: {\n model?: ('gpt-4o' | 'gpt-4-turbo' | 'gpt-4o-mini' | 'gpt-4o-2024-08-06') | null\n system?: string | null\n layout?: string | null\n }\n updatedAt: string\n createdAt: string\n}\n"],"names":[],"mappings":"AAuFA;;;CAGC,GACD,WA4BC"}
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"}
@@ -0,0 +1,5 @@
1
+ export declare const Actions: ({ descriptionProps, instructionId }: {
2
+ descriptionProps?: {};
3
+ instructionId: any;
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=Actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../src/ui/Actions/Actions.tsx"],"names":[],"mappings":"AA+BA,eAAO,MAAM,OAAO;;;6CA6InB,CAAA"}
@@ -1,15 +1,15 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client';
4
3
  import { FieldDescription, Popup, useDocumentDrawer, useField, useFieldProps } from '@payloadcms/ui';
5
4
  import React, { useCallback, useEffect, useRef, useState } from 'react';
6
5
  import { PLUGIN_INSTRUCTIONS_TABLE } from '../../defaults.js';
7
- import { setSafeLexicalState } from '../../utilities/setSafeLexicalState.js';
8
6
  import { PluginIcon } from '../Icons/Icons.js';
9
- import { UndoRedoActions } from './UndoRedoActions.js';
10
- import styles from './compose.module.scss';
11
- import { useMenu } from './hooks/menu/useMenu.js';
7
+ import styles from './actions.module.scss';
12
8
  import { useGenerate } from './hooks/useGenerate.js';
9
+ import { useMenu } from './hooks/menu/useMenu.js';
10
+ import { UndoRedoActions } from './UndoRedoActions.js';
11
+ import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client';
12
+ import { setSafeLexicalState } from '../../utilities/setSafeLexicalState.js';
13
13
  function findParentWithClass(element, className) {
14
14
  // Base case: if the element is null or we've reached the top of the DOM
15
15
  if (!element || element === document.body) {
@@ -22,9 +22,10 @@ function findParentWithClass(element, className) {
22
22
  // Recursively call the function on the parent element
23
23
  return findParentWithClass(element.parentElement, className);
24
24
  }
25
- export const Compose = (props)=>{
25
+ //TODO: Add undo/redo to the actions toolbar
26
+ export const Actions = ({ descriptionProps = {}, instructionId })=>{
26
27
  const [DocumentDrawer, _, { closeDrawer, openDrawer }] = useDocumentDrawer({
27
- id: props.instructionId,
28
+ id: instructionId,
28
29
  collectionSlug: PLUGIN_INSTRUCTIONS_TABLE
29
30
  });
30
31
  const { type: fieldType, path: pathFromContext, schemaPath } = useFieldProps();
@@ -36,7 +37,7 @@ export const Compose = (props)=>{
36
37
  useEffect(()=>{
37
38
  if (!actionsRef.current) return;
38
39
  const fieldId = `field-${pathFromContext.replace(/\./g, '__')}`;
39
- const inputElement = document.getElementById(fieldId);
40
+ let inputElement = document.getElementById(fieldId);
40
41
  if (!inputElement && fieldType === 'richText') {
41
42
  setInput(editorContainerRef.current);
42
43
  } else {
@@ -99,7 +100,6 @@ export const Compose = (props)=>{
99
100
  action: 'Rephrase'
100
101
  });
101
102
  },
102
- onSettings: openDrawer,
103
103
  onSimplify: async ()=>{
104
104
  console.log('Simplifying...');
105
105
  await generate({
@@ -113,14 +113,15 @@ export const Compose = (props)=>{
113
113
  });
114
114
  },
115
115
  onTranslate: async (data)=>{
116
- console.log('Translating...');
116
+ console.log('Translate...', data);
117
117
  await generate({
118
118
  action: 'Translate',
119
119
  params: data
120
120
  });
121
- }
121
+ },
122
+ onSettings: openDrawer
122
123
  });
123
- const { setValue } = useField({
124
+ const { setValue, value } = useField({
124
125
  path: pathFromContext
125
126
  });
126
127
  const setIfValueIsLexicalState = useCallback((val)=>{
@@ -133,8 +134,8 @@ export const Compose = (props)=>{
133
134
  children: [
134
135
  /*#__PURE__*/ _jsxs("label", {
135
136
  className: `${styles.actions}`,
136
- onClick: (e)=>e.preventDefault(),
137
137
  ref: actionsRef,
138
+ onClick: (e)=>e.preventDefault(),
138
139
  children: [
139
140
  /*#__PURE__*/ _jsx(DocumentDrawer, {
140
141
  onSave: ()=>{
@@ -164,13 +165,13 @@ export const Compose = (props)=>{
164
165
  })
165
166
  ]
166
167
  }),
167
- props.descriptionProps ? /*#__PURE__*/ _jsx("div", {
168
+ /*#__PURE__*/ _jsx("div", {
168
169
  children: /*#__PURE__*/ _jsx(FieldDescription, {
169
- ...props.descriptionProps
170
+ ...descriptionProps
170
171
  })
171
- }) : null
172
+ })
172
173
  ]
173
174
  });
174
175
  };
175
176
 
176
- //# sourceMappingURL=Compose.js.map
177
+ //# sourceMappingURL=Actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/Actions/Actions.tsx"],"sourcesContent":["'use client'\n\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 { PluginIcon } from '../Icons/Icons.js'\nimport styles from './actions.module.scss'\nimport { useGenerate } from './hooks/useGenerate.js'\n\nimport { useMenu } from './hooks/menu/useMenu.js'\nimport { UndoRedoActions } from './UndoRedoActions.js'\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { setSafeLexicalState } from '../../utilities/setSafeLexicalState.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\n//TODO: Add undo/redo to the actions toolbar\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 let 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 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('Translate...', data)\n await generate({\n action: 'Translate',\n params: data,\n })\n },\n onSettings: openDrawer,\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}`} ref={actionsRef} onClick={(e) => e.preventDefault()}>\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":["FieldDescription","Popup","useDocumentDrawer","useField","useFieldProps","React","useCallback","useEffect","useRef","useState","PLUGIN_INSTRUCTIONS_TABLE","PluginIcon","styles","useGenerate","useMenu","UndoRedoActions","useEditorConfigContext","setSafeLexicalState","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","onSimplify","onSummarize","onTranslate","data","params","onSettings","setValue","value","setIfValueIsLexicalState","val","root","JSON","stringify","Fragment","label","ref","onClick","e","preventDefault","onSave","button","render","close","onClose","verticalAlign","onChange","div"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UndoRedoActions.d.ts","sourceRoot":"","sources":["../../../src/ui/Compose/UndoRedoActions.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,iBAAkB;IAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,4CA0DjF,CAAA"}
1
+ {"version":3,"file":"UndoRedoActions.d.ts","sourceRoot":"","sources":["../../../src/ui/Actions/UndoRedoActions.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,iBAAkB;IAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,4CAuCjF,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useHistory } from './hooks/useHistory.js';
3
- import React, { useCallback, useEffect, useState } from 'react';
3
+ import React, { useCallback } from 'react';
4
4
  export const UndoRedoActions = ({ onChange })=>{
5
5
  const { canRedo, canUndo, redo, undo } = useHistory();
6
6
  const redoHistoryValue = useCallback((event)=>{
@@ -21,32 +21,19 @@ export const UndoRedoActions = ({ onChange })=>{
21
21
  }, [
22
22
  undo
23
23
  ]);
24
- // Delay rendering until the client-side hydration is complete
25
- const [isMounted, setIsMounted] = useState(false);
26
- useEffect(()=>{
27
- setIsMounted(true);
28
- }, []);
29
- if (!isMounted || !canUndo && !canRedo) return null;
24
+ if (!canUndo && !canRedo) return null;
30
25
  return /*#__PURE__*/ _jsxs(_Fragment, {
31
26
  children: [
32
27
  /*#__PURE__*/ _jsx("button", {
33
28
  onClick: undoHistoryValue,
34
29
  type: "button",
35
30
  disabled: !canUndo,
36
- className: `btn btn--size-small btn--style-secondary ${!canUndo && 'btn--disabled'}`,
37
- style: {
38
- marginBlock: 0
39
- },
40
31
  children: "Undo"
41
32
  }),
42
33
  /*#__PURE__*/ _jsx("button", {
43
34
  onClick: redoHistoryValue,
44
35
  type: "button",
45
36
  disabled: !canRedo,
46
- className: `btn btn--size-small btn--style-secondary ${!canRedo && 'btn--disabled'}`,
47
- style: {
48
- marginBlock: 0
49
- },
50
37
  children: "Redo"
51
38
  })
52
39
  ]
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/Actions/UndoRedoActions.tsx"],"sourcesContent":["import { useHistory } from './hooks/useHistory.js'\nimport React, { MouseEventHandler, useCallback } from 'react'\n\nexport const UndoRedoActions = ({ onChange }: { onChange: (val: unknown) => void }) => {\n const { canRedo, canUndo, redo, undo } = useHistory()\n\n const redoHistoryValue = useCallback<MouseEventHandler>(\n (event) => {\n event.stopPropagation()\n\n const value = redo()\n if (value) {\n onChange(value)\n }\n },\n [redo],\n )\n\n const undoHistoryValue = useCallback<MouseEventHandler>(\n (event) => {\n event.stopPropagation()\n\n const value = undo()\n if (value) {\n onChange(value)\n }\n },\n [undo],\n )\n\n if (!canUndo && !canRedo) return null\n\n return (\n <>\n <button onClick={undoHistoryValue} type=\"button\" disabled={!canUndo}>\n Undo\n </button>\n <button onClick={redoHistoryValue} type=\"button\" disabled={!canRedo}>\n Redo\n </button>\n </>\n )\n}\n"],"names":["useHistory","React","useCallback","UndoRedoActions","onChange","canRedo","canUndo","redo","undo","redoHistoryValue","event","stopPropagation","value","undoHistoryValue","button","onClick","type","disabled"],"mappings":";AAAA,SAASA,UAAU,QAAQ,wBAAuB;AAClD,OAAOC,SAA4BC,WAAW,QAAQ,QAAO;AAE7D,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,QAAQ,EAAwC;IAChF,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGR;IAEzC,MAAMS,mBAAmBP,YACvB,CAACQ;QACCA,MAAMC,eAAe;QAErB,MAAMC,QAAQL;QACd,IAAIK,OAAO;YACTR,SAASQ;QACX;IACF,GACA;QAACL;KAAK;IAGR,MAAMM,mBAAmBX,YACvB,CAACQ;QACCA,MAAMC,eAAe;QAErB,MAAMC,QAAQJ;QACd,IAAII,OAAO;YACTR,SAASQ;QACX;IACF,GACA;QAACJ;KAAK;IAGR,IAAI,CAACF,WAAW,CAACD,SAAS,OAAO;IAEjC,qBACE;;0BACE,KAACS;gBAAOC,SAASF;gBAAkBG,MAAK;gBAASC,UAAU,CAACX;0BAAS;;0BAGrE,KAACQ;gBAAOC,SAASN;gBAAkBO,MAAK;gBAASC,UAAU,CAACZ;0BAAS;;;;AAK3E,EAAC"}
@@ -0,0 +1,3 @@
1
+ .highlight_selected {
2
+ background-color: red;
3
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/Item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAA;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAKzD,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAaxC,CAAA;AAED,eAAO,MAAM,cAAc,mIACyC,aAAa,6CAM7E,CAAA"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Actions/hooks/menu/Item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAA;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAKzD,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAaxC,CAAA;AAED,eAAO,MAAM,cAAc,mIACyC,aAAa,6CAM7E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/Item.tsx"],"sourcesContent":["import React, { memo } from 'react'\n\nimport type { BaseItemProps } from '../../../../types.js'\n\nimport { ArrowIcon } from '../../../Icons/Icons.js'\nimport styles from './menu.module.scss'\n\nexport const Item: React.FC<BaseItemProps> = memo(\n ({ children, disabled, onClick, isActive, ...rest }) => (\n <span\n className={styles.generate_button + ' ' + (isActive ? styles.active : '')}\n data-disabled={disabled}\n onClick={!disabled ? onClick : null}\n onKeyDown={!disabled ? onClick : null}\n role=\"presentation\"\n {...rest}\n >\n {children}\n </span>\n ),\n)\n\nexport const createMenuItem = (IconComponent, initialText) =>\n memo(({ children, disabled, hideIcon, onClick, isMenu, ...rest }: BaseItemProps) => (\n <Item disabled={disabled} onClick={onClick} {...rest}>\n {hideIcon || <IconComponent size={18} />}\n {children || <span className={styles.text}>{initialText}</span>}\n {isMenu && <ArrowIcon size={18} />}\n </Item>\n ))\n"],"names":["React","memo","ArrowIcon","styles","Item","children","disabled","onClick","isActive","rest","span","className","generate_button","active","data-disabled","onKeyDown","role","createMenuItem","IconComponent","initialText","hideIcon","isMenu","size","text"],"mappings":";AAAA,OAAOA,SAASC,IAAI,QAAQ,QAAO;AAInC,SAASC,SAAS,QAAQ,0BAAyB;AACnD,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,qBAAgCH,KAC3C,CAAC,EAAEI,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGC,MAAM,iBACjD,KAACC;QACCC,WAAWR,OAAOS,eAAe,GAAG,MAAOJ,CAAAA,WAAWL,OAAOU,MAAM,GAAG,EAAC;QACvEC,iBAAeR;QACfC,SAAS,CAACD,WAAWC,UAAU;QAC/BQ,WAAW,CAACT,WAAWC,UAAU;QACjCS,MAAK;QACJ,GAAGP,IAAI;kBAEPJ;QAGN;AAED,OAAO,MAAMY,iBAAiB,CAACC,eAAeC,4BAC5ClB,KAAK,CAAC,EAAEI,QAAQ,EAAEC,QAAQ,EAAEc,QAAQ,EAAEb,OAAO,EAAEc,MAAM,EAAE,GAAGZ,MAAqB,iBAC7E,MAACL;YAAKE,UAAUA;YAAUC,SAASA;YAAU,GAAGE,IAAI;;gBACjDW,0BAAY,KAACF;oBAAcI,MAAM;;gBACjCjB,0BAAY,KAACK;oBAAKC,WAAWR,OAAOoB,IAAI;8BAAGJ;;gBAC3CE,wBAAU,KAACnB;oBAAUoB,MAAM;;;YAE9B"}
1
+ {"version":3,"sources":["../../../../../src/ui/Actions/hooks/menu/Item.tsx"],"sourcesContent":["import React, { memo } from 'react'\n\nimport type { BaseItemProps } from '../../../../types.js'\n\nimport { ArrowIcon } from '../../../Icons/Icons.js'\nimport styles from './menu.module.scss'\n\nexport const Item: React.FC<BaseItemProps> = memo(\n ({ children, disabled, onClick, isActive, ...rest }) => (\n <span\n className={styles.generate_button + ' ' + (isActive ? styles.active : '')}\n data-disabled={disabled}\n onClick={!disabled ? onClick : null}\n onKeyDown={!disabled ? onClick : null}\n role=\"presentation\"\n {...rest}\n >\n {children}\n </span>\n ),\n)\n\nexport const createMenuItem = (IconComponent, initialText) =>\n memo(({ children, disabled, hideIcon, onClick, isMenu, ...rest }: BaseItemProps) => (\n <Item disabled={disabled} onClick={onClick} {...rest}>\n {hideIcon || <IconComponent size={18} />}\n {children || <span className={styles.text}>{initialText}</span>}\n {isMenu && <ArrowIcon size={18} />}\n </Item>\n ))\n"],"names":["React","memo","ArrowIcon","styles","Item","children","disabled","onClick","isActive","rest","span","className","generate_button","active","data-disabled","onKeyDown","role","createMenuItem","IconComponent","initialText","hideIcon","isMenu","size","text"],"mappings":";AAAA,OAAOA,SAASC,IAAI,QAAQ,QAAO;AAInC,SAASC,SAAS,QAAQ,0BAAyB;AACnD,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,qBAAgCH,KAC3C,CAAC,EAAEI,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGC,MAAM,iBACjD,KAACC;QACCC,WAAWR,OAAOS,eAAe,GAAG,MAAOJ,CAAAA,WAAWL,OAAOU,MAAM,GAAG,EAAC;QACvEC,iBAAeR;QACfC,SAAS,CAACD,WAAWC,UAAU;QAC/BQ,WAAW,CAACT,WAAWC,UAAU;QACjCS,MAAK;QACJ,GAAGP,IAAI;kBAEPJ;QAGN;AAED,OAAO,MAAMY,iBAAiB,CAACC,eAAeC,4BAC5ClB,KAAK,CAAC,EAAEI,QAAQ,EAAEC,QAAQ,EAAEc,QAAQ,EAAEb,OAAO,EAAEc,MAAM,EAAE,GAAGZ,MAAqB,iBAC7E,MAACL;YAAKE,UAAUA;YAAUC,SAASA;YAAU,GAAGE,IAAI;;gBACjDW,0BAAY,KAACF;oBAAcI,MAAM;;gBACjCjB,0BAAY,KAACK;oBAAKC,WAAWR,OAAOoB,IAAI;8BAAGJ;;gBAC3CE,wBAAU,KAACnB;oBAAUoB,MAAM;;;YAE9B"}