@strapi/upload 5.0.0-beta.8 → 5.0.0-beta.9

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.
Files changed (41) hide show
  1. package/dist/_chunks/{graphql-Beol7Y3b.js → graphql-Bj6oo87a.js} +2 -2
  2. package/dist/_chunks/{graphql-Beol7Y3b.js.map → graphql-Bj6oo87a.js.map} +1 -1
  3. package/dist/_chunks/{graphql-BVCZSNa2.mjs → graphql-edcz_5zt.mjs} +2 -2
  4. package/dist/_chunks/{graphql-BVCZSNa2.mjs.map → graphql-edcz_5zt.mjs.map} +1 -1
  5. package/dist/_chunks/{index-CpIJ-CJ3.mjs → index-4iUTOybK.mjs} +2 -2
  6. package/dist/_chunks/{index-CpIJ-CJ3.mjs.map → index-4iUTOybK.mjs.map} +1 -1
  7. package/dist/_chunks/{index-TnbVQ0RI.mjs → index-BRMOG3M5.mjs} +2 -2
  8. package/dist/_chunks/{index-TnbVQ0RI.mjs.map → index-BRMOG3M5.mjs.map} +1 -1
  9. package/dist/_chunks/{index-VKvfSVC7.mjs → index-BTrpl94p.mjs} +76 -29
  10. package/dist/_chunks/index-BTrpl94p.mjs.map +1 -0
  11. package/dist/_chunks/{index-DwWG14v6.js → index-C6Zy6JkX.js} +3 -3
  12. package/dist/_chunks/{index-DwWG14v6.js.map → index-C6Zy6JkX.js.map} +1 -1
  13. package/dist/_chunks/{index-C7nlFYgw.js → index-DLpj5yNr.js} +8 -8
  14. package/dist/_chunks/{index-C7nlFYgw.js.map → index-DLpj5yNr.js.map} +1 -1
  15. package/dist/_chunks/{index-Bvg2llNU.mjs → index-Dhpsbqb0.mjs} +3 -3
  16. package/dist/_chunks/{index-Bvg2llNU.mjs.map → index-Dhpsbqb0.mjs.map} +1 -1
  17. package/dist/_chunks/{index-CjolPMop.mjs → index-DmPsR26u.mjs} +8 -8
  18. package/dist/_chunks/{index-CjolPMop.mjs.map → index-DmPsR26u.mjs.map} +1 -1
  19. package/dist/_chunks/{index-De1W-cb7.js → index-GkNHbl9s.js} +2 -2
  20. package/dist/_chunks/{index-De1W-cb7.js.map → index-GkNHbl9s.js.map} +1 -1
  21. package/dist/_chunks/{index-B96Z3Gq6.js → index-XL3Mrkqq.js} +2 -2
  22. package/dist/_chunks/{index-B96Z3Gq6.js.map → index-XL3Mrkqq.js.map} +1 -1
  23. package/dist/_chunks/{index-CRhNpXFr.js → index-_XL6OkHu.js} +76 -29
  24. package/dist/_chunks/index-_XL6OkHu.js.map +1 -0
  25. package/dist/admin/index.js +1 -1
  26. package/dist/admin/index.mjs +1 -1
  27. package/dist/server/index.js +1 -1
  28. package/dist/server/index.mjs +1 -1
  29. package/dist/server/src/index.d.ts +1 -43
  30. package/dist/server/src/index.d.ts.map +1 -1
  31. package/dist/server/src/services/image-manipulation.d.ts +1 -43
  32. package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
  33. package/dist/server/src/services/index.d.ts +1 -43
  34. package/dist/server/src/services/index.d.ts.map +1 -1
  35. package/dist/server/src/services/provider.d.ts.map +1 -1
  36. package/dist/server/src/services/upload.d.ts.map +1 -1
  37. package/dist/server/src/types.d.ts +2 -0
  38. package/dist/server/src/types.d.ts.map +1 -1
  39. package/package.json +6 -6
  40. package/dist/_chunks/index-CRhNpXFr.js.map +0 -1
  41. package/dist/_chunks/index-VKvfSVC7.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index = require("./index-CRhNpXFr.js");
