{"version":3,"file":"index.mjs","sources":["../../admin/helpers/pluginId.js","../../admin/components/EditView/index.jsx","../../admin/helpers/prefixPluginTranslations.js","../../admin/config/constants.js","../../admin/state/reducers/Sitemap/index.js","../../admin/state/reducers/index.js","../../admin/helpers/configureStore.js","../../admin/containers/Providers/index.jsx","../../admin/helpers/getTrad.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/components/Info/index.jsx","../../admin/components/Loader/index.jsx","../../admin/containers/Settings/index.jsx","../../admin/screens/Settings/index.jsx","../../admin/components/DeleteConfirmModal/index.jsx","../../admin/containers/Overview/components/TableRow/index.jsx","../../admin/containers/Overview/components/Table/index.jsx","../../admin/components/NewSitemapModal/index.jsx","../../admin/containers/Overview/index.jsx","../../admin/screens/Overview/index.jsx","../../admin/index.js"],"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 = pluginPkg.strapi.name;\n\nexport default pluginId;\n","import React, { useEffect, useState } from 'react';\n\nimport { Button } from '@strapi/design-system';\nimport { CheckCircle, CrossCircle } from '@strapi/icons';\nimport { unstable_useContentManagerContext, getFetchClient, unstable_useDocument } from '@strapi/strapi/admin';\n\nconst CMEditViewExclude = () => {\n  const [sitemapSettings, setSitemapSettings] = useState({});\n  const { get } = getFetchClient();\n  const { form, model, collectionType, id, ...props } = unstable_useContentManagerContext();\n  const urlParams = new URLSearchParams(window.location.search);\n  const locale = urlParams.get('plugins[i18n][locale]');\n\n  const { document } = unstable_useDocument({\n    model,\n    collectionType,\n    documentId: id,\n    params: {\n      ...(locale ? { locale } : {}),\n    },\n  });\n  const { values, onChange } = form;\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  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const isContentTypeInAnySitemap = () => {\n    if (!sitemapSettings.sitemaps) return false;\n\n    return Object.values(sitemapSettings.sitemaps).some(\n      (sitemap) => sitemap.contentTypes && sitemap.contentTypes[props.slug],\n    );\n  };\n\n  if (!isContentTypeInAnySitemap()) return null;\n\n  const excluded = 'sitemap_exclude' in values ? values.sitemap_exclude : document?.sitemap_exclude;\n\n  return (\n    <Button\n      size=\"S\"\n      width=\"100%\"\n      variant={excluded ? 'tertiary' : 'secondary'}\n      startIcon={excluded ? <CrossCircle /> : <CheckCircle />}\n      onClick={() => {\n        onChange('sitemap_exclude', !excluded);\n      }}\n    >\n      {excluded ? 'Excluded from ' : 'Included in '} Sitemap\n    </Button>\n  );\n};\n\nexport default CMEditViewExclude;\n","const prefixPluginTranslations = (trad, pluginId) => {\n  if (!pluginId) {\n    throw new TypeError('pluginId can not be empty');\n  }\n  return Object.keys(trad).reduce((acc, current) => {\n    acc[`${pluginId}.${current}`] = trad[current];\n    return acc;\n  }, {});\n};\n\nexport { prefixPluginTranslations };\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 DELETE_SITEMAP = 'Sitemap/ConfigPage/DELETE_SITEMAP';\nexport const GET_SETTINGS = 'Sitemap/ConfigPage/GET_SETTINGS';\nexport const GET_SETTINGS_SUCCEEDED = 'Sitemap/ConfigPage/GET_SETTINGS_SUCCEEDED';\nexport const PREPARE_SETTINGS_FORM = 'Sitemap/ConfigPage/PREPARE_SETTINGS_FORM';\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 GET_SITEMAPS_SUCCEEDED = 'Sitemap/OverviewPage/GET_SITEMAPS_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  GET_SITEMAPS_SUCCEEDED,\n  PREPARE_SETTINGS_FORM,\n} from '../../../config/constants';\n\nconst initialState = fromJS({\n  loading: false,\n  info: {},\n  sitemaps: [],\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, @typescript-eslint/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    case PREPARE_SETTINGS_FORM:\n      return state\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      }\n      return state\n        .updateIn(['modifiedContentTypes', action.contentType, action.key], () => action.value);\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', 'sitemaps', action.id, action.key], () => fromJS(action.value));\n    case DISCARD_ALL_CHANGES:\n      return state\n        .updateIn(['settings', 'sitemaps', action.id], () => 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', 'sitemaps', action.id, 'contentTypes']))\n        .update('modifiedCustomEntries', () => state.getIn(['settings', 'sitemaps', action.id, 'customEntries']));\n    case SUBMIT_MODAL:\n      return state\n        .updateIn(['settings', 'sitemaps', action.id, 'contentTypes'], () => state.get('modifiedContentTypes'))\n        .updateIn(['settings', 'sitemaps', action.id, 'customEntries'], () => state.get('modifiedCustomEntries'));\n    case DELETE_CONTENT_TYPE:\n      if (state.getIn(['settings', 'sitemaps', action.id, 'contentTypes', action.key, 'languages']).size > 1) {\n        return state\n          .deleteIn(['settings', 'sitemaps', action.id, 'contentTypes', action.key, 'languages', action.lang])\n          .deleteIn(['modifiedContentTypes', action.key, 'languages', action.lang]);\n      }\n      return state\n        .deleteIn(['settings', 'sitemaps', action.id, 'contentTypes', action.key])\n        .deleteIn(['modifiedContentTypes', action.key]);\n    case DELETE_CUSTOM_ENTRY:\n      return state\n        .deleteIn(['settings', 'sitemaps', action.id, '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 GET_SITEMAPS_SUCCEEDED:\n      return state\n        .update('sitemaps', () => fromJS(action.sitemaps));\n    case ON_SUBMIT_SUCCEEDED:\n      return state\n        .update('initialData', () => state.getIn(['settings', 'sitemaps', action.id]));\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 * 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';\n\nconst Providers = ({ children }) => {\n  return (\n    <Provider store={store}>\n      {children}\n    </Provider>\n  );\n};\n\nexport default Providers;\n","import pluginId from './pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n","/**\n *\n *\n * ConfigPage actions\n *\n */\n\nimport { fromJS } 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  GET_SITEMAPS_SUCCEEDED,\n  PREPARE_SETTINGS_FORM,\n} from '../../config/constants';\n\nimport getTrad from '../../helpers/getTrad';\n\n\n// Get initial settings\nexport function getSettings(toggleNotification, formatMessage, get, id) {\n  return async function(dispatch) {\n    try {\n      const res = await get('/webtools-addon-sitemap/settings');\n      const settings = res.data;\n      dispatch(getSettingsSucceeded(fromJS(settings)));\n      if (id) {\n        dispatch(prepareSettingsForm(fromJS(settings.sitemaps[id])));\n      }\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: formatMessage({ 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 prepareSettingsForm(settings) {\n  return {\n    type: PREPARE_SETTINGS_FORM,\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(id, key, value) {\n  return {\n    type: ON_CHANGE_SETTINGS,\n    id,\n    key,\n    value,\n  };\n}\n\nexport function discardAllChanges(id) {\n  return {\n    type: DISCARD_ALL_CHANGES,\n    id,\n  };\n}\n\nexport function updateSettings(settings) {\n  return {\n    type: UPDATE_SETTINGS,\n    settings,\n  };\n}\n\nexport function discardModifiedContentTypes(id) {\n  return {\n    type: DISCARD_MODIFIED_CONTENT_TYPES,\n    id,\n  };\n}\n\nexport function deleteSitemap(id, del, get, toggleNotification, formatMessage) {\n  return async function(dispatch) {\n    try {\n      dispatch(setLoading(true));\n      await del(`/webtools-addon-sitemap/${id}`);\n      dispatch(getSettings(toggleNotification, formatMessage, get));\n      toggleNotification({ type: 'success', message: formatMessage({ id: getTrad('notification.success.delete'), defaultMessage: 'Sitemap deleted successfully' }) });\n      dispatch(setLoading(false));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: formatMessage({ id: 'notification.error' }) });\n    }\n  };\n}\n\nexport function generateSitemap(id, toggleNotification, formatMessage, get) {\n  return async function(dispatch) {\n    try {\n      dispatch(setLoading(true));\n      const res = await get(`/webtools-addon-sitemap/build-sitemap/${id}`);\n      const message = res.data.message;\n      dispatch(getSitemapInfo(id, toggleNotification, formatMessage, get));\n      toggleNotification({ type: 'success', message });\n      dispatch(setLoading(false));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: formatMessage({ id: 'notification.error' }) });\n    }\n  };\n}\n\nexport function getContentTypes(toggleNotification, formatMessage, 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: formatMessage({ 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, formatMessage, 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: formatMessage({ 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(id, settings, toggleNotification, formatMessage, put) {\n  return async function(dispatch) {\n    try {\n      await put(`/webtools-addon-sitemap/settings/${id}`, settings);\n      dispatch(onSubmitSucceeded(id));\n      toggleNotification({ type: 'success', message: formatMessage({ id: getTrad('notification.success.submit') }) });\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: formatMessage({ id: 'notification.error' }) });\n    }\n  };\n}\n\nexport function onSubmitSucceeded(id) {\n  return {\n    type: ON_SUBMIT_SUCCEEDED,\n    id,\n  };\n}\n\nexport function submitModal(id) {\n  return {\n    type: SUBMIT_MODAL,\n    id,\n  };\n}\n\nexport function deleteContentType(id, key, lang) {\n  return {\n    type: DELETE_CONTENT_TYPE,\n    id,\n    key,\n    lang,\n  };\n}\n\nexport function deleteCustomEntry(id, key) {\n  return {\n    type: DELETE_CUSTOM_ENTRY,\n    id,\n    key,\n  };\n}\n\nexport function getSitemapInfo(id, toggleNotification, formatMessage, get) {\n  return async function(dispatch) {\n    try {\n      const res = await get(`/webtools-addon-sitemap/info/${id}`);\n      const info = res.data;\n      dispatch(getSitemapInfoSucceeded(info));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: formatMessage({ 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 getSitemaps(toggleNotification, formatMessage, get) {\n  return async function(dispatch) {\n    try {\n      const res = await get('/webtools-addon-sitemap/sitemaps');\n      const sitemaps = res.data;\n      dispatch(getSitemapsSucceeded(sitemaps));\n    } catch (err) {\n      toggleNotification({ type: 'warning', message: formatMessage({ id: 'notification.error' }) });\n    }\n  };\n}\n\nexport function getSitemapsSucceeded(sitemaps) {\n  return {\n    type: GET_SITEMAPS_SUCCEEDED,\n    sitemaps,\n  };\n}\n\nexport function getAllowedFields(toggleNotification, formatMessage, 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: formatMessage({ 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 {\n  Box,\n  Flex,\n  Tr,\n  Td,\n  Typography,\n  IconButton,\n} 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\n              onClick={handleEditClick}\n              label=\"Edit\"\n            >\n              <Pencil />\n            </IconButton>\n            <Box paddingLeft={1}>\n              <IconButton\n                onClick={handleDeleteClick}\n                label=\"Delete\"\n              >\n                <Trash />\n              </IconButton>\n            </Box>\n          </Flex>\n        </Flex>\n      </Td>\n    </Tr>\n  );\n};\n\nexport default CustomRow;\n","import React from 'react';\n\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  EmptyStateLayout,\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.forEach((item, key) => {\n    item.get('languages').forEach((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      <EmptyStateLayout\n        content={formatMessage({ 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 {\n  Grid,\n  TextInput,\n  SingleSelect,\n  SingleSelectOption,\n  Field,\n} 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).forEach((input) => {\n      onChange(contentType, input, form[input].value);\n    });\n  };\n\n  return (\n    <form>\n      <Grid.Root gap={6}>\n        <Grid.Item col={6} s={12} alignItems=\"flex-start\">\n          <Field.Root\n            width=\"100%\"\n            hint={formatMessage({ id: 'sitemap.Settings.Field.URL.Description', defaultMessage: 'This field forces the UID type regex' })}\n          >\n            <Field.Label>\n              {formatMessage({ id: 'sitemap.Settings.Field.URL.Label', defaultMessage: 'Slug' })}\n            </Field.Label>\n            <TextInput\n              name=\"url\"\n              value={uid}\n              disabled={id}\n              onChange={(e) => handleCustomChange(e)}\n            />\n            <Field.Hint />\n          </Field.Root>\n        </Grid.Item>\n        <Grid.Item col={6} s={12}>\n          <Grid.Root gap={4} width=\"100%\">\n            {Object.keys(form).map((input) => (\n              <Grid.Item col={12} key={input} width=\"100%\">\n                <Field.Root\n                  width=\"100%\"\n                  hint={formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Description`, defaultMessage: '' })}\n                >\n                  <Field.Label>\n                    {formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Label`, defaultMessage: input.replace(/^\\w/, (c) => c.toUpperCase()) })}\n                  </Field.Label>\n                  <SingleSelect\n                    name={input}\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                      <SingleSelectOption value={option} key={option}>{option}</SingleSelectOption>\n                    ))}\n                  </SingleSelect>\n                  <Field.Hint />\n                </Field.Root>\n              </Grid.Item>\n            ))}\n          </Grid.Root>\n        </Grid.Item>\n      </Grid.Root>\n    </form>\n  );\n};\n\nexport default CustomForm;\n","import React from 'react';\nimport { SingleSelectOption, SingleSelect, Field } 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    <Field.Root\n      width=\"100%\"\n      hint={formatMessage({ id: 'sitemap.Settings.Field.SelectContentType.Description', defaultMessage: 'Select a content type.' })}\n    >\n      <Field.Label>\n        {formatMessage({ id: 'sitemap.Settings.Field.SelectContentType.Label', defaultMessage: 'Content Type' })}\n      </Field.Label>\n      <SingleSelect\n        name=\"select\"\n        disabled={disabled}\n        onChange={(newValue) => onChange(newValue)}\n        value={value}\n        required\n      >\n        {contentTypes.map(({ uid, name }) => {\n          return <SingleSelectOption value={uid} key={uid}>{name}</SingleSelectOption>;\n        })}\n      </SingleSelect>\n      <Field.Hint />\n    </Field.Root>\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  SingleSelect,\n  Checkbox,\n  Field,\n  SingleSelectOption,\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.Root gap={6}>\n        <Grid.Item col={6} s={12} alignItems=\"flex-start\">\n          <SelectContentTypes\n            contentTypes={contentTypes}\n            onChange={(value) => handleSelectChange(value)}\n            value={uid}\n            disabled={!isEmpty(id)}\n            modifiedContentTypes={modifiedState}\n          />\n        </Grid.Item>\n        <Grid.Item col={6} s={12}>\n          <Grid.Root gap={4}>\n            {Object.keys(form).map((input) => (\n              <Grid.Item col={12} key={input}>\n                <Field.Root\n                  width=\"100%\"\n                  hint={formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Description`, defaultMessage: '' })}\n                >\n                  <Field.Label>{formatMessage({ id: `sitemap.Settings.Field.${input.replace(/^\\w/, (c) => c.toUpperCase())}.Label`, defaultMessage: input.replace(/^\\w/, (c) => c.toUpperCase()) })}</Field.Label>\n                  <SingleSelect\n                    name={input}\n                    disabled={\n                      !uid || (getSelectedContentType(contentTypes, uid).locales && !langcode)\n                    }\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                      <SingleSelectOption value={option} key={option}>{option}</SingleSelectOption>\n                    ))}\n                  </SingleSelect>\n                  <Field.Hint />\n                </Field.Root>\n              </Grid.Item>\n            ))}\n            <Grid.Item col={12}>\n              <Field.Root\n                hint={formatMessage({ id: 'sitemap.Settings.Field.IncludeLastmod.Description', defaultMessage: 'Adds a <lastmod> tag to all the URLs of this type.' })}\n              >\n                <Checkbox\n                  onCheckedChange={(cbValue) => {\n                    onChange(uid, langcode, 'includeLastmod', cbValue);\n                  }}\n                  checked={modifiedState.getIn([uid, 'languages', langcode, 'includeLastmod'], true)}\n                  disabled={\n                    !uid || (getSelectedContentType(contentTypes, uid).locales && !langcode)\n                  }\n                >\n                  {formatMessage({ id: 'sitemap.Settings.Field.IncludeLastmod.Label', defaultMessage: 'Lastmod' })}\n                </Checkbox>\n                <Field.Hint />\n              </Field.Root>\n            </Grid.Item>\n          </Grid.Root>\n        </Grid.Item>\n      </Grid.Root>\n    </form>\n  );\n};\n\nexport default CollectionForm;\n","import React, { useState, useEffect } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport {\n  Modal,\n  Button,\n  Typography,\n} from '@strapi/design-system';\n\nimport CustomForm from './Custom';\nimport CollectionForm from './Collection';\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 {\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  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen]);\n\n  const form = () => {\n    switch (type) {\n      case 'collection':\n        return (\n          <CollectionForm\n            uid={uid}\n            setUid={setUid}\n            langcode={langcode}\n            setLangcode={setLangcode}\n            {...props}\n          />\n        );\n      case 'custom':\n        return <CustomForm uid={uid} setUid={setUid} {...props} />;\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <Modal.Root\n      open={isOpen}\n      onOpenChange={(open) => {\n        if (!open) onCancel();\n      }}>\n      <Modal.Content>\n        <Modal.Header>\n          <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n            {formatMessage({ id: 'sitemap.Modal.HeaderTitle', defaultMessage: 'Sitemap entries' })} - {type}\n          </Typography>\n        </Modal.Header>\n        <Modal.Body>\n          {form()}\n        </Modal.Body>\n        <Modal.Footer>\n          <Modal.Close>\n            <Button onClick={() => onCancel()} variant=\"tertiary\">\n              {formatMessage({ id: 'sitemap.Button.Cancel', defaultMessage: 'Cancel' })}\n            </Button>\n          </Modal.Close>\n          <Button\n            onClick={onSubmit}\n            disabled={\n              !uid ||\n              (contentTypes && getSelectedContentType(contentTypes, uid).locales && !langcode)\n            }\n          >\n            {formatMessage({ id: 'sitemap.Button.Save', defaultMessage: 'Save' })}\n          </Button>\n        </Modal.Footer>\n      </Modal.Content>\n    </Modal.Root>\n  );\n};\n\nexport default ModalForm;\n","import React, { useState } from 'react';\nimport { Button, EmptyStateLayout } from '@strapi/design-system';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Map } from 'immutable';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { ExternalLink } from '@strapi/icons';\n\nimport {\n  deleteContentType,\n  discardModifiedContentTypes,\n  onChangeContentTypes,\n  submitModal,\n} from '../../state/actions/Sitemap';\nimport List from '../../components/List/Collection';\nimport ModalForm from '../../components/ModalForm';\n\nconst CollectionURLs = ({ id }) => {\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 { formatMessage } = useIntl();\n  const [langcode, setLangcode] = useState('und');\n\n  const handleModalSubmit = (e) => {\n    e.preventDefault();\n    dispatch(submitModal(id));\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(id));\n  };\n\n  // Loading state\n  if (!state.getIn(['settings', 'sitemaps', id, 'contentTypes'])) {\n    return null;\n  }\n\n  if (\n    state.get('contentTypes').size === 0 ||\n    state.get('contentTypes').length === 0\n  ) {\n    return (\n      <EmptyStateLayout\n        content={formatMessage({\n          id: 'webtools.collection-urls.contenttypes.table.empty',\n          defaultMessage: 'Before you can add collections to the sitemap, you need to enable Webtools for at least one content type.',\n        })}\n        action={(\n          <Button\n            variant=\"secondary\"\n            tag={Link}\n            to=\"https://docs.pluginpal.io/webtools/usage\"\n            startIcon={<ExternalLink />}\n            target=\"_blank\"\n          >\n            {formatMessage({\n              id: 'webtools.settings.button.read_docs',\n              defaultMessage: 'Learn how to enable Webtools',\n            })}\n          </Button>\n        )}\n        shadow=\"tableShadow\"\n        hasRadius\n      />\n    );\n  }\n\n  return (\n    <div>\n      <List\n        items={state.getIn(['settings', 'sitemaps', id, 'contentTypes'])}\n        openModal={(editId, lang) => handleModalOpen(editId, lang)}\n        onDelete={(key, lang) => dispatch(deleteContentType(id, 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={\n          (\n            contentType,\n            lang,\n            key,\n            value,\n          ) => dispatch(onChangeContentTypes(contentType, lang, key, value))\n        }\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 {\n  Box,\n  Flex,\n  Tr,\n  Td,\n  Typography,\n  IconButton,\n} 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 marginLeft=\"auto\">\n          <IconButton\n            onClick={handleEditClick}\n            label=\"Edit\"\n          >\n            <Pencil />\n          </IconButton>\n          <Box paddingLeft={1}>\n            <IconButton\n              onClick={handleDeleteClick}\n              label=\"Delete\"\n            >\n              <Trash />\n            </IconButton>\n          </Box>\n        </Flex>\n      </Td>\n    </Tr>\n  );\n};\n\nexport default CustomRow;\n","import React from 'react';\n\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  EmptyStateLayout,\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.forEach((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      <EmptyStateLayout\n        content={formatMessage({ 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 {\n  discardModifiedContentTypes,\n  onChangeCustomEntry,\n  submitModal,\n  deleteCustomEntry,\n} from '../../state/actions/Sitemap';\nimport List from '../../components/List/Custom';\nimport ModalForm from '../../components/ModalForm';\n\nconst CustomURLs = ({ id }) => {\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(id));\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(id));\n    setUid(null);\n  };\n\n  // Loading state\n  if (!state.getIn(['settings', 'sitemaps', id, 'customEntries'])) {\n    return null;\n  }\n\n  return (\n    <div>\n      <List\n        items={state.getIn(['settings', 'sitemaps', id, 'customEntries'])}\n        openModal={(editId) => handleModalOpen(editId)}\n        onDelete={(key) => dispatch(deleteCustomEntry(id, 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  Modal,\n  Typography,\n  Button,\n  TextInput,\n  Grid,\n  Field,\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.toJS() });\n    } else {\n      setHostnames({});\n    }\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen]);\n\n  return (\n    <Modal.Root\n      open={isOpen}\n      onOpenChange={(open) => {\n        if (!open) onCancel();\n      }}>\n      <Modal.Content>\n        <Modal.Header>\n          <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n            {formatMessage({ id: 'sitemap.HostnameOverrides.Label', defaultMessage: 'Hostname overrides' })}\n          </Typography>\n        </Modal.Header>\n        <Modal.Body>\n          <Grid.Root gap={4}>\n            {languages.map((language) => (\n              <Grid.Item key={language.uid} col={6} s={12}>\n                <Field.Root\n                  hint={formatMessage({ id: 'sitemap.HostnameOverrides.Description', defaultMessage: 'Specify hostname per language' }, { langcode: language.uid })}\n                >\n                  <Field.Label>{`${language.name} hostname`}</Field.Label>\n                  <TextInput\n                    placeholder={`https://${language.uid}.strapi.io`}\n                    name=\"hostname\"\n                    value={hostnames[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                  <Field.Hint />\n                </Field.Root>\n              </Grid.Item>\n            ))}\n          </Grid.Root>\n        </Modal.Body>\n        <Modal.Footer>\n          <Modal.Close>\n            <Button onClick={() => onCancel()} variant=\"tertiary\">\n              {formatMessage({ id: 'sitemap.Button.Cancel', defaultMessage: 'Cancel' })}\n            </Button>\n          </Modal.Close>\n          <Button\n            onClick={() => onSave(hostnames)}\n            disabled={isEqual(hostnames, hostnameOverrides)}\n          >\n            {formatMessage({ id: 'sitemap.Button.Save', defaultMessage: 'Save' })}\n          </Button>\n        </Modal.Footer>\n      </Modal.Content>\n    </Modal.Root>\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  Toggle,\n  Grid,\n  TextInput,\n  SingleSelect,\n  SingleSelectOption,\n  Field,\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 = ({ id }) => {\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', 'sitemaps', id], Map()));\n  const hostnameOverrides = useSelector((state) => state.getIn(['sitemap', 'settings', 'sitemaps', id, 'hostname_overrides'], Map()));\n  const [inputVisible, setInputVisible] = useState(settings.get('defaultLanguageUrlType') === DEFAULT_LANGUAGE_URL_TYPE_OTHER);\n\n  const saveHostnameOverrides = (hostnames) => {\n    dispatch(onChangeSettings(id, 'hostname_overrides', hostnames));\n    setOpen(false);\n  };\n\n  const saveLanguageFilter = (languageFilter) => {\n    dispatch(onChangeSettings(id, 'languageFilter', languageFilter));\n    setOpen(false);\n  };\n\n  const handleDefaultLanguageUrlTypeChange = (value = '') => {\n    dispatch(onChangeSettings(id, 'defaultLanguageUrlType', value));\n    if (value === DEFAULT_LANGUAGE_URL_TYPE_OTHER) dispatch(onChangeSettings(id, 'defaultLanguageUrl', undefined));\n    setInputVisible(value === DEFAULT_LANGUAGE_URL_TYPE_OTHER);\n  };\n\n  return (\n    <Grid.Root gap={4}>\n      <Grid.Item col={6} s={12}>\n        <Field.Root\n          hint={formatMessage({ id: 'sitemap.Settings.Field.Hostname.Description', defaultMessage: 'The URL of your website' })}\n        >\n          <Field.Label>\n            {formatMessage({ id: 'sitemap.Settings.Field.Hostname.Label', defaultMessage: 'Hostname' })}\n          </Field.Label>\n          <TextInput\n            placeholder=\"https://www.strapi.io\"\n            name=\"hostname\"\n            value={settings.get('hostname') || ''}\n            onChange={(e) => dispatch(onChangeSettings(id, 'hostname', e.target.value))}\n          />\n        </Field.Root>\n        <Field.Hint />\n      </Grid.Item>\n      {languages.length > 1 && (\n        <Grid.Item col={12} s={12} direction=\"column\" alignItems=\"flex-start\">\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\">\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        </Grid.Item>\n      )}\n      {languages.length > 1 && (\n        <Grid.Item col={12} s={12} direction=\"column\" alignItems=\"flex-start\">\n          <Field.Root\n            hint={formatMessage({ id: 'sitemap.Settings.Field.LanguageFilter.Description', defaultMessage: 'Filter the sitemap URLs based on a language' })}\n          >\n            <Field.Label>\n              {formatMessage({ id: 'sitemap.Settings.Field.LanguageFilter.Label', defaultMessage: 'Language filter' })}\n            </Field.Label>\n            <SingleSelect\n              clearLabel=\"Clear\"\n              name=\"languageFilter\"\n              value={settings.get('languageFilter') || 'off'}\n              onChange={saveLanguageFilter}\n            >\n              <SingleSelectOption key=\"off\" value=\"off\">\n                {formatMessage({ id: 'sitemap.Settings.Field.LanguageFilter.Option.Disabled', defaultMessage: 'Disabled' })}\n              </SingleSelectOption>\n              {languages.map((lang) => (\n                <SingleSelectOption key={lang.uid} value={lang.uid}>\n                  {lang.name}\n                </SingleSelectOption>\n              ))}\n            </SingleSelect>\n            <Field.Hint />\n          </Field.Root>\n        </Grid.Item>\n      )}\n      <Grid.Item col={12} s={12}>\n        <Field.Root\n          hint={formatMessage({ id: 'sitemap.Settings.Field.IncludeHomepage.Description', defaultMessage: 'Include a \\'/\\' entry when none is present.' })}\n        >\n          <Field.Label>\n            {formatMessage({ id: 'sitemap.Settings.Field.IncludeHomepage.Label', defaultMessage: 'Include home page' })}\n          </Field.Label>\n          <Toggle\n            name=\"includeHomepage\"\n            onLabel=\"on\"\n            offLabel=\"off\"\n            checked={settings.get('includeHomepage')}\n            onChange={(e) => dispatch(onChangeSettings(id, 'includeHomepage', e.target.checked))}\n          />\n          <Field.Hint />\n        </Field.Root>\n      </Grid.Item>\n      <Grid.Item col={12} s={12}>\n        <Field.Root\n          hint={formatMessage({ id: 'sitemap.Settings.Field.ExcludeDrafts.Description', defaultMessage: 'Remove all draft entries from the sitemap.' })}\n        >\n          <Field.Label>\n            {formatMessage({ id: 'sitemap.Settings.Field.ExcludeDrafts.Label', defaultMessage: 'Exclude drafts' })}\n          </Field.Label>\n          <Toggle\n            name=\"excludeDrafts\"\n            onLabel=\"on\"\n            offLabel=\"off\"\n            checked={settings.get('excludeDrafts')}\n            onChange={(e) => dispatch(onChangeSettings(id, 'excludeDrafts', e.target.checked))}\n          />\n          <Field.Hint />\n        </Field.Root>\n      </Grid.Item>\n      <Grid.Item col={6} s={12}>\n        <Field.Root\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        >\n          <Field.Label>\n            {formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrlType.Label', defaultMessage: 'Default language URL type' })}\n          </Field.Label>\n          <SingleSelect\n            clearLabel=\"Clear\"\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          <Field.Hint />\n        </Field.Root>\n      </Grid.Item>\n      {inputVisible && (\n        <Grid.Item col={12} s={12}>\n          <Field.Root\n            hint={formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrl.Description', defaultMessage: 'E.g. URL of your website language selector.' })}\n          >\n            <Field.Label>\n              {formatMessage({ id: 'sitemap.Settings.Field.DefaultLanguageUrl.Label', defaultMessage: 'Custom default language URL' })}\n            </Field.Label>\n            <TextInput\n              placeholder=\"https://www.strapi.io/language-selector\"\n              name=\"defaultLanguageUrl\"\n              required\n              value={settings.get('defaultLanguageUrl')}\n              onChange={(e) => dispatch(onChangeSettings(id, 'defaultLanguageUrl', e.target.value))}\n            />\n            <Field.Hint />\n          </Field.Root>\n        </Grid.Item>\n      )}\n    </Grid.Root>\n  );\n};\n\nexport default Settings;\n","import React from 'react';\nimport { Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useSearchParams } from 'react-router-dom';\n\nimport CollectionURLs from '../../tabs/CollectionURLs';\nimport CustomURLs from '../../tabs/CustomURLs';\nimport Settings from '../../tabs/Settings';\n\nconst SitemapTabs = ({ id }) => {\n  const { formatMessage } = useIntl();\n  let [searchParams, setSearchParams] = useSearchParams();\n\n  return (\n    <Box padding={8}>\n      <Tabs.Root\n        id=\"tabs\"\n        value={searchParams.get('tab') || 'url-bundles'}\n        onValueChange={(newValue) => {\n          setSearchParams({ tab: newValue });\n        }}\n      >\n        <Tabs.List>\n          <Tabs.Trigger value=\"url-bundles\">{formatMessage({ id: 'sitemap.Settings.CollectionTitle', defaultMessage: 'URL bundles' })}</Tabs.Trigger>\n          <Tabs.Trigger value=\"custom-urls\">{formatMessage({ id: 'sitemap.Settings.CustomTitle', defaultMessage: 'Custom URLs' })}</Tabs.Trigger>\n          <Tabs.Trigger value=\"settings\">{formatMessage({ id: 'sitemap.Settings.SettingsTitle', defaultMessage: 'Settings' })}</Tabs.Trigger>\n        </Tabs.List>\n        <Tabs.Content value=\"url-bundles\">\n          <CollectionURLs id={id} />\n        </Tabs.Content>\n        <Tabs.Content value=\"custom-urls\">\n          <CustomURLs id={id} />\n        </Tabs.Content>\n        <Tabs.Content value=\"settings\">\n          <Box padding={6} background=\"neutral0\" shadow=\"filterShadow\">\n            <Settings id={id} />\n          </Box>\n        </Tabs.Content>\n      </Tabs.Root>\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 { useNotification, getFetchClient, Layouts } from '@strapi/strapi/admin';\nimport { Box, Button, Link as DsLink } from '@strapi/design-system';\nimport { Check, ArrowLeft } from '@strapi/icons';\nimport { Link } from 'react-router-dom';\n\nimport { discardAllChanges, submit } from '../../state/actions/Sitemap';\n\nconst Header = ({ id, backButton }) => {\n  const settings = useSelector((state) => state.getIn(['sitemap', 'settings', 'sitemaps', id], Map()));\n  const initialData = useSelector((state) => state.getIn(['sitemap', 'initialData'], Map()));\n  const { toggleNotification } = useNotification();\n  const { put } = getFetchClient();\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(id, settings.toJS(), toggleNotification, formatMessage, put));\n  };\n\n  const handleCancel = (e) => {\n    e.preventDefault();\n    dispatch(discardAllChanges(id));\n  };\n\n  return (\n    <Box background=\"neutral100\">\n      <Layouts.Header\n        navigationAction={backButton && (\n          <DsLink startIcon={<ArrowLeft />} tag={Link} to=\"/plugins/webtools/sitemap\">\n            {formatMessage({\n              id: 'global.back',\n              defaultMessage: 'Back',\n            })}\n          </DsLink>\n        )}\n        primaryAction={(\n          <Box style={{ display: 'flex' }}>\n            <Button\n              onClick={handleCancel}\n              disabled={disabled}\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            >\n              {formatMessage({ id: 'sitemap.Button.Save', defaultMessage: 'Save' })}\n            </Button>\n          </Box>\n        )}\n        title={`${formatMessage({ id: 'sitemap.Header.Title', defaultMessage: 'Sitemap' })} - ${id}`}\n        subtitle={formatMessage({ id: 'sitemap.Header.Description', defaultMessage: 'Settings for the sitemap XML' })}\n      />\n    </Box>\n  );\n};\n\nexport default Header;\n","import React from 'react';\n\nimport { Map } from 'immutable';\nimport { FormattedDate, FormattedTime, useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useSearchParams } from 'react-router-dom';\n\nimport { getFetchClient, useNotification } from '@strapi/strapi/admin';\nimport { Box, Button, Flex, Link, Typography } from '@strapi/design-system';\n\nimport { generateSitemap } from '../../state/actions/Sitemap';\n\nconst emptyMap = new Map();\n\nconst Info = ({ id }) => {\n  const hasHostname = useSelector((state) => state.getIn(['sitemap', 'initialData', 'hostname'], emptyMap));\n  const sitemapInfo = useSelector((state) => state.getIn(['sitemap', 'info'], emptyMap));\n  let [, setSearchParams] = useSearchParams();\n  const dispatch = useDispatch();\n  const { toggleNotification } = useNotification();\n  const { get } = getFetchClient();\n  const { formatMessage } = useIntl();\n\n  const updateTime = sitemapInfo.get('updateTime') ? new Date(sitemapInfo.get('updateTime')) : undefined;\n  const numberOfSitemaps = sitemapInfo.get('sitemaps') ?? 0;\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          <Flex direction=\"column\" alignItems=\"flex-start\">\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                setSearchParams({ tab: 'settings' });\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          </Flex>\n        </div>\n      );\n    }\n\n    if (!updateTime) {\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          </div>\n          <div style={{ marginTop: '15px' }}>\n            <Button\n              onClick={() => dispatch(generateSitemap(id, toggleNotification, formatMessage, get))}\n              variant=\"secondary\"\n            >\n              {formatMessage({ id: 'sitemap.Header.Button.Generate', defaultMessage: 'Generate sitemap' })}\n            </Button>\n          </div>\n        </div>\n      );\n    }\n\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\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            <FormattedDate value={updateTime} /> <FormattedTime value={updateTime} />\n          </Typography>\n        </div>\n        {numberOfSitemaps === 0 ? (\n          <div>\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>\n            <Typography variant=\"omega\">\n              {formatMessage({ id: 'sitemap.Info.SitemapIsPresent.AmountOfSitemaps', defaultMessage: 'Amount of sitemaps:' })}\n            </Typography>\n            <Typography variant=\"omega\" fontWeight=\"bold\" style={{ marginLeft: '5px' }}>\n              {numberOfSitemaps}\n            </Typography>\n          </div>\n        )}\n        <div style={{ display: 'flex', flexDirection: 'row', marginTop: '15px' }}>\n          <Button\n            onClick={() => dispatch(generateSitemap(id, toggleNotification, formatMessage, 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  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    height: '100%',\n    width: '100%',\n    position: 'absolute',\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';\nimport { useIntl } from 'react-intl';\n\nimport { getFetchClient, useNotification } from '@strapi/strapi/admin';\n\nimport Tabs from '../../components/Tabs';\nimport Header from '../../components/Header';\nimport Info from '../../components/Info';\n\nimport {\n  getContentTypes,\n  getSettings,\n  getSitemapInfo,\n  getLanguages,\n} from '../../state/actions/Sitemap';\nimport Loader from '../../components/Loader';\n\nconst Settings = ({ id }) => {\n  const loading = useSelector((state) => state.getIn(['sitemap', 'loading'], false));\n  const { formatMessage } = useIntl();\n  const [backButton, setBackButton] = React.useState(false);\n\n  const dispatch = useDispatch();\n  const { toggleNotification } = useNotification();\n  const { get } = getFetchClient();\n\n  useEffect(() => {\n    get('/webtools/sitemap/init')\n      .then(() => setBackButton(true))\n      .catch(() => setBackButton(false));\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    dispatch(getSettings(toggleNotification, formatMessage, get, id));\n    dispatch(getLanguages(toggleNotification, formatMessage, get));\n    dispatch(getContentTypes(toggleNotification, formatMessage, get));\n    dispatch(getSitemapInfo(id, toggleNotification, formatMessage, get));\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [dispatch]);\n\n  return (\n    <div style={{ position: 'relative' }}>\n      {loading && <Loader />}\n      <Header id={id} backButton={backButton} />\n      <Info id={id} />\n      <Tabs id={id} />\n    </div>\n  );\n};\n\nexport default Settings;\n","import { useParams } from 'react-router-dom';\nimport * as React from 'react';\nimport Providers from '../../containers/Providers';\nimport Settings from '../../containers/Settings';\n\nconst SitemapSettings = () => {\n  const { id } = useParams();\n\n  return (\n    <Providers>\n      <Settings id={id} />\n    </Providers>\n  );\n};\n\nexport default SitemapSettings;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport {\n  Dialog,\n  Flex,\n  Typography,\n  Button,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\n\nconst DeleteConfirmModal = (props) => {\n  const {\n    onSubmit,\n    children,\n  } = props;\n\n  const { formatMessage } = useIntl();\n\n  return (\n    <Dialog.Root>\n      <Dialog.Trigger>\n        {children}\n      </Dialog.Trigger>\n      <Dialog.Content>\n        <Dialog.Header>\n          {formatMessage({\n            id: 'webtools-addon-sitemap.settings.page.list.delete_confirm_modal.title',\n            defaultMessage: 'Delete sitemap',\n          })}\n        </Dialog.Header>\n        <Dialog.Body icon={<WarningCircle />}>\n          <Flex>\n            <Flex justifyContent=\"center\">\n              <Typography variant=\"omega\" id=\"confirm-description\" style={{ textAlign: 'center' }}>\n                {formatMessage({\n                  id: 'webtools-addon-sitemap.settings.page.list.delete_confirm_modal.body',\n                  defaultMessage: 'Are you sure you want to delete this sitemap?',\n                })}\n              </Typography>\n            </Flex>\n          </Flex>\n        </Dialog.Body>\n        <Dialog.Footer>\n          <Dialog.Cancel>\n            <Button\n              variant=\"tertiary\"\n            >\n              {formatMessage({\n                id: 'webtools-addon-sitemap.settings.button.cancel',\n                defaultMessage: 'Cancel',\n              })}\n            </Button>\n          </Dialog.Cancel>\n          <Button\n            variant=\"secondary\"\n            onClick={() => {\n              onSubmit();\n            }}\n          >\n            {formatMessage({\n              id: 'webtools-addon-sitemap.settings.button.delete',\n              defaultMessage: 'Delete',\n            })}\n          </Button>\n        </Dialog.Footer>\n      </Dialog.Content>\n    </Dialog.Root>\n  );\n};\n\nexport default DeleteConfirmModal;\n","import React from 'react';\nimport {\n  Typography,\n  Box,\n  Tr,\n  Td,\n  Flex,\n  IconButton,\n} from '@strapi/design-system';\nimport { useNavigate } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { useIntl } from 'react-intl';\nimport { useFetchClient, useNotification } from '@strapi/strapi/admin';\nimport { Pencil, Trash } from '@strapi/icons';\nimport DeleteConfirmModal from '../../../../components/DeleteConfirmModal';\nimport { deleteSitemap } from '../../../../state/actions/Sitemap';\n\nconst TableRow = ({\n  row,\n  id,\n}) => {\n  const navigate = useNavigate();\n  const dispatch = useDispatch();\n  const { toggleNotification } = useNotification();\n  const { formatMessage } = useIntl();\n  const { del, get } = useFetchClient();\n\n  const handleClick = () => {\n    navigate(`/plugins/webtools/sitemap/${id}`);\n  };\n\n  const handleDeleteClick = () => {\n    dispatch(deleteSitemap(id, del, get, toggleNotification, formatMessage));\n  };\n\n  return (\n    <Tr>\n      <Td>\n        <Box style={{ marginTop: 20, marginBottom: 20, marginLeft: 8, marginRight: 8 }}>\n          <Typography>{id}</Typography>\n        </Box>\n      </Td>\n      <Td>\n        <Box style={{ marginTop: 20, marginBottom: 20, marginLeft: 8, marginRight: 8 }}>\n          <Typography>{row.hostname}</Typography>\n        </Box>\n      </Td>\n      <Td>\n        <Flex>\n          <Flex marginLeft=\"auto\">\n            <IconButton\n              onClick={handleClick}\n              label=\"Edit\"\n            >\n              <Pencil />\n            </IconButton>\n            <Box paddingLeft={1}>\n              <DeleteConfirmModal onSubmit={handleDeleteClick}>\n                <IconButton\n                  label=\"Delete\"\n                >\n                  <Trash />\n                </IconButton>\n              </DeleteConfirmModal>\n            </Box>\n          </Flex>\n        </Flex>\n      </Td>\n    </Tr>\n  );\n};\n\nexport default TableRow;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport {\n  Table,\n  Tr,\n  Thead,\n  Th,\n  Typography,\n  Tbody,\n  EmptyStateLayout,\n} from '@strapi/design-system';\nimport { Map } from 'immutable';\n\nimport { useSelector } from 'react-redux';\nimport TableRow from '../TableRow';\n\nconst TableComponent = () => {\n  const sitemaps = useSelector((state) => state.getIn(['sitemap', 'settings', 'sitemaps'], Map()));\n  const { formatMessage } = useIntl();\n\n  return (\n    <div>\n      {sitemaps && sitemaps.size > 0 ? (\n        <Table colCount={1} rowCount={sitemaps.size}>\n          <Thead>\n            <Tr>\n              <Th>\n                <Typography variant=\"sigma\" textColor=\"neutral600\" margin={2}>\n                  {formatMessage({ id: 'sitemap.Overview.Table.Head.Name', defaultMessage: 'Name' })}\n                </Typography>\n              </Th>\n              <Th>\n                <Typography variant=\"sigma\" textColor=\"neutral600\" margin={2}>\n                  {formatMessage({ id: 'sitemap.Overview.Table.Head.Hostname', defaultMessage: 'Hostname' })}\n                </Typography>\n              </Th>\n            </Tr>\n          </Thead>\n          <Tbody>\n            {Object.entries(sitemaps.toJS()).map(([key, value]) => (\n              <TableRow\n                key={key}\n                id={key}\n                row={value}\n              />\n            ))}\n          </Tbody>\n        </Table>\n      ) : (\n        <EmptyStateLayout\n          content={formatMessage({\n            id: 'sitemap.Overview.Table.Empty',\n            defaultMessage: 'You don\\'t have any sitemaps yet.',\n          })}\n          shadow=\"tableShadow\"\n          hasRadius\n        />\n      )}\n    </div>\n  );\n};\n\nexport default TableComponent;\n","import React, { useState } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport {\n  Modal,\n  Typography,\n  Button,\n  Field,\n} from '@strapi/design-system';\nimport { useFetchClient, useNotification } from '@strapi/strapi/admin';\nimport { useNavigate } from 'react-router-dom';\n\nconst NewSitemapModal = (props) => {\n  const { formatMessage } = useIntl();\n  const { toggleNotification } = useNotification();\n  const navigate = useNavigate();\n  const { post } = useFetchClient();\n  const [name, setName] = useState(null);\n  const {\n    children,\n  } = props;\n\n  const onCreate = () => {\n    post('/webtools-addon-sitemap/create-new-sitemap', { name })\n      .then(() => {\n        toggleNotification({\n          type: 'success',\n          message: formatMessage({\n            id: 'sitemap.NewSitemapModal.Success',\n            defaultMessage: 'Sitemap created successfully',\n          }),\n        });\n        navigate(`/plugins/webtools/sitemap/${name}`);\n      })\n      .catch((err) => {\n        toggleNotification({\n          type: 'danger',\n          message: err.message,\n        });\n      });\n  };\n\n  return (\n    <Modal.Root>\n      <Modal.Trigger>\n        {children}\n      </Modal.Trigger>\n      <Modal.Content>\n        <Modal.Header>\n          <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n            {formatMessage({ id: 'sitemap.NewSitemapModal.Label', defaultMessage: 'New sitemap' })}\n          </Typography>\n        </Modal.Header>\n        <Modal.Body>\n          <Field.Root>\n            <Field.Label>\n              {formatMessage({ id: 'sitemap.NewSitemapModal.Name.Label', defaultMessage: 'Name' })}\n            </Field.Label>\n            <Field.Input value={name} onChange={(e) => setName(e.target.value)} />\n          </Field.Root>\n        </Modal.Body>\n        <Modal.Footer>\n          <Modal.Close>\n            <Button variant=\"tertiary\">\n              {formatMessage({ id: 'sitemap.Button.Cancel', defaultMessage: 'Cancel' })}\n            </Button>\n          </Modal.Close>\n          <Button\n            onClick={() => onCreate()}\n            disabled={!name}\n          >\n            {formatMessage({ id: 'sitemap.Button.Create', defaultMessage: 'Create' })}\n          </Button>\n        </Modal.Footer>\n      </Modal.Content>\n    </Modal.Root>\n  );\n};\n\nexport default NewSitemapModal;\n","import { Box, Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { getFetchClient, Layouts, useNotification } from '@strapi/strapi/admin';\nimport { useDispatch } from 'react-redux';\nimport React, { useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport TableComponent from './components/Table';\nimport { getSettings } from '../../state/actions/Sitemap';\nimport NewSitemapModal from '../../components/NewSitemapModal';\n\nconst Overview = () => {\n  const { formatMessage } = useIntl();\n  const navigate = useNavigate();\n  const [ready, setReady] = React.useState(false);\n\n  const dispatch = useDispatch();\n  const { toggleNotification } = useNotification();\n\n  const { get } = getFetchClient();\n\n  useEffect(() => {\n    get('/webtools/sitemap/init')\n      .then(() => setReady(true))\n      .catch(() => navigate('/plugins/webtools/sitemap/default', { state: { backButton: false } }));\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    dispatch(getSettings(toggleNotification, formatMessage, get));\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [dispatch]);\n\n  if (!ready) {\n    return null;\n  }\n\n  return (\n    <Box background=\"neutral100\">\n      <Layouts.Header\n        primaryAction={(\n          <NewSitemapModal>\n            <Button startIcon={<Plus />}>\n              {formatMessage({\n                id: 'sitemap.Overview.Header.Button',\n                defaultMessage: 'Create new sitemap',\n              })}\n            </Button>\n          </NewSitemapModal>\n        )}\n        title={`${formatMessage({ id: 'sitemap.Overview.Header.Title', defaultMessage: 'Sitemaps' })}`}\n        subtitle={formatMessage({ id: 'sitemap.Overview.Header.Description', defaultMessage: 'A list of all the available sitemaps' })}\n      />\n      <Layouts.Content>\n        <TableComponent />\n      </Layouts.Content>\n    </Box>\n  );\n};\n\nexport default Overview;\n","import * as React from 'react';\nimport Providers from '../../containers/Providers';\nimport Overview from '../../containers/Overview';\n\nconst SitemapOverview = () => {\n  return (\n    <Providers>\n      <Overview />\n    </Providers>\n  );\n};\n\nexport default SitemapOverview;\n","import pluginPkg from '../package.json';\nimport pluginId from './helpers/pluginId';\nimport EditView from './components/EditView';\nimport { prefixPluginTranslations } from './helpers/prefixPluginTranslations';\nimport SitemapSettings from './screens/Settings';\nimport SitemapOverview from './screens/Overview';\n\nconst pluginDescription = pluginPkg.strapi.description || pluginPkg.description;\nconst { name } = pluginPkg.strapi;\n\nexport default {\n  register(app) {\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) {\n    app.getPlugin('webtools').injectComponent('webtoolsSidePanel', 'link', {\n      Component: EditView,\n    });\n\n    app.getPlugin('webtools').injectComponent('webtoolsRouter', 'route', {\n      name: 'settings-route',\n      label: 'Sitemap',\n      path: '/sitemap',\n      Component: SitemapOverview,\n    });\n\n    app.getPlugin('webtools').injectComponent('webtoolsRouter', 'route', {\n      name: 'sitemap-route',\n      path: '/sitemap/:id',\n      Component: SitemapSettings,\n    });\n  },\n  async registerTrads(app) {\n    const { locales } = app;\n\n    const importedTranslations = await Promise.all(\n      locales.map((locale) => {\n        return import(`./translations/${locale}.json`)\n          .then(({ default: data }) => {\n            return {\n              data: prefixPluginTranslations(data, pluginId),\n              locale,\n            };\n          })\n          .catch(() => {\n            return {\n              data: {},\n              locale,\n            };\n          });\n      }),\n    );\n\n    return importedTranslations;\n  },\n};\n"],"names":["form","document","pluginId","store","CustomRow","ListComponent","name","ModalForm","List","Settings","HostnameModal","DsLink","Link","LoaderComponent","Tabs","EditView"],"mappings":"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"}