{"version":3,"file":"App-OUCb1msi.mjs","sources":["../../admin/src/utils/constants.ts","../../admin/src/pages/HomePage.tsx","../../admin/src/pages/App.tsx"],"sourcesContent":["export const DEFAULT_SYSTEM_PROMPT =\n  'You are a professional translator. Your task is to translate the provided content accurately while preserving the original meaning and tone.';\n\nexport const DEFAULT_LLM_TEMPERATURE = 0.3;\n\nexport const MAX_LLM_TEMPERATURE = 2;\nexport const MIN_LLM_TEMPERATURE = 0.1;\n","import {\n  Box,\n  Button,\n  Field,\n  Flex,\n  Main,\n  Typography,\n  Textarea,\n  TextInput,\n  NumberInput,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useEffect, useState } from 'react';\nimport { useFetchClient } from '@strapi/strapi/admin';\n\nimport { getTranslation } from '../utils/getTranslation';\nimport { PLUGIN_ID } from '../../src/pluginId';\nimport { PluginConfig } from '../../custom';\nimport { PluginIcon } from '../../src/components/PluginIcon';\nimport {\n  DEFAULT_LLM_TEMPERATURE,\n  DEFAULT_SYSTEM_PROMPT,\n  MAX_LLM_TEMPERATURE,\n  MIN_LLM_TEMPERATURE,\n} from '../utils/constants';\n\ninterface FormEvent extends React.FormEvent<HTMLFormElement> {\n  preventDefault(): void;\n}\n\nconst HomePage = () => {\n  const [config, setConfig] = useState({ systemPrompt: '', temperature: 0.3 });\n  const { formatMessage } = useIntl();\n  const { get, post } = useFetchClient();\n\n  useEffect(() => {\n    // Fetch current config\n    const fetchData = async () => {\n      const response = await get(`/${PLUGIN_ID}/config`);\n      setConfig({ ...config, ...response.data });\n    };\n    fetchData();\n  }, []);\n\n  const handleSubmit = async (e: FormEvent): Promise<void> => {\n    e.preventDefault();\n    await post(`/${PLUGIN_ID}/config`, { ...(config as PluginConfig) });\n  };\n\n  const handleRestore = async (): Promise<void> => {\n    setConfig({ systemPrompt: DEFAULT_SYSTEM_PROMPT, temperature: DEFAULT_LLM_TEMPERATURE });\n    await post(`/${PLUGIN_ID}/config`, {\n      systemPrompt: DEFAULT_SYSTEM_PROMPT,\n      temperature: DEFAULT_LLM_TEMPERATURE,\n    });\n  };\n\n  return (\n    <Main>\n      <Box\n        paddingLeft={10}\n        paddingRight={10}\n        paddingBottom={8}\n        paddingTop={8}\n        data-strapi-header\n        background=\"neutral100\"\n      >\n        <Flex data-strapi-header alignItems=\"center\" gap={3} marginBottom={4}>\n          <PluginIcon width={42} height={42} />{' '}\n          <Typography variant=\"alpha\" tag=\"h1\" fontWeight=\"bold\">\n            {formatMessage({\n              id: getTranslation('plugin.page.title'),\n              defaultMessage: 'LLM Translator (Configuration)',\n            })}\n          </Typography>\n        </Flex>\n        <Typography variant=\"delta\" textColor=\"neutral600\" fontWeight=\"normal\">\n          {formatMessage({\n            id: getTranslation('plugin.page.description'),\n            defaultMessage:\n              'Configure the LLM Translator plugin settings. Be aware that Base Model, API Key and LLM Base URL need to be set as environment variables.',\n          })}\n        </Typography>\n      </Box>\n\n      <Box paddingLeft={10} paddingRight={10}>\n        <Box\n          paddingLeft={10}\n          paddingRight={10}\n          paddingTop={8}\n          paddingBottom={8}\n          background=\"neutral0\"\n        >\n          <form onSubmit={handleSubmit}>\n            <Field.Root\n              id=\"system_prompt\"\n              hint={formatMessage({\n                id: getTranslation('plugin.page.form.system_prompt_hint'),\n                defaultMessage:\n                  'This is (part) of the prompt that will be used to instruct the LLM. It should be clear and concise.',\n              })}\n              required\n            >\n              <Field.Label>\n                {formatMessage({\n                  id: getTranslation('plugin.page.form.system_prompt'),\n                  defaultMessage: 'System prompt',\n                })}\n              </Field.Label>\n              <Textarea\n                id=\"system_prompt\"\n                value={config.systemPrompt as string}\n                onChange={(e: { target: { value: string } }) =>\n                  setConfig({ ...config, systemPrompt: e.target.value })\n                }\n                required\n                placeholder={DEFAULT_SYSTEM_PROMPT}\n                name=\"system_prompt\"\n              />\n              <Field.Error />\n              <Field.Hint />\n            </Field.Root>\n            <Flex gap={4} marginTop={6} flex={1}>\n              <Field.Root\n                id=\"llm_temperature\"\n                hint={formatMessage({\n                  id: getTranslation('plugin.page.form.llm_temperature_hint'),\n                  defaultMessage:\n                    'Temperature setting for the LLM. A higher value will make the output more random, while a lower value will make it more focused and deterministic.',\n                })}\n                flex={1}\n              >\n                <Field.Label>\n                  {formatMessage({\n                    id: getTranslation('plugin.page.form.llm_temperature'),\n                    defaultMessage: 'LLM Temperature',\n                  })}\n                </Field.Label>\n                <NumberInput\n                  id=\"llm_temperature\"\n                  value={config.temperature}\n                  name=\"llm_temperature\"\n                  step={0.1}\n                  min={MIN_LLM_TEMPERATURE}\n                  max={MAX_LLM_TEMPERATURE}\n                  onValueChange={(value: number | undefined) => {\n                    let tempValue = DEFAULT_LLM_TEMPERATURE;\n                    if (value === undefined) {\n                      tempValue = DEFAULT_LLM_TEMPERATURE;\n                    } else if (value < MIN_LLM_TEMPERATURE) {\n                      tempValue = MIN_LLM_TEMPERATURE;\n                    } else if (value > MAX_LLM_TEMPERATURE) {\n                      tempValue = MAX_LLM_TEMPERATURE;\n                    } else {\n                      tempValue = value;\n                    }\n\n                    setConfig({ ...config, temperature: tempValue });\n                  }}\n                />\n                <Field.Error />\n                <Field.Hint />\n              </Field.Root>\n              <Field.Root\n                id=\"llm_model\"\n                flex={1}\n                hint={formatMessage({\n                  id: getTranslation('plugin.page.form.llm_model_hint'),\n                  defaultMessage:\n                    'Model that will be used to generate the translations. It should be set as an environment variable.',\n                })}\n              >\n                <Field.Label>\n                  {formatMessage({\n                    id: getTranslation('plugin.page.form.llm_model'),\n                    defaultMessage: 'LLM Model',\n                  })}\n                </Field.Label>\n                <TextInput\n                  id=\"llm_model\"\n                  value={process.env.STRAPI_ADMIN_LLM_TRANSLATOR_LLM_MODEL as string}\n                  disabled\n                  name=\"llm_model\"\n                />\n                <Field.Error />\n                <Field.Hint />\n              </Field.Root>\n              <Field.Root\n                id=\"llm_base_url\"\n                flex={1}\n                hint={formatMessage({\n                  id: getTranslation('plugin.page.form.llm_base_url_hint'),\n                  defaultMessage:\n                    'Base URL for the LLM API. It needs to be set as an environment variable.',\n                })}\n              >\n                <Field.Label>\n                  {formatMessage({\n                    id: getTranslation('plugin.page.form.llm_base_url'),\n                    defaultMessage: 'LLM Base Url',\n                  })}\n                </Field.Label>\n                <TextInput\n                  id=\"llm_base_url\"\n                  value={process.env.STRAPI_ADMIN_LLM_TRANSLATOR_LLM_BASE_URL as string}\n                  disabled\n                  name=\"llm_base_url\"\n                />\n                <Field.Error />\n                <Field.Hint />\n              </Field.Root>\n              <Field.Root\n                id=\"llm_api_version\"\n                flex={1}\n                hint={formatMessage({\n                  id: getTranslation('plugin.page.form.llm_api_version_hint'),\n                  defaultMessage:\n                    '⚠️ Required to enable Azure OpenAI. Azure API Version for the LLM API. It needs to be set as an environment variable.',\n                })}\n              >\n                <Field.Label>\n                  {formatMessage({\n                    id: getTranslation('plugin.page.form.llm_api_version'),\n                    defaultMessage: 'LLM Azure API Version',\n                  })}\n                </Field.Label>\n                <TextInput\n                  id=\"llm_api_version\"\n                  value={process.env.STRAPI_ADMIN_LLM_TRANSLATOR_AZURE_API_VERSION as string}\n                  disabled\n                  name=\"llm_api_version\"\n                />\n                <Field.Error />\n                <Field.Hint />\n              </Field.Root>\n            </Flex>\n            <Flex gap={2} marginTop={6} justifyContent=\"flex-end\">\n              <Button variant=\"secondary\" type=\"button\" onClick={handleRestore} marginTop={4}>\n                {formatMessage({\n                  id: getTranslation('plugin.page.form.restore'),\n                  defaultMessage: 'Restore to default',\n                })}\n              </Button>\n\n              <Button variant=\"default\" type=\"submit\" marginTop={4}>\n                {formatMessage({\n                  id: getTranslation('plugin.page.form.save'),\n                  defaultMessage: 'Save',\n                })}\n              </Button>\n            </Flex>\n          </form>\n        </Box>\n      </Box>\n    </Main>\n  );\n};\n\nexport { HomePage };\n","import { Page } from '@strapi/strapi/admin';\nimport { Routes, Route } from 'react-router-dom';\n\nimport { HomePage } from './HomePage';\n\nconst App = () => {\n  return (\n    <Routes>\n      <Route index element={<HomePage />} />\n      <Route path=\"*\" element={<Page.Error />} />\n    </Routes>\n  );\n};\n\nexport { App };\n"],"names":[],"mappings":"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"}