3
+ const index = require("./index-_XL6OkHu.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-Beol7Y3b.js.map
71
+ //# sourceMappingURL=graphql-Bj6oo87a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-Beol7Y3b.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,EACF;AAEA,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,MAAc,cAAA;AAC1C,QAAA,eAAe,YAAY,SAAS;AAI1C,oBAAkB,WAAW,EAAE,IAAI,CAAC,EAAE,YAA4B;AAChE,UAAM,EAAE,iBAAiB,YAAY,QAAA,IAAY;AAGjD,UAAM,oBAAoB,gBAAgB;AAAA,MACxC,MAAM;AAAA,MAEN,WAAW,GAAQ;AACjB,UAAE,OAAO,MAAM;AACf,UAAE,OAAO,iBAAiB;AAC1B,UAAE,OAAO,SAAS;AAAA,MACpB;AAAA,IAAA,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,KAAS,IAAA;AAErB,mBAAO,iBAAiB,QAAQ,EAAE,eAAe,IAAI,IAAI;AAAA,UAC3D;AAAA,QAAA,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,GAAO,IAAA;AAEf,kBAAM,OAAO,MAAM,iBAAiB,QAAQ,EAAE,QAAQ,EAAE;AAExD,gBAAI,CAAC,MAAM;AACF,qBAAA;AAAA,YACT;AAEA,mBAAO,iBAAiB,QAAQ,EAAE,OAAO,IAAI;AAAA,UAC/C;AAAA,QAAA,CACD;AAAA,MACH;AAAA,IAAA,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,uCAAuC;AAAA,MACvF;AAAA,IAAA;AAAA,EACF,CACD;AACH;;"}
1
+ {"version":3,"file":"graphql-Bj6oo87a.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,EACF;AAEA,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,MAAc,cAAA;AAC1C,QAAA,eAAe,YAAY,SAAS;AAI1C,oBAAkB,WAAW,EAAE,IAAI,CAAC,EAAE,YAA4B;AAChE,UAAM,EAAE,iBAAiB,YAAY,QAAA,IAAY;AAGjD,UAAM,oBAAoB,gBAAgB;AAAA,MACxC,MAAM;AAAA,MAEN,WAAW,GAAQ;AACjB,UAAE,OAAO,MAAM;AACf,UAAE,OAAO,iBAAiB;AAC1B,UAAE,OAAO,SAAS;AAAA,MACpB;AAAA,IAAA,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,KAAS,IAAA;AAErB,mBAAO,iBAAiB,QAAQ,EAAE,eAAe,IAAI,IAAI;AAAA,UAC3D;AAAA,QAAA,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,GAAO,IAAA;AAEf,kBAAM,OAAO,MAAM,iBAAiB,QAAQ,EAAE,QAAQ,EAAE;AAExD,gBAAI,CAAC,MAAM;AACF,qBAAA;AAAA,YACT;AAEA,mBAAO,iBAAiB,QAAQ,EAAE,OAAO,IAAI;AAAA,UAC/C;AAAA,QAAA,CACD;AAAA,MACH;AAAA,IAAA,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,uCAAuC;AAAA,MACvF;AAAA,IAAA;AAAA,EACF,CACD;AACH;;"}
@@ -1,4 +1,4 @@
1
- import { F as FILE_MODEL_UID } from "./index-VKvfSVC7.mjs";
1
+ import { F as FILE_MODEL_UID } from "./index-BTrpl94p.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-BVCZSNa2.mjs.map
71
+ //# sourceMappingURL=graphql-edcz_5zt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-BVCZSNa2.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,EACF;AAEA,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,QAAA,IAAY;AAGjD,UAAM,oBAAoB,gBAAgB;AAAA,MACxC,MAAM;AAAA,MAEN,WAAW,GAAQ;AACjB,UAAE,OAAO,MAAM;AACf,UAAE,OAAO,iBAAiB;AAC1B,UAAE,OAAO,SAAS;AAAA,MACpB;AAAA,IAAA,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,KAAS,IAAA;AAErB,mBAAO,iBAAiB,QAAQ,EAAE,eAAe,IAAI,IAAI;AAAA,UAC3D;AAAA,QAAA,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,GAAO,IAAA;AAEf,kBAAM,OAAO,MAAM,iBAAiB,QAAQ,EAAE,QAAQ,EAAE;AAExD,gBAAI,CAAC,MAAM;AACF,qBAAA;AAAA,YACT;AAEA,mBAAO,iBAAiB,QAAQ,EAAE,OAAO,IAAI;AAAA,UAC/C;AAAA,QAAA,CACD;AAAA,MACH;AAAA,IAAA,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,uCAAuC;AAAA,MACvF;AAAA,IAAA;AAAA,EACF,CACD;AACH;"}
1
+ {"version":3,"file":"graphql-edcz_5zt.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,EACF;AAEA,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,QAAA,IAAY;AAGjD,UAAM,oBAAoB,gBAAgB;AAAA,MACxC,MAAM;AAAA,MAEN,WAAW,GAAQ;AACjB,UAAE,OAAO,MAAM;AACf,UAAE,OAAO,iBAAiB;AAC1B,UAAE,OAAO,SAAS;AAAA,MACpB;AAAA,IAAA,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,KAAS,IAAA;AAErB,mBAAO,iBAAiB,QAAQ,EAAE,eAAe,IAAI,IAAI;AAAA,UAC3D;AAAA,QAAA,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,GAAO,IAAA;AAEf,kBAAM,OAAO,MAAM,iBAAiB,QAAQ,EAAE,QAAQ,EAAE;AAExD,gBAAI,CAAC,MAAM;AACF,qBAAA;AAAA,YACT;AAEA,mBAAO,iBAAiB,QAAQ,EAAE,OAAO,IAAI;AAAA,UAC/C;AAAA,QAAA,CACD;AAAA,MACH;AAAA,IAAA,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,uCAAuC;AAAA,MACvF;AAAA,IAAA;AAAA,EACF,CACD;AACH;"}
@@ -6,7 +6,7 @@ import { Check } from "@strapi/icons";
6
6
  import isEqual from "lodash/isEqual";
7
7
  import { useIntl } from "react-intl";
8
8
  import { useQuery, useMutation } from "react-query";
9
- import { g as getTrad, P as PERMISSIONS } from "./index-CjolPMop.mjs";
9
+ import { g as getTrad, P as PERMISSIONS } from "./index-DmPsR26u.mjs";
10
10
  import "byte-size";
11
11
  import "date-fns";
12
12
  import "qs";
@@ -259,4 +259,4 @@ export {
259
259
  SettingsPage,
260
260
  ProtectedSettingsPage as default
261
261
  };
262
- //# sourceMappingURL=index-CpIJ-CJ3.mjs.map
262
+ //# sourceMappingURL=index-4iUTOybK.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CpIJ-CJ3.mjs","sources":["../../admin/src/pages/SettingsPage/init.js","../../admin/src/pages/SettingsPage/reducer.js","../../admin/src/pages/SettingsPage/index.jsx"],"sourcesContent":["const init = (initialState) => {\n return initialState;\n};\n\nexport default init;\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nconst 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, action) =>\n // eslint-disable-next-line consistent-return\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 default reducer;\nexport { initialState };\n","import React, { useReducer } from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Toggle,\n Typography,\n Field,\n} 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 { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport init from './init';\nimport reducer, { 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] = 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: isSubmiting } = useMutation({\n async mutationFn(body) {\n return put('/upload/settings', body);\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 const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData);\n };\n\n const handleChange = ({ target: { name, value } }) => {\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={isSubmiting}\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 gap={6}>\n <GridItem col={6} s={12}>\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 </GridItem>\n <GridItem col={6} s={12}>\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 </GridItem>\n <GridItem col={6} s={12}>\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 </GridItem>\n </Grid>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nconst ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nexport default ProtectedSettingsPage;\n"],"names":["initialState","data","React"],"mappings":"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"}
1
+ {"version":3,"file":"index-4iUTOybK.mjs","sources":["../../admin/src/pages/SettingsPage/init.js","../../admin/src/pages/SettingsPage/reducer.js","../../admin/src/pages/SettingsPage/index.jsx"],"sourcesContent":["const init = (initialState) => {\n return initialState;\n};\n\nexport default init;\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nconst 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, action) =>\n // eslint-disable-next-line consistent-return\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 default reducer;\nexport { initialState };\n","import React, { useReducer } from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n GridItem,\n Toggle,\n Typography,\n Field,\n} 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 { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport init from './init';\nimport reducer, { 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] = 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: isSubmiting } = useMutation({\n async mutationFn(body) {\n return put('/upload/settings', body);\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 const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData);\n };\n\n const handleChange = ({ target: { name, value } }) => {\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={isSubmiting}\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 gap={6}>\n <GridItem col={6} s={12}>\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 </GridItem>\n <GridItem col={6} s={12}>\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 </GridItem>\n <GridItem col={6} s={12}>\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 </GridItem>\n </Grid>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nconst ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nexport default ProtectedSettingsPage;\n"],"names":["initialState","data","React"],"mappings":"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"}
@@ -7,7 +7,7 @@ import isEqual from "lodash/isEqual";
7
7
  import PropTypes from "prop-types";
8
8
  import { useIntl } from "react-intl";
9
9
  import { NavLink } from "react-router-dom";
10
- import { g as getTrad, H as pageSizes, I as sortOptions, p as pluginId, G as useConfig } from "./index-CjolPMop.mjs";
10
+ import { g as getTrad, H as pageSizes, I as sortOptions, p as pluginId, G as useConfig } from "./index-DmPsR26u.mjs";
11
11
  import { produce } from "immer";
12
12
  import get from "lodash/get";
13
13
  import set from "lodash/set";
@@ -230,4 +230,4 @@ ConfigureTheView.propTypes = {
230
230
  export {
231
231
  ConfigureTheView as default
232
232
  };
233
- //# sourceMappingURL=index-TnbVQ0RI.mjs.map
233
+ //# sourceMappingURL=index-BRMOG3M5.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-TnbVQ0RI.mjs","sources":["../../admin/src/pages/App/ConfigureTheView/components/Settings.jsx","../../admin/src/pages/App/ConfigureTheView/state/actionTypes.js","../../admin/src/pages/App/ConfigureTheView/state/actions.js","../../admin/src/pages/App/ConfigureTheView/state/init.js","../../admin/src/pages/App/ConfigureTheView/state/reducer.js","../../admin/src/pages/App/ConfigureTheView/index.jsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Box,\n Grid,\n GridItem,\n SingleSelectOption,\n SingleSelect,\n Field,\n} from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { pageSizes, sortOptions } from '../../../../constants';\nimport getTrad from '../../../../utils/getTrad';\n\nconst Settings = ({ sort = '', pageSize = 10, onChange }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Grid gap={4}>\n <GridItem s={12} col={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.entries.note'),\n defaultMessage: 'Number of assets displayed by default in the Media Library',\n })}\n name=\"pageSize\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.entries.title'),\n defaultMessage: 'Entries per page',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'pageSize', value } })}\n value={pageSize}\n >\n {pageSizes.map((pageSize) => (\n <SingleSelectOption key={pageSize} value={pageSize}>\n {pageSize}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </GridItem>\n <GridItem s={12} col={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.note'),\n defaultMessage: 'Note: You can override this value in the media library.',\n })}\n name=\"sort\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.sort.title'),\n defaultMessage: 'Default sort order',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'sort', value } })}\n value={sort}\n test-sort={sort}\n data-testid=\"sort-select\"\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption\n data-testid={`sort-option-${filter.value}`}\n key={filter.key}\n value={filter.value}\n >\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nSettings.propTypes = {\n sort: PropTypes.string.isRequired,\n pageSize: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport { Settings };\n","import pluginId from '../../../../pluginId';\n\nexport const ON_CHANGE = `${pluginId}/ON_CHANGE`;\nexport const SET_LOADED = `${pluginId}/SET_LOADED`;\n","import { ON_CHANGE, SET_LOADED } from './actionTypes';\n\nexport const onChange = ({ name, value }) => ({\n type: ON_CHANGE,\n keys: name,\n value,\n});\n\nexport const setLoaded = () => ({\n type: SET_LOADED,\n});\n","const initialState = {\n initialData: {},\n modifiedData: {},\n};\n\nconst init = (configData) => {\n return {\n ...initialState,\n initialData: configData,\n modifiedData: configData,\n };\n};\nexport { init, initialState };\n","import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nconst reducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useReducer, useState } from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport pluginID from '../../../pluginId';\nimport getTrad from '../../../utils/getTrad';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport reducer from './state/reducer';\n\nconst ConfigureTheView = ({ config }) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = useReducer(reducer, initialState, () => init(config));\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData);\n toggleWarningSubmit();\n dispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({ target: { name, value } }) => {\n dispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`/plugins/${pluginID}`}\n id=\"go-back\"\n >\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n\n <ConfirmDialog\n isOpen={showWarningSubmit}\n onClose={toggleWarningSubmit}\n onConfirm={handleConfirm}\n variant=\"success-light\"\n >\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nConfigureTheView.propTypes = {\n config: PropTypes.shape({\n pageSize: PropTypes.number,\n sort: PropTypes.string,\n }).isRequired,\n};\n\nexport default ConfigureTheView;\n"],"names":["onChange","pageSize","pluginID"],"mappings":"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"}
1
+ {"version":3,"file":"index-BRMOG3M5.mjs","sources":["../../admin/src/pages/App/ConfigureTheView/components/Settings.jsx","../../admin/src/pages/App/ConfigureTheView/state/actionTypes.js","../../admin/src/pages/App/ConfigureTheView/state/actions.js","../../admin/src/pages/App/ConfigureTheView/state/init.js","../../admin/src/pages/App/ConfigureTheView/state/reducer.js","../../admin/src/pages/App/ConfigureTheView/index.jsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Box,\n Grid,\n GridItem,\n SingleSelectOption,\n SingleSelect,\n Field,\n} from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { pageSizes, sortOptions } from '../../../../constants';\nimport getTrad from '../../../../utils/getTrad';\n\nconst Settings = ({ sort = '', pageSize = 10, onChange }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Grid gap={4}>\n <GridItem s={12} col={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.entries.note'),\n defaultMessage: 'Number of assets displayed by default in the Media Library',\n })}\n name=\"pageSize\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.entries.title'),\n defaultMessage: 'Entries per page',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'pageSize', value } })}\n value={pageSize}\n >\n {pageSizes.map((pageSize) => (\n <SingleSelectOption key={pageSize} value={pageSize}>\n {pageSize}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </GridItem>\n <GridItem s={12} col={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.note'),\n defaultMessage: 'Note: You can override this value in the media library.',\n })}\n name=\"sort\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.sort.title'),\n defaultMessage: 'Default sort order',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'sort', value } })}\n value={sort}\n test-sort={sort}\n data-testid=\"sort-select\"\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption\n data-testid={`sort-option-${filter.value}`}\n key={filter.key}\n value={filter.value}\n >\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nSettings.propTypes = {\n sort: PropTypes.string.isRequired,\n pageSize: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport { Settings };\n","import pluginId from '../../../../pluginId';\n\nexport const ON_CHANGE = `${pluginId}/ON_CHANGE`;\nexport const SET_LOADED = `${pluginId}/SET_LOADED`;\n","import { ON_CHANGE, SET_LOADED } from './actionTypes';\n\nexport const onChange = ({ name, value }) => ({\n type: ON_CHANGE,\n keys: name,\n value,\n});\n\nexport const setLoaded = () => ({\n type: SET_LOADED,\n});\n","const initialState = {\n initialData: {},\n modifiedData: {},\n};\n\nconst init = (configData) => {\n return {\n ...initialState,\n initialData: configData,\n modifiedData: configData,\n };\n};\nexport { init, initialState };\n","import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nconst reducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useReducer, useState } from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport pluginID from '../../../pluginId';\nimport getTrad from '../../../utils/getTrad';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport reducer from './state/reducer';\n\nconst ConfigureTheView = ({ config }) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = useReducer(reducer, initialState, () => init(config));\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData);\n toggleWarningSubmit();\n dispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({ target: { name, value } }) => {\n dispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`/plugins/${pluginID}`}\n id=\"go-back\"\n >\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n\n <ConfirmDialog\n isOpen={showWarningSubmit}\n onClose={toggleWarningSubmit}\n onConfirm={handleConfirm}\n variant=\"success-light\"\n >\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nConfigureTheView.propTypes = {\n config: PropTypes.shape({\n pageSize: PropTypes.number,\n sort: PropTypes.string,\n }).isRequired,\n};\n\nexport default ConfigureTheView;\n"],"names":["onChange","pageSize","pluginID"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,IAAI,UAAAA,gBAAe;AACrD,QAAA,EAAE,kBAAkB;AAGxB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,WAAS;AAAA,MACT,QAAO;AAAA,MACP,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MAEd,UAAA,qBAAC,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,QAAA,oBAAC,UAAS,EAAA,GAAG,IAAI,KAAK,GACpB,UAAA;AAAA,UAAC,MAAM;AAAA,UAAN;AAAA,YACC,MAAM,cAAc;AAAA,cAClB,IAAI,QAAQ,qBAAqB;AAAA,cACjC,gBAAgB;AAAA,YAAA,CACjB;AAAA,YACD,MAAK;AAAA,YAEL,UAAA;AAAA,cAAC,oBAAA,MAAM,OAAN,EACE,UAAc,cAAA;AAAA,gBACb,IAAI,QAAQ,sBAAsB;AAAA,gBAClC,gBAAgB;AAAA,cACjB,CAAA,GACH;AAAA,cACA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,UAAU,CAAC,UAAUA,UAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,MAAM,GAAG;AAAA,kBACrE,OAAO;AAAA,kBAEN,UAAA,UAAU,IAAI,CAACC,cACd,oBAAC,oBAAkC,EAAA,OAAOA,WACvC,UAAAA,UADsBA,GAAAA,SAEzB,CACD;AAAA,gBAAA;AAAA,cACH;AAAA,cACA,oBAAC,MAAM,MAAN,EAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEhB;AAAA,QACC,oBAAA,UAAA,EAAS,GAAG,IAAI,KAAK,GACpB,UAAA;AAAA,UAAC,MAAM;AAAA,UAAN;AAAA,YACC,MAAM,cAAc;AAAA,cAClB,IAAI,QAAQ,aAAa;AAAA,cACzB,gBAAgB;AAAA,YAAA,CACjB;AAAA,YACD,MAAK;AAAA,YAEL,UAAA;AAAA,cAAC,oBAAA,MAAM,OAAN,EACE,UAAc,cAAA;AAAA,gBACb,IAAI,QAAQ,mBAAmB;AAAA,gBAC/B,gBAAgB;AAAA,cACjB,CAAA,GACH;AAAA,cACA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,UAAU,CAAC,UAAUD,UAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,MAAM,GAAG;AAAA,kBACjE,OAAO;AAAA,kBACP,aAAW;AAAA,kBACX,eAAY;AAAA,kBAEX,UAAA,YAAY,IAAI,CAAC,WAChB;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,eAAa,eAAe,OAAO,KAAK;AAAA,sBAExC,OAAO,OAAO;AAAA,sBAEb,UAAc,cAAA,EAAE,IAAI,QAAQ,OAAO,GAAG,GAAG,gBAAgB,GAAG,OAAO,KAAK,GAAA,CAAI;AAAA,oBAAA;AAAA,oBAHxE,OAAO;AAAA,kBAAA,CAKf;AAAA,gBAAA;AAAA,cACH;AAAA,cACA,oBAAC,MAAM,MAAN,EAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEhB;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAAS,YAAY;AAAA,EACnB,MAAM,UAAU,OAAO;AAAA,EACvB,UAAU,UAAU,OAAO;AAAA,EAC3B,UAAU,UAAU,KAAK;AAC3B;ACjGO,MAAM,YAAY,GAAG,QAAQ;AAC7B,MAAM,aAAa,GAAG,QAAQ;ACD9B,MAAM,WAAW,CAAC,EAAE,MAAM,aAAa;AAAA,EAC5C,MAAM;AAAA,EACN,MAAM;AAAA,EACN;AACF;AAEO,MAAM,YAAY,OAAO;AAAA,EAC9B,MAAM;AACR;ACVA,MAAM,eAAe;AAAA,EACnB,aAAa,CAAE;AAAA,EACf,cAAc,CAAE;AAClB;AAEA,MAAM,OAAO,CAAC,eAAe;AAC3B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,aAAa;AAAA,IACb,cAAc;AAAA,EAClB;AACA;ACJA,MAAM,UAAU,CAAC,QAAQ,cAAc;AAAA;AAAA,EAErC,QAAQ,OAAO,CAAC,eAAe;AAC7B,YAAQ,OAAO,MAAI;AAAA,MACjB,KAAK,WAAW;AACd,YAAI,YAAY,CAAC,gBAAgB,GAAG,OAAO,KAAK,MAAM,GAAG,CAAC,GAAG,OAAO,KAAK;AACzE;AAAA,MACD;AAAA,MACD,KAAK,YAAY;AAEf,cAAM,eAAe,KAAK,IAAI,YAAY,CAAC,cAAc,GAAG,CAAE,CAAA,CAAC;AAC/D,mBAAW,cAAc,aAAa;AACtC,mBAAW,eAAe,aAAa;AACvC;AAAA,MACD;AAAA,MACD;AACE,eAAO;AAAA,IACV;AAAA,EACL,CAAG;AAAA;ACAH,MAAM,mBAAmB,CAAC,EAAE,aAAa;AACjC,QAAA,EAAE,eAAe;AACjB,QAAA,EAAE,kBAAkB;AACpB,QAAA,EAAE,uBAAuB;AACzB,QAAA,EAAE,iBAAiB;AACnB,QAAA,EAAE,WAAW,iBAAqB,IAAA;AAExC,QAAM,CAAC,mBAAmB,gBAAgB,IAAI,SAAS,KAAK;AAC5D,QAAM,sBAAsB,MAAM,iBAAiB,CAAC,cAAc,CAAC,SAAS;AAEtE,QAAA,CAAC,cAAc,QAAQ,IAAI,WAAW,SAAS,cAAc,MAAM,KAAK,MAAM,CAAC;AAC/E,QAAA,EAAE,aAAa,aAAiB,IAAA;AAEhC,QAAA,eAAe,CAAC,MAAM;AAC1B,MAAE,eAAe;AACG;EAAA;AAGtB,QAAM,gBAAgB,YAAY;AAChC,eAAW,4BAA4B;AACjC,UAAA,aAAa,YAAY,YAAY;AACvB;AACpB,aAAS,WAAW;AACD,uBAAA;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,cAAc;AAAA,QACrB,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB;AAAA,IAAA,CACF;AAAA,EAAA;AAGG,QAAA,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,MAAA,QAAc;AACpD,aAAS,SAAS,EAAE,MAAM,MAAA,CAAO,CAAC;AAAA,EAAA;AAGpC,SACG,oBAAA,QAAQ,MAAR,EACC,UAAC,oBAAA,KAAK,MAAL,EAAU,aAAW,kBACpB,UAAC,qBAAA,QAAA,EAAK,UAAU,cACd,UAAA;AAAA,IAAA;AAAA,MAAC,QAAQ;AAAA,MAAR;AAAA,QACC,kBACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,+BAAY,WAAU,EAAA;AAAA,YACtB,IAAI,YAAYE,QAAQ;AAAA,YACxB,IAAG;AAAA,YAEF,UAAA,cAAc,EAAE,IAAI,QAAQ,aAAa,GAAG,gBAAgB,QAAQ;AAAA,UAAA;AAAA,QACvE;AAAA,QAEF,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,+BAAY,OAAM,EAAA;AAAA,YAClB,UAAU,QAAQ,cAAc,WAAW;AAAA,YAC3C,MAAK;AAAA,YAEJ,wBAAc,EAAE,IAAI,eAAe,gBAAgB,QAAQ;AAAA,UAAA;AAAA,QAC9D;AAAA,QAEF,UAAU,cAAc;AAAA,UACtB,IAAI,QAAQ,iBAAiB;AAAA,UAC7B,gBAAgB;AAAA,QAAA,CACjB;AAAA,QACD,OAAO,cAAc;AAAA,UACnB,IAAI,QAAQ,cAAc;AAAA,UAC1B,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IACH;AAAA,IAEA,oBAAC,QAAQ,SAAR,EACC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,UAAU,aAAa,YAAY;AAAA,QACnC,MAAM,aAAa,QAAQ;AAAA,QAC3B,UAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAQ;AAAA,QAEP,UAAc,cAAA;AAAA,UACb,IAAI,QAAQ,+CAA+C;AAAA,UAC3D,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IACH;AAAA,EAAA,GACF,GACF,EACF,CAAA;AAEJ;AAEA,iBAAiB,YAAY;AAAA,EAC3B,QAAQ,UAAU,MAAM;AAAA,IACtB,UAAU,UAAU;AAAA,IACpB,MAAM,UAAU;AAAA,EACjB,CAAA,EAAE;AACL;"}
@@ -315,7 +315,7 @@ async function register({ strapi: strapi2 }) {
315
315
  strapi2.plugin("upload").provider = createProvider(strapi2.config.get("plugin::upload"));
316
316
  await registerUploadMiddleware({ strapi: strapi2 });
317
317
  if (strapi2.plugin("graphql")) {
318
- const { installGraphqlExtension } = await import("./graphql-BVCZSNa2.mjs");
318
+ const { installGraphqlExtension } = await import("./graphql-edcz_5zt.mjs");
319
319
  installGraphqlExtension({ strapi: strapi2 });
320
320
  }
321
321
  if (strapi2.plugin("documentation")) {
@@ -717,10 +717,16 @@ const provider = ({ strapi: strapi2 }) => ({
717
717
  file2.stream = file2.getStream();
718
718
  await strapi2.plugin("upload").provider.uploadStream(file2);
719
719
  delete file2.stream;
720
+ if ("filepath" in file2) {
721
+ delete file2.filepath;
722
+ }
720
723
  } else {
721
724
  file2.buffer = await file$2.streamToBuffer(file2.getStream());
722
725
  await strapi2.plugin("upload").provider.upload(file2);
723
726
  delete file2.buffer;
727
+ if ("filepath" in file2) {
728
+ delete file2.filepath;
729
+ }
724
730
  }
725
731
  }
726
732
  });
@@ -841,6 +847,7 @@ const upload = ({ strapi: strapi2 }) => {
841
847
  tmpWorkingDirectory: file2.tmpWorkingDirectory
842
848
  }
843
849
  );
850
+ currentFile.filepath = file2.filepath;
844
851
  currentFile.getStream = () => fs.createReadStream(file2.filepath);
845
852
  const { optimize: optimize2, isImage: isImage2, isFaultyImage: isFaultyImage2, isOptimizableImage: isOptimizableImage2 } = strapi2.plugin("upload").service("image-manipulation");
846
853
  if (await isImage2(currentFile)) {
@@ -1085,7 +1092,7 @@ const upload = ({ strapi: strapi2 }) => {
1085
1092
  _uploadImage: uploadImage
1086
1093
  };
1087
1094
  };
1088
- const { bytesToKbytes, writableDiscardStream } = file$2;
1095
+ const { bytesToKbytes } = file$2;
1089
1096
  const FORMATS_TO_RESIZE = ["jpeg", "png", "webp", "tiff", "gif"];
1090
1097
  const FORMATS_TO_PROCESS = ["jpeg", "png", "webp", "tiff", "svg", "gif", "avif"];
1091
1098
  const FORMATS_TO_OPTIMIZE = ["jpeg", "png", "webp", "tiff", "avif"];
@@ -1097,11 +1104,16 @@ const writeStreamToFile = (stream, path2) => new Promise((resolve, reject) => {
1097
1104
  writeStream.on("close", resolve);
1098
1105
  writeStream.on("error", reject);
1099
1106
  });
1100
- const getMetadata = (file2) => new Promise((resolve, reject) => {
1101
- const pipeline = sharp();
1102
- pipeline.metadata().then(resolve).catch(reject);
1103
- file2.getStream().pipe(pipeline);
1104
- });
1107
+ const getMetadata = (file2) => {
1108
+ if (!file2.filepath) {
1109
+ return new Promise((resolve, reject) => {
1110
+ const pipeline = sharp();
1111
+ pipeline.metadata().then(resolve).catch(reject);
1112
+ file2.getStream().pipe(pipeline);
1113
+ });
1114
+ }
1115
+ return sharp(file2.filepath).metadata();
1116
+ };
1105
1117
  const getDimensions = async (file2) => {
1106
1118
  const { width = null, height = null } = await getMetadata(file2);
1107
1119
  return { width, height };
@@ -1116,16 +1128,25 @@ const resizeFileTo = async (file2, options, {
1116
1128
  hash
1117
1129
  }) => {
1118
1130
  const filePath = file2.tmpWorkingDirectory ? join(file2.tmpWorkingDirectory, hash) : hash;
1119
- await writeStreamToFile(file2.getStream().pipe(sharp().resize(options)), filePath);
1131
+ let newInfo;
1132
+ if (!file2.filepath) {
1133
+ const transform = sharp().resize(options).on("info", (info) => {
1134
+ newInfo = info;
1135
+ });
1136
+ await writeStreamToFile(file2.getStream().pipe(transform), filePath);
1137
+ } else {
1138
+ newInfo = await sharp(file2.filepath).resize(options).toFile(filePath);
1139
+ }
1140
+ const { width, height, size } = newInfo ?? {};
1120
1141
  const newFile = {
1121
1142
  name,
1122
1143
  hash,
1123
1144
  ext: file2.ext,
1124
1145
  mime: file2.mime,
1146
+ filepath: filePath,
1125
1147
  path: file2.path || null,
1126
1148
  getStream: () => fs.createReadStream(filePath)
1127
1149
  };
1128
- const { width, height, size } = await getMetadata(newFile);
1129
1150
  Object.assign(newFile, {
1130
1151
  width,
1131
1152
  height,
@@ -1136,38 +1157,52 @@ const resizeFileTo = async (file2, options, {
1136
1157
  };
1137
1158
  const generateThumbnail = async (file2) => {
1138
1159
  if (file2.width && file2.height && (file2.width > THUMBNAIL_RESIZE_OPTIONS.width || file2.height > THUMBNAIL_RESIZE_OPTIONS.height)) {
1139
- const newFile = await resizeFileTo(file2, THUMBNAIL_RESIZE_OPTIONS, {
1160
+ return resizeFileTo(file2, THUMBNAIL_RESIZE_OPTIONS, {
1140
1161
  name: `thumbnail_${file2.name}`,
1141
1162
  hash: `thumbnail_${file2.hash}`
1142
1163
  });
1143
- return newFile;
1144
1164
  }
1145
1165
  return null;
1146
1166
  };
1147
1167
  const optimize = async (file2) => {
1148
1168
  const { sizeOptimization = false, autoOrientation = false } = await getService("upload").getSettings() ?? {};
1149
- const newFile = { ...file2 };
1150
- const { width, height, size, format } = await getMetadata(newFile);
1169
+ const { format, size } = await getMetadata(file2);
1151
1170
  if ((sizeOptimization || autoOrientation) && isOptimizableFormat(format)) {
1152
- const transformer = sharp();
1171
+ let transformer;
1172
+ if (!file2.filepath) {
1173
+ transformer = sharp();
1174
+ } else {
1175
+ transformer = sharp(file2.filepath);
1176
+ }
1153
1177
  transformer[format]({ quality: sizeOptimization ? 80 : 100 });
1154
1178
  if (autoOrientation) {
1155
1179
  transformer.rotate();
1156
1180
  }
1157
1181
  const filePath = file2.tmpWorkingDirectory ? join(file2.tmpWorkingDirectory, `optimized-${file2.hash}`) : `optimized-${file2.hash}`;
1158
- await writeStreamToFile(file2.getStream().pipe(transformer), filePath);
1182
+ let newInfo;
1183
+ if (!file2.filepath) {
1184
+ transformer.on("info", (info) => {
1185
+ newInfo = info;
1186
+ });
1187
+ await writeStreamToFile(file2.getStream().pipe(transformer), filePath);
1188
+ } else {
1189
+ newInfo = await transformer.toFile(filePath);
1190
+ }
1191
+ const { width: newWidth, height: newHeight, size: newSize } = newInfo ?? {};
1192
+ const newFile = { ...file2 };
1159
1193
  newFile.getStream = () => fs.createReadStream(filePath);
1194
+ newFile.filepath = filePath;
1195
+ if (newSize && size && newSize > size) {
1196
+ return file2;
1197
+ }
1198
+ return Object.assign(newFile, {
1199
+ width: newWidth,
1200
+ height: newHeight,
1201
+ size: newSize ? bytesToKbytes(newSize) : 0,
1202
+ sizeInBytes: newSize
1203
+ });
1160
1204
  }
1161
- const { width: newWidth, height: newHeight, size: newSize } = await getMetadata(newFile);
1162
- if (newSize && size && newSize > size) {
1163
- return { ...file2, width, height, size: bytesToKbytes(size), sizeInBytes: size };
1164
- }
1165
- return Object.assign(newFile, {
1166
- width: newWidth,
1167
- height: newHeight,
1168
- size: newSize ? bytesToKbytes(newSize) : 0,
1169
- sizeInBytes: newSize
1170
- });
1205
+ return file2;
1171
1206
  };
1172
1207
  const DEFAULT_BREAKPOINTS = {
1173
1208
  large: 1e3,
@@ -1212,9 +1247,21 @@ const generateBreakpoint = async (key, { file: file2, breakpoint }) => {
1212
1247
  const breakpointSmallerThan = (breakpoint, { width, height }) => {
1213
1248
  return breakpoint < (width ?? 0) || breakpoint < (height ?? 0);
1214
1249
  };
1215
- const isFaultyImage = (file2) => new Promise((resolve) => {
1216
- file2.getStream().pipe(sharp().rotate()).on("error", () => resolve(true)).pipe(writableDiscardStream()).on("error", () => resolve(true)).on("close", () => resolve(false));
1217
- });
1250
+ const isFaultyImage = async (file2) => {
1251
+ if (!file2.filepath) {
1252
+ return new Promise((resolve, reject) => {
1253
+ const pipeline = sharp();
1254
+ pipeline.stats().then(resolve).catch(reject);
1255
+ file2.getStream().pipe(pipeline);
1256
+ });
1257
+ }
1258
+ try {
1259
+ await sharp(file2.filepath).stats();
1260
+ return false;
1261
+ } catch (e) {
1262
+ return true;
1263
+ }
1264
+ };
1218
1265
  const isOptimizableImage = async (file2) => {
1219
1266
  let format;
1220
1267
  try {
@@ -2619,4 +2666,4 @@ export {
2619
2666
  FILE_MODEL_UID as F,
2620
2667
  index as i
2621
2668
  };
2622
- //# sourceMappingURL=index-VKvfSVC7.mjs.map
2669
+ //# sourceMappingURL=index-BTrpl94p.mjs.map