@strapi/upload 5.4.2 → 5.5.0
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/_chunks/{App-BnJnub6y.mjs → App-CnKRJSFI.mjs} +3 -3
- package/dist/_chunks/{App-BnJnub6y.mjs.map → App-CnKRJSFI.mjs.map} +1 -1
- package/dist/_chunks/{App-B_qq8rgN.js → App-DvNA8DcO.js} +4 -5
- package/dist/_chunks/{App-B_qq8rgN.js.map → App-DvNA8DcO.js.map} +1 -1
- package/dist/_chunks/{ConfigureTheView-MSDjw9SU.mjs → ConfigureTheView-BiYrBNO5.mjs} +2 -2
- package/dist/_chunks/{ConfigureTheView-MSDjw9SU.mjs.map → ConfigureTheView-BiYrBNO5.mjs.map} +1 -1
- package/dist/_chunks/{ConfigureTheView-vQ7SyJK-.js → ConfigureTheView-CgkgNQgk.js} +3 -4
- package/dist/_chunks/{ConfigureTheView-vQ7SyJK-.js.map → ConfigureTheView-CgkgNQgk.js.map} +1 -1
- package/dist/_chunks/{SettingsPage-NQUNwQi_.mjs → SettingsPage-B0kz2mu3.mjs} +2 -2
- package/dist/_chunks/{SettingsPage-NQUNwQi_.mjs.map → SettingsPage-B0kz2mu3.mjs.map} +1 -1
- package/dist/_chunks/{SettingsPage-C5mG_qOn.js → SettingsPage-BBl5rnJi.js} +3 -4
- package/dist/_chunks/{SettingsPage-C5mG_qOn.js.map → SettingsPage-BBl5rnJi.js.map} +1 -1
- package/dist/_chunks/{graphql-68BJxih-.mjs → graphql-DMPTPlvx.mjs} +2 -2
- package/dist/_chunks/{graphql-68BJxih-.mjs.map → graphql-DMPTPlvx.mjs.map} +1 -1
- package/dist/_chunks/{graphql-DkkRswQX.js → graphql-QF5Y36Qj.js} +2 -2
- package/dist/_chunks/{graphql-DkkRswQX.js.map → graphql-QF5Y36Qj.js.map} +1 -1
- package/dist/_chunks/{index-DR3Ggk1w.mjs → index-B2N2JGA2.mjs} +67 -48
- package/dist/_chunks/index-B2N2JGA2.mjs.map +1 -0
- package/dist/_chunks/{index-BDq2waDf.js → index-D57iKFts.js} +9 -16
- package/dist/_chunks/{index-BDq2waDf.js.map → index-D57iKFts.js.map} +1 -1
- package/dist/_chunks/{index-Bc0RmE2T.js → index-jOutXPCm.js} +59 -40
- package/dist/_chunks/index-jOutXPCm.js.map +1 -0
- package/dist/_chunks/{index-BGwOh3pn.mjs → index-sOlgMDiZ.mjs} +9 -16
- package/dist/_chunks/{index-BGwOh3pn.mjs.map → index-sOlgMDiZ.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.mjs +1 -1
- package/package.json +10 -9
- package/dist/_chunks/index-Bc0RmE2T.js.map +0 -1
- package/dist/_chunks/index-DR3Ggk1w.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage-NQUNwQi_.mjs","sources":["../../admin/src/pages/SettingsPage/init.ts","../../admin/src/pages/SettingsPage/reducer.ts","../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["import type { InitialState } from './reducer';\n\nexport const init = (initialState: InitialState) => {\n return initialState;\n};\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nexport type InitialState = {\n initialData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n modifiedData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n};\n\ninterface ActionGetDataSucceeded {\n type: 'GET_DATA_SUCCEEDED';\n data: InitialState['initialData'];\n}\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n keys: keyof NonNullable<InitialState['initialData']>;\n value: boolean;\n}\n\nexport type Action = ActionGetDataSucceeded | ActionOnChange;\n\nconst initialState: InitialState = {\n initialData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n modifiedData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n};\n\nconst reducer = (state: InitialState, action: Action) =>\n produce(state, (drafState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n drafState.initialData = action.data;\n drafState.modifiedData = action.data;\n break;\n }\n case 'ON_CHANGE': {\n set(drafState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n default:\n return state;\n }\n });\n\nexport { initialState, reducer };\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['upload', 'settings'],\n async queryFn() {\n const {\n data: { data },\n } = await get('/upload/settings');\n\n return data;\n },\n });\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Libray',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={12}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["initialState","data"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsPage-B0kz2mu3.mjs","sources":["../../admin/src/pages/SettingsPage/init.ts","../../admin/src/pages/SettingsPage/reducer.ts","../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["import type { InitialState } from './reducer';\n\nexport const init = (initialState: InitialState) => {\n return initialState;\n};\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nexport type InitialState = {\n initialData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n modifiedData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n};\n\ninterface ActionGetDataSucceeded {\n type: 'GET_DATA_SUCCEEDED';\n data: InitialState['initialData'];\n}\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n keys: keyof NonNullable<InitialState['initialData']>;\n value: boolean;\n}\n\nexport type Action = ActionGetDataSucceeded | ActionOnChange;\n\nconst initialState: InitialState = {\n initialData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n modifiedData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n};\n\nconst reducer = (state: InitialState, action: Action) =>\n produce(state, (drafState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n drafState.initialData = action.data;\n drafState.modifiedData = action.data;\n break;\n }\n case 'ON_CHANGE': {\n set(drafState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n default:\n return state;\n }\n });\n\nexport { initialState, reducer };\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['upload', 'settings'],\n async queryFn() {\n const {\n data: { data },\n } = await get('/upload/settings');\n\n return data;\n },\n });\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Libray',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={12}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["initialState","data"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ const icons = require("@strapi/icons");
|
|
|
8
8
|
const isEqual = require("lodash/isEqual");
|
|
9
9
|
const reactIntl = require("react-intl");
|
|
10
10
|
const reactQuery = require("react-query");
|
|
11
|
-
const index = require("./index-
|
|
11
|
+
const index = require("./index-jOutXPCm.js");
|
|
12
12
|
require("byte-size");
|
|
13
13
|
require("date-fns");
|
|
14
14
|
require("qs");
|
|
@@ -16,8 +16,7 @@ const immer = require("immer");
|
|
|
16
16
|
const set = require("lodash/set");
|
|
17
17
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
18
18
|
function _interopNamespace(e) {
|
|
19
|
-
if (e && e.__esModule)
|
|
20
|
-
return e;
|
|
19
|
+
if (e && e.__esModule) return e;
|
|
21
20
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
22
21
|
if (e) {
|
|
23
22
|
for (const k in e) {
|
|
@@ -283,4 +282,4 @@ const SettingsPage = () => {
|
|
|
283
282
|
const ProtectedSettingsPage = () => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.settings, children: /* @__PURE__ */ jsxRuntime.jsx(SettingsPage, {}) });
|
|
284
283
|
exports.ProtectedSettingsPage = ProtectedSettingsPage;
|
|
285
284
|
exports.SettingsPage = SettingsPage;
|
|
286
|
-
//# sourceMappingURL=SettingsPage-
|
|
285
|
+
//# sourceMappingURL=SettingsPage-BBl5rnJi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage-C5mG_qOn.js","sources":["../../admin/src/pages/SettingsPage/init.ts","../../admin/src/pages/SettingsPage/reducer.ts","../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["import type { InitialState } from './reducer';\n\nexport const init = (initialState: InitialState) => {\n return initialState;\n};\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nexport type InitialState = {\n initialData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n modifiedData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n};\n\ninterface ActionGetDataSucceeded {\n type: 'GET_DATA_SUCCEEDED';\n data: InitialState['initialData'];\n}\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n keys: keyof NonNullable<InitialState['initialData']>;\n value: boolean;\n}\n\nexport type Action = ActionGetDataSucceeded | ActionOnChange;\n\nconst initialState: InitialState = {\n initialData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n modifiedData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n};\n\nconst reducer = (state: InitialState, action: Action) =>\n produce(state, (drafState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n drafState.initialData = action.data;\n drafState.modifiedData = action.data;\n break;\n }\n case 'ON_CHANGE': {\n set(drafState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n default:\n return state;\n }\n });\n\nexport { initialState, reducer };\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['upload', 'settings'],\n async queryFn() {\n const {\n data: { data },\n } = await get('/upload/settings');\n\n return data;\n },\n });\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Libray',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={12}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["initialState","produce","set","useIntl","useNotification","useFetchClient","React","useQuery","data","isEqual","useMutation","jsx","Page","jsxs","getTrad","Layouts","Button","Check","Flex","Box","Typography","Grid","Field","Toggle","PERMISSIONS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsPage-BBl5rnJi.js","sources":["../../admin/src/pages/SettingsPage/init.ts","../../admin/src/pages/SettingsPage/reducer.ts","../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["import type { InitialState } from './reducer';\n\nexport const init = (initialState: InitialState) => {\n return initialState;\n};\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nexport type InitialState = {\n initialData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n modifiedData: {\n responsiveDimensions?: boolean;\n sizeOptimization?: boolean;\n autoOrientation?: boolean;\n videoPreview?: boolean;\n } | null;\n};\n\ninterface ActionGetDataSucceeded {\n type: 'GET_DATA_SUCCEEDED';\n data: InitialState['initialData'];\n}\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n keys: keyof NonNullable<InitialState['initialData']>;\n value: boolean;\n}\n\nexport type Action = ActionGetDataSucceeded | ActionOnChange;\n\nconst initialState: InitialState = {\n initialData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n modifiedData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n};\n\nconst reducer = (state: InitialState, action: Action) =>\n produce(state, (drafState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n drafState.initialData = action.data;\n drafState.modifiedData = action.data;\n break;\n }\n case 'ON_CHANGE': {\n set(drafState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n default:\n return state;\n }\n });\n\nexport { initialState, reducer };\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['upload', 'settings'],\n async queryFn() {\n const {\n data: { data },\n } = await get('/upload/settings');\n\n return data;\n },\n });\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Libray',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={12}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["initialState","produce","set","useIntl","useNotification","useFetchClient","React","useQuery","data","isEqual","useMutation","jsx","Page","jsxs","getTrad","Layouts","Button","Check","Flex","Box","Typography","Grid","Field","Toggle","PERMISSIONS"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FILE_MODEL_UID } from "./index-
|
|
1
|
+
import { F as FILE_MODEL_UID } from "./index-sOlgMDiZ.mjs";
|
|
2
2
|
const FILE_INFO_INPUT_TYPE_NAME = "FileInfoInput";
|
|
3
3
|
const installGraphqlExtension = ({ strapi }) => {
|
|
4
4
|
const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin("graphql");
|
|
@@ -68,4 +68,4 @@ const installGraphqlExtension = ({ strapi }) => {
|
|
|
68
68
|
export {
|
|
69
69
|
installGraphqlExtension
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=graphql-
|
|
71
|
+
//# sourceMappingURL=graphql-DMPTPlvx.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-
|
|
1
|
+
{"version":3,"file":"graphql-DMPTPlvx.mjs","sources":["../../server/src/graphql.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { FILE_MODEL_UID } from './constants';\n\nconst FILE_INFO_INPUT_TYPE_NAME = 'FileInfoInput';\n\nexport const installGraphqlExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin('graphql');\n const { service: getUploadService } = strapi.plugin('upload');\n\n const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);\n\n if (!isShadowCRUDEnabled) {\n return;\n }\n\n getGraphQLService('extension').shadowCRUD('plugin::upload.folder').disable();\n getGraphQLService('extension').shadowCRUD('plugin::upload.file').disableMutations();\n\n const { getTypeName } = getGraphQLService('utils').naming;\n\n const fileModel = strapi.getModel(FILE_MODEL_UID);\n const fileTypeName = getTypeName(fileModel);\n /**\n * Register Upload's types, queries & mutations to the content API using the GraphQL extension API\n */\n getGraphQLService('extension').use(({ nexus }: { nexus: any }) => {\n const { inputObjectType, extendType, nonNull } = nexus;\n\n // Represents the input data payload for the file's information\n const fileInfoInputType = inputObjectType({\n name: FILE_INFO_INPUT_TYPE_NAME,\n\n definition(t: any) {\n t.string('name');\n t.string('alternativeText');\n t.string('caption');\n },\n });\n\n const mutations = extendType({\n type: 'Mutation',\n\n definition(t: any) {\n /**\n * Update some information for a given file\n */\n t.field('updateUploadFile', {\n type: nonNull(fileTypeName),\n\n args: {\n id: nonNull('ID'),\n info: FILE_INFO_INPUT_TYPE_NAME,\n },\n\n async resolve(parent: unknown, args: { id: number; info: any }) {\n const { id, info } = args;\n\n return getUploadService('upload').updateFileInfo(id, info);\n },\n });\n\n /**\n * Delete & remove a given file\n */\n t.field('deleteUploadFile', {\n type: fileTypeName,\n\n args: {\n id: nonNull('ID'),\n },\n\n async resolve(parent: unknown, args: { id: number }) {\n const { id } = args;\n\n const file = await getUploadService('upload').findOne(id);\n\n if (!file) {\n return null;\n }\n\n return getUploadService('upload').remove(file);\n },\n });\n },\n });\n\n return {\n types: [fileInfoInputType, mutations],\n resolversConfig: {\n // Use custom scopes for the upload file CRUD operations\n 'Query.uploadFiles': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFiles_connection': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFile': { auth: { scope: 'plugin::upload.content-api.findOne' } },\n 'Mutation.updateUploadFile': { auth: { scope: 'plugin::upload.content-api.upload' } },\n 'Mutation.deleteUploadFile': { auth: { scope: 'plugin::upload.content-api.destroy' } },\n },\n };\n });\n};\n"],"names":[],"mappings":";AAIA,MAAM,4BAA4B;AAE3B,MAAM,0BAA0B,CAAC,EAAE,aAAsC;AACxE,QAAA,EAAE,SAAS,mBAAmB,QAAQ,kBAAkB,OAAO,OAAO,SAAS;AACrF,QAAM,EAAE,SAAS,iBAAA,IAAqB,OAAO,OAAO,QAAQ;AAEtD,QAAA,sBAAsB,cAAc,cAAc,IAAI;AAE5D,MAAI,CAAC,qBAAqB;AACxB;AAAA,EAAA;AAGF,oBAAkB,WAAW,EAAE,WAAW,uBAAuB,EAAE,QAAQ;AAC3E,oBAAkB,WAAW,EAAE,WAAW,qBAAqB,EAAE,iBAAiB;AAElF,QAAM,EAAE,YAAgB,IAAA,kBAAkB,OAAO,EAAE;AAE7C,QAAA,YAAY,OAAO,SAAS,cAAc;AAC1C,QAAA,eAAe,YAAY,SAAS;AAI1C,oBAAkB,WAAW,EAAE,IAAI,CAAC,EAAE,YAA4B;AAChE,UAAM,EAAE,iBAAiB,YAAY,QAAY,IAAA;AAGjD,UAAM,oBAAoB,gBAAgB;AAAA,MACxC,MAAM;AAAA,MAEN,WAAW,GAAQ;AACjB,UAAE,OAAO,MAAM;AACf,UAAE,OAAO,iBAAiB;AAC1B,UAAE,OAAO,SAAS;AAAA,MAAA;AAAA,IACpB,CACD;AAED,UAAM,YAAY,WAAW;AAAA,MAC3B,MAAM;AAAA,MAEN,WAAW,GAAQ;AAIjB,UAAE,MAAM,oBAAoB;AAAA,UAC1B,MAAM,QAAQ,YAAY;AAAA,UAE1B,MAAM;AAAA,YACJ,IAAI,QAAQ,IAAI;AAAA,YAChB,MAAM;AAAA,UACR;AAAA,UAEA,MAAM,QAAQ,QAAiB,MAAiC;AACxD,kBAAA,EAAE,IAAI,KAAA,IAAS;AAErB,mBAAO,iBAAiB,QAAQ,EAAE,eAAe,IAAI,IAAI;AAAA,UAAA;AAAA,QAC3D,CACD;AAKD,UAAE,MAAM,oBAAoB;AAAA,UAC1B,MAAM;AAAA,UAEN,MAAM;AAAA,YACJ,IAAI,QAAQ,IAAI;AAAA,UAClB;AAAA,UAEA,MAAM,QAAQ,QAAiB,MAAsB;AAC7C,kBAAA,EAAE,OAAO;AAEf,kBAAM,OAAO,MAAM,iBAAiB,QAAQ,EAAE,QAAQ,EAAE;AAExD,gBAAI,CAAC,MAAM;AACF,qBAAA;AAAA,YAAA;AAGT,mBAAO,iBAAiB,QAAQ,EAAE,OAAO,IAAI;AAAA,UAAA;AAAA,QAC/C,CACD;AAAA,MAAA;AAAA,IACH,CACD;AAEM,WAAA;AAAA,MACL,OAAO,CAAC,mBAAmB,SAAS;AAAA,MACpC,iBAAiB;AAAA;AAAA,QAEf,qBAAqB,EAAE,MAAM,EAAE,OAAO,oCAAoC;AAAA,QAC1E,gCAAgC,EAAE,MAAM,EAAE,OAAO,oCAAoC;AAAA,QACrF,oBAAoB,EAAE,MAAM,EAAE,OAAO,uCAAuC;AAAA,QAC5E,6BAA6B,EAAE,MAAM,EAAE,OAAO,sCAAsC;AAAA,QACpF,6BAA6B,EAAE,MAAM,EAAE,OAAO,qCAAuC,EAAA;AAAA,MAAA;AAAA,IAEzF;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const index = require("./index-
|
|
3
|
+
const index = require("./index-D57iKFts.js");
|
|
4
4
|
const FILE_INFO_INPUT_TYPE_NAME = "FileInfoInput";
|
|
5
5
|
const installGraphqlExtension = ({ strapi }) => {
|
|
6
6
|
const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin("graphql");
|
|
@@ -68,4 +68,4 @@ const installGraphqlExtension = ({ strapi }) => {
|
|
|
68
68
|
});
|
|
69
69
|
};
|
|
70
70
|
exports.installGraphqlExtension = installGraphqlExtension;
|
|
71
|
-
//# sourceMappingURL=graphql-
|
|
71
|
+
//# sourceMappingURL=graphql-QF5Y36Qj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-
|
|
1
|
+
{"version":3,"file":"graphql-QF5Y36Qj.js","sources":["../../server/src/graphql.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { FILE_MODEL_UID } from './constants';\n\nconst FILE_INFO_INPUT_TYPE_NAME = 'FileInfoInput';\n\nexport const installGraphqlExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin('graphql');\n const { service: getUploadService } = strapi.plugin('upload');\n\n const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);\n\n if (!isShadowCRUDEnabled) {\n return;\n }\n\n getGraphQLService('extension').shadowCRUD('plugin::upload.folder').disable();\n getGraphQLService('extension').shadowCRUD('plugin::upload.file').disableMutations();\n\n const { getTypeName } = getGraphQLService('utils').naming;\n\n const fileModel = strapi.getModel(FILE_MODEL_UID);\n const fileTypeName = getTypeName(fileModel);\n /**\n * Register Upload's types, queries & mutations to the content API using the GraphQL extension API\n */\n getGraphQLService('extension').use(({ nexus }: { nexus: any }) => {\n const { inputObjectType, extendType, nonNull } = nexus;\n\n // Represents the input data payload for the file's information\n const fileInfoInputType = inputObjectType({\n name: FILE_INFO_INPUT_TYPE_NAME,\n\n definition(t: any) {\n t.string('name');\n t.string('alternativeText');\n t.string('caption');\n },\n });\n\n const mutations = extendType({\n type: 'Mutation',\n\n definition(t: any) {\n /**\n * Update some information for a given file\n */\n t.field('updateUploadFile', {\n type: nonNull(fileTypeName),\n\n args: {\n id: nonNull('ID'),\n info: FILE_INFO_INPUT_TYPE_NAME,\n },\n\n async resolve(parent: unknown, args: { id: number; info: any }) {\n const { id, info } = args;\n\n return getUploadService('upload').updateFileInfo(id, info);\n },\n });\n\n /**\n * Delete & remove a given file\n */\n t.field('deleteUploadFile', {\n type: fileTypeName,\n\n args: {\n id: nonNull('ID'),\n },\n\n async resolve(parent: unknown, args: { id: number }) {\n const { id } = args;\n\n const file = await getUploadService('upload').findOne(id);\n\n if (!file) {\n return null;\n }\n\n return getUploadService('upload').remove(file);\n },\n });\n },\n });\n\n return {\n types: [fileInfoInputType, mutations],\n resolversConfig: {\n // Use custom scopes for the upload file CRUD operations\n 'Query.uploadFiles': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFiles_connection': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFile': { auth: { scope: 'plugin::upload.content-api.findOne' } },\n 'Mutation.updateUploadFile': { auth: { scope: 'plugin::upload.content-api.upload' } },\n 'Mutation.deleteUploadFile': { auth: { scope: 'plugin::upload.content-api.destroy' } },\n },\n };\n });\n};\n"],"names":["FILE_MODEL_UID"],"mappings":";;;AAIA,MAAM,4BAA4B;AAE3B,MAAM,0BAA0B,CAAC,EAAE,aAAsC;AACxE,QAAA,EAAE,SAAS,mBAAmB,QAAQ,kBAAkB,OAAO,OAAO,SAAS;AACrF,QAAM,EAAE,SAAS,iBAAA,IAAqB,OAAO,OAAO,QAAQ;AAEtD,QAAA,sBAAsB,cAAc,cAAc,IAAI;AAE5D,MAAI,CAAC,qBAAqB;AACxB;AAAA,EAAA;AAGF,oBAAkB,WAAW,EAAE,WAAW,uBAAuB,EAAE,QAAQ;AAC3E,oBAAkB,WAAW,EAAE,WAAW,qBAAqB,EAAE,iBAAiB;AAElF,QAAM,EAAE,YAAgB,IAAA,kBAAkB,OAAO,EAAE;AAE7C,QAAA,YAAY,OAAO,SAASA,oBAAc;AAC1C,QAAA,eAAe,YAAY,SAAS;AAI1C,oBAAkB,WAAW,EAAE,IAAI,CAAC,EAAE,YAA4B;AAChE,UAAM,EAAE,iBAAiB,YAAY,QAAY,IAAA;AAGjD,UAAM,oBAAoB,gBAAgB;AAAA,MACxC,MAAM;AAAA,MAEN,WAAW,GAAQ;AACjB,UAAE,OAAO,MAAM;AACf,UAAE,OAAO,iBAAiB;AAC1B,UAAE,OAAO,SAAS;AAAA,MAAA;AAAA,IACpB,CACD;AAED,UAAM,YAAY,WAAW;AAAA,MAC3B,MAAM;AAAA,MAEN,WAAW,GAAQ;AAIjB,UAAE,MAAM,oBAAoB;AAAA,UAC1B,MAAM,QAAQ,YAAY;AAAA,UAE1B,MAAM;AAAA,YACJ,IAAI,QAAQ,IAAI;AAAA,YAChB,MAAM;AAAA,UACR;AAAA,UAEA,MAAM,QAAQ,QAAiB,MAAiC;AACxD,kBAAA,EAAE,IAAI,KAAA,IAAS;AAErB,mBAAO,iBAAiB,QAAQ,EAAE,eAAe,IAAI,IAAI;AAAA,UAAA;AAAA,QAC3D,CACD;AAKD,UAAE,MAAM,oBAAoB;AAAA,UAC1B,MAAM;AAAA,UAEN,MAAM;AAAA,YACJ,IAAI,QAAQ,IAAI;AAAA,UAClB;AAAA,UAEA,MAAM,QAAQ,QAAiB,MAAsB;AAC7C,kBAAA,EAAE,OAAO;AAEf,kBAAM,OAAO,MAAM,iBAAiB,QAAQ,EAAE,QAAQ,EAAE;AAExD,gBAAI,CAAC,MAAM;AACF,qBAAA;AAAA,YAAA;AAGT,mBAAO,iBAAiB,QAAQ,EAAE,OAAO,IAAI;AAAA,UAAA;AAAA,QAC/C,CACD;AAAA,MAAA;AAAA,IACH,CACD;AAEM,WAAA;AAAA,MACL,OAAO,CAAC,mBAAmB,SAAS;AAAA,MACpC,iBAAiB;AAAA;AAAA,QAEf,qBAAqB,EAAE,MAAM,EAAE,OAAO,oCAAoC;AAAA,QAC1E,gCAAgC,EAAE,MAAM,EAAE,OAAO,oCAAoC;AAAA,QACrF,oBAAoB,EAAE,MAAM,EAAE,OAAO,uCAAuC;AAAA,QAC5E,6BAA6B,EAAE,MAAM,EAAE,OAAO,sCAAsC;AAAA,QACpF,6BAA6B,EAAE,MAAM,EAAE,OAAO,qCAAuC,EAAA;AAAA,MAAA;AAAA,IAEzF;AAAA,EAAA,CACD;AACH;;"}
|
|
@@ -15,23 +15,31 @@ import { Formik, Form } from "formik";
|
|
|
15
15
|
import isEqual from "lodash/isEqual";
|
|
16
16
|
import ReactSelect, { components } from "react-select";
|
|
17
17
|
import Cropper from "cropperjs";
|
|
18
|
+
import MuxPlayer from "@mux/mux-player-react";
|
|
18
19
|
import "cropperjs/dist/cropper.css";
|
|
19
20
|
import isEmpty from "lodash/isEmpty";
|
|
20
21
|
import { useDrop, useDrag } from "react-dnd";
|
|
21
22
|
import { useLocation, Link as Link$1, NavLink } from "react-router-dom";
|
|
22
23
|
import { EmptyDocuments } from "@strapi/icons/symbols";
|
|
23
24
|
import parseISO from "date-fns/parseISO";
|
|
24
|
-
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
|
25
|
+
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
|
25
26
|
const v = glob[path];
|
|
26
27
|
if (v) {
|
|
27
28
|
return typeof v === "function" ? v() : Promise.resolve(v);
|
|
28
29
|
}
|
|
29
30
|
return new Promise((_, reject) => {
|
|
30
|
-
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
|
31
|
+
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
|
32
|
+
reject.bind(
|
|
33
|
+
null,
|
|
34
|
+
new Error(
|
|
35
|
+
"Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
|
|
36
|
+
)
|
|
37
|
+
)
|
|
38
|
+
);
|
|
31
39
|
});
|
|
32
40
|
};
|
|
33
41
|
const name$1 = "@strapi/upload";
|
|
34
|
-
const version = "5.4.
|
|
42
|
+
const version = "5.4.2";
|
|
35
43
|
const description = "Makes it easy to upload images and files to your Strapi Application.";
|
|
36
44
|
const license = "SEE LICENSE IN LICENSE";
|
|
37
45
|
const author = {
|
|
@@ -87,10 +95,11 @@ const scripts = {
|
|
|
87
95
|
watch: "pack-up watch"
|
|
88
96
|
};
|
|
89
97
|
const dependencies = {
|
|
90
|
-
"@
|
|
91
|
-
"@strapi/
|
|
92
|
-
"@strapi/
|
|
93
|
-
"@strapi/
|
|
98
|
+
"@mux/mux-player-react": "3.1.0",
|
|
99
|
+
"@strapi/design-system": "2.0.0-rc.14",
|
|
100
|
+
"@strapi/icons": "2.0.0-rc.14",
|
|
101
|
+
"@strapi/provider-upload-local": "workspace:*",
|
|
102
|
+
"@strapi/utils": "workspace:*",
|
|
94
103
|
"byte-size": "8.1.1",
|
|
95
104
|
cropperjs: "1.6.1",
|
|
96
105
|
"date-fns": "2.30.0",
|
|
@@ -112,9 +121,9 @@ const dependencies = {
|
|
|
112
121
|
yup: "0.32.9"
|
|
113
122
|
};
|
|
114
123
|
const devDependencies = {
|
|
115
|
-
"@strapi/admin": "
|
|
116
|
-
"@strapi/pack-up": "5.0.
|
|
117
|
-
"@strapi/types": "
|
|
124
|
+
"@strapi/admin": "workspace:*",
|
|
125
|
+
"@strapi/pack-up": "5.0.2",
|
|
126
|
+
"@strapi/types": "workspace:*",
|
|
118
127
|
"@testing-library/dom": "10.1.0",
|
|
119
128
|
"@testing-library/react": "15.0.7",
|
|
120
129
|
"@testing-library/user-event": "14.5.2",
|
|
@@ -1602,34 +1611,17 @@ const RemoveAssetDialog = ({ open, onClose, asset }) => {
|
|
|
1602
1611
|
};
|
|
1603
1612
|
return /* @__PURE__ */ jsx(Dialog.Root, { open, onOpenChange: onClose, children: /* @__PURE__ */ jsx(ConfirmDialog, { onConfirm: handleConfirm }) });
|
|
1604
1613
|
};
|
|
1605
|
-
const usePersistentState = (key, defaultValue) => {
|
|
1606
|
-
const [value, setValue] = useState(() => {
|
|
1607
|
-
const stickyValue = window.localStorage.getItem(key);
|
|
1608
|
-
if (stickyValue !== null) {
|
|
1609
|
-
try {
|
|
1610
|
-
return JSON.parse(stickyValue);
|
|
1611
|
-
} catch {
|
|
1612
|
-
return stickyValue;
|
|
1613
|
-
}
|
|
1614
|
-
}
|
|
1615
|
-
return defaultValue;
|
|
1616
|
-
});
|
|
1617
|
-
useEffect(() => {
|
|
1618
|
-
window.localStorage.setItem(key, JSON.stringify(value));
|
|
1619
|
-
}, [key, value]);
|
|
1620
|
-
return [value, setValue];
|
|
1621
|
-
};
|
|
1622
1614
|
const CardAsset$1 = styled(Flex)`
|
|
1623
1615
|
border-radius: ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius} 0 0;
|
|
1624
1616
|
background: linear-gradient(180deg, #ffffff 0%, #f6f6f9 121.48%);
|
|
1625
1617
|
`;
|
|
1626
1618
|
const AssetPreview = React.forwardRef(({ mime, url, name: name2, ...props }, ref) => {
|
|
1627
|
-
const
|
|
1619
|
+
const theme = useTheme();
|
|
1628
1620
|
if (mime.includes(AssetType.Image)) {
|
|
1629
1621
|
return /* @__PURE__ */ jsx("img", { ref, src: url, alt: name2, ...props });
|
|
1630
1622
|
}
|
|
1631
1623
|
if (mime.includes(AssetType.Video)) {
|
|
1632
|
-
return /* @__PURE__ */ jsx(
|
|
1624
|
+
return /* @__PURE__ */ jsx(MuxPlayer, { src: url, accentColor: theme.colors.primary500 });
|
|
1633
1625
|
}
|
|
1634
1626
|
if (mime.includes(AssetType.Audio)) {
|
|
1635
1627
|
return /* @__PURE__ */ jsx("audio", { controls: true, src: url, ref, ...props, children: name2 });
|
|
@@ -1659,12 +1651,24 @@ const Wrapper$1 = styled.div`
|
|
|
1659
1651
|
}
|
|
1660
1652
|
|
|
1661
1653
|
img,
|
|
1662
|
-
|
|
1654
|
+
mux-player {
|
|
1663
1655
|
margin: 0;
|
|
1664
1656
|
padding: 0;
|
|
1665
1657
|
max-height: 26.4rem;
|
|
1666
1658
|
max-width: 100%;
|
|
1667
1659
|
}
|
|
1660
|
+
|
|
1661
|
+
mux-player {
|
|
1662
|
+
--play-button: inline-flex;
|
|
1663
|
+
--mute-button: inline-flex;
|
|
1664
|
+
--pip-button: inline-flex;
|
|
1665
|
+
--fullscreen-button: inline-flex;
|
|
1666
|
+
--playback-rate-button: inline-flex;
|
|
1667
|
+
--volume-range: inline-flex;
|
|
1668
|
+
--time-range: inline-flex;
|
|
1669
|
+
--time-display: inline-flex;
|
|
1670
|
+
--duration-display: inline-flex;
|
|
1671
|
+
}
|
|
1668
1672
|
`;
|
|
1669
1673
|
const ActionRow = styled(Flex)`
|
|
1670
1674
|
height: 5.2rem;
|
|
@@ -2645,6 +2649,23 @@ const useFolder = (id, { enabled = true } = {}) => {
|
|
|
2645
2649
|
);
|
|
2646
2650
|
return { data, error, isLoading };
|
|
2647
2651
|
};
|
|
2652
|
+
const usePersistentState = (key, defaultValue) => {
|
|
2653
|
+
const [value, setValue] = useState(() => {
|
|
2654
|
+
const stickyValue = window.localStorage.getItem(key);
|
|
2655
|
+
if (stickyValue !== null) {
|
|
2656
|
+
try {
|
|
2657
|
+
return JSON.parse(stickyValue);
|
|
2658
|
+
} catch {
|
|
2659
|
+
return stickyValue;
|
|
2660
|
+
}
|
|
2661
|
+
}
|
|
2662
|
+
return defaultValue;
|
|
2663
|
+
});
|
|
2664
|
+
useEffect(() => {
|
|
2665
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
2666
|
+
}, [key, value]);
|
|
2667
|
+
return [value, setValue];
|
|
2668
|
+
};
|
|
2648
2669
|
const Extension$1 = styled.span`
|
|
2649
2670
|
text-transform: uppercase;
|
|
2650
2671
|
`;
|
|
@@ -2813,8 +2834,7 @@ const VideoPreview = ({
|
|
|
2813
2834
|
};
|
|
2814
2835
|
const handleThumbnailVisibility = (e) => {
|
|
2815
2836
|
const video = e.currentTarget;
|
|
2816
|
-
if (video.readyState < HAVE_FUTURE_DATA)
|
|
2817
|
-
return;
|
|
2837
|
+
if (video.readyState < HAVE_FUTURE_DATA) return;
|
|
2818
2838
|
video.play();
|
|
2819
2839
|
};
|
|
2820
2840
|
return /* @__PURE__ */ jsxs(Box, { tag: "figure", ...props, children: [
|
|
@@ -4346,8 +4366,7 @@ const SearchAsset = ({ onChangeSearch, queryValue = null }) => {
|
|
|
4346
4366
|
return /* @__PURE__ */ jsx(IconButton, { label: "Search", onClick: handleToggle, children: /* @__PURE__ */ jsx(Search, {}) });
|
|
4347
4367
|
};
|
|
4348
4368
|
const isSelectable = (allowedTypes, mime = "") => {
|
|
4349
|
-
if (!mime)
|
|
4350
|
-
return false;
|
|
4369
|
+
if (!mime) return false;
|
|
4351
4370
|
const fileType = mime.split("/")[0];
|
|
4352
4371
|
return allowedTypes.includes(fileType) || allowedTypes.includes("file") && !["video", "image", "audio"].includes(fileType);
|
|
4353
4372
|
};
|
|
@@ -5987,7 +6006,7 @@ const admin = {
|
|
|
5987
6006
|
defaultMessage: "Media Library"
|
|
5988
6007
|
},
|
|
5989
6008
|
permissions: PERMISSIONS.main,
|
|
5990
|
-
Component: () => import("./App-
|
|
6009
|
+
Component: () => import("./App-CnKRJSFI.mjs").then((mod) => ({ default: mod.Upload })),
|
|
5991
6010
|
position: 4
|
|
5992
6011
|
});
|
|
5993
6012
|
app.addSettingsLink("global", {
|
|
@@ -5998,7 +6017,7 @@ const admin = {
|
|
|
5998
6017
|
defaultMessage: "Media Library"
|
|
5999
6018
|
},
|
|
6000
6019
|
async Component() {
|
|
6001
|
-
const { ProtectedSettingsPage } = await import("./SettingsPage-
|
|
6020
|
+
const { ProtectedSettingsPage } = await import("./SettingsPage-B0kz2mu3.mjs");
|
|
6002
6021
|
return { default: ProtectedSettingsPage };
|
|
6003
6022
|
},
|
|
6004
6023
|
permissions: PERMISSIONS.settings
|
|
@@ -6021,7 +6040,7 @@ const admin = {
|
|
|
6021
6040
|
async registerTrads({ locales }) {
|
|
6022
6041
|
const importedTrads = await Promise.all(
|
|
6023
6042
|
locales.map((locale) => {
|
|
6024
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ca.json": () => import("./ca-B2_I-q1t.mjs"), "./translations/de.json": () => import("./de-A7mEKx6c.mjs"), "./translations/dk.json": () => import("./dk-BPfkJb9q.mjs"), "./translations/en.json": () => import("./en-oDx2Gnre.mjs"), "./translations/es.json": () => import("./es-CuWi2pOn.mjs"), "./translations/fr.json": () => import("./fr-BN6ndmWf.mjs"), "./translations/he.json": () => import("./he-C9ZOXBB-.mjs"), "./translations/it.json": () => import("./it-B7rmoZNx.mjs"), "./translations/ja.json": () => import("./ja-DlaJTi_3.mjs"), "./translations/ko.json": () => import("./ko-vJl9kPpn.mjs"), "./translations/ms.json": () => import("./ms-CqwG8v8l.mjs"), "./translations/pl.json": () => import("./pl-Cj8jChOO.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-B4LJHJIp.mjs"), "./translations/pt.json": () => import("./pt-CNOOM_7x.mjs"), "./translations/ru.json": () => import("./ru-DqglvSUC.mjs"), "./translations/sk.json": () => import("./sk-Dgpb3lnz.mjs"), "./translations/th.json": () => import("./th-DRfzuiFf.mjs"), "./translations/tr.json": () => import("./tr--GzWXE_A.mjs"), "./translations/uk.json": () => import("./uk-DVMT2Piq.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-Cpmhg8uH.mjs"), "./translations/zh.json": () => import("./zh-HOnih0is.mjs") }), `./translations/${locale}.json
|
|
6043
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ca.json": () => import("./ca-B2_I-q1t.mjs"), "./translations/de.json": () => import("./de-A7mEKx6c.mjs"), "./translations/dk.json": () => import("./dk-BPfkJb9q.mjs"), "./translations/en.json": () => import("./en-oDx2Gnre.mjs"), "./translations/es.json": () => import("./es-CuWi2pOn.mjs"), "./translations/fr.json": () => import("./fr-BN6ndmWf.mjs"), "./translations/he.json": () => import("./he-C9ZOXBB-.mjs"), "./translations/it.json": () => import("./it-B7rmoZNx.mjs"), "./translations/ja.json": () => import("./ja-DlaJTi_3.mjs"), "./translations/ko.json": () => import("./ko-vJl9kPpn.mjs"), "./translations/ms.json": () => import("./ms-CqwG8v8l.mjs"), "./translations/pl.json": () => import("./pl-Cj8jChOO.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-B4LJHJIp.mjs"), "./translations/pt.json": () => import("./pt-CNOOM_7x.mjs"), "./translations/ru.json": () => import("./ru-DqglvSUC.mjs"), "./translations/sk.json": () => import("./sk-Dgpb3lnz.mjs"), "./translations/th.json": () => import("./th-DRfzuiFf.mjs"), "./translations/tr.json": () => import("./tr--GzWXE_A.mjs"), "./translations/uk.json": () => import("./uk-DVMT2Piq.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-Cpmhg8uH.mjs"), "./translations/zh.json": () => import("./zh-HOnih0is.mjs") }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
|
|
6025
6044
|
return {
|
|
6026
6045
|
data: prefixPluginTranslations(data, pluginId),
|
|
6027
6046
|
locale
|
|
@@ -6060,20 +6079,20 @@ export {
|
|
|
6060
6079
|
useAssets as i,
|
|
6061
6080
|
useFolders as j,
|
|
6062
6081
|
containsAssetFilter as k,
|
|
6063
|
-
|
|
6064
|
-
|
|
6082
|
+
useFolder as l,
|
|
6083
|
+
useSelectionState as m,
|
|
6065
6084
|
normalizeAPIError as n,
|
|
6066
|
-
|
|
6085
|
+
SortPicker as o,
|
|
6067
6086
|
pluginId as p,
|
|
6068
|
-
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
|
|
6087
|
+
FolderGridList as q,
|
|
6088
|
+
FolderCard as r,
|
|
6089
|
+
FolderCardBody as s,
|
|
6090
|
+
FolderCardBodyAction as t,
|
|
6072
6091
|
useFolderCard as u,
|
|
6073
6092
|
viewOptions as v,
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6093
|
+
EditFolderDialog as w,
|
|
6094
|
+
EditAssetDialog as x,
|
|
6095
|
+
localStorageKeys as y,
|
|
6077
6096
|
useConfig as z
|
|
6078
6097
|
};
|
|
6079
|
-
//# sourceMappingURL=index-
|
|
6098
|
+
//# sourceMappingURL=index-B2N2JGA2.mjs.map
|