@strapi/admin 5.23.3 → 5.23.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
- package/dist/admin/admin/src/features/Notifications.js +14 -32
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.mjs +14 -32
- package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
- package/dist/admin/src/StrapiApp.d.ts +1 -1
- package/dist/admin/src/components/Theme.d.ts +1 -1
- package/dist/admin/src/index.d.ts +1 -1
- package/dist/server/src/index.d.ts +1 -1
- package/dist/server/src/services/index.d.ts +1 -1
- package/dist/server/src/services/role.d.ts +1 -1
- package/dist/shared/contracts/shared.d.ts +9 -1
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/server/src/services/guided-tour.d.ts +0 -11
- package/dist/server/src/services/guided-tour.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StrapiApp.js","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\nimport { DefaultTheme } from 'styled-components';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","constructor","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StrapiApp.js","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { DefaultTheme } from 'styled-components';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","constructor","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StrapiApp.mjs","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\nimport { DefaultTheme } from 'styled-components';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","constructor","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StrapiApp.mjs","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { DefaultTheme } from 'styled-components';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","constructor","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.js","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","createGlobalStyle","colors","neutral100"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,sBAAAA,CAAiB,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGC,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAWC,GAAAA,sBAAAA,EAAAA;;AAGjBL,IAAAA,gBAAAA,CAAMM,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAOC,CAAAA,UAAU,CAAC,8BAAA,CAAA;QACvCV,cAAeQ,CAAAA,YAAAA,CAAaG,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBb,cAAea,CAAAA,KAAAA,CAAMF,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAC1C,SAAA;QACAH,YAAaM,CAAAA,gBAAgB,CAAC,QAAUF,EAAAA,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAaO,CAAAA,mBAAmB,CAAC,QAAUH,EAAAA,QAAAA,CAAAA;AAC7C,SAAA;AACF,KAAA,EAAG,EAAE,CAAA;AAELX,IAAAA,gBAAAA,CAAMM,SAAS,CAAC,IAAA;QACdF,QAASW,CAAAA,0BAAAA,CAAmBC,MAAOC,CAAAA,IAAI,CAACzB,MAAAA,CAAAA,CAAAA,CAAAA;KACvC,EAAA;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAM0B,iBAAAA,GAAoBzB,YAAiB,KAAA,QAAA,GAAWK,WAAcL,GAAAA,YAAAA;AAEpE,IAAA,qBACE0B,eAACC,CAAAA,iCAAAA,EAAAA;QACClB,MAAQA,EAAAA,MAAAA;AACR;;;;AAIC,UACDL,KAAOL,EAAAA,MAAAA,GAAS0B,iBAAAA,IAAqB,OAAQ,CAAA;;AAE5C3B,YAAAA,QAAAA;0BACD8B,cAACC,CAAAA,WAAAA,EAAAA,EAAAA;;;AAGP;AAEA,MAAMA,WAAAA,GAAcC,wBAAiB;;gBAErB,EAAE,CAAC,EAAE1B,KAAK,EAAE,GAAKA,KAAM2B,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEzD,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"Theme.js","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { type DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","createGlobalStyle","colors","neutral100"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,sBAAAA,CAAiB,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGC,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAWC,GAAAA,sBAAAA,EAAAA;;AAGjBL,IAAAA,gBAAAA,CAAMM,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAOC,CAAAA,UAAU,CAAC,8BAAA,CAAA;QACvCV,cAAeQ,CAAAA,YAAAA,CAAaG,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBb,cAAea,CAAAA,KAAAA,CAAMF,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAC1C,SAAA;QACAH,YAAaM,CAAAA,gBAAgB,CAAC,QAAUF,EAAAA,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAaO,CAAAA,mBAAmB,CAAC,QAAUH,EAAAA,QAAAA,CAAAA;AAC7C,SAAA;AACF,KAAA,EAAG,EAAE,CAAA;AAELX,IAAAA,gBAAAA,CAAMM,SAAS,CAAC,IAAA;QACdF,QAASW,CAAAA,0BAAAA,CAAmBC,MAAOC,CAAAA,IAAI,CAACzB,MAAAA,CAAAA,CAAAA,CAAAA;KACvC,EAAA;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAM0B,iBAAAA,GAAoBzB,YAAiB,KAAA,QAAA,GAAWK,WAAcL,GAAAA,YAAAA;AAEpE,IAAA,qBACE0B,eAACC,CAAAA,iCAAAA,EAAAA;QACClB,MAAQA,EAAAA,MAAAA;AACR;;;;AAIC,UACDL,KAAOL,EAAAA,MAAAA,GAAS0B,iBAAAA,IAAqB,OAAQ,CAAA;;AAE5C3B,YAAAA,QAAAA;0BACD8B,cAACC,CAAAA,WAAAA,EAAAA,EAAAA;;;AAGP;AAEA,MAAMA,WAAAA,GAAcC,wBAAiB;;gBAErB,EAAE,CAAC,EAAE1B,KAAK,EAAE,GAAKA,KAAM2B,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEzD,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.mjs","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","createGlobalStyle","colors","neutral100"],"mappings":";;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,gBAAAA,CAAiB,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGC,MAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;;AAGjBL,IAAAA,KAAAA,CAAMM,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAOC,CAAAA,UAAU,CAAC,8BAAA,CAAA;QACvCV,cAAeQ,CAAAA,YAAAA,CAAaG,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBb,cAAea,CAAAA,KAAAA,CAAMF,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAC1C,SAAA;QACAH,YAAaM,CAAAA,gBAAgB,CAAC,QAAUF,EAAAA,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAaO,CAAAA,mBAAmB,CAAC,QAAUH,EAAAA,QAAAA,CAAAA;AAC7C,SAAA;AACF,KAAA,EAAG,EAAE,CAAA;AAELX,IAAAA,KAAAA,CAAMM,SAAS,CAAC,IAAA;QACdF,QAASW,CAAAA,kBAAAA,CAAmBC,MAAOC,CAAAA,IAAI,CAACzB,MAAAA,CAAAA,CAAAA,CAAAA;KACvC,EAAA;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAM0B,iBAAAA,GAAoBzB,YAAiB,KAAA,QAAA,GAAWK,WAAcL,GAAAA,YAAAA;AAEpE,IAAA,qBACE0B,IAACC,CAAAA,oBAAAA,EAAAA;QACClB,MAAQA,EAAAA,MAAAA;AACR;;;;AAIC,UACDL,KAAOL,EAAAA,MAAAA,GAAS0B,iBAAAA,IAAqB,OAAQ,CAAA;;AAE5C3B,YAAAA,QAAAA;0BACD8B,GAACC,CAAAA,WAAAA,EAAAA,EAAAA;;;AAGP;AAEA,MAAMA,WAAAA,GAAcC,iBAAiB;;gBAErB,EAAE,CAAC,EAAE1B,KAAK,EAAE,GAAKA,KAAM2B,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEzD,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"Theme.mjs","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { type DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","createGlobalStyle","colors","neutral100"],"mappings":";;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,gBAAAA,CAAiB,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGC,MAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;;AAGjBL,IAAAA,KAAAA,CAAMM,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAOC,CAAAA,UAAU,CAAC,8BAAA,CAAA;QACvCV,cAAeQ,CAAAA,YAAAA,CAAaG,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBb,cAAea,CAAAA,KAAAA,CAAMF,OAAO,GAAG,MAAS,GAAA,OAAA,CAAA;AAC1C,SAAA;QACAH,YAAaM,CAAAA,gBAAgB,CAAC,QAAUF,EAAAA,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAaO,CAAAA,mBAAmB,CAAC,QAAUH,EAAAA,QAAAA,CAAAA;AAC7C,SAAA;AACF,KAAA,EAAG,EAAE,CAAA;AAELX,IAAAA,KAAAA,CAAMM,SAAS,CAAC,IAAA;QACdF,QAASW,CAAAA,kBAAAA,CAAmBC,MAAOC,CAAAA,IAAI,CAACzB,MAAAA,CAAAA,CAAAA,CAAAA;KACvC,EAAA;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAM0B,iBAAAA,GAAoBzB,YAAiB,KAAA,QAAA,GAAWK,WAAcL,GAAAA,YAAAA;AAEpE,IAAA,qBACE0B,IAACC,CAAAA,oBAAAA,EAAAA;QACClB,MAAQA,EAAAA,MAAAA;AACR;;;;AAIC,UACDL,KAAOL,EAAAA,MAAAA,GAAS0B,iBAAAA,IAAqB,OAAQ,CAAA;;AAE5C3B,YAAAA,QAAAA;0BACD8B,GAACC,CAAAA,WAAAA,EAAAA,EAAAA;;;AAGP;AAEA,MAAMA,WAAAA,GAAcC,iBAAiB;;gBAErB,EAAE,CAAC,EAAE1B,KAAK,EAAE,GAAKA,KAAM2B,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEzD,CAAC;;;;"}
|
|
@@ -109,36 +109,18 @@ const Notification = ({ clearNotification, blockTransition = false, id, link, me
|
|
|
109
109
|
handleClose,
|
|
110
110
|
timeout
|
|
111
111
|
]);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
defaultMessage: 'Warning:'
|
|
125
|
-
});
|
|
126
|
-
} else if (type === 'warning') {
|
|
127
|
-
variant = 'warning';
|
|
128
|
-
alertTitle = formatMessage({
|
|
129
|
-
id: 'notification.warning.title',
|
|
130
|
-
defaultMessage: 'Warning:'
|
|
131
|
-
});
|
|
132
|
-
} else {
|
|
133
|
-
variant = 'success';
|
|
134
|
-
alertTitle = formatMessage({
|
|
135
|
-
id: 'notification.success.title',
|
|
136
|
-
defaultMessage: 'Success:'
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
if (title) {
|
|
140
|
-
alertTitle = title;
|
|
141
|
-
}
|
|
112
|
+
const getVariant = ()=>{
|
|
113
|
+
switch(type){
|
|
114
|
+
case 'info':
|
|
115
|
+
return 'default';
|
|
116
|
+
case 'danger':
|
|
117
|
+
return 'danger';
|
|
118
|
+
case 'warning':
|
|
119
|
+
return 'warning';
|
|
120
|
+
default:
|
|
121
|
+
return 'success';
|
|
122
|
+
}
|
|
123
|
+
};
|
|
142
124
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Alert, {
|
|
143
125
|
action: link ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Link, {
|
|
144
126
|
href: link.url,
|
|
@@ -150,8 +132,8 @@ const Notification = ({ clearNotification, blockTransition = false, id, link, me
|
|
|
150
132
|
id: 'global.close',
|
|
151
133
|
defaultMessage: 'Close'
|
|
152
134
|
}),
|
|
153
|
-
title:
|
|
154
|
-
variant:
|
|
135
|
+
title: title,
|
|
136
|
+
variant: getVariant(),
|
|
155
137
|
children: message
|
|
156
138
|
});
|
|
157
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notifications.js","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n marginLeft=\"-250px\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n top={`4.6rem`}\n width={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Notification\n key={notification.id}\n {...notification}\n clearNotification={clearNotification}\n />\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n let variant: AlertVariant;\n let alertTitle: string;\n\n if (type === 'info') {\n variant = 'default';\n alertTitle = formatMessage({\n id: 'notification.default.title',\n defaultMessage: 'Information:',\n });\n } else if (type === 'danger') {\n variant = 'danger';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else if (type === 'warning') {\n variant = 'warning';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else {\n variant = 'success';\n alertTitle = formatMessage({\n id: 'notification.success.title',\n defaultMessage: 'Success:',\n });\n }\n\n if (title) {\n alertTitle = title;\n }\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={alertTitle}\n variant={variant}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","notificationIdRef","useRef","notifications","setNotifications","useState","useCallback","type","message","link","timeout","blockTransition","onClose","title","s","id","current","clearNotification","filter","n","value","useMemo","_jsxs","Provider","_jsx","Flex","left","marginLeft","position","direction","alignItems","gap","top","width","zIndex","map","notification","Notification","formatMessage","useIntl","onCloseCallback","useCallbackRef","handleClose","useEffect","timeoutReference","setTimeout","clearTimeout","variant","alertTitle","defaultMessage","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","useNotification","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Notifications.js","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n marginLeft=\"-250px\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n top={`4.6rem`}\n width={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Notification\n key={notification.id}\n {...notification}\n clearNotification={clearNotification}\n />\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n const getVariant = (): AlertVariant => {\n switch (type) {\n case 'info':\n return 'default';\n case 'danger':\n return 'danger';\n case 'warning':\n return 'warning';\n default:\n return 'success';\n }\n };\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={title}\n variant={getVariant()}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","notificationIdRef","useRef","notifications","setNotifications","useState","useCallback","type","message","link","timeout","blockTransition","onClose","title","s","id","current","clearNotification","filter","n","value","useMemo","_jsxs","Provider","_jsx","Flex","left","marginLeft","position","direction","alignItems","gap","top","width","zIndex","map","notification","Notification","formatMessage","useIntl","onCloseCallback","useCallbackRef","handleClose","useEffect","timeoutReference","setTimeout","clearTimeout","getVariant","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","defaultMessage","variant","useNotification","useContext"],"mappings":"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"}
|
|
@@ -88,36 +88,18 @@ const Notification = ({ clearNotification, blockTransition = false, id, link, me
|
|
|
88
88
|
handleClose,
|
|
89
89
|
timeout
|
|
90
90
|
]);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
defaultMessage: 'Warning:'
|
|
104
|
-
});
|
|
105
|
-
} else if (type === 'warning') {
|
|
106
|
-
variant = 'warning';
|
|
107
|
-
alertTitle = formatMessage({
|
|
108
|
-
id: 'notification.warning.title',
|
|
109
|
-
defaultMessage: 'Warning:'
|
|
110
|
-
});
|
|
111
|
-
} else {
|
|
112
|
-
variant = 'success';
|
|
113
|
-
alertTitle = formatMessage({
|
|
114
|
-
id: 'notification.success.title',
|
|
115
|
-
defaultMessage: 'Success:'
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
if (title) {
|
|
119
|
-
alertTitle = title;
|
|
120
|
-
}
|
|
91
|
+
const getVariant = ()=>{
|
|
92
|
+
switch(type){
|
|
93
|
+
case 'info':
|
|
94
|
+
return 'default';
|
|
95
|
+
case 'danger':
|
|
96
|
+
return 'danger';
|
|
97
|
+
case 'warning':
|
|
98
|
+
return 'warning';
|
|
99
|
+
default:
|
|
100
|
+
return 'success';
|
|
101
|
+
}
|
|
102
|
+
};
|
|
121
103
|
return /*#__PURE__*/ jsx(Alert, {
|
|
122
104
|
action: link ? /*#__PURE__*/ jsx(Link, {
|
|
123
105
|
href: link.url,
|
|
@@ -129,8 +111,8 @@ const Notification = ({ clearNotification, blockTransition = false, id, link, me
|
|
|
129
111
|
id: 'global.close',
|
|
130
112
|
defaultMessage: 'Close'
|
|
131
113
|
}),
|
|
132
|
-
title:
|
|
133
|
-
variant:
|
|
114
|
+
title: title,
|
|
115
|
+
variant: getVariant(),
|
|
134
116
|
children: message
|
|
135
117
|
});
|
|
136
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notifications.mjs","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n marginLeft=\"-250px\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n top={`4.6rem`}\n width={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Notification\n key={notification.id}\n {...notification}\n clearNotification={clearNotification}\n />\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n let variant: AlertVariant;\n let alertTitle: string;\n\n if (type === 'info') {\n variant = 'default';\n alertTitle = formatMessage({\n id: 'notification.default.title',\n defaultMessage: 'Information:',\n });\n } else if (type === 'danger') {\n variant = 'danger';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else if (type === 'warning') {\n variant = 'warning';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else {\n variant = 'success';\n alertTitle = formatMessage({\n id: 'notification.success.title',\n defaultMessage: 'Success:',\n });\n }\n\n if (title) {\n alertTitle = title;\n }\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={alertTitle}\n variant={variant}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","notificationIdRef","useRef","notifications","setNotifications","useState","useCallback","type","message","link","timeout","blockTransition","onClose","title","s","id","current","clearNotification","filter","n","value","useMemo","_jsxs","Provider","_jsx","Flex","left","marginLeft","position","direction","alignItems","gap","top","width","zIndex","map","notification","Notification","formatMessage","useIntl","onCloseCallback","useCallbackRef","handleClose","useEffect","timeoutReference","setTimeout","clearTimeout","variant","alertTitle","defaultMessage","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","useNotification","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Notifications.mjs","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n marginLeft=\"-250px\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n top={`4.6rem`}\n width={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Notification\n key={notification.id}\n {...notification}\n clearNotification={clearNotification}\n />\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n const getVariant = (): AlertVariant => {\n switch (type) {\n case 'info':\n return 'default';\n case 'danger':\n return 'danger';\n case 'warning':\n return 'warning';\n default:\n return 'success';\n }\n };\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={title}\n variant={getVariant()}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","notificationIdRef","useRef","notifications","setNotifications","useState","useCallback","type","message","link","timeout","blockTransition","onClose","title","s","id","current","clearNotification","filter","n","value","useMemo","_jsxs","Provider","_jsx","Flex","left","marginLeft","position","direction","alignItems","gap","top","width","zIndex","map","notification","Notification","formatMessage","useIntl","onCloseCallback","useCallbackRef","handleClose","useEffect","timeoutReference","setTimeout","clearTimeout","getVariant","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","defaultMessage","variant","useNotification","useContext"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { DefaultTheme } from 'styled-components';
|
|
3
2
|
import { CustomFields } from './core/apis/CustomFields';
|
|
4
3
|
import { Plugin, PluginConfig } from './core/apis/Plugin';
|
|
5
4
|
import { RBAC, RBACMiddleware } from './core/apis/rbac';
|
|
@@ -8,6 +7,7 @@ import { Widgets } from './core/apis/Widgets';
|
|
|
8
7
|
import { RootState, Store } from './core/store/configure';
|
|
9
8
|
import { Handler, createHook } from './core/utils/createHook';
|
|
10
9
|
import type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';
|
|
10
|
+
import type { DefaultTheme } from 'styled-components';
|
|
11
11
|
interface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {
|
|
12
12
|
config?: {
|
|
13
13
|
auth?: {
|
|
@@ -57,7 +57,7 @@ export type { StrapiApp, InjectionZoneComponent } from './StrapiApp';
|
|
|
57
57
|
export type { Store } from './core/store/configure';
|
|
58
58
|
export type { Plugin, PluginConfig } from './core/apis/Plugin';
|
|
59
59
|
export type { MenuItem, StrapiAppSetting, StrapiAppSettingLink } from './core/apis/router';
|
|
60
|
-
export type { SanitizedAdminUser, AdminUser, SanitizedAdminRole, AdminRole, Entity, } from '../../shared/contracts/shared';
|
|
60
|
+
export type { SanitizedAdminUser, AdminUser, SanitizedAdminRole, AdminRole, Entity, FieldContentSourceMap, } from '../../shared/contracts/shared';
|
|
61
61
|
export type { RBACContext, RBACMiddleware } from './core/apis/rbac';
|
|
62
62
|
export type { WidgetWithUID as WidgetType, WidgetArgs } from './core/apis/Widgets';
|
|
63
63
|
/**
|
|
@@ -155,7 +155,7 @@ declare let admin: {
|
|
|
155
155
|
displayWarningIfNoSuperAdmin: () => Promise<void>;
|
|
156
156
|
addPermissions: (roleId: import("@strapi/types/dist/data").ID, permissions: any) => Promise<import("../../shared/contracts/shared").Permission[]>;
|
|
157
157
|
hasSuperAdminRole: (user: import("../../shared/contracts/shared").AdminUser) => boolean;
|
|
158
|
-
assignPermissions: (roleId: import("@strapi/types/dist/data").ID, permissions?: Pick<import("../../shared/contracts/shared").Permission, "
|
|
158
|
+
assignPermissions: (roleId: import("@strapi/types/dist/data").ID, permissions?: Pick<import("../../shared/contracts/shared").Permission, "conditions" | "action" | "subject">[]) => Promise<import("../../shared/contracts/shared").Permission[]>;
|
|
159
159
|
resetSuperAdminPermissions: () => Promise<void>;
|
|
160
160
|
checkRolesIdForDeletion: (ids?: import("@strapi/types/dist/data").ID[]) => Promise<void>;
|
|
161
161
|
constants: {
|
|
@@ -77,7 +77,7 @@ declare const _default: {
|
|
|
77
77
|
displayWarningIfNoSuperAdmin: () => Promise<void>;
|
|
78
78
|
addPermissions: (roleId: import("@strapi/types/dist/data").ID, permissions: any) => Promise<import("../../../shared/contracts/shared").Permission[]>;
|
|
79
79
|
hasSuperAdminRole: (user: import("../../../shared/contracts/shared").AdminUser) => boolean;
|
|
80
|
-
assignPermissions: (roleId: import("@strapi/types/dist/data").ID, permissions?: Pick<import("../../../shared/contracts/shared").Permission, "
|
|
80
|
+
assignPermissions: (roleId: import("@strapi/types/dist/data").ID, permissions?: Pick<import("../../../shared/contracts/shared").Permission, "conditions" | "action" | "subject">[]) => Promise<import("../../../shared/contracts/shared").Permission[]>;
|
|
81
81
|
resetSuperAdminPermissions: () => Promise<void>;
|
|
82
82
|
checkRolesIdForDeletion: (ids?: import("@strapi/types/dist/data").ID[]) => Promise<void>;
|
|
83
83
|
constants: {
|
|
@@ -30,7 +30,7 @@ declare const _default: {
|
|
|
30
30
|
displayWarningIfNoSuperAdmin: () => Promise<void>;
|
|
31
31
|
addPermissions: (roleId: Data.ID, permissions: any) => Promise<Permission[]>;
|
|
32
32
|
hasSuperAdminRole: (user: AdminUser) => boolean;
|
|
33
|
-
assignPermissions: (roleId: Data.ID, permissions?: Pick<Permission, "
|
|
33
|
+
assignPermissions: (roleId: Data.ID, permissions?: Pick<Permission, "conditions" | "action" | "subject">[]) => Promise<Permission[]>;
|
|
34
34
|
resetSuperAdminPermissions: () => Promise<void>;
|
|
35
35
|
checkRolesIdForDeletion: (ids?: Data.ID[]) => Promise<void>;
|
|
36
36
|
constants: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Data } from '@strapi/types';
|
|
1
|
+
import type { Data, Struct, UID } from '@strapi/types';
|
|
2
2
|
export interface Entity {
|
|
3
3
|
id: Data.ID;
|
|
4
4
|
createdAt: string;
|
|
@@ -51,3 +51,11 @@ export interface Pagination {
|
|
|
51
51
|
pageCount: number;
|
|
52
52
|
total: number;
|
|
53
53
|
}
|
|
54
|
+
export interface FieldContentSourceMap {
|
|
55
|
+
path: string;
|
|
56
|
+
type: Struct.SchemaAttributes[string]['type'];
|
|
57
|
+
documentId: string;
|
|
58
|
+
locale: string | null;
|
|
59
|
+
model?: UID.Schema;
|
|
60
|
+
kind?: Struct.ContentTypeKind;
|
|
61
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../shared/contracts/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../shared/contracts/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAW,SAAQ,MAAM;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,SAAS,EACT,MAAM,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAChD,GAAG;IACF,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG;IAC7E,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,oBAAoB,GAAG,OAAO,CAAC,GAAG;IAC9F,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B,CAAC;AACF,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACT,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CACpD,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;CAC/B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "5.23.
|
|
3
|
+
"version": "5.23.5",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -86,14 +86,14 @@
|
|
|
86
86
|
"@reduxjs/toolkit": "1.9.7",
|
|
87
87
|
"@strapi/design-system": "2.0.0-rc.29",
|
|
88
88
|
"@strapi/icons": "2.0.0-rc.29",
|
|
89
|
-
"@strapi/permissions": "5.23.
|
|
90
|
-
"@strapi/types": "5.23.
|
|
91
|
-
"@strapi/typescript-utils": "5.23.
|
|
92
|
-
"@strapi/utils": "5.23.
|
|
89
|
+
"@strapi/permissions": "5.23.5",
|
|
90
|
+
"@strapi/types": "5.23.5",
|
|
91
|
+
"@strapi/typescript-utils": "5.23.5",
|
|
92
|
+
"@strapi/utils": "5.23.5",
|
|
93
93
|
"@testing-library/dom": "10.1.0",
|
|
94
94
|
"@testing-library/react": "15.0.7",
|
|
95
95
|
"@testing-library/user-event": "14.5.2",
|
|
96
|
-
"axios": "1.
|
|
96
|
+
"axios": "1.12.2",
|
|
97
97
|
"bcryptjs": "2.4.3",
|
|
98
98
|
"boxen": "5.1.2",
|
|
99
99
|
"chalk": "^4.1.2",
|
|
@@ -143,8 +143,8 @@
|
|
|
143
143
|
"zod": "3.25.67"
|
|
144
144
|
},
|
|
145
145
|
"devDependencies": {
|
|
146
|
-
"@strapi/admin-test-utils": "5.23.
|
|
147
|
-
"@strapi/data-transfer": "5.23.
|
|
146
|
+
"@strapi/admin-test-utils": "5.23.5",
|
|
147
|
+
"@strapi/data-transfer": "5.23.5",
|
|
148
148
|
"@types/codemirror5": "npm:@types/codemirror@^5.60.15",
|
|
149
149
|
"@types/fs-extra": "11.0.4",
|
|
150
150
|
"@types/invariant": "2.2.36",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Core } from '@strapi/types';
|
|
2
|
-
export type GuidedTourRequiredActions = {
|
|
3
|
-
didCreateContent: boolean;
|
|
4
|
-
};
|
|
5
|
-
export type GuidedTourCompletedActions = keyof GuidedTourRequiredActions;
|
|
6
|
-
export declare const createGuidedTourService: ({ strapi }: {
|
|
7
|
-
strapi: Core.Strapi;
|
|
8
|
-
}) => {
|
|
9
|
-
getCompletedActions: () => Promise<"didCreateContent"[]>;
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=guided-tour.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guided-tour.d.ts","sourceRoot":"","sources":["../../../../server/src/services/guided-tour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAY,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,MAAM,yBAAyB,CAAC;AAEzE,eAAO,MAAM,uBAAuB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;;CAoC1E,CAAC"}
|