{"version":3,"file":"Settings-RQmfVii2.mjs","sources":["../../admin/src/components/Settings/index.tsx","../../admin/src/pages/Settings.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n    Loader,\n    TextInput,\n    Box,\n    Button,\n    Link,\n    Grid,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport useConfig from '../../hooks/useConfig';\nimport { Config, UpdateConfig } from '../../../../types';\nimport { Layouts, Page, useAuth } from '@strapi/strapi/admin';\n\nexport default function Settings() {\n    const [saveConfig, setSaveConfig] = useState<UpdateConfig | undefined>();\n\n    const [inputFields, setInputFields] = useState<UpdateConfig | undefined>();\n\n    const [unsavedChanges, setUnsavedChanges] = useState(false);\n    const token = useAuth('ConfigurationProvider', (state) => state.token);\n    const config = useConfig(token ?? '', saveConfig);\n\n    useEffect(() => {\n        if (!!config) {\n            setInputFields(config);\n        }\n    }, [config]);\n\n    useEffect(() => {\n        if (!inputFields || !config) return;\n\n        const inputFieldChanged = Object.entries(inputFields).some(\n            ([key, value]) => value !== config[key as keyof Config]\n        );\n\n        setUnsavedChanges(inputFieldChanged);\n    }, [inputFields]);\n\n    const onSave = () => {\n        setUnsavedChanges(false);\n\n        setSaveConfig(inputFields);\n    };\n\n    return (\n\n        <Page.Main aria-busy={config === undefined}>\n            <Layouts.Header\n                primaryAction={\n                    <Button\n                        startIcon={<Check />}\n                        loading={config === undefined}\n                        disabled={!unsavedChanges}\n                        onClick={onSave}\n                    >\n                        Save\n                    </Button>\n                }\n                title='Google Maps Configuration'\n                subtitle='Configure your Google Maps API key and other settings'\n            />\n\n            <Layouts.Content>\n                {config === null ? (\n                    <Page.Error />\n                ) : config === undefined || !inputFields ? (\n                    <div style={{ display: 'flex', justifyContent: 'center' }}>\n                        <Loader />\n                    </div>\n                ) : (\n                    <Box\n                        shadow='tableShadow'\n                        background='neutral0'\n                        paddingTop={6}\n                        paddingLeft={7}\n                        paddingRight={7}\n                        paddingBottom={6}\n                        hasRadius\n                    >\n                        <TextInput\n                            type='password'\n                            id='apiKey'\n                            name='apiKey'\n                            placeholder='Paste your Google Maps API key here'\n                            label='API Key'\n                            value={inputFields.googleMapsKey}\n                            onChange={(e: any) => {\n                                setInputFields({\n                                    ...inputFields,\n                                    googleMapsKey: e.target.value,\n                                });\n                            }}\n                        />\n\n                        <Grid.Root>\n                            <Grid.Item col={5} padding={2}>\n                                <Link\n                                    href='https://developers.google.com/maps/documentation/javascript/cloud-setup'\n                                    isExternal\n                                >\n                                    Get your Google Maps API key\n                                </Link>\n                            </Grid.Item>\n\n                            <Grid.Item col={5} padding={2}>\n                                <Link\n                                    href='https://developers.google.com/maps/documentation/javascript/places'\n                                    isExternal\n                                >\n                                    Grant your API key access to the Google Places API\n                                </Link>\n                            </Grid.Item>\n                        </Grid.Root>\n                    </Box>\n                )}\n            </Layouts.Content>\n        </Page.Main>\n    );\n}","/*\n *\n * SettingsPage\n *\n */\n\nimport React from 'react';\nimport { Page } from '@strapi/strapi/admin';\nimport { PLUGIN_ID } from '../pluginId';\nimport Settings from '../components/Settings';\n\nconst permissions = [{ action: `plugin::${PLUGIN_ID}.config`, subject: null }];\n\nconst SettingsPage = () => {\n    return (\n        <Page.Protect permissions={permissions}>\n            <Settings />\n        </Page.Protect>\n    );\n};\n\nexport default SettingsPage;"],"names":[],"mappings":"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"}