@ai-stack/payloadcms 3.2.8-beta → 3.2.9-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +11 -2
  2. package/dist/ai/schemas/lexicalJsonSchema.d.ts +373 -1
  3. package/dist/ai/schemas/lexicalJsonSchema.d.ts.map +1 -1
  4. package/dist/ai/schemas/lexicalJsonSchema.js +13 -9
  5. package/dist/ai/schemas/lexicalJsonSchema.js.map +1 -1
  6. package/dist/collections/Instructions.d.ts.map +1 -1
  7. package/dist/collections/Instructions.js +17 -28
  8. package/dist/collections/Instructions.js.map +1 -1
  9. package/dist/endpoints/fetchFields.d.ts +2 -1
  10. package/dist/endpoints/fetchFields.d.ts.map +1 -1
  11. package/dist/endpoints/fetchFields.js +33 -17
  12. package/dist/endpoints/fetchFields.js.map +1 -1
  13. package/dist/fields/ComposeField/ComposeField.js +3 -2
  14. package/dist/fields/ComposeField/ComposeField.js.map +1 -1
  15. package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts.map +1 -1
  16. package/dist/fields/LexicalEditor/ComposeFeatureComponent.js +3 -2
  17. package/dist/fields/LexicalEditor/ComposeFeatureComponent.js.map +1 -1
  18. package/dist/init.d.ts.map +1 -1
  19. package/dist/init.js +5 -3
  20. package/dist/init.js.map +1 -1
  21. package/dist/plugin.js +3 -3
  22. package/dist/plugin.js.map +1 -1
  23. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts +1 -0
  24. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts.map +1 -1
  25. package/dist/providers/InstructionsProvider/InstructionsProvider.js +11 -4
  26. package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
  27. package/dist/types.d.ts +11 -2
  28. package/dist/types.d.ts.map +1 -1
  29. package/dist/types.js.map +1 -1
  30. package/dist/ui/Compose/Compose.d.ts +2 -1
  31. package/dist/ui/Compose/Compose.d.ts.map +1 -1
  32. package/dist/ui/Compose/Compose.js +5 -4
  33. package/dist/ui/Compose/Compose.js.map +1 -1
  34. package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts.map +1 -1
  35. package/dist/ui/Compose/hooks/menu/TranslateMenu.js +4 -0
  36. package/dist/ui/Compose/hooks/menu/TranslateMenu.js.map +1 -1
  37. package/dist/ui/Compose/hooks/menu/useMenu.d.ts +2 -2
  38. package/dist/ui/Compose/hooks/menu/useMenu.d.ts.map +1 -1
  39. package/dist/ui/Compose/hooks/menu/useMenu.js +8 -4
  40. package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
  41. package/dist/utilities/isPluginActivated.d.ts +1 -1
  42. package/dist/utilities/isPluginActivated.d.ts.map +1 -1
  43. package/dist/utilities/isPluginActivated.js.map +1 -1
  44. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/Compose/Compose.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientField } from 'payload'\nimport { FC, useMemo } from 'react'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { FieldDescription, Popup, useDocumentDrawer, useField } 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 './compose.module.css'\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\ntype ComposeProps = {\n descriptionProps?: {\n field: ClientField\n path: string\n schemaPath: string\n }\n instructionId: string\n}\n\nexport const Compose: FC<ComposeProps> = ({ descriptionProps, instructionId }) => {\n const [DocumentDrawer, _, { closeDrawer, openDrawer }] = useDocumentDrawer({\n id: instructionId,\n collectionSlug: PLUGIN_INSTRUCTIONS_TABLE,\n })\n\n const {\n field: { type: fieldType },\n path: pathFromContext,\n schemaPath,\n } = descriptionProps || {}\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\n // Create the handler function\n const clickHandler = (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 if (parentWithClass) {\n parentWithClass.classList.add('ai-plugin-active')\n }\n }\n\n // Add the event listener\n input.addEventListener('click', clickHandler)\n\n // Clean up the event listener when the component unmounts or input changes\n return () => {\n input.removeEventListener('click', clickHandler)\n }\n }, [input, actionsRef])\n\n const [isProcessing, setIsProcessing] = useState(false)\n const { generate, isLoading, stop } = useGenerate({ instructionId })\n\n const { ActiveComponent, Menu } = useMenu({\n onCompose: async () => {\n console.log('Composing...')\n setIsProcessing(true)\n await generate({\n action: 'Compose',\n }).finally(() => {\n setIsProcessing(false)\n })\n },\n onExpand: async () => {\n console.log('Expanding...')\n await generate({\n action: 'Expand',\n })\n },\n onProofread: async () => {\n console.log('Proofreading...')\n await generate({\n action: 'Proofread',\n })\n },\n onRephrase: async () => {\n console.log('Rephrasing...')\n await generate({\n action: 'Rephrase',\n })\n },\n onSettings: openDrawer,\n onSimplify: async () => {\n console.log('Simplifying...')\n await generate({\n action: 'Simplify',\n })\n },\n onSummarize: async () => {\n console.log('Summarizing...')\n await generate({\n action: 'Summarize',\n })\n },\n onTranslate: async (data) => {\n console.log('Translating...')\n await generate({\n action: 'Translate',\n params: data,\n })\n },\n })\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const setIfValueIsLexicalState = useCallback((val: any) => {\n if (val.root && lexicalEditor) {\n setSafeLexicalState(JSON.stringify(val), lexicalEditor)\n }\n\n // DO NOT PROVIDE lexicalEditor as a dependency, it freaks out and does not update the editor after first undo/redo\n }, [])\n\n const popupRender = useCallback(\n ({ close }) => {\n return <Menu isLoading={isProcessing || isLoading} onClose={close} />\n },\n [isProcessing, isLoading, Menu],\n )\n\n const memoizedPopup = useMemo(() => {\n return (\n <Popup\n button={<PluginIcon isLoading={isProcessing || isLoading} />}\n render={popupRender}\n verticalAlign=\"bottom\"\n />\n )\n }, [popupRender, isProcessing, isLoading])\n\n return (\n <React.Fragment>\n <label\n className={`${styles.actions}`}\n onClick={(e) => e.preventDefault()}\n ref={actionsRef}\n role=\"presentation\"\n >\n <DocumentDrawer\n onSave={() => {\n closeDrawer()\n }}\n />\n {memoizedPopup}\n <ActiveComponent isLoading={isProcessing || isLoading} stop={stop} />\n <UndoRedoActions\n onChange={(val) => {\n setValue(val)\n setIfValueIsLexicalState(val)\n }}\n />\n </label>\n {/*Render incoming description field*/}\n {descriptionProps ? (\n <div>\n <FieldDescription {...descriptionProps} />\n </div>\n ) : null}\n </React.Fragment>\n )\n}\n"],"names":["useMemo","useEditorConfigContext","FieldDescription","Popup","useDocumentDrawer","useField","React","useCallback","useEffect","useRef","useState","PLUGIN_INSTRUCTIONS_TABLE","setSafeLexicalState","PluginIcon","UndoRedoActions","styles","useMenu","useGenerate","findParentWithClass","element","className","document","body","classList","contains","parentElement","Compose","descriptionProps","instructionId","DocumentDrawer","_","closeDrawer","openDrawer","id","collectionSlug","field","type","fieldType","path","pathFromContext","schemaPath","editor","lexicalEditor","editorContainerRef","input","setInput","actionsRef","current","fieldId","replace","inputElement","getElementById","setAttribute","add","actions_hidden","clickHandler","event","querySelectorAll","forEach","actionElement","querySelector","actions","remove","parentWithClass","target","addEventListener","removeEventListener","isProcessing","setIsProcessing","generate","isLoading","stop","ActiveComponent","Menu","onCompose","console","log","action","finally","onExpand","onProofread","onRephrase","onSettings","onSimplify","onSummarize","onTranslate","data","params","setValue","setIfValueIsLexicalState","val","root","JSON","stringify","popupRender","close","onClose","memoizedPopup","button","render","verticalAlign","Fragment","label","onClick","e","preventDefault","ref","role","onSave","onChange","div"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ui/Compose/Compose.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientField } from 'payload'\nimport type { FC } from 'react'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { FieldDescription, Popup, useDocumentDrawer, useField } from '@payloadcms/ui'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { PLUGIN_INSTRUCTIONS_TABLE } from '../../defaults.js'\nimport { setSafeLexicalState } from '../../utilities/setSafeLexicalState.js'\nimport { PluginIcon } from '../Icons/Icons.js'\nimport { UndoRedoActions } from './UndoRedoActions.js'\nimport styles from './compose.module.css'\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\ntype ComposeProps = {\n descriptionProps?: {\n field: ClientField\n path: string\n schemaPath: string\n }\n instructionId: string\n isConfigAllowed: boolean\n}\n\nexport const Compose: FC<ComposeProps> = ({ descriptionProps, instructionId, isConfigAllowed }) => {\n const [DocumentDrawer, _, { closeDrawer, openDrawer }] = useDocumentDrawer({\n id: instructionId,\n collectionSlug: PLUGIN_INSTRUCTIONS_TABLE,\n })\n\n const {\n field: { type: fieldType },\n path: pathFromContext,\n schemaPath,\n } = descriptionProps || {}\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\n // Create the handler function\n const clickHandler = (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 if (parentWithClass) {\n parentWithClass.classList.add('ai-plugin-active')\n }\n }\n\n // Add the event listener\n input.addEventListener('click', clickHandler)\n\n // Clean up the event listener when the component unmounts or input changes\n return () => {\n input.removeEventListener('click', clickHandler)\n }\n }, [input, actionsRef])\n\n const [isProcessing, setIsProcessing] = useState(false)\n const { generate, isLoading, stop } = useGenerate({ instructionId })\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: isConfigAllowed ? openDrawer : undefined,\n onSimplify: async () => {\n console.log('Simplifying...')\n await generate({\n action: 'Simplify',\n })\n },\n onSummarize: async () => {\n console.log('Summarizing...')\n await generate({\n action: 'Summarize',\n })\n },\n onTranslate: async (data) => {\n console.log('Translating...')\n await generate({\n action: 'Translate',\n params: data,\n })\n },\n },{\n isConfigAllowed\n })\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const setIfValueIsLexicalState = useCallback((val: any) => {\n if (val.root && lexicalEditor) {\n setSafeLexicalState(JSON.stringify(val), lexicalEditor)\n }\n\n // DO NOT PROVIDE lexicalEditor as a dependency, it freaks out and does not update the editor after first undo/redo\n }, [])\n\n const popupRender = useCallback(\n ({ close }) => {\n return <Menu isLoading={isProcessing || isLoading} onClose={close} />\n },\n [isProcessing, isLoading, Menu],\n )\n\n const memoizedPopup = useMemo(() => {\n return (\n <Popup\n button={<PluginIcon isLoading={isProcessing || isLoading} />}\n render={popupRender}\n verticalAlign=\"bottom\"\n />\n )\n }, [popupRender, isProcessing, isLoading])\n\n return (\n <React.Fragment>\n <label\n className={`${styles.actions}`}\n onClick={(e) => e.preventDefault()}\n ref={actionsRef}\n role=\"presentation\"\n >\n <DocumentDrawer\n onSave={() => {\n closeDrawer()\n }}\n />\n {memoizedPopup}\n <ActiveComponent isLoading={isProcessing || isLoading} stop={stop} />\n <UndoRedoActions\n onChange={(val) => {\n setValue(val)\n setIfValueIsLexicalState(val)\n }}\n />\n </label>\n {/*Render incoming description field*/}\n {descriptionProps ? (\n <div>\n <FieldDescription {...descriptionProps} />\n </div>\n ) : null}\n </React.Fragment>\n )\n}\n"],"names":["useEditorConfigContext","FieldDescription","Popup","useDocumentDrawer","useField","React","useCallback","useEffect","useMemo","useRef","useState","PLUGIN_INSTRUCTIONS_TABLE","setSafeLexicalState","PluginIcon","UndoRedoActions","styles","useMenu","useGenerate","findParentWithClass","element","className","document","body","classList","contains","parentElement","Compose","descriptionProps","instructionId","isConfigAllowed","DocumentDrawer","_","closeDrawer","openDrawer","id","collectionSlug","field","type","fieldType","path","pathFromContext","schemaPath","editor","lexicalEditor","editorContainerRef","input","setInput","actionsRef","current","fieldId","replace","inputElement","getElementById","setAttribute","add","actions_hidden","clickHandler","event","querySelectorAll","forEach","actionElement","querySelector","actions","remove","parentWithClass","target","addEventListener","removeEventListener","isProcessing","setIsProcessing","generate","isLoading","stop","ActiveComponent","Menu","onCompose","console","log","action","finally","onExpand","onProofread","onRephrase","onSettings","undefined","onSimplify","onSummarize","onTranslate","data","params","setValue","setIfValueIsLexicalState","val","root","JSON","stringify","popupRender","close","onClose","memoizedPopup","button","render","verticalAlign","Fragment","label","onClick","e","preventDefault","ref","role","onSave","onChange","div"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TranslateMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/TranslateMenu.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,GAAI;;CAAW,4CA0ExC,CAAA"}
1
+ {"version":3,"file":"TranslateMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/TranslateMenu.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,GAAI;;CAAW,4CA6ExC,CAAA"}
@@ -32,6 +32,10 @@ export const TranslateMenu = ({ onClick })=>{
32
32
  "data-show": show,
33
33
  children: /*#__PURE__*/ _jsxs("div", {
34
34
  className: `${styles.menu} ${styles.subMenu}`,
35
+ style: {
36
+ background: "var(--popup-bg)",
37
+ minHeight: "300px"
38
+ },
35
39
  children: [
36
40
  /*#__PURE__*/ _jsx(Item, {
37
41
  onClick: ()=>{},
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/TranslateMenu.tsx"],"sourcesContent":["import locales from 'locale-codes'\nimport React, { useState } from 'react'\n\nimport { Item } from './Item.js'\nimport { Translate } from './items.js'\nimport styles from './menu.module.scss'\n\nexport const TranslateMenu = ({ onClick }) => {\n const [show, setShow] = useState(false)\n\n const filteredLocales = locales.all.filter((a) => {\n return a.tag && a.location\n })\n\n const [languages, setLanguages] = useState(filteredLocales)\n const [inputFocus, setInputFocus] = useState(false)\n\n return (\n <div\n className={styles.menu}\n onMouseLeave={() => {\n if (!inputFocus) {\n setShow(false)\n }\n }}\n >\n <Translate\n isActive={show}\n isMenu\n onClick={() => {\n setShow(!show)\n }}\n onMouseEnter={() => setShow(true)}\n />\n <div className={styles.hoverMenu} data-show={show}>\n <div className={`${styles.menu} ${styles.subMenu}`}>\n <Item\n onClick={() => {}}\n style={{\n background: 'transparent',\n padding: '0 0 5px 0',\n position: 'sticky',\n top: 0,\n }}\n >\n <input\n className={styles.menuInput}\n onBlur={() => setInputFocus(false)}\n onChange={(event) => {\n const value = event.target.value\n setLanguages(\n filteredLocales.filter((l) => {\n const lowerCaseValue = value.toLowerCase()\n return (\n l.name.toLowerCase().startsWith(lowerCaseValue) ||\n l.location.toLowerCase().startsWith(lowerCaseValue) ||\n l.tag.toLowerCase().startsWith(lowerCaseValue)\n )\n }),\n )\n }}\n onFocus={() => setInputFocus(true)}\n placeholder=\"Search...\"\n />\n </Item>\n {languages.map((locale) => {\n return (\n <Item\n key={locale.tag}\n onClick={() => {\n onClick({ locale: locale.tag })\n }}\n >\n <span className={styles.ellipsis}>{`${locale.location} (${locale.tag})`}</span>\n </Item>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["locales","React","useState","Item","Translate","styles","TranslateMenu","onClick","show","setShow","filteredLocales","all","filter","a","tag","location","languages","setLanguages","inputFocus","setInputFocus","div","className","menu","onMouseLeave","isActive","isMenu","onMouseEnter","hoverMenu","data-show","subMenu","style","background","padding","position","top","input","menuInput","onBlur","onChange","event","value","target","l","lowerCaseValue","toLowerCase","name","startsWith","onFocus","placeholder","map","locale","span","ellipsis"],"mappings":";AAAA,OAAOA,aAAa,eAAc;AAClC,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,SAAS,QAAQ,aAAY;AACtC,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,OAAO,EAAE;IACvC,MAAM,CAACC,MAAMC,QAAQ,GAAGP,SAAS;IAEjC,MAAMQ,kBAAkBV,QAAQW,GAAG,CAACC,MAAM,CAAC,CAACC;QAC1C,OAAOA,EAAEC,GAAG,IAAID,EAAEE,QAAQ;IAC5B;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGf,SAASQ;IAC3C,MAAM,CAACQ,YAAYC,cAAc,GAAGjB,SAAS;IAE7C,qBACE,MAACkB;QACCC,WAAWhB,OAAOiB,IAAI;QACtBC,cAAc;YACZ,IAAI,CAACL,YAAY;gBACfT,QAAQ;YACV;QACF;;0BAEA,KAACL;gBACCoB,UAAUhB;gBACViB,MAAM;gBACNlB,SAAS;oBACPE,QAAQ,CAACD;gBACX;gBACAkB,cAAc,IAAMjB,QAAQ;;0BAE9B,KAACW;gBAAIC,WAAWhB,OAAOsB,SAAS;gBAAEC,aAAWpB;0BAC3C,cAAA,MAACY;oBAAIC,WAAW,GAAGhB,OAAOiB,IAAI,CAAC,CAAC,EAAEjB,OAAOwB,OAAO,EAAE;;sCAChD,KAAC1B;4BACCI,SAAS,KAAO;4BAChBuB,OAAO;gCACLC,YAAY;gCACZC,SAAS;gCACTC,UAAU;gCACVC,KAAK;4BACP;sCAEA,cAAA,KAACC;gCACCd,WAAWhB,OAAO+B,SAAS;gCAC3BC,QAAQ,IAAMlB,cAAc;gCAC5BmB,UAAU,CAACC;oCACT,MAAMC,QAAQD,MAAME,MAAM,CAACD,KAAK;oCAChCvB,aACEP,gBAAgBE,MAAM,CAAC,CAAC8B;wCACtB,MAAMC,iBAAiBH,MAAMI,WAAW;wCACxC,OACEF,EAAEG,IAAI,CAACD,WAAW,GAAGE,UAAU,CAACH,mBAChCD,EAAE3B,QAAQ,CAAC6B,WAAW,GAAGE,UAAU,CAACH,mBACpCD,EAAE5B,GAAG,CAAC8B,WAAW,GAAGE,UAAU,CAACH;oCAEnC;gCAEJ;gCACAI,SAAS,IAAM5B,cAAc;gCAC7B6B,aAAY;;;wBAGfhC,UAAUiC,GAAG,CAAC,CAACC;4BACd,qBACE,KAAC/C;gCAECI,SAAS;oCACPA,QAAQ;wCAAE2C,QAAQA,OAAOpC,GAAG;oCAAC;gCAC/B;0CAEA,cAAA,KAACqC;oCAAK9B,WAAWhB,OAAO+C,QAAQ;8CAAG,GAAGF,OAAOnC,QAAQ,CAAC,EAAE,EAAEmC,OAAOpC,GAAG,CAAC,CAAC,CAAC;;+BALlEoC,OAAOpC,GAAG;wBAQrB;;;;;;AAKV,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/TranslateMenu.tsx"],"sourcesContent":["import locales from 'locale-codes'\nimport React, { useState } from 'react'\n\nimport { Item } from './Item.js'\nimport { Translate } from './items.js'\nimport styles from './menu.module.scss'\n\nexport const TranslateMenu = ({ onClick }) => {\n const [show, setShow] = useState(false)\n\n const filteredLocales = locales.all.filter((a) => {\n return a.tag && a.location\n })\n\n const [languages, setLanguages] = useState(filteredLocales)\n const [inputFocus, setInputFocus] = useState(false)\n\n return (\n <div\n className={styles.menu}\n onMouseLeave={() => {\n if (!inputFocus) {\n setShow(false)\n }\n }}\n >\n <Translate\n isActive={show}\n isMenu\n onClick={() => {\n setShow(!show)\n }}\n onMouseEnter={() => setShow(true)}\n />\n <div className={styles.hoverMenu} data-show={show}>\n <div className={`${styles.menu} ${styles.subMenu}`} style={{\n background: \"var(--popup-bg)\",\n minHeight: \"300px\"\n }}>\n <Item\n onClick={() => {}}\n style={{\n background: 'transparent',\n padding: '0 0 5px 0',\n position: 'sticky',\n top: 0,\n }}\n >\n <input\n className={styles.menuInput}\n onBlur={() => setInputFocus(false)}\n onChange={(event) => {\n const value = event.target.value\n setLanguages(\n filteredLocales.filter((l) => {\n const lowerCaseValue = value.toLowerCase()\n return (\n l.name.toLowerCase().startsWith(lowerCaseValue) ||\n l.location.toLowerCase().startsWith(lowerCaseValue) ||\n l.tag.toLowerCase().startsWith(lowerCaseValue)\n )\n }),\n )\n }}\n onFocus={() => setInputFocus(true)}\n placeholder=\"Search...\"\n />\n </Item>\n {languages.map((locale) => {\n return (\n <Item\n key={locale.tag}\n onClick={() => {\n onClick({ locale: locale.tag })\n }}\n >\n <span className={styles.ellipsis}>{`${locale.location} (${locale.tag})`}</span>\n </Item>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["locales","React","useState","Item","Translate","styles","TranslateMenu","onClick","show","setShow","filteredLocales","all","filter","a","tag","location","languages","setLanguages","inputFocus","setInputFocus","div","className","menu","onMouseLeave","isActive","isMenu","onMouseEnter","hoverMenu","data-show","subMenu","style","background","minHeight","padding","position","top","input","menuInput","onBlur","onChange","event","value","target","l","lowerCaseValue","toLowerCase","name","startsWith","onFocus","placeholder","map","locale","span","ellipsis"],"mappings":";AAAA,OAAOA,aAAa,eAAc;AAClC,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,SAAS,QAAQ,aAAY;AACtC,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,OAAO,EAAE;IACvC,MAAM,CAACC,MAAMC,QAAQ,GAAGP,SAAS;IAEjC,MAAMQ,kBAAkBV,QAAQW,GAAG,CAACC,MAAM,CAAC,CAACC;QAC1C,OAAOA,EAAEC,GAAG,IAAID,EAAEE,QAAQ;IAC5B;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGf,SAASQ;IAC3C,MAAM,CAACQ,YAAYC,cAAc,GAAGjB,SAAS;IAE7C,qBACE,MAACkB;QACCC,WAAWhB,OAAOiB,IAAI;QACtBC,cAAc;YACZ,IAAI,CAACL,YAAY;gBACfT,QAAQ;YACV;QACF;;0BAEA,KAACL;gBACCoB,UAAUhB;gBACViB,MAAM;gBACNlB,SAAS;oBACPE,QAAQ,CAACD;gBACX;gBACAkB,cAAc,IAAMjB,QAAQ;;0BAE9B,KAACW;gBAAIC,WAAWhB,OAAOsB,SAAS;gBAAEC,aAAWpB;0BAC3C,cAAA,MAACY;oBAAIC,WAAW,GAAGhB,OAAOiB,IAAI,CAAC,CAAC,EAAEjB,OAAOwB,OAAO,EAAE;oBAAEC,OAAO;wBACzDC,YAAY;wBACZC,WAAW;oBACb;;sCACE,KAAC7B;4BACCI,SAAS,KAAO;4BAChBuB,OAAO;gCACLC,YAAY;gCACZE,SAAS;gCACTC,UAAU;gCACVC,KAAK;4BACP;sCAEA,cAAA,KAACC;gCACCf,WAAWhB,OAAOgC,SAAS;gCAC3BC,QAAQ,IAAMnB,cAAc;gCAC5BoB,UAAU,CAACC;oCACT,MAAMC,QAAQD,MAAME,MAAM,CAACD,KAAK;oCAChCxB,aACEP,gBAAgBE,MAAM,CAAC,CAAC+B;wCACtB,MAAMC,iBAAiBH,MAAMI,WAAW;wCACxC,OACEF,EAAEG,IAAI,CAACD,WAAW,GAAGE,UAAU,CAACH,mBAChCD,EAAE5B,QAAQ,CAAC8B,WAAW,GAAGE,UAAU,CAACH,mBACpCD,EAAE7B,GAAG,CAAC+B,WAAW,GAAGE,UAAU,CAACH;oCAEnC;gCAEJ;gCACAI,SAAS,IAAM7B,cAAc;gCAC7B8B,aAAY;;;wBAGfjC,UAAUkC,GAAG,CAAC,CAACC;4BACd,qBACE,KAAChD;gCAECI,SAAS;oCACPA,QAAQ;wCAAE4C,QAAQA,OAAOrC,GAAG;oCAAC;gCAC/B;0CAEA,cAAA,KAACsC;oCAAK/B,WAAWhB,OAAOgD,QAAQ;8CAAG,GAAGF,OAAOpC,QAAQ,CAAC,EAAE,EAAEoC,OAAOrC,GAAG,CAAC,CAAC,CAAC;;+BALlEqC,OAAOrC,GAAG;wBAQrB;;;;;;AAKV,EAAC"}
@@ -1,5 +1,5 @@
1
- import type { UseMenuEvents } from '../../../../types.js';
2
- export declare const useMenu: (menuEvents: UseMenuEvents) => {
1
+ import { UseMenuEvents, UseMenuOptions } from '../../../../types.js';
2
+ export declare const useMenu: (menuEvents: UseMenuEvents, options: UseMenuOptions) => {
3
3
  ActiveComponent: ({ isLoading, stop }: {
4
4
  isLoading: any;
5
5
  stop: any;
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/useMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAoB1E,eAAO,MAAM,OAAO,GAAI,YAAY,aAAa;;;;;;;;;CAwFhD,CAAA"}
1
+ {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/useMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAmB,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAoBrF,eAAO,MAAM,OAAO,GAAI,YAAY,aAAa,EAAE,SAAS,cAAc;;;;;;;;;CA2FzE,CAAA"}
@@ -18,7 +18,7 @@ const getActiveComponent = (ac)=>{
18
18
  return Rephrase;
19
19
  }
20
20
  };
21
- export const useMenu = (menuEvents)=>{
21
+ export const useMenu = (menuEvents, options)=>{
22
22
  const { type: fieldType, path: pathFromContext } = useFieldProps();
23
23
  const field = useField({
24
24
  path: pathFromContext
@@ -69,9 +69,13 @@ export const useMenu = (menuEvents)=>{
69
69
  }, [
70
70
  activeComponent
71
71
  ]);
72
- const filteredMenuItems = useMemo(()=>menuItemsMap.filter((i)=>i.name !== activeComponent && !i.excludedFor?.includes(fieldType)), [
72
+ const filteredMenuItems = useMemo(()=>menuItemsMap.filter((i)=>{
73
+ if (i.name === 'Settings' && !options.isConfigAllowed) return false; // Disable settings if a user role is not permitted
74
+ return i.name !== activeComponent && !i.excludedFor?.includes(fieldType);
75
+ }), [
73
76
  activeComponent,
74
- fieldType
77
+ fieldType,
78
+ options.isConfigAllowed
75
79
  ]);
76
80
  const MemoizedMenu = useMemo(()=>{
77
81
  return ({ isLoading, onClose })=>/*#__PURE__*/ _jsx("div", {
@@ -84,7 +88,7 @@ export const useMenu = (menuEvents)=>{
84
88
  if (i.name !== 'Settings') {
85
89
  setActiveComponent(i.name);
86
90
  }
87
- menuEvents[`on${i.name}`](data);
91
+ menuEvents[`on${i.name}`]?.(data);
88
92
  onClose();
89
93
  },
90
94
  children: isLoading && i.loadingText
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/useMenu.tsx"],"sourcesContent":["'use client'\n\nimport { useField } from '@payloadcms/ui'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport type { ActionMenuItems, UseMenuEvents } from '../../../../types.js'\n\nimport { useFieldProps } from '../../../../providers/FieldProvider/useFieldProps.js'\nimport { Compose, Proofread, Rephrase } from './items.js'\nimport { menuItemsMap } from './itemsMap.js'\nimport styles from './menu.module.scss'\n\nconst getActiveComponent = (ac) => {\n switch (ac) {\n case 'Proofread':\n return Proofread\n case 'Rephrase':\n return Rephrase\n case 'Compose':\n return Compose\n default:\n return Rephrase\n }\n}\n\nexport const useMenu = (menuEvents: UseMenuEvents) => {\n const { type: fieldType, path: pathFromContext } = useFieldProps()\n const field = useField({ path: pathFromContext })\n const [activeComponent, setActiveComponent] = useState<ActionMenuItems>('Rephrase')\n\n const { initialValue, value } = field\n\n useEffect(() => {\n if (!value) {\n setActiveComponent('Compose')\n return\n }\n\n if (menuItemsMap.some((i) => i.excludedFor?.includes(fieldType))) {\n setActiveComponent('Compose')\n return\n }\n\n if (typeof value === 'string' && value !== initialValue) {\n setActiveComponent('Proofread')\n } else {\n setActiveComponent('Rephrase')\n }\n }, [initialValue, value, fieldType])\n\n const MemoizedActiveComponent = useMemo(() => {\n return ({ isLoading, stop }) => {\n const ActiveComponent = getActiveComponent(activeComponent)\n const activeItem = menuItemsMap.find((i) => i.name === activeComponent)\n return (\n <ActiveComponent\n hideIcon\n onClick={(data) => {\n if (!isLoading) {\n const trigger = menuEvents[`on${activeComponent}`]\n if (typeof trigger === 'function') {\n trigger(data)\n } else {\n console.error('No trigger found for', activeComponent)\n }\n } else {\n stop()\n }\n }}\n title={isLoading ? 'Click to stop' : activeItem.name}\n >\n {isLoading && activeItem.loadingText}\n </ActiveComponent>\n )\n }\n }, [activeComponent])\n\n const filteredMenuItems = useMemo(\n () =>\n menuItemsMap.filter((i) => i.name !== activeComponent && !i.excludedFor?.includes(fieldType)),\n [activeComponent, fieldType],\n )\n\n const MemoizedMenu = useMemo(() => {\n return ({ isLoading, onClose }) => (\n <div className={styles.menu}>\n {filteredMenuItems.map((i) => {\n const Action = i.component\n return (\n <Action\n disabled={isLoading}\n key={i.name}\n onClick={(data) => {\n if (i.name !== 'Settings') {\n setActiveComponent(i.name)\n }\n\n menuEvents[`on${i.name}`](data)\n onClose()\n }}\n >\n {isLoading && i.loadingText}\n </Action>\n )\n })}\n </div>\n )\n }, [filteredMenuItems])\n\n return {\n ActiveComponent: MemoizedActiveComponent,\n Menu: MemoizedMenu,\n }\n}\n"],"names":["useField","React","useEffect","useMemo","useState","useFieldProps","Compose","Proofread","Rephrase","menuItemsMap","styles","getActiveComponent","ac","useMenu","menuEvents","type","fieldType","path","pathFromContext","field","activeComponent","setActiveComponent","initialValue","value","some","i","excludedFor","includes","MemoizedActiveComponent","isLoading","stop","ActiveComponent","activeItem","find","name","hideIcon","onClick","data","trigger","console","error","title","loadingText","filteredMenuItems","filter","MemoizedMenu","onClose","div","className","menu","map","Action","component","disabled","Menu"],"mappings":"AAAA;;AAEA,SAASA,QAAQ,QAAQ,iBAAgB;AACzC,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAI3D,SAASC,aAAa,QAAQ,uDAAsD;AACpF,SAASC,OAAO,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,aAAY;AACzD,SAASC,YAAY,QAAQ,gBAAe;AAC5C,OAAOC,YAAY,qBAAoB;AAEvC,MAAMC,qBAAqB,CAACC;IAC1B,OAAQA;QACN,KAAK;YACH,OAAOL;QACT,KAAK;YACH,OAAOC;QACT,KAAK;YACH,OAAOF;QACT;YACE,OAAOE;IACX;AACF;AAEA,OAAO,MAAMK,UAAU,CAACC;IACtB,MAAM,EAAEC,MAAMC,SAAS,EAAEC,MAAMC,eAAe,EAAE,GAAGb;IACnD,MAAMc,QAAQnB,SAAS;QAAEiB,MAAMC;IAAgB;IAC/C,MAAM,CAACE,iBAAiBC,mBAAmB,GAAGjB,SAA0B;IAExE,MAAM,EAAEkB,YAAY,EAAEC,KAAK,EAAE,GAAGJ;IAEhCjB,UAAU;QACR,IAAI,CAACqB,OAAO;YACVF,mBAAmB;YACnB;QACF;QAEA,IAAIZ,aAAae,IAAI,CAAC,CAACC,IAAMA,EAAEC,WAAW,EAAEC,SAASX,aAAa;YAChEK,mBAAmB;YACnB;QACF;QAEA,IAAI,OAAOE,UAAU,YAAYA,UAAUD,cAAc;YACvDD,mBAAmB;QACrB,OAAO;YACLA,mBAAmB;QACrB;IACF,GAAG;QAACC;QAAcC;QAAOP;KAAU;IAEnC,MAAMY,0BAA0BzB,QAAQ;QACtC,OAAO,CAAC,EAAE0B,SAAS,EAAEC,IAAI,EAAE;YACzB,MAAMC,kBAAkBpB,mBAAmBS;YAC3C,MAAMY,aAAavB,aAAawB,IAAI,CAAC,CAACR,IAAMA,EAAES,IAAI,KAAKd;YACvD,qBACE,KAACW;gBACCI,QAAQ;gBACRC,SAAS,CAACC;oBACR,IAAI,CAACR,WAAW;wBACd,MAAMS,UAAUxB,UAAU,CAAC,CAAC,EAAE,EAAEM,iBAAiB,CAAC;wBAClD,IAAI,OAAOkB,YAAY,YAAY;4BACjCA,QAAQD;wBACV,OAAO;4BACLE,QAAQC,KAAK,CAAC,wBAAwBpB;wBACxC;oBACF,OAAO;wBACLU;oBACF;gBACF;gBACAW,OAAOZ,YAAY,kBAAkBG,WAAWE,IAAI;0BAEnDL,aAAaG,WAAWU,WAAW;;QAG1C;IACF,GAAG;QAACtB;KAAgB;IAEpB,MAAMuB,oBAAoBxC,QACxB,IACEM,aAAamC,MAAM,CAAC,CAACnB,IAAMA,EAAES,IAAI,KAAKd,mBAAmB,CAACK,EAAEC,WAAW,EAAEC,SAASX,aACpF;QAACI;QAAiBJ;KAAU;IAG9B,MAAM6B,eAAe1C,QAAQ;QAC3B,OAAO,CAAC,EAAE0B,SAAS,EAAEiB,OAAO,EAAE,iBAC5B,KAACC;gBAAIC,WAAWtC,OAAOuC,IAAI;0BACxBN,kBAAkBO,GAAG,CAAC,CAACzB;oBACtB,MAAM0B,SAAS1B,EAAE2B,SAAS;oBAC1B,qBACE,KAACD;wBACCE,UAAUxB;wBAEVO,SAAS,CAACC;4BACR,IAAIZ,EAAES,IAAI,KAAK,YAAY;gCACzBb,mBAAmBI,EAAES,IAAI;4BAC3B;4BAEApB,UAAU,CAAC,CAAC,EAAE,EAAEW,EAAES,IAAI,EAAE,CAAC,CAACG;4BAC1BS;wBACF;kCAECjB,aAAaJ,EAAEiB,WAAW;uBAVtBjB,EAAES,IAAI;gBAajB;;IAGN,GAAG;QAACS;KAAkB;IAEtB,OAAO;QACLZ,iBAAiBH;QACjB0B,MAAMT;IACR;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/useMenu.tsx"],"sourcesContent":["'use client'\n\nimport { useField } from '@payloadcms/ui'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { ActionMenuItems, UseMenuEvents, UseMenuOptions } from '../../../../types.js'\n\nimport { useFieldProps } from '../../../../providers/FieldProvider/useFieldProps.js'\nimport { Compose, Proofread, Rephrase } from './items.js'\nimport { menuItemsMap } from './itemsMap.js'\nimport styles from './menu.module.scss'\n\nconst getActiveComponent = (ac) => {\n switch (ac) {\n case 'Proofread':\n return Proofread\n case 'Rephrase':\n return Rephrase\n case 'Compose':\n return Compose\n default:\n return Rephrase\n }\n}\n\nexport const useMenu = (menuEvents: UseMenuEvents, options: UseMenuOptions) => {\n const { type: fieldType, path: pathFromContext } = useFieldProps()\n const field = useField({ path: pathFromContext })\n const [activeComponent, setActiveComponent] = useState<ActionMenuItems>('Rephrase')\n\n const { initialValue, value } = field\n\n useEffect(() => {\n if (!value) {\n setActiveComponent('Compose')\n return\n }\n\n if (menuItemsMap.some((i) => i.excludedFor?.includes(fieldType))) {\n setActiveComponent('Compose')\n return\n }\n\n if (typeof value === 'string' && value !== initialValue) {\n setActiveComponent('Proofread')\n } else {\n setActiveComponent('Rephrase')\n }\n }, [initialValue, value, fieldType])\n\n const MemoizedActiveComponent = useMemo(() => {\n return ({ isLoading, stop }) => {\n const ActiveComponent = getActiveComponent(activeComponent)\n const activeItem = menuItemsMap.find((i) => i.name === activeComponent)\n return (\n <ActiveComponent\n hideIcon\n onClick={(data) => {\n if (!isLoading) {\n const trigger = menuEvents[`on${activeComponent}`]\n if (typeof trigger === 'function') {\n trigger(data)\n } else {\n console.error('No trigger found for', activeComponent)\n }\n } else {\n stop()\n }\n }}\n title={isLoading ? 'Click to stop' : activeItem.name}\n >\n {isLoading && activeItem.loadingText}\n </ActiveComponent>\n )\n }\n }, [activeComponent])\n\n const filteredMenuItems = useMemo(\n () =>\n menuItemsMap.filter((i) => {\n if (i.name === 'Settings' && !options.isConfigAllowed) return false; // Disable settings if a user role is not permitted\n return i.name !== activeComponent && !i.excludedFor?.includes(fieldType);\n }),\n [activeComponent, fieldType, options.isConfigAllowed],\n );\n\n const MemoizedMenu = useMemo(() => {\n return ({ isLoading, onClose }) => (\n <div className={styles.menu}>\n {filteredMenuItems.map((i) => {\n const Action = i.component\n return (\n <Action\n disabled={isLoading}\n key={i.name}\n onClick={(data) => {\n if (i.name !== 'Settings') {\n setActiveComponent(i.name)\n }\n\n menuEvents[`on${i.name}`]?.(data)\n onClose()\n }}\n >\n {isLoading && i.loadingText}\n </Action>\n )\n })}\n </div>\n )\n }, [filteredMenuItems])\n\n return {\n ActiveComponent: MemoizedActiveComponent,\n Menu: MemoizedMenu,\n }\n}\n"],"names":["useField","React","useEffect","useMemo","useState","useFieldProps","Compose","Proofread","Rephrase","menuItemsMap","styles","getActiveComponent","ac","useMenu","menuEvents","options","type","fieldType","path","pathFromContext","field","activeComponent","setActiveComponent","initialValue","value","some","i","excludedFor","includes","MemoizedActiveComponent","isLoading","stop","ActiveComponent","activeItem","find","name","hideIcon","onClick","data","trigger","console","error","title","loadingText","filteredMenuItems","filter","isConfigAllowed","MemoizedMenu","onClose","div","className","menu","map","Action","component","disabled","Menu"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { PluginConfig } from '../types.js';
1
+ import type { PluginConfig } from '../types.js';
2
2
  export declare const isPluginActivated: (pluginConfig: PluginConfig) => boolean;
3
3
  //# sourceMappingURL=isPluginActivated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isPluginActivated.d.ts","sourceRoot":"","sources":["../../src/utilities/isPluginActivated.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,eAAO,MAAM,iBAAiB,GAAI,cAAc,YAAY,YAE3D,CAAA"}
1
+ {"version":3,"file":"isPluginActivated.d.ts","sourceRoot":"","sources":["../../src/utilities/isPluginActivated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,eAAO,MAAM,iBAAiB,GAAI,cAAc,YAAY,YAE3D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/isPluginActivated.ts"],"sourcesContent":["import { getGenerationModels } from './getGenerationModels.js'\nimport { PluginConfig } from '../types.js'\n\nexport const isPluginActivated = (pluginConfig: PluginConfig) => {\n return getGenerationModels(pluginConfig).length > 0\n}\n"],"names":["getGenerationModels","isPluginActivated","pluginConfig","length"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,2BAA0B;AAG9D,OAAO,MAAMC,oBAAoB,CAACC;IAChC,OAAOF,oBAAoBE,cAAcC,MAAM,GAAG;AACpD,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/isPluginActivated.ts"],"sourcesContent":["import type { PluginConfig } from '../types.js'\n\nimport { getGenerationModels } from './getGenerationModels.js'\n\nexport const isPluginActivated = (pluginConfig: PluginConfig) => {\n return getGenerationModels(pluginConfig).length > 0\n}\n"],"names":["getGenerationModels","isPluginActivated","pluginConfig","length"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,2BAA0B;AAE9D,OAAO,MAAMC,oBAAoB,CAACC;IAChC,OAAOF,oBAAoBE,cAAcC,MAAM,GAAG;AACpD,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-stack/payloadcms",
3
- "version": "3.2.8-beta",
3
+ "version": "3.2.9-beta",
4
4
  "private": false,
5
5
  "bugs": "https://github.com/ashbuilds/payload-ai/issues",
6
6
  "repository": "https://github.com/ashbuilds/payload-ai",
@@ -54,6 +54,7 @@
54
54
  "@ai-sdk/ui-utils": "^0.0.27",
55
55
  "@anthropic-ai/sdk": "^0.24.3",
56
56
  "ai": "^3.3.20",
57
+ "ajv": "^8.17.1",
57
58
  "elevenlabs": "^0.8.2",
58
59
  "get-input-selection": "^1.1.4",
59
60
  "handlebars": "4.7.8",
@@ -62,8 +63,7 @@
62
63
  "lodash.isequal": "^4.5.0",
63
64
  "openai": "^4.56.1",
64
65
  "scroll-into-view-if-needed": "^3.1.0",
65
- "textarea-caret": "^3.0.2",
66
- "ajv": "^8.17.1"
66
+ "textarea-caret": "^3.0.2"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@eslint/compat": "^1.1.1",
@@ -95,12 +95,12 @@
95
95
  "typescript-eslint": "^7.18.0"
96
96
  },
97
97
  "peerDependencies": {
98
+ "@lexical/html": "^0.28.0",
98
99
  "@payloadcms/richtext-lexical": "^3.31.0",
99
100
  "@payloadcms/translations": "^3.31.0",
100
101
  "@payloadcms/ui": "^3.31.0",
101
- "payload": "^3.31.0",
102
- "@lexical/html": "^0.28.0",
103
- "lexical": "^0.28.0"
102
+ "lexical": "^0.28.0",
103
+ "payload": "^3.31.0"
104
104
  },
105
105
  "publishConfig": {
106
106
  "@ai-stack:registry": "https://registry.npmjs.org",