{"version":3,"file":"index.mjs","sources":["../../admin/helpers/pluginId.ts","../../admin/helpers/getTrad.ts","../../admin/components/EditView/index.jsx","../../admin/config/constants.js","../../admin/state/reducers/Sitemap/index.js","../../admin/state/reducers/index.js","../../admin/helpers/configureStore.js","../../admin/state/actions/Sitemap.js","../../admin/helpers/getSelectedContentType.js","../../admin/components/List/Collection/Row.jsx","../../admin/components/List/Collection/index.jsx","../../admin/components/ModalForm/mapper.js","../../admin/components/ModalForm/Custom/index.jsx","../../admin/components/SelectContentTypes/index.jsx","../../admin/components/ModalForm/Collection/index.jsx","../../admin/components/ModalForm/index.jsx","../../admin/tabs/CollectionURLs/index.jsx","../../admin/components/List/Custom/Row.jsx","../../admin/components/List/Custom/index.jsx","../../admin/tabs/CustomURLs/index.jsx","../../admin/components/HostnameModal/index.jsx","../../admin/tabs/Settings/index.jsx","../../admin/components/Tabs/index.jsx","../../admin/components/Header/index.jsx","../../admin/helpers/timeFormat.js","../../admin/components/Info/index.jsx","../../admin/components/Loader/index.jsx","../../admin/containers/Main/index.jsx","../../admin/containers/App/index.jsx","../../admin/components/AdminRoute/index.tsx","../../admin/components/NavLink/index.tsx","../../admin/index.ts"],"sourcesContent":["import pluginPkg from '../../package.json';\n\n/**\n * A helper function to obtain the plugin id.\n *\n * @return {string} The plugin id.\n */\nconst pluginId: string = pluginPkg.strapi.name;\n\nexport default pluginId;\n","import pluginId from './pluginId';\n\n/**\n * A helper function to obtain a translation id.\n *\n * @return {string} The plugin id.\n */\nconst getTrad = (id: string): string => `${pluginId}.${id}`;\n\nexport default getTrad;\n","import React, { useEffect, useState } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { useCMEditViewDataManager, useFetchClient } from '@strapi/helper-plugin';\nimport { Box, Checkbox } from '@strapi/design-system';\nimport { SidebarDropdown } from '@pluginpal/webtools-helper-plugin';\n\nimport getTrad from '../../helpers/getTrad';\n\nconst CMEditViewExclude = () => {\n  const [sitemapSettings, setSitemapSettings] = useState({});\n  const { formatMessage } = useIntl();\n  const { get } = useFetchClient();\n  const { modifiedData, onChange, ...props } = useCMEditViewDataManager();\n\n  useEffect(() => {\n    const getSitemapSettings = async () => {\n      const settings = await get('/webtools-addon-sitemap/settings/');\n      setSitemapSettings(settings.data);\n    };\n\n    getSitemapSettings();\n  }, [get]);\n\n  if (!sitemapSettings.contentTypes) return null;\n  if (!sitemapSettings.contentTypes[props.slug]) return null;\n\n  return (\n    <SidebarDropdown\n      label={formatMessage({\n        id: getTrad('plugin.name'),\n        defaultMessage: 'Sitemap',\n      })}\n    >\n      <Box>\n        <Checkbox\n          onValueChange={(value) => {\n            onChange({ target: { name: 'sitemap_exclude', value } });\n          }}\n          value={modifiedData.sitemap_exclude}\n          name=\"exclude-from-sitemap\"\n        >\n          {formatMessage({ id: getTrad('EditView.ExcludeFromSitemap'), defaultMessage: 'Exclude from sitemap' })}\n        </Checkbox>\n      </Box>\n    </SidebarDropdown>\n  );\n};\n\nexport default CMEditViewExclude;\n","/**\n *\n * ConfigPage constants\n *\n */\n\nexport const __DEBUG__ = true; // TODO: set actual env.\n\nexport const SUBMIT = 'Sitemap/ConfigPage/SUBMIT';\nexport const ON_SUBMIT_SUCCEEDED = 'Sitemap/ConfigPage/ON_SUBMIT_SUCCEEDED';\nexport const SUBMIT_MODAL = 'Sitemap/ConfigPage/SUBMIT_MODAL';\nexport const DELETE_CONTENT_TYPE = 'Sitemap/ConfigPage/DELETE_CONTENT_TYPE';\nexport const DELETE_CUSTOM_ENTRY = 'Sitemap/ConfigPage/DELETE_CUSTOM_ENTRY';\nexport const ON_CHANGE_CONTENT_TYPES = 'Sitemap/ConfigPage/ON_CHANGE_CONTENT_TYPES';\nexport const GENERATE_SITEMAP = 'Sitemap/ConfigPage/GENERATE_SITEMAP';\nexport const UPDATE_SETTINGS = 'Sitemap/ConfigPage/UPDATE_SETTINGS';\nexport const ON_CHANGE_SETTINGS = 'Sitemap/ConfigPage/ON_CHANGE_SETTINGS';\nexport const DISCARD_ALL_CHANGES = 'Sitemap/ConfigPage/DISCARD_ALL_CHANGES';\nexport const DISCARD_MODIFIED_CONTENT_TYPES = 'Sitemap/ConfigPage/DISCARD_MODIFIED_CONTENT_TYPES';\nexport const GET_SETTINGS = 'Sitemap/ConfigPage/GET_SETTINGS';\nexport const GET_SETTINGS_SUCCEEDED = 'Sitemap/ConfigPage/GET_SETTINGS_SUCCEEDED';\nexport const GET_CONTENT_TYPES = 'Sitemap/ConfigPage/GET_CONTENT_TYPES';\nexport const GET_CONTENT_TYPES_SUCCEEDED = 'Sitemap/ConfigPage/GET_CONTENT_TYPES_SUCCEEDED';\nexport const GET_LANGUAGES_SUCCEEDED = 'Sitemap/ConfigPage/GET_LANGUAGES_SUCCEEDED';\nexport const HAS_SITEMAP = 'Sitemap/ConfigPage/HAS_SITEMAP';\nexport const GET_SITEMAP_INFO_SUCCEEDED = 'Sitemap/ConfigPage/GET_SITEMAP_INFO_SUCCEEDED';\nexport const ON_CHANGE_CUSTOM_ENTRY = 'Sitemap/ConfigPage/ON_CHANGE_CUSTOM_ENTRY';\nexport const GET_ALLOWED_FIELDS_SUCCEEDED = 'Sitemap/ConfigPage/GET_ALLOWED_FIELDS_SUCCEEDED';\nexport const SET_LOADING_STATE = 'Sitemap/ConfigPage/SET_LOADING_STATE';\nexport const DEFAULT_LANGUAGE_URL_TYPE_DEFAULT_LOCALE = 'default-locale';\nexport const DEFAULT_LANGUAGE_URL_TYPE_OTHER = 'other';\n","/**\n *\n * Main reducer\n *\n */\n\nimport { fromJS, Map } from 'immutable';\n\nimport {\n  GET_SETTINGS_SUCCEEDED,\n  ON_CHANGE_CONTENT_TYPES,\n  SUBMIT_MODAL,\n  GET_CONTENT_TYPES_SUCCEEDED,\n  GET_LANGUAGES_SUCCEEDED,\n  DELETE_CONTENT_TYPE,\n  DELETE_CUSTOM_ENTRY,\n  DISCARD_ALL_CHANGES,\n  DISCARD_MODIFIED_CONTENT_TYPES,\n  ON_SUBMIT_SUCCEEDED,\n  ON_CHANGE_SETTINGS,\n  UPDATE_SETTINGS,\n  GET_SITEMAP_INFO_SUCCEEDED,\n  ON_CHANGE_CUSTOM_ENTRY,\n  GET_ALLOWED_FIELDS_SUCCEEDED,\n  SET_LOADING_STATE,\n} from '../../../config/constants';\n\nconst initialState = fromJS({\n  loading: false,\n  info: {},\n  allowedFields: {},\n  settings: Map({}),\n  contentTypes: {},\n  languages: [],\n  initialData: Map({}),\n  modifiedContentTypes: Map({}),\n  modifiedCustomEntries: Map({}),\n});\n\n// eslint-disable-next-line default-param-last\nexport default function sitemapReducer(state = initialState, action) {\n  switch (action.type) {\n    case GET_SETTINGS_SUCCEEDED:\n      return state\n        .update('settings', () => fromJS(action.settings))\n        .updateIn(['settings', 'contentTypes'], () => fromJS(action.settings.get('contentTypes')))\n        .updateIn(['settings', 'customEntries'], () => fromJS(action.settings.get('customEntries')))\n        .update('initialData', () => fromJS(action.settings))\n        .updateIn(['initialData', 'contentTypes'], () => fromJS(action.settings.get('contentTypes')))\n        .updateIn(['initialData', 'customEntries'], () => fromJS(action.settings.get('customEntries')))\n        .update('modifiedContentTypes', () => fromJS(action.settings.get('contentTypes')))\n        .update('modifiedCustomEntries', () => fromJS(action.settings.get('customEntries')));\n    case UPDATE_SETTINGS:\n      return state\n        .update('modifiedContentTypes', () => fromJS(action.settings.get('contentTypes')))\n        .updateIn(['settings', 'contentTypes'], () => fromJS(action.settings.get('contentTypes')));\n    case ON_CHANGE_CONTENT_TYPES:\n      if (action.lang) {\n        return state\n          .updateIn(['modifiedContentTypes', action.contentType, 'languages', action.lang, action.key], () => action.value);\n      } else {\n        return state\n          .updateIn(['modifiedContentTypes', action.contentType, action.key], () => action.value);\n      }\n    case ON_CHANGE_CUSTOM_ENTRY:\n      return state\n        .updateIn(['modifiedCustomEntries', action.url, action.key], () => action.value);\n    case ON_CHANGE_SETTINGS:\n      return state\n        .updateIn(['settings', action.key], () => action.value);\n    case DISCARD_ALL_CHANGES:\n      return state\n        .update('settings', () => state.get('initialData'))\n        .update('modifiedContentTypes', () => state.getIn(['initialData', 'contentTypes']))\n        .update('modifiedCustomEntries', () => state.getIn(['initialData', 'customEntries']));\n    case DISCARD_MODIFIED_CONTENT_TYPES:\n      return state\n        .update('modifiedContentTypes', () => state.getIn(['settings', 'contentTypes']))\n        .update('modifiedCustomEntries', () => state.getIn(['settings', 'customEntries']));\n    case SUBMIT_MODAL:\n      return state\n        .updateIn(['settings', 'contentTypes'], () => state.get('modifiedContentTypes'))\n        .updateIn(['settings', 'customEntries'], () => state.get('modifiedCustomEntries'));\n    case DELETE_CONTENT_TYPE:\n      if (state.getIn(['settings', 'contentTypes', action.key, 'languages']).size > 1) {\n        return state\n          .deleteIn(['settings', 'contentTypes', action.key, 'languages', action.lang])\n          .deleteIn(['modifiedContentTypes', action.key, 'languages', action.lang]);\n      } else {\n        return state\n          .deleteIn(['settings', 'contentTypes', action.key])\n          .deleteIn(['modifiedContentTypes', action.key]);\n      }\n    case DELETE_CUSTOM_ENTRY:\n      return state\n        .deleteIn(['settings', 'customEntries', action.key])\n        .deleteIn(['modifiedCustomEntries', action.key]);\n    case GET_CONTENT_TYPES_SUCCEEDED:\n      return state\n        .update('contentTypes', () => action.contentTypes);\n    case GET_LANGUAGES_SUCCEEDED:\n      return state\n        .update('languages', () => action.languages);\n    case ON_SUBMIT_SUCCEEDED:\n      return state\n        .update('initialData', () => state.get('settings'));\n    case GET_SITEMAP_INFO_SUCCEEDED:\n      return state\n        .update('info', () => fromJS(action.info));\n    case GET_ALLOWED_FIELDS_SUCCEEDED:\n      return state\n        .update('allowedFields', () => action.fields);\n    case SET_LOADING_STATE:\n      return state\n        .update('loading', () => action.loading);\n    default:\n      return state;\n  }\n}\n","import { combineReducers } from 'redux-immutable';\nimport sitemapReducer from './Sitemap';\n\nconst rootReducer = combineReducers({\n  sitemap: sitemapReducer,\n});\n\nexport default rootReducer;\n","import { createStore, applyMiddleware, compose } from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { Map } from 'immutable';\n\nimport rootReducer from '../state/reducers';\nimport { __DEBUG__ } from '../config/constants';\n\nconst configureStore = () => {\n  const initialStoreState = Map();\n\n  const enhancers = [];\n  const middlewares = [\n    thunkMiddleware,\n  ];\n\n  let devtools;\n\n  if (__DEBUG__) {\n    devtools = (\n      typeof window !== 'undefined'\n      && typeof window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ === 'function'\n      && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ actionsBlacklist: [] })\n    );\n\n    if (devtools) {\n      console.info('[setup] ✓ Enabling Redux DevTools Extension');\n    }\n  }\n\n  const composedEnhancers = devtools || compose;\n  const storeEnhancers = composedEnhancers(\n    applyMiddleware(...middlewares),\n    ...enhancers,\n  );\n\n  const store = createStore(\n    rootReducer,\n    initialStoreState,\n    storeEnhancers,\n  );\n\n  return store;\n};\n\nexport default configureStore;\n\nexport const store = configureStore();\n","/**\n *\n *\n * ConfigPage actions\n *\n */\n\nimport { Map } from 'immutable';\n\nimport {\n  SUBMIT_MODAL,\n  ON_CHANGE_CONTENT_TYPES,\n  ON_CHANGE_SETTINGS,\n  GET_SETTINGS_SUCCEEDED,\n  GET_CONTENT_TYPES_SUCCEEDED,\n  GET_LANGUAGES_SUCCEEDED,\n  ON_SUBMIT_SUCCEEDED,\n  DELETE_CONTENT_TYPE,\n  DELETE_CUSTOM_ENTRY,\n  DISCARD_ALL_CHANGES,\n  DISCARD_MODIFIED_CONTENT_TYPES,\n  UPDATE_SETTINGS,\n  GET_SITEMAP_INFO_SUCCEEDED,\n  ON_CHANGE_CUSTOM_ENTRY,\n  GET_ALLOWED_FIELDS_SUCCEEDED,\n  SET_LOADING_STATE,\n} from '../../config/constants';\n\nimport getTrad from '../../helpers/getTrad';\n\n// Get initial settings\nexport function getSettings(toggleNotification, get) {\n  return async function(dispatch) {\n    try {\n      const res = await get('/webtools-addon-sitemap/settings/');\n      const settings = res.data;\n      dispatch(getSettingsSucceeded(Map(settings)));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: { id: 'notification.error' } });\n    }\n  };\n}\n\nexport function getSettingsSucceeded(settings) {\n  return {\n    type: GET_SETTINGS_SUCCEEDED,\n    settings,\n  };\n}\n\nexport function onChangeContentTypes(contentType, lang, key, value) {\n  return {\n    type: ON_CHANGE_CONTENT_TYPES,\n    contentType,\n    lang,\n    key,\n    value,\n  };\n}\n\nexport function onChangeCustomEntry(url, key, value) {\n  return {\n    type: ON_CHANGE_CUSTOM_ENTRY,\n    url,\n    key,\n    value,\n  };\n}\n\nexport function onChangeSettings(key, value) {\n  return {\n    type: ON_CHANGE_SETTINGS,\n    key,\n    value,\n  };\n}\n\nexport function discardAllChanges() {\n  return {\n    type: DISCARD_ALL_CHANGES,\n  };\n}\n\nexport function updateSettings(settings) {\n  return {\n    type: UPDATE_SETTINGS,\n    settings,\n  };\n}\n\nexport function discardModifiedContentTypes() {\n  return {\n    type: DISCARD_MODIFIED_CONTENT_TYPES,\n  };\n}\n\nexport function generateSitemap(toggleNotification, get) {\n  return async function(dispatch) {\n    try {\n      dispatch(setLoading(true));\n      const res = await get('/webtools-addon-sitemap');\n      const message = res.data.message;\n      dispatch(getSitemapInfo(toggleNotification, get));\n      toggleNotification({ type: 'success', message });\n      dispatch(setLoading(false));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: { id: 'notification.error' } });\n    }\n  };\n}\n\nexport function getContentTypes(toggleNotification, get) {\n  return async function(dispatch) {\n    try {\n      const res = await get('/webtools/info/getContentTypes');\n      const contentTypes = res.data;\n      dispatch(getContentTypesSucceeded(contentTypes));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: { id: 'notification.error' } });\n    }\n  };\n}\n\nexport function getContentTypesSucceeded(contentTypes) {\n  return {\n    type: GET_CONTENT_TYPES_SUCCEEDED,\n    contentTypes,\n  };\n}\n\nexport function getLanguages(toggleNotification, get) {\n  return async function(dispatch) {\n    try {\n      const res = await get('/webtools/info/getLanguages');\n      const languages = res.data;\n      dispatch(getLanguagesSucceeded(languages));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: { id: 'notification.error' } });\n    }\n  };\n}\n\nexport function getLanguagesSucceeded(languages) {\n  return {\n    type: GET_LANGUAGES_SUCCEEDED,\n    languages,\n  };\n}\n\nexport function submit(settings, toggleNotification, put) {\n  return async function(dispatch) {\n    try {\n      await put('/webtools-addon-sitemap/settings/', settings);\n      dispatch(onSubmitSucceeded());\n      toggleNotification({ type: 'success', message: { id: getTrad('notification.success.submit') } });\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: { id: 'notification.error' } });\n    }\n  };\n}\n\nexport function onSubmitSucceeded() {\n  return {\n    type: ON_SUBMIT_SUCCEEDED,\n  };\n}\n\nexport function submitModal() {\n  return {\n    type: SUBMIT_MODAL,\n  };\n}\n\nexport function deleteContentType(key, lang) {\n  return {\n    type: DELETE_CONTENT_TYPE,\n    key,\n    lang,\n  };\n}\n\nexport function deleteCustomEntry(key) {\n  return {\n    type: DELETE_CUSTOM_ENTRY,\n    key,\n  };\n}\n\nexport function getSitemapInfo(toggleNotification, get) {\n  return async function(dispatch) {\n    try {\n      const res = await get('/webtools-addon-sitemap/info');\n      const info = res.data;\n      dispatch(getSitemapInfoSucceeded(info));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: { id: 'notification.error' } });\n    }\n  };\n}\n\nexport function getSitemapInfoSucceeded(info) {\n  return {\n    type: GET_SITEMAP_INFO_SUCCEEDED,\n    info,\n  };\n}\n\nexport function getAllowedFields(toggleNotification, get) {\n  return async function(dispatch) {\n    try {\n      const res = await get('/webtools-addon-sitemap/pattern/allowed-fields/');\n      const fields = res.data;\n      dispatch(getAllowedFieldsSucceeded(fields));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: { id: 'notification.error' } });\n    }\n  };\n}\n\nexport function getAllowedFieldsSucceeded(fields) {\n  return {\n    type: GET_ALLOWED_FIELDS_SUCCEEDED,\n    fields,\n  };\n}\n\nexport function setLoading(loading) {\n  return {\n    type: SET_LOADING_STATE,\n    loading,\n  };\n}\n","const getSelectedContentType = (contentTypes, uid) => {\n  const selectedContentType = contentTypes.filter(\n    (type) => type.uid === uid,\n  )[0];\n\n  return selectedContentType;\n};\n\nexport default getSelectedContentType;\n","import React from 'react';\n\nimport { Pencil, Trash } from '@strapi/icons';\nimport { Box, Flex, Tr, Td, Typography, IconButton } from '@strapi/design-system';\nimport { useSelector } from 'react-redux';\nimport getSelectedContentType from '../../../helpers/getSelectedContentType';\n\nconst CustomRow = ({ openModal, entry }) => {\n  const contentTypes = useSelector((store) => store.getIn(['sitemap', 'contentTypes'], {}));\n\n  const handleEditClick = (e) => {\n    openModal(entry.name, entry.langcode);\n    e.stopPropagation();\n  };\n\n  const handleDeleteClick = (e) => {\n    entry.onDelete(entry.name, entry.langcode);\n    e.stopPropagation();\n  };\n\n  return (\n    <Tr key={entry.id}>\n      <Td>\n        <Typography variant=\"omega\" textColor=\"neutral800\">{getSelectedContentType(contentTypes, entry.name) && getSelectedContentType(contentTypes, entry.name).name}</Typography>\n      </Td>\n      <Td>\n        <Flex>\n          <Flex marginLeft=\"auto\">\n            <IconButton onClick={handleEditClick} label=\"Edit\" noBorder icon={<Pencil />} />\n            <Box paddingLeft={1}>\n              <IconButton onClick={handleDeleteClick} label=\"Delete\" noBorder icon={<Trash />} />\n            </Box>\n          </Flex>\n        </Flex>\n      </Td>\n    </Tr>\n  );\n};\n\nexport default CustomRow;\n","import React from 'react';\n\nimport { NoContent } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport {\n  Table,\n  Thead,\n  Tbody,\n  Tr,\n  Th,\n  TFooter,\n  Typography,\n  Button,\n  VisuallyHidden,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport CustomRow from './Row';\n\nconst ListComponent = (props) => {\n  const { items, openModal, onDelete } = props;\n  const formattedItems = [];\n  const { formatMessage } = useIntl();\n\n  if (!items) {\n    return null;\n  }\n\n  items.map((item, key) => {\n    item.get('languages').map((langItem, langKey) => {\n      const formattedItem = {};\n      formattedItem.name = key;\n      formattedItem.langcode = langKey;\n      formattedItem.pattern = langItem.get('pattern');\n      formattedItem.onDelete = onDelete;\n\n      formattedItems.push(formattedItem);\n    });\n  });\n\n  if (items.size === 0) {\n    return (\n      <NoContent\n        content={{ id: 'sitemap.Empty.URLBundles.Description', defaultMessage: 'No URL bundles have been configured yet.' }}\n        action={<Button onClick={() => openModal()}>{formatMessage({ id: 'sitemap.Empty.URLBundles.Button', defaultMessage: 'Add the first URL bundle' })}</Button>}\n      />\n    );\n  }\n\n  return (\n    <Table colCount={4} rowCount={formattedItems.length + 1} footer={<TFooter onClick={() => openModal()} icon={<Plus />}>{formatMessage({ id: 'sitemap.Button.AddURLBundle', defaultMessage: 'Add another URL bundle' })}</TFooter>}>\n      <Thead>\n        <Tr>\n          <Th>\n            <Typography variant=\"sigma\">Type</Typography>\n          </Th>\n          <Th>\n            <VisuallyHidden>Actions</VisuallyHidden>\n          </Th>\n        </Tr>\n      </Thead>\n      <Tbody>\n        {formattedItems.map((item) => (\n          <CustomRow key={item.name} entry={item} openModal={openModal} />\n        ))}\n      </Tbody>\n    </Table>\n  );\n};\n\nexport default ListComponent;\n","export default {\n  priority: {\n    options: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],\n    value: 0.5,\n  },\n  changefreq: {\n    options: ['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'],\n    value: 'monthly',\n  },\n};\n","import React from 'react';\n\nimport { useIntl } from 'react-intl';\n\nimport { Grid, GridItem, TextInput, Select, Option } from '@strapi/design-system';\n\nimport form from '../mapper';\n\nconst CustomForm = (props) => {\n  const { formatMessage } = useIntl();\n\n  const {\n    onChange,\n    onCancel,\n    modifiedState,\n    id,\n    uid,\n    setUid,\n  } = props;\n\n  const handleCustomChange = (e) => {\n    let contentType = e.target.value;\n\n    if (contentType.match(/^[A-Za-z0-9-_.~/]*$/)) {\n      setUid(contentType);\n    } else {\n      contentType = uid;\n    }\n\n    // Set initial values\n    onCancel(false);\n    Object.keys(form).map((input) => {\n      onChange(contentType, input, form[input].value);\n    });\n  };\n\n  return (\n    <form>\n      <Grid gap={6}>\n        <GridItem col={6} s={12}>\n          <TextInput\n            label={formatMessage({ id: 'sitemap.Settings.Field.URL.Label', defaultMessage: 'Slug' })}\n            name=\"url\"\n            value={uid}\n            hint={formatMessage({ id: 'sitemap.Settings.Field.URL.Description', defaultMessage: 'This field forces the UID type regex' })}\n            disabled={id}\n            onChange={(e) => handleCustomChange(e)}\n          />\n        </GridItem>\n        <GridItem col={6} s={12}>\n          <Grid gap={4}>\n            {Object.keys(form).map((input) => (\n              <GridItem col={12} key={input}>\n                <Select\n                  name={input}\n                  label={formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Label`, defaultMessage: input.replace(/^\\w/, (c) => c.toUpperCase()) })}\n                  hint={formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Description`, defaultMessage: '' })}\n                  disabled={!uid}\n                  onChange={(value) => onChange(uid, input, value)}\n                  value={modifiedState.getIn([uid, input], form[input].value)}\n                >\n                  {form[input].options.map((option) => (\n                    <Option value={option} key={option}>{option}</Option>\n                  ))}\n                </Select>\n              </GridItem>\n            ))}\n          </Grid>\n        </GridItem>\n      </Grid>\n    </form>\n  );\n};\n\nexport default CustomForm;\n","import React from 'react';\nimport { Select, Option } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nconst SelectContentTypes = (props) => {\n  const { formatMessage } = useIntl();\n\n  const {\n    contentTypes,\n    onChange,\n    disabled,\n    value,\n  } = props;\n\n  return (\n    <Select\n      name=\"select\"\n      label={formatMessage({ id: 'sitemap.Settings.Field.SelectContentType.Label', defaultMessage: 'Content Type' })}\n      hint={formatMessage({ id: 'sitemap.Settings.Field.SelectContentType.Description', defaultMessage: 'Select a content type.' })}\n      disabled={disabled}\n      onChange={(newValue) => onChange(newValue)}\n      value={value}\n      required\n    >\n      {contentTypes.map(({ uid, name }) => {\n        return <Option value={uid} key={uid}>{name}</Option>;\n      })}\n    </Select>\n  );\n};\n\nexport default SelectContentTypes;\n","import React from 'react';\n\nimport { useIntl } from 'react-intl';\nimport { isEmpty } from 'lodash/fp';\n\nimport {\n  Grid,\n  GridItem,\n  Select,\n  Option,\n  Checkbox,\n} from '@strapi/design-system';\n\nimport SelectContentTypes from '../../SelectContentTypes';\n\nimport form from '../mapper';\nimport getSelectedContentType from '../../../helpers/getSelectedContentType';\n\nconst CollectionForm = (props) => {\n  const { formatMessage } = useIntl();\n\n  const {\n    contentTypes,\n    onChange,\n    onCancel,\n    id,\n    modifiedState,\n    uid,\n    setUid,\n    langcode,\n    setLangcode,\n  } = props;\n\n  const handleSelectChange = (contentType, lang = 'und') => {\n    setLangcode(lang);\n    setUid(contentType);\n    onCancel(false);\n    onChange(contentType, lang, 'priority', modifiedState.getIn([contentType, 'languages', lang, 'priority'], form.priority.value));\n  };\n\n  return (\n    <form>\n      <Grid gap={6}>\n        <GridItem col={6} s={12}>\n          <Grid gap={4}>\n            <GridItem col={12}>\n              <SelectContentTypes\n                contentTypes={contentTypes}\n                onChange={(value) => handleSelectChange(value)}\n                value={uid}\n                disabled={!isEmpty(id)}\n                modifiedContentTypes={modifiedState}\n              />\n            </GridItem>\n          </Grid>\n        </GridItem>\n        <GridItem col={6} s={12}>\n          <Grid gap={4}>\n            {Object.keys(form).map((input) => (\n              <GridItem col={12} key={input}>\n                <Select\n                  name={input}\n                  label={formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Label`, defaultMessage: input.replace(/^\\w/, (c) => c.toUpperCase()) })}\n                  hint={formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Description`, defaultMessage: '' })}\n                  disabled={!uid || (getSelectedContentType(contentTypes, uid).locales && !langcode)}\n                  onChange={(value) => onChange(uid, langcode, input, value)}\n                  value={modifiedState.getIn([uid, 'languages', langcode, input], form[input].value)}\n                >\n                  {form[input].options.map((option) => (\n                    <Option value={option} key={option}>{option}</Option>\n                  ))}\n                </Select>\n              </GridItem>\n            ))}\n            <GridItem col={12}>\n              <Checkbox\n                onValueChange={(cbValue) => {\n                  onChange(uid, langcode, 'includeLastmod', cbValue);\n                }}\n                value={modifiedState.getIn([uid, 'languages', langcode, 'includeLastmod'], true)}\n                disabled={!uid || (getSelectedContentType(contentTypes, uid).locales && !langcode)}\n                hint={formatMessage({ id: 'sitemap.Settings.Field.IncludeLastmod.Description', defaultMessage: 'Adds a <lastmod> tag to all the URLs of this type.' })}\n              >\n                {formatMessage({ id: 'sitemap.Settings.Field.IncludeLastmod.Label', defaultMessage: 'Lastmod' })}\n              </Checkbox>\n            </GridItem>\n          </Grid>\n        </GridItem>\n      </Grid>\n    </form>\n  );\n};\n\nexport default CollectionForm;\n","import React, { useState, useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { InjectionZone } from '@strapi/helper-plugin';\n\nimport {\n  ModalLayout,\n  ModalFooter,\n  ModalBody,\n  ModalHeader,\n  Button,\n  Typography,\n  TabGroup,\n  Tabs,\n  Tab,\n  TabPanels,\n  TabPanel,\n  Box,\n  Flex,\n  Divider,\n} from '@strapi/design-system';\n\nimport CustomForm from './Custom';\nimport CollectionForm from './Collection';\nimport pluginId from '../../helpers/pluginId';\nimport getSelectedContentType from '../../helpers/getSelectedContentType';\n\nconst ModalForm = (props) => {\n  const [uid, setUid] = useState('');\n  const [langcode, setLangcode] = useState('und');\n  const { formatMessage } = useIntl();\n\n  const hasPro = useSelector((state) => state.getIn(['sitemap', 'info', 'hasPro'], false));\n\n  const {\n    onSubmit,\n    onCancel,\n    isOpen,\n    id,\n    lang,\n    type,\n    contentTypes,\n  } = props;\n\n  useEffect(() => {\n    if (id && !uid) {\n      setUid(id);\n    } else {\n      setUid('');\n    }\n    if (lang && langcode === 'und') {\n      setLangcode(lang);\n    } else {\n      setLangcode('und');\n    }\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen]);\n\n  if (!isOpen) {\n    return null;\n  }\n\n  const form = () => {\n    switch (type) {\n      case 'collection':\n        return <CollectionForm uid={uid} setUid={setUid} langcode={langcode} setLangcode={setLangcode} {...props} />;\n      case 'custom':\n        return <CustomForm uid={uid} setUid={setUid} {...props} />;\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <ModalLayout\n      onClose={() => onCancel()}\n      labelledBy=\"title\"\n    >\n      <ModalHeader>\n        <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n          {formatMessage({ id: 'sitemap.Modal.HeaderTitle', defaultMessage: 'Sitemap entries' })} - {type}\n        </Typography>\n      </ModalHeader>\n      <ModalBody>\n        <TabGroup label=\"Settings\" id=\"tabs\" variant=\"simple\">\n          {hasPro && (\n            <Box marginBottom=\"4\">\n              <Flex>\n                <Tabs style={{ marginLeft: 'auto' }}>\n                  <Tab>{formatMessage({ id: 'sitemap.Modal.Tabs.Basic.Title', defaultMessage: 'Basic settings' })}</Tab>\n                  <Tab>{formatMessage({ id: 'sitemap.Modal.Tabs.Advanced.Title', defaultMessage: 'Advanced settings' })}</Tab>\n                </Tabs>\n              </Flex>\n\n              <Divider />\n            </Box>\n          )}\n\n          <TabPanels>\n            <TabPanel>\n              {form()}\n            </TabPanel>\n            <TabPanel>\n              <InjectionZone\n                area={`${pluginId}.modal.advanced`}\n              />\n            </TabPanel>\n          </TabPanels>\n        </TabGroup>\n      </ModalBody>\n      <ModalFooter\n        startActions={(\n          <Button onClick={() => onCancel()} variant=\"tertiary\">\n            {formatMessage({ id: 'sitemap.Button.Cancel', defaultMessage: 'Cancel' })}\n          </Button>\n        )}\n        endActions={(\n          <Button\n            onClick={onSubmit}\n            disabled={!uid || (contentTypes && getSelectedContentType(contentTypes, uid).locales && !langcode)}\n          >\n            {formatMessage({ id: 'sitemap.Button.Save', defaultMessage: 'Save' })}\n          </Button>\n        )}\n      />\n    </ModalLayout>\n  );\n};\n\nexport default ModalForm;\n","import React, { useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Map } from 'immutable';\n\nimport { deleteContentType, discardModifiedContentTypes, onChangeContentTypes, submitModal } from '../../state/actions/Sitemap';\nimport List from '../../components/List/Collection';\nimport ModalForm from '../../components/ModalForm';\n\nconst CollectionURLs = () => {\n  const state = useSelector((store) => store.get('sitemap', Map()));\n  const dispatch = useDispatch();\n  const [modalOpen, setModalOpen] = useState(false);\n  const [uid, setUid] = useState(null);\n  const [langcode, setLangcode] = useState('und');\n\n  const handleModalSubmit = (e) => {\n    e.preventDefault();\n    dispatch(submitModal());\n    setModalOpen(false);\n    setUid(null);\n  };\n\n  const handleModalOpen = (editId, lang) => {\n    if (editId) setUid(editId);\n    if (lang) setLangcode(lang);\n    setModalOpen(true);\n  };\n\n  const handleModalClose = (closeModal = true) => {\n    if (closeModal) {\n      setModalOpen(false);\n      setUid(null);\n    }\n    dispatch(discardModifiedContentTypes());\n  };\n\n  // Loading state\n  if (!state.getIn(['settings', 'contentTypes'])) {\n    return null;\n  }\n\n  return (\n    <div>\n      <List\n        items={state.getIn(['settings', 'contentTypes'])}\n        openModal={(editId, lang) => handleModalOpen(editId, lang)}\n        onDelete={(key, lang) => dispatch(deleteContentType(key, lang))}\n      />\n      <ModalForm\n        contentTypes={state.get('contentTypes')}\n        allowedFields={state.get('allowedFields')}\n        modifiedState={state.get('modifiedContentTypes')}\n        onSubmit={(e) => handleModalSubmit(e)}\n        onCancel={(closeModal) => handleModalClose(closeModal)}\n        onChange={(contentType, lang, key, value) => dispatch(onChangeContentTypes(contentType, lang, key, value))}\n        isOpen={modalOpen}\n        id={uid}\n        lang={langcode}\n        type=\"collection\"\n      />\n    </div>\n  );\n};\n\nexport default CollectionURLs;\n","import React from 'react';\n\nimport { Pencil, Trash } from '@strapi/icons';\nimport { Box, Flex, Tr, Td, Typography, IconButton } from '@strapi/design-system';\n\nconst CustomRow = ({ openModal, entry }) => {\n  const handleEditClick = (e) => {\n    openModal(entry.name);\n    e.stopPropagation();\n  };\n\n  const handleDeleteClick = (e) => {\n    entry.onDelete(entry.name);\n    e.stopPropagation();\n  };\n\n  return (\n    <Tr key={entry.id}>\n      <Td>\n        <Typography variant=\"omega\" textColor=\"neutral800\">{entry.name}</Typography>\n      </Td>\n      <Td>\n        <Typography variant=\"omega\" textColor=\"neutral800\">{entry.priority}</Typography>\n      </Td>\n      <Td>\n        <Typography variant=\"omega\" textColor=\"neutral800\">{entry.changefreq}</Typography>\n      </Td>\n      <Td>\n        <Flex>\n          <IconButton onClick={handleEditClick} label=\"Edit\" noBorder icon={<Pencil />} />\n          <Box paddingLeft={1}>\n            <IconButton onClick={handleDeleteClick} label=\"Delete\" noBorder icon={<Trash />} />\n          </Box>\n        </Flex>\n      </Td>\n    </Tr>\n  );\n};\n\nexport default CustomRow;\n","import React from 'react';\n\nimport { NoContent } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport {\n  Table,\n  Thead,\n  Tbody,\n  Tr,\n  Th,\n  TFooter,\n  VisuallyHidden,\n  Typography,\n  Button,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport CustomRow from './Row';\n\nconst ListComponent = (props) => {\n  const { items, openModal, onDelete } = props;\n  const formattedItems = [];\n  const { formatMessage } = useIntl();\n\n  if (!items) {\n    return null;\n  }\n\n  items.map((item, key) => {\n    const formattedItem = {};\n    formattedItem.name = key;\n    formattedItem.priority = item.get('priority');\n    formattedItem.changefreq = item.get('changefreq');\n    formattedItem.onDelete = onDelete;\n\n    formattedItems.push(formattedItem);\n  });\n\n  if (items.size === 0) {\n    return (\n      <NoContent\n        content={{ id: 'sitemap.Empty.CustomURLs.Description', defaultMessage: 'No custom URLs have been configured yet.' }}\n        action={<Button onClick={() => openModal()}>{formatMessage({ id: 'sitemap.Empty.CustomURLs.Button', defaultMessage: 'Add the first URL' })}</Button>}\n      />\n    );\n  }\n\n  return (\n    <Table colCount={4} rowCount={formattedItems.length + 1} footer={<TFooter onClick={() => openModal()} icon={<Plus />}>{formatMessage({ id: 'sitemap.Button.AddCustomURL', defaultMessage: 'Add another URL' })}</TFooter>}>\n      <Thead>\n        <Tr>\n          <Th>\n            <Typography variant=\"sigma\">URL</Typography>\n          </Th>\n          <Th>\n            <Typography variant=\"sigma\">Priority</Typography>\n          </Th>\n          <Th>\n            <Typography variant=\"sigma\">ChangeFreq</Typography>\n          </Th>\n          <Th>\n            <VisuallyHidden>Actions</VisuallyHidden>\n          </Th>\n        </Tr>\n      </Thead>\n      <Tbody>\n        {formattedItems.map((item) => (\n          <CustomRow key={item.name} entry={item} openModal={openModal} />\n        ))}\n      </Tbody>\n    </Table>\n  );\n};\n\nexport default ListComponent;\n","import React, { useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Map } from 'immutable';\n\nimport { discardModifiedContentTypes, onChangeCustomEntry, submitModal, deleteCustomEntry } from '../../state/actions/Sitemap';\nimport List from '../../components/List/Custom';\nimport ModalForm from '../../components/ModalForm';\n\nconst CustomURLs = () => {\n  const state = useSelector((store) => store.get('sitemap', Map()));\n  const dispatch = useDispatch();\n  const [modalOpen, setModalOpen] = useState(false);\n  const [uid, setUid] = useState(null);\n\n  const handleModalSubmit = (e) => {\n    e.preventDefault();\n    dispatch(submitModal());\n    setModalOpen(false);\n    setUid(null);\n  };\n\n  const handleModalOpen = (editId) => {\n    if (editId) setUid(editId);\n    setModalOpen(true);\n  };\n\n  const handleModalClose = (closeModal = true) => {\n    if (closeModal) setModalOpen(false);\n    dispatch(discardModifiedContentTypes());\n    setUid(null);\n  };\n\n  // Loading state\n  if (!state.getIn(['settings', 'customEntries'])) {\n    return null;\n  }\n\n  return (\n    <div>\n      <List\n        items={state.getIn(['settings', 'customEntries'])}\n        openModal={(editId) => handleModalOpen(editId)}\n        onDelete={(key) => dispatch(deleteCustomEntry(key))}\n        prependSlash\n      />\n      <ModalForm\n        modifiedState={state.get('modifiedCustomEntries')}\n        isOpen={modalOpen}\n        id={uid}\n        onSubmit={(e) => handleModalSubmit(e)}\n        onCancel={(closeModal) => handleModalClose(closeModal)}\n        onChange={(url, key, value) => dispatch(onChangeCustomEntry(url, key, value))}\n        type=\"custom\"\n      />\n    </div>\n  );\n};\n\nexport default CustomURLs;\n","import React, { useState, useEffect } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport {\n  ModalLayout,\n  ModalFooter,\n  ModalBody,\n  ModalHeader,\n  Typography,\n  Button,\n  TextInput,\n  Grid,\n  GridItem,\n} from '@strapi/design-system';\n\nimport { isEqual } from 'lodash/fp';\n\nconst ModalForm = (props) => {\n  const { formatMessage } = useIntl();\n  const {\n    onCancel,\n    isOpen,\n    languages,\n    onSave,\n    hostnameOverrides,\n  } = props;\n\n  const [hostnames, setHostnames] = useState({});\n\n  useEffect(() => {\n    if (isOpen) {\n      setHostnames({ ...hostnameOverrides });\n    } else {\n      setHostnames({});\n    }\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen]);\n\n  if (!isOpen) {\n    return null;\n  }\n\n  return (\n    <ModalLayout\n      onClose={() => onCancel()}\n      labelledBy=\"title\"\n    >\n      <ModalHeader>\n        <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n          {formatMessage({ id: 'sitemap.HostnameOverrides.Label', defaultMessage: 'Hostname overrides' })}\n        </Typography>\n      </ModalHeader>\n      <ModalBody>\n        <Grid gap={4}>\n          {languages.map((language) => (\n            <GridItem key={language.uid} col={6} s={12}>\n              <TextInput\n                placeholder={`https://${language.uid}.strapi.io`}\n                label={`${language.name} hostname`}\n                name=\"hostname\"\n                value={hostnames[language.uid]}\n                hint={formatMessage({ id: 'sitemap.HostnameOverrides.Description', defaultMessage: 'Specify hostname per language' }, { langcode: language.uid })}\n                onChange={(e) => {\n                  if (!e.target.value) {\n                    delete hostnames[language.uid];\n                  } else {\n                    hostnames[language.uid] = e.target.value;\n                  }\n\n                  setHostnames({ ...hostnames });\n                }}\n              />\n            </GridItem>\n          ))}\n        </Grid>\n      </ModalBody>\n      <ModalFooter\n        startActions={(\n          <Button onClick={() => onCancel()} variant=\"tertiary\">\n            {formatMessage({ id: 'sitemap.Button.Cancel', defaultMessage: 'Cancel' })}\n          </Button>\n        )}\n        endActions={(\n          <Button\n            onClick={() => onSave(hostnames)}\n            disabled={isEqual(hostnames, hostnameOverrides)}\n          >\n            {formatMessage({ id: 'sitemap.Button.Save', defaultMessage: 'Save' })}\n          </Button>\n        )}\n      />\n    </ModalLayout>\n  );\n};\n\nexport default ModalForm;\n","import React, { useState } from 'react';\nimport { Map } from 'immutable';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useIntl } from 'react-intl';\n\nimport {\n  Button,\n  Typography,\n  ToggleInput,\n  Grid,\n  GridItem,\n  TextInput,\n  SingleSelect,\n  SingleSelectOption,\n  useTheme,\n} from '@strapi/design-system';\n\nimport { onChangeSettings } from '../../state/actions/Sitemap';\nimport HostnameModal from '../../components/HostnameModal';\nimport { DEFAULT_LANGUAGE_URL_TYPE_DEFAULT_LOCALE, DEFAULT_LANGUAGE_URL_TYPE_OTHER } from '../../config/constants';\n\nconst Settings = () => {\n  const { formatMessage } = useIntl();\n  const dispatch = useDispatch();\n  const [open, setOpen] = useState(false);\n  const languages = useSelector((store) => store.getIn(['sitemap', 'languages'], {}));\n  const settings = useSelector((state) => state.getIn(['sitemap', 'settings'], Map()));\n  const hostnameOverrides = useSelector((state) => state.getIn(['sitemap', 'settings', 'hostname_overrides'], {}));\n  const [inputVisible, setInputVisible] = useState(settings.get('defaultLanguageUrlType') === DEFAULT_LANGUAGE_URL_TYPE_OTHER);\n  const theme = useTheme();\n\n  const saveHostnameOverrides = (hostnames) => {\n    dispatch(onChangeSettings('hostname_overrides', hostnames));\n    setOpen(false);\n  };\n\n  const handleDefaultLanguageUrlTypeChange = (value = '') => {\n    dispatch(onChangeSettings('defaultLanguageUrlType', value));\n    if (value === DEFAULT_LANGUAGE_URL_TYPE_OTHER) dispatch(onChangeSettings('defaultLanguageUrl', undefined));\n    setInputVisible(value === DEFAULT_LANGUAGE_URL_TYPE_OTHER);\n  };\n\n  return (\n    <Grid gap={4}>\n      <GridItem col={6} s={12}>\n        <TextInput\n          placeholder=\"https://www.strapi.io\"\n          label={formatMessage({ id: 'sitemap.Settings.Field.Hostname.Label', defaultMessage: 'Hostname' })}\n          name=\"hostname\"\n          value={settings.get('hostname')}\n          hint={formatMessage({ id: 'sitemap.Settings.Field.Hostname.Description', defaultMessage: 'The URL of your website' })}\n          onChange={(e) => dispatch(onChangeSettings('hostname', e.target.value))}\n        />\n      </GridItem>\n      {languages.length > 1 && (\n        <GridItem col={12} s={12}>\n          <Typography variant=\"pi\" fontWeight=\"bold\">\n            {formatMessage({ id: 'sitemap.Settings.Field.HostnameOverrides.Label', defaultMessage: 'Hostname overrides' })}\n          </Typography>\n          <Button\n            onClick={() => setOpen(true)}\n            variant=\"tertiary\"\n            style={{ marginTop: '5px', marginBottom: '3px' }}\n          >\n            {formatMessage({ id: 'sitemap.Settings.Field.HostnameOverrides.Button', defaultMessage: 'Configure' })}\n          </Button>\n          <Typography variant=\"pi\" style={{ color: theme.colors.neutral600 }}>\n            {formatMessage({ id: 'sitemap.Settings.Field.HostnameOverrides.Description', defaultMessage: 'Specify hostname per language' })}\n          </Typography>\n          <HostnameModal\n            isOpen={open}\n            languages={languages}\n            hostnameOverrides={hostnameOverrides}\n            onSave={saveHostnameOverrides}\n            onCancel={() => setOpen(false)}\n          />\n        </GridItem>\n      )}\n      <GridItem col={12} s={12}>\n        <ToggleInput\n          hint={formatMessage({ id: 'sitemap.Settings.Field.IncludeHomepage.Description', defaultMessage: 'Include a \\'/\\' entry when none is present.' })}\n          label={formatMessage({ id: 'sitemap.Settings.Field.IncludeHomepage.Label', defaultMessage: 'Include home page' })}\n          name=\"includeHomepage\"\n          onLabel=\"on\"\n          offLabel=\"off\"\n          checked={settings.get('includeHomepage')}\n          onChange={(e) => dispatch(onChangeSettings('includeHomepage', e.target.checked))}\n        />\n      </GridItem>\n      <GridItem col={12} s={12}>\n        <ToggleInput\n          hint={formatMessage({ id: 'sitemap.Settings.Field.ExcludeDrafts.Description', defaultMessage: 'Remove all draft entries from the sitemap.' })}\n          label={formatMessage({ id: 'sitemap.Settings.Field.ExcludeDrafts.Label', defaultMessage: 'Exclude drafts' })}\n          name=\"excludeDrafts\"\n          onLabel=\"on\"\n          offLabel=\"off\"\n          checked={settings.get('excludeDrafts')}\n          onChange={(e) => dispatch(onChangeSettings('excludeDrafts', e.target.checked))}\n        />\n      </GridItem>\n      <GridItem col={6} s={12}>\n        <SingleSelect\n          hint={formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrlType.Description', defaultMessage: 'Generate a link tag and attribute hreflang=x-default with the URL of your choice.' })}\n          label={formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrlType.Label', defaultMessage: 'Default language URL type' })}\n          name=\"defaultLanguageUrlType\"\n          onLabel=\"on\"\n          offLabel=\"off\"\n          value={settings.get('defaultLanguageUrlType')}\n          onChange={handleDefaultLanguageUrlTypeChange}\n          onClear={handleDefaultLanguageUrlTypeChange}\n        >\n          <SingleSelectOption value=\"\">\n            {formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrlType.Option.Disabled', defaultMessage: 'Disabled' })}\n          </SingleSelectOption>\n          <SingleSelectOption value={DEFAULT_LANGUAGE_URL_TYPE_DEFAULT_LOCALE}>\n            {formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrlType.Option.DefaultLocale', defaultMessage: 'Default language URL of bundles (generated from default locale URL)' })}\n          </SingleSelectOption>\n          <SingleSelectOption value={DEFAULT_LANGUAGE_URL_TYPE_OTHER}>\n            {formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrlType.Option.Other', defaultMessage: 'Other' })}\n          </SingleSelectOption>\n        </SingleSelect>\n      </GridItem>\n      {inputVisible && (\n        <GridItem col={12} s={12}>\n          <TextInput\n            placeholder=\"https://www.strapi.io/language-selector\"\n            hint={formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrl.Description', defaultMessage: 'E.g. URL of your website language selector.' })}\n            label={formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrl.Label', defaultMessage: 'Custom default language URL' })}\n            name=\"defaultLanguageUrl\"\n            required\n            value={settings.get('defaultLanguageUrl')}\n            onChange={(e) => dispatch(onChangeSettings('defaultLanguageUrl', e.target.value))}\n          />\n        </GridItem>\n      )}\n    </Grid>\n  );\n};\n\nexport default Settings;\n","import React from 'react';\nimport { Tabs, Tab, TabGroup, TabPanels, TabPanel, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport CollectionURLs from '../../tabs/CollectionURLs';\nimport CustomURLs from '../../tabs/CustomURLs';\nimport Settings from '../../tabs/Settings';\n\nconst SitemapTabs = () => {\n  const { formatMessage } = useIntl();\n\n  return (\n    <Box padding={8}>\n      <TabGroup\n        id=\"tabs\"\n        label=\"Main tabs\"\n      >\n        <Tabs>\n          <Tab>{formatMessage({ id: 'sitemap.Settings.CollectionTitle', defaultMessage: 'URL bundles' })}</Tab>\n          <Tab>{formatMessage({ id: 'sitemap.Settings.CustomTitle', defaultMessage: 'Custom URLs' })}</Tab>\n          <Tab>{formatMessage({ id: 'sitemap.Settings.SettingsTitle', defaultMessage: 'Settings' })}</Tab>\n        </Tabs>\n        <TabPanels>\n          <TabPanel>\n            <CollectionURLs />\n          </TabPanel>\n          <TabPanel>\n            <CustomURLs />\n          </TabPanel>\n          <TabPanel>\n            <Box padding={6} background=\"neutral0\" shadow=\"filterShadow\">\n              <Settings />\n            </Box>\n          </TabPanel>\n        </TabPanels>\n      </TabGroup>\n    </Box>\n  );\n};\n\nexport default SitemapTabs;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Map } from 'immutable';\nimport { useIntl } from 'react-intl';\n\nimport { useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport { Box, Button, HeaderLayout } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\n\nimport { discardAllChanges, submit } from '../../state/actions/Sitemap';\n\nconst Header = () => {\n  const settings = useSelector((state) => state.getIn(['sitemap', 'settings'], Map()));\n  const initialData = useSelector((state) => state.getIn(['sitemap', 'initialData'], Map()));\n  const toggleNotification = useNotification();\n  const { put } = useFetchClient();\n\n  const dispatch = useDispatch();\n  const { formatMessage } = useIntl();\n\n  const disabled = JSON.stringify(settings) === JSON.stringify(initialData);\n\n  const handleSubmit = (e) => {\n    e.preventDefault();\n    dispatch(submit(settings.toJS(), toggleNotification, put));\n  };\n\n  const handleCancel = (e) => {\n    e.preventDefault();\n    dispatch(discardAllChanges());\n  };\n\n  return (\n    <Box background=\"neutral100\">\n      <HeaderLayout\n        primaryAction={(\n          <Box style={{ display: 'flex' }}>\n            <Button\n              onClick={handleCancel}\n              disabled={disabled}\n              type=\"cancel\"\n              size=\"L\"\n              variant=\"secondary\"\n            >\n              {formatMessage({ id: 'sitemap.Button.Cancel', defaultMessage: 'Cancel' })}\n            </Button>\n            <Button\n              style={{ marginLeft: '10px' }}\n              onClick={handleSubmit}\n              disabled={disabled}\n              type=\"submit\"\n              startIcon={<Check />}\n              size=\"L\"\n            >\n              {formatMessage({ id: 'sitemap.Button.Save', defaultMessage: 'Save' })}\n            </Button>\n          </Box>\n        )}\n        title={formatMessage({ id: 'sitemap.Header.Title', defaultMessage: 'Sitemap' })}\n        subtitle={formatMessage({ id: 'sitemap.Header.Description', defaultMessage: 'Settings for the sitemap XML' })}\n        as=\"h2\"\n      />\n    </Box>\n  );\n};\n\nexport default Header;\n","/**\n * Make a time string double digit. So make 9 in to 09.\n *\n * @param {int} number - The number.\n *\n * @returns {int} The double digit number.\n */\nconst doubleDigits = (number) => {\n  return (`0${number}`).slice(-2);\n};\n\n/**\n * Format a timestamp to hh:mm:ss.\n *\n * @param {int} timestamp - The unix timestamp.\n * @param {bool} withSeconds - Whether to include the seconds.\n *\n * @returns {string} The formatted time.\n */\nexport const formatTime = (timestamp, withSeconds = false) => {\n  const dateObj = new Date(timestamp);\n  const hours = doubleDigits(dateObj.getHours());\n  const minutes = doubleDigits(dateObj.getMinutes());\n  const seconds = doubleDigits(dateObj.getSeconds());\n\n  return `${hours}:${minutes}${withSeconds ? `:${seconds}` : ''}`;\n};\n","import React from 'react';\n\nimport { Map } from 'immutable';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\n\nimport { useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport { Typography, Box, Button, Link } from '@strapi/design-system';\n\nimport { generateSitemap } from '../../state/actions/Sitemap';\nimport { formatTime } from '../../helpers/timeFormat';\n\nconst Info = () => {\n  const hasHostname = useSelector((state) => state.getIn(['sitemap', 'initialData', 'hostname'], Map()));\n  const sitemapInfo = useSelector((state) => state.getIn(['sitemap', 'info'], Map()));\n  const dispatch = useDispatch();\n  const toggleNotification = useNotification();\n  const { get } = useFetchClient();\n  const { formatMessage } = useIntl();\n\n  const updateDate = new Date(sitemapInfo.get('updateTime'));\n\n  // Format month, day and time.\n  const month = updateDate.toLocaleString('en', { month: 'numeric' });\n  const day = updateDate.toLocaleString('en', { day: 'numeric' });\n  const year = updateDate.getFullYear().toString().slice(2);\n  const time = formatTime(updateDate, true);\n\n  const content = () => {\n    if (!hasHostname) {\n      return (\n        <div>\n          <Typography variant=\"delta\" style={{ marginBottom: '10px' }}>\n            {formatMessage({ id: 'sitemap.Info.NoHostname.Title', defaultMessage: 'Set your hostname' })}\n          </Typography>\n          <div>\n            <Typography variant=\"omega\">\n              {formatMessage({ id: 'sitemap.Info.NoHostname.Description', defaultMessage: 'Before you can generate the sitemap you have to specify the hostname of your website.' })}\n            </Typography>\n            <Button\n              onClick={() => {\n                document.getElementById('tabs-2-tab').click();\n                setTimeout(() => document.querySelector('input[name=\"hostname\"]').focus(), 0);\n              }}\n              variant=\"secondary\"\n              style={{ marginTop: '15px' }}\n            >\n              {formatMessage({ id: 'sitemap.Header.Button.GoToSettings', defaultMessage: 'Go to settings' })}\n            </Button>\n          </div>\n        </div>\n      );\n    } else if (sitemapInfo.size === 0) {\n      return (\n        <div>\n          <Typography variant=\"delta\" style={{ marginBottom: '10px' }}>\n            {formatMessage({ id: 'sitemap.Info.NoSitemap.Title', defaultMessage: 'No sitemap XML present' })}\n          </Typography>\n          <div>\n            <Typography variant=\"omega\">\n              {formatMessage({ id: 'sitemap.Info.NoSitemap.Description', defaultMessage: 'Generate your first sitemap XML with the button below.' })}\n            </Typography>\n            <Button\n              onClick={() => dispatch(generateSitemap(toggleNotification, get))}\n              variant=\"secondary\"\n              style={{ marginTop: '15px' }}\n            >\n              {formatMessage({ id: 'sitemap.Header.Button.Generate', defaultMessage: 'Generate sitemap' })}\n            </Button>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          <Typography variant=\"delta\" style={{ marginBottom: '10px' }}>\n            {formatMessage({ id: 'sitemap.Info.SitemapIsPresent.Title', defaultMessage: 'Sitemap XML is present' })}\n          </Typography>\n          <div>\n            <Typography variant=\"omega\">\n              {formatMessage({ id: 'sitemap.Info.SitemapIsPresent.LastUpdatedAt', defaultMessage: 'Last updated at:' })}\n            </Typography>\n            <Typography variant=\"omega\" fontWeight=\"bold\" style={{ marginLeft: '5px' }}>\n              {`${month}/${day}/${year} - ${time}`}\n            </Typography>\n          </div>\n          {sitemapInfo.get('sitemaps') === 0 ? (\n            <div style={{ marginBottom: '15px' }}>\n              <Typography variant=\"omega\">\n                {formatMessage({ id: 'sitemap.Info.SitemapIsPresent.AmountOfURLs', defaultMessage: 'Amount of URLs:' })}\n              </Typography>\n              <Typography variant=\"omega\" fontWeight=\"bold\" style={{ marginLeft: '5px' }}>\n                {sitemapInfo.get('urls')}\n              </Typography>\n            </div>\n          ) : (\n            <div style={{ marginBottom: '15px' }}>\n              <Typography variant=\"omega\">\n                {formatMessage({ id: 'sitemap.Info.SitemapIsPresent.AmountOfSitemaps', defaultMessage: 'Amount of URLs:' })}\n              </Typography>\n              <Typography variant=\"omega\" fontWeight=\"bold\" style={{ marginLeft: '5px' }}>\n                {sitemapInfo.get('sitemaps')}\n              </Typography>\n            </div>\n          )}\n          <div style={{ display: 'flex', flexDirection: 'row' }}>\n            <Button\n              onClick={() => dispatch(generateSitemap(toggleNotification, get))}\n              variant=\"secondary\"\n              style={{ marginRight: '10px' }}\n            >\n              {formatMessage({ id: 'sitemap.Header.Button.Generate', defaultMessage: 'Generate sitemap' })}\n            </Button>\n            <Link\n              href={`${strapi.backendURL}${sitemapInfo.get('location')}`}\n              target=\"_blank\"\n            >\n              {formatMessage({ id: 'sitemap.Header.Button.SitemapLink', defaultMessage: 'Go to the sitemap' })}\n            </Link>\n          </div>\n        </div>\n      );\n    }\n  };\n\n  return (\n    <Box paddingLeft={8} paddingRight={8}>\n      <Box\n        background=\"neutral0\"\n        hasRadius\n        paddingTop={4}\n        paddingBottom={4}\n        paddingLeft={5}\n        paddingRight={5}\n        shadow=\"filterShadow\"\n      >\n        {content()}\n      </Box>\n    </Box>\n  );\n};\n\nexport default Info;\n","import * as React from 'react';\nimport { Loader as LoaderComponent } from '@strapi/design-system';\n\nconst Loader = () => {\n  const style = {\n    display: 'flex',\n    justifyContent: 'center',\n    position: 'absolute',\n    height: '100%',\n    width: '100%',\n    backgroundColor: 'rgba(255,255,255, 0.6)',\n    zIndex: 1,\n    alignItems: 'center',\n  };\n\n  return (\n    <div style={style}>\n      <LoaderComponent>Loading content...</LoaderComponent>\n    </div>\n  );\n};\n\nexport default Loader;\n","/**\n *\n * This component is the skeleton around the actual pages, and should only\n * contain code that should be seen on all pages. (e.g. navigation bar)\n *\n */\n\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useFetchClient, useNotification } from '@strapi/helper-plugin';\n\nimport Tabs from '../../components/Tabs';\nimport Header from '../../components/Header';\nimport Info from '../../components/Info';\n\nimport { getContentTypes, getSettings, getSitemapInfo, getLanguages } from '../../state/actions/Sitemap';\nimport Loader from '../../components/Loader';\n\nconst App = () => {\n  const loading = useSelector((state) => state.getIn(['sitemap', 'loading'], false));\n\n  const dispatch = useDispatch();\n  const toggleNotification = useNotification();\n  const { get } = useFetchClient();\n\n  useEffect(() => {\n    dispatch(getSettings(toggleNotification, get));\n    dispatch(getLanguages(toggleNotification, get));\n    dispatch(getContentTypes(toggleNotification, get));\n    dispatch(getSitemapInfo(toggleNotification, get));\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [dispatch]);\n\n  return (\n    <div style={{ position: 'relative' }}>\n      {loading && <Loader fullPage />}\n      <Header />\n      <Info />\n      <Tabs />\n    </div>\n  );\n};\n\nexport default App;\n","/**\n *\n * This component is the skeleton around the actual pages, and should only\n * contain code that should be seen on all pages. (e.g. navigation bar)\n *\n */\n\nimport React from 'react';\nimport { Provider } from 'react-redux';\n// import { CheckPagePermissions } from '@strapi/helper-plugin';\n\nimport { store } from '../../helpers/configureStore';\n// import pluginPermissions from '../../permissions';\nimport Main from '../Main';\n\nconst App = () => {\n  return (\n    <Provider store={store}>\n      <Main />\n    </Provider>\n  );\n};\n\nexport default App;\n","import * as React from 'react';\nimport { Route } from 'react-router-dom';\nimport App from '../../containers/App';\n\nconst AdminRoute = () => {\n  return (\n    <Route\n      path=\"/plugins/webtools/sitemap\"\n      component={App}\n    />\n  );\n};\n\nexport default AdminRoute;\n","import * as React from 'react';\n\nimport {\n  SubNavLink,\n} from '@strapi/design-system';\n\nconst NavLink = () => {\n  return (\n    <SubNavLink to=\"/plugins/webtools/sitemap\" active key=\"test\">\n      Sitemap\n    </SubNavLink>\n  );\n};\n\nexport default NavLink;\n","import { prefixPluginTranslations } from '@strapi/helper-plugin';\nimport { AdminApp } from '@pluginpal/webtools-helper-plugin';\nimport pluginPkg from '../package.json';\nimport pluginId from './helpers/pluginId';\nimport EditView from './components/EditView';\nimport AdminRoute from './components/AdminRoute';\nimport NavLink from './components/NavLink';\n\nconst pluginDescription = pluginPkg.strapi.description || pluginPkg.description;\nconst { name } = pluginPkg.strapi;\n\nexport default {\n  register(app: AdminApp) {\n    app.registerPlugin({\n      description: pluginDescription,\n      id: pluginId,\n      isReady: true,\n      isRequired: pluginPkg.strapi.required || false,\n      name,\n    });\n  },\n  bootstrap(app: AdminApp) {\n    app.injectContentManagerComponent('editView', 'right-links', {\n      name: 'sitemap-edit-view',\n      Component: EditView,\n    });\n\n    app.getPlugin('webtools').injectComponent('webtoolsSidebar', 'link', {\n      name: 'navigation-link',\n      Component: NavLink,\n    });\n\n    app.getPlugin('webtools').injectComponent('webtoolsRouter', 'route', {\n      name: 'settings-route',\n      Component: AdminRoute,\n    });\n  },\n  async registerTrads({ locales }: { locales: string[] }) {\n    const importedTrads = await Promise.all(\n      locales.map((locale) => {\n        return import(\n          /* webpackChunkName: \"url-alias-translation-[request]\" */ `./translations/${locale}.json`\n        )\n          .then(({ default: data }) => {\n            return {\n              // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n              data: prefixPluginTranslations(data, pluginId),\n              locale,\n            };\n          })\n          .catch(() => {\n            return {\n              data: {},\n              locale,\n            };\n          });\n      }),\n    );\n\n    return Promise.resolve(importedTrads);\n  },\n};\n"],"names":["store","CustomRow","ListComponent","name","ModalForm","form","List","HostnameModal","LoaderComponent","App","Tabs","Main","EditView"],"mappings":"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"}