@strapi/upload 5.34.0 → 5.35.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.
Files changed (88) hide show
  1. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +32 -3
  2. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  3. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +32 -3
  4. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  5. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
  6. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
  7. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +57 -0
  8. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -0
  9. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +55 -0
  10. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -0
  11. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +96 -20
  12. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  13. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +98 -22
  14. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  15. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js +47 -0
  16. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -1
  17. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs +44 -1
  18. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -1
  19. package/dist/admin/future/App.js +2 -2
  20. package/dist/admin/future/App.js.map +1 -1
  21. package/dist/admin/future/App.mjs +2 -2
  22. package/dist/admin/future/App.mjs.map +1 -1
  23. package/dist/admin/future/pages/MediaLibraryPage.js +97 -33
  24. package/dist/admin/future/pages/MediaLibraryPage.js.map +1 -1
  25. package/dist/admin/future/pages/MediaLibraryPage.mjs +80 -35
  26. package/dist/admin/future/pages/MediaLibraryPage.mjs.map +1 -1
  27. package/dist/admin/future/services/api.js +28 -0
  28. package/dist/admin/future/services/api.js.map +1 -0
  29. package/dist/admin/future/services/api.mjs +25 -0
  30. package/dist/admin/future/services/api.mjs.map +1 -0
  31. package/dist/admin/future/utils/translations.js +8 -0
  32. package/dist/admin/future/utils/translations.js.map +1 -0
  33. package/dist/admin/future/utils/translations.mjs +6 -0
  34. package/dist/admin/future/utils/translations.mjs.map +1 -0
  35. package/dist/admin/hooks/useEditAsset.js +1 -0
  36. package/dist/admin/hooks/useEditAsset.js.map +1 -1
  37. package/dist/admin/hooks/useEditAsset.mjs +1 -0
  38. package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
  39. package/dist/admin/index.js +1 -1
  40. package/dist/admin/index.js.map +1 -1
  41. package/dist/admin/index.mjs +1 -1
  42. package/dist/admin/index.mjs.map +1 -1
  43. package/dist/admin/package.json.js +5 -5
  44. package/dist/admin/package.json.mjs +5 -5
  45. package/dist/admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.d.ts +1 -2
  46. package/dist/admin/src/components/EditAssetDialog/PreviewBox/FocalPointActions.d.ts +7 -0
  47. package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewBox.d.ts +6 -2
  48. package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +13 -0
  49. package/dist/admin/src/future/App.d.ts +1 -1
  50. package/dist/admin/src/future/services/api.d.ts +5 -1
  51. package/dist/admin/src/future/utils/translations.d.ts +1 -0
  52. package/dist/admin/translations/en.json.js +8 -0
  53. package/dist/admin/translations/en.json.js.map +1 -1
  54. package/dist/admin/translations/en.json.mjs +8 -0
  55. package/dist/admin/translations/en.json.mjs.map +1 -1
  56. package/dist/server/content-types/file.js +4 -0
  57. package/dist/server/content-types/file.js.map +1 -1
  58. package/dist/server/content-types/file.mjs +4 -0
  59. package/dist/server/content-types/file.mjs.map +1 -1
  60. package/dist/server/controllers/validation/admin/upload.js +5 -0
  61. package/dist/server/controllers/validation/admin/upload.js.map +1 -1
  62. package/dist/server/controllers/validation/admin/upload.mjs +5 -0
  63. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
  64. package/dist/server/controllers/validation/content-api/upload.js +6 -1
  65. package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
  66. package/dist/server/controllers/validation/content-api/upload.mjs +6 -1
  67. package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
  68. package/dist/server/services/upload.js +3 -1
  69. package/dist/server/services/upload.js.map +1 -1
  70. package/dist/server/services/upload.mjs +3 -1
  71. package/dist/server/services/upload.mjs.map +1 -1
  72. package/dist/server/src/content-types/file.d.ts +4 -0
  73. package/dist/server/src/content-types/file.d.ts.map +1 -1
  74. package/dist/server/src/content-types/index.d.ts +4 -0
  75. package/dist/server/src/content-types/index.d.ts.map +1 -1
  76. package/dist/server/src/controllers/validation/admin/upload.d.ts +240 -0
  77. package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
  78. package/dist/server/src/controllers/validation/content-api/upload.d.ts +180 -0
  79. package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
  80. package/dist/server/src/index.d.ts +5 -1
  81. package/dist/server/src/index.d.ts.map +1 -1
  82. package/dist/server/src/services/index.d.ts +1 -1
  83. package/dist/server/src/services/upload.d.ts +1 -1
  84. package/dist/server/src/services/upload.d.ts.map +1 -1
  85. package/dist/server/src/types.d.ts +6 -0
  86. package/dist/server/src/types.d.ts.map +1 -1
  87. package/dist/shared/contracts/files.d.ts +6 -0
  88. package/package.json +5 -5
@@ -1,52 +1,97 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import 'react';
3
- import { Layouts, SearchInput } from '@strapi/admin/strapi-admin';
4
- import { Box, Flex } from '@strapi/design-system';
2
+ import * as React from 'react';
3
+ import { useNotification, useAPIErrorHandler, Layouts } from '@strapi/admin/strapi-admin';
4
+ import { VisuallyHidden, SimpleMenu, MenuItem } from '@strapi/design-system';
5
+ import { ChevronDown, Files } from '@strapi/icons';
5
6
  import { useIntl } from 'react-intl';
6
- import 'byte-size';
7
- import 'date-fns';
8
- import { getTrad } from '../../utils/getTrad.mjs';
9
- import 'qs';
10
- import '../../utils/typeFromMime.mjs';
11
- import '../../utils/urlYupSchema.mjs';
7
+ import { useUploadFilesMutation } from '../services/api.mjs';
8
+ import { getTranslationKey } from '../utils/translations.mjs';
12
9
 
13
10
  const MediaLibraryPage = ()=>{
14
11
  const { formatMessage } = useIntl();
15
- return(/**
16
- * NOTE:
17
- *
18
- * The design differs from our current Layouts component.
19
- * Either we find a way to make it work with our current Layouts component
20
- * or we will have to write our own custom layout.
21
- */ /*#__PURE__*/ jsxs(Layouts.Root, {
12
+ const { toggleNotification } = useNotification();
13
+ const { _unstableFormatAPIError } = useAPIErrorHandler();
14
+ const fileInputRef = React.useRef(null);
15
+ const [uploadFiles] = useUploadFilesMutation();
16
+ const handleFileSelect = ()=>{
17
+ fileInputRef.current?.click();
18
+ };
19
+ const handleFileChange = async (e)=>{
20
+ const files = e.target.files;
21
+ if (files && files.length > 0) {
22
+ const formData = new FormData();
23
+ const filesArray = Array.from(files);
24
+ // Add files and fileInfo to the form data
25
+ filesArray.forEach((file)=>{
26
+ formData.append('files', file);
27
+ formData.append('fileInfo', JSON.stringify({
28
+ name: file.name,
29
+ caption: null,
30
+ alternativeText: null,
31
+ folder: null
32
+ }));
33
+ });
34
+ try {
35
+ // unwrap() is needed to throw errors and trigger the catch block
36
+ // Without it, RTK Query never rejects and catch would never execute
37
+ await uploadFiles(formData).unwrap();
38
+ toggleNotification({
39
+ type: 'success',
40
+ message: formatMessage({
41
+ id: getTranslationKey('assets.uploaded'),
42
+ defaultMessage: '{number, plural, one {# asset} other {# assets}} uploaded successfully'
43
+ }, {
44
+ number: filesArray.length
45
+ })
46
+ });
47
+ } catch (error) {
48
+ // Format the error message using the API error handler to provide
49
+ // context-specific feedback (e.g., file size limits, format restrictions, network errors)
50
+ const errorMessage = _unstableFormatAPIError(error);
51
+ toggleNotification({
52
+ type: 'danger',
53
+ message: errorMessage
54
+ });
55
+ }
56
+ }
57
+ // Reset input so the same file can be selected again
58
+ e.target.value = '';
59
+ };
60
+ return /*#__PURE__*/ jsxs(Layouts.Root, {
22
61
  children: [
62
+ /*#__PURE__*/ jsx(VisuallyHidden, {
63
+ children: /*#__PURE__*/ jsx("input", {
64
+ type: "file",
65
+ ref: fileInputRef,
66
+ onChange: handleFileChange,
67
+ multiple: true
68
+ })
69
+ }),
23
70
  /*#__PURE__*/ jsx(Layouts.Header, {
24
- navigationAction: /*#__PURE__*/ jsx(Box, {
25
- children: "TODO: Breadcrumbs"
26
- }),
27
71
  title: "TODO: Folder location",
28
- primaryAction: /*#__PURE__*/ jsxs(Flex, {
29
- gap: 2,
30
- children: [
31
- /*#__PURE__*/ jsx(SearchInput, {
32
- label: formatMessage({
33
- id: getTrad('search.label'),
34
- defaultMessage: 'Search for an asset'
35
- }),
36
- trackedEvent: "didSearchMediaLibraryElements",
37
- trackedEventDetails: {
38
- location: 'upload'
39
- }
40
- }),
41
- "TODO: Toolbar"
42
- ]
72
+ primaryAction: /*#__PURE__*/ jsx(SimpleMenu, {
73
+ popoverPlacement: "bottom-end",
74
+ variant: "default",
75
+ endIcon: /*#__PURE__*/ jsx(ChevronDown, {}),
76
+ label: formatMessage({
77
+ id: getTranslationKey('new'),
78
+ defaultMessage: 'New'
79
+ }),
80
+ children: /*#__PURE__*/ jsx(MenuItem, {
81
+ onSelect: handleFileSelect,
82
+ startIcon: /*#__PURE__*/ jsx(Files, {}),
83
+ children: formatMessage({
84
+ id: getTranslationKey('import-files'),
85
+ defaultMessage: 'Import files'
86
+ })
87
+ })
43
88
  })
44
89
  }),
45
90
  /*#__PURE__*/ jsx(Layouts.Content, {
46
91
  children: "TODO: List/Grid views"
47
92
  })
48
93
  ]
49
- }));
94
+ });
50
95
  };
51
96
 
52
97
  export { MediaLibraryPage };
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryPage.mjs","sources":["../../../../admin/src/future/pages/MediaLibraryPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Layouts, SearchInput } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../utils';\n\nexport const MediaLibraryPage = () => {\n const { formatMessage } = useIntl();\n\n return (\n /**\n * NOTE:\n *\n * The design differs from our current Layouts component.\n * Either we find a way to make it work with our current Layouts component\n * or we will have to write our own custom layout.\n */\n <Layouts.Root>\n <Layouts.Header\n navigationAction={<Box>TODO: Breadcrumbs</Box>}\n title=\"TODO: Folder location\"\n primaryAction={\n <Flex gap={2}>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n TODO: Toolbar\n </Flex>\n }\n />\n\n <Layouts.Content>TODO: List/Grid views</Layouts.Content>\n </Layouts.Root>\n );\n};\n"],"names":["MediaLibraryPage","formatMessage","useIntl","_jsxs","Layouts","Root","_jsx","Header","navigationAction","Box","title","primaryAction","Flex","gap","SearchInput","label","id","getTrad","defaultMessage","trackedEvent","trackedEventDetails","location","Content"],"mappings":";;;;;;;;;;;;MAQaA,gBAAmB,GAAA,IAAA;IAC9B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B;;;;;;sBAQEC,IAAA,CAACC,QAAQC,IAAI,EAAA;;AACX,0BAAAC,GAAA,CAACF,QAAQG,MAAM,EAAA;AACbC,gBAAAA,gBAAAA,gBAAkBF,GAACG,CAAAA,GAAAA,EAAAA;AAAI,oBAAA,QAAA,EAAA;;gBACvBC,KAAM,EAAA,uBAAA;AACNC,gBAAAA,aAAAA,gBACER,IAACS,CAAAA,IAAAA,EAAAA;oBAAKC,GAAK,EAAA,CAAA;;sCACTP,GAACQ,CAAAA,WAAAA,EAAAA;AACCC,4BAAAA,KAAAA,EAAOd,aAAc,CAAA;AACnBe,gCAAAA,EAAAA,EAAIC,OAAQ,CAAA,cAAA,CAAA;gCACZC,cAAgB,EAAA;AAClB,6BAAA,CAAA;4BACAC,YAAa,EAAA,+BAAA;4BACbC,mBAAqB,EAAA;gCAAEC,QAAU,EAAA;AAAS;;AAC1C,wBAAA;;;;AAMR,0BAAAf,GAAA,CAACF,QAAQkB,OAAO,EAAA;AAAC,gBAAA,QAAA,EAAA;;;;AAGvB;;;;"}
1
+ {"version":3,"file":"MediaLibraryPage.mjs","sources":["../../../../admin/src/future/pages/MediaLibraryPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Layouts, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { MenuItem, SimpleMenu, VisuallyHidden } from '@strapi/design-system';\nimport { ChevronDown, Files } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useUploadFilesMutation } from '../services/api';\nimport { getTranslationKey } from '../utils/translations';\n\nexport const MediaLibraryPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError } = useAPIErrorHandler();\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [uploadFiles] = useUploadFilesMutation();\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n const formData = new FormData();\n const filesArray = Array.from(files);\n\n // Add files and fileInfo to the form data\n filesArray.forEach((file) => {\n formData.append('files', file);\n formData.append(\n 'fileInfo',\n JSON.stringify({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: null,\n })\n );\n });\n\n try {\n // unwrap() is needed to throw errors and trigger the catch block\n // Without it, RTK Query never rejects and catch would never execute\n await uploadFiles(formData).unwrap();\n toggleNotification({\n type: 'success',\n message: formatMessage(\n {\n id: getTranslationKey('assets.uploaded'),\n defaultMessage:\n '{number, plural, one {# asset} other {# assets}} uploaded successfully',\n },\n { number: filesArray.length }\n ),\n });\n } catch (error) {\n // Format the error message using the API error handler to provide\n // context-specific feedback (e.g., file size limits, format restrictions, network errors)\n const errorMessage = _unstableFormatAPIError(error as Error);\n toggleNotification({\n type: 'danger',\n message: errorMessage,\n });\n }\n }\n // Reset input so the same file can be selected again\n e.target.value = '';\n };\n\n return (\n <Layouts.Root>\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n <Layouts.Header\n title=\"TODO: Folder location\"\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n />\n\n <Layouts.Content>TODO: List/Grid views</Layouts.Content>\n </Layouts.Root>\n );\n};\n"],"names":["MediaLibraryPage","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","useAPIErrorHandler","fileInputRef","React","useRef","uploadFiles","useUploadFilesMutation","handleFileSelect","current","click","handleFileChange","e","files","target","length","formData","FormData","filesArray","Array","from","forEach","file","append","JSON","stringify","name","caption","alternativeText","folder","unwrap","type","message","id","getTranslationKey","defaultMessage","number","error","errorMessage","value","_jsxs","Layouts","Root","_jsx","VisuallyHidden","input","ref","onChange","multiple","Header","title","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Files","Content"],"mappings":";;;;;;;;;MAUaA,gBAAmB,GAAA,IAAA;IAC9B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,kBAAAA,EAAAA;IACpC,MAAMC,YAAAA,GAAeC,KAAMC,CAAAA,MAAM,CAAmB,IAAA,CAAA;IACpD,MAAM,CAACC,YAAY,GAAGC,sBAAAA,EAAAA;AAEtB,IAAA,MAAMC,gBAAmB,GAAA,IAAA;AACvBL,QAAAA,YAAAA,CAAaM,OAAO,EAAEC,KAAAA,EAAAA;AACxB,KAAA;AAEA,IAAA,MAAMC,mBAAmB,OAAOC,CAAAA,GAAAA;AAC9B,QAAA,MAAMC,KAAQD,GAAAA,CAAAA,CAAEE,MAAM,CAACD,KAAK;AAC5B,QAAA,IAAIA,KAASA,IAAAA,KAAAA,CAAME,MAAM,GAAG,CAAG,EAAA;AAC7B,YAAA,MAAMC,WAAW,IAAIC,QAAAA,EAAAA;YACrB,MAAMC,UAAAA,GAAaC,KAAMC,CAAAA,IAAI,CAACP,KAAAA,CAAAA;;YAG9BK,UAAWG,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBAClBN,QAASO,CAAAA,MAAM,CAAC,OAASD,EAAAA,IAAAA,CAAAA;AACzBN,gBAAAA,QAAAA,CAASO,MAAM,CACb,UACAC,EAAAA,IAAAA,CAAKC,SAAS,CAAC;AACbC,oBAAAA,IAAAA,EAAMJ,KAAKI,IAAI;oBACfC,OAAS,EAAA,IAAA;oBACTC,eAAiB,EAAA,IAAA;oBACjBC,MAAQ,EAAA;AACV,iBAAA,CAAA,CAAA;AAEJ,aAAA,CAAA;YAEA,IAAI;;;gBAGF,MAAMvB,WAAAA,CAAYU,UAAUc,MAAM,EAAA;gBAClC/B,kBAAmB,CAAA;oBACjBgC,IAAM,EAAA,SAAA;AACNC,oBAAAA,OAAAA,EAASnC,aACP,CAAA;AACEoC,wBAAAA,EAAAA,EAAIC,iBAAkB,CAAA,iBAAA,CAAA;wBACtBC,cACE,EAAA;qBAEJ,EAAA;AAAEC,wBAAAA,MAAAA,EAAQlB,WAAWH;AAAO,qBAAA;AAEhC,iBAAA,CAAA;AACF,aAAA,CAAE,OAAOsB,KAAO,EAAA;;;AAGd,gBAAA,MAAMC,eAAerC,uBAAwBoC,CAAAA,KAAAA,CAAAA;gBAC7CtC,kBAAmB,CAAA;oBACjBgC,IAAM,EAAA,QAAA;oBACNC,OAASM,EAAAA;AACX,iBAAA,CAAA;AACF;AACF;;QAEA1B,CAAEE,CAAAA,MAAM,CAACyB,KAAK,GAAG,EAAA;AACnB,KAAA;IAEA,qBACEC,IAAA,CAACC,QAAQC,IAAI,EAAA;;0BACXC,GAACC,CAAAA,cAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,GAACE,CAAAA,OAAAA,EAAAA;oBAAMd,IAAK,EAAA,MAAA;oBAAOe,GAAK3C,EAAAA,YAAAA;oBAAc4C,QAAUpC,EAAAA,gBAAAA;oBAAkBqC,QAAQ,EAAA;;;AAE5E,0BAAAL,GAAA,CAACF,QAAQQ,MAAM,EAAA;gBACbC,KAAM,EAAA,uBAAA;AACNC,gBAAAA,aAAAA,gBACER,GAACS,CAAAA,UAAAA,EAAAA;oBACCC,gBAAiB,EAAA,YAAA;oBACjBC,OAAQ,EAAA,SAAA;AACRC,oBAAAA,OAAAA,gBAASZ,GAACa,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;AACVC,oBAAAA,KAAAA,EAAO5D,aAAc,CAAA;AAAEoC,wBAAAA,EAAAA,EAAIC,iBAAkB,CAAA,KAAA,CAAA;wBAAQC,cAAgB,EAAA;AAAM,qBAAA,CAAA;AAE3E,oBAAA,QAAA,gBAAAQ,GAACe,CAAAA,QAAAA,EAAAA;wBAASC,QAAUnD,EAAAA,gBAAAA;AAAkBoD,wBAAAA,SAAAA,gBAAWjB,GAACkB,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;kCAC/ChE,aAAc,CAAA;AACboC,4BAAAA,EAAAA,EAAIC,iBAAkB,CAAA,cAAA,CAAA;4BACtBC,cAAgB,EAAA;AAClB,yBAAA;;;;AAMR,0BAAAQ,GAAA,CAACF,QAAQqB,OAAO,EAAA;AAAC,gBAAA,QAAA,EAAA;;;;AAGvB;;;;"}
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
4
+
5
+ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
6
+ addTagTypes: [
7
+ 'Asset',
8
+ 'Folder'
9
+ ]
10
+ }).injectEndpoints({
11
+ endpoints: (builder)=>({
12
+ uploadFiles: builder.mutation({
13
+ query: (formData)=>({
14
+ url: '/upload',
15
+ method: 'POST',
16
+ data: formData
17
+ }),
18
+ invalidatesTags: [
19
+ 'Asset'
20
+ ]
21
+ })
22
+ })
23
+ });
24
+ const { useUploadFilesMutation } = uploadApi;
25
+
26
+ exports.uploadApi = uploadApi;
27
+ exports.useUploadFilesMutation = useUploadFilesMutation;
28
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sources":["../../../../admin/src/future/services/api.ts"],"sourcesContent":["import { adminApi } from '@strapi/admin/strapi-admin';\n\nimport type { CreateFile } from '../../../../shared/contracts/files';\n\nconst uploadApi = adminApi\n .enhanceEndpoints({\n addTagTypes: ['Asset', 'Folder'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n uploadFiles: builder.mutation<CreateFile.Response, FormData>({\n query: (formData) => ({\n url: '/upload',\n method: 'POST',\n data: formData,\n }),\n invalidatesTags: ['Asset'],\n }),\n }),\n });\n\nexport const { useUploadFilesMutation } = uploadApi;\nexport { uploadApi };\n"],"names":["uploadApi","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","uploadFiles","mutation","query","formData","url","method","data","invalidatesTags","useUploadFilesMutation"],"mappings":";;;;AAIMA,MAAAA,SAAAA,GAAYC,oBACfC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA,OAAA;AAAS,QAAA;AAAS;AAClC,CAAA,CAAA,CACCC,eAAe,CAAC;IACfC,SAAW,EAAA,CAACC,WAAa;YACvBC,WAAaD,EAAAA,OAAAA,CAAQE,QAAQ,CAAgC;gBAC3DC,KAAO,EAAA,CAACC,YAAc;wBACpBC,GAAK,EAAA,SAAA;wBACLC,MAAQ,EAAA,MAAA;wBACRC,IAAMH,EAAAA;qBACR,CAAA;gBACAI,eAAiB,EAAA;AAAC,oBAAA;AAAQ;AAC5B,aAAA;SACF;AACF,CAAA;AAEW,MAAA,EAAEC,sBAAsB,EAAE,GAAGf;;;;;"}
@@ -0,0 +1,25 @@
1
+ import { adminApi } from '@strapi/admin/strapi-admin';
2
+
3
+ const uploadApi = adminApi.enhanceEndpoints({
4
+ addTagTypes: [
5
+ 'Asset',
6
+ 'Folder'
7
+ ]
8
+ }).injectEndpoints({
9
+ endpoints: (builder)=>({
10
+ uploadFiles: builder.mutation({
11
+ query: (formData)=>({
12
+ url: '/upload',
13
+ method: 'POST',
14
+ data: formData
15
+ }),
16
+ invalidatesTags: [
17
+ 'Asset'
18
+ ]
19
+ })
20
+ })
21
+ });
22
+ const { useUploadFilesMutation } = uploadApi;
23
+
24
+ export { uploadApi, useUploadFilesMutation };
25
+ //# sourceMappingURL=api.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.mjs","sources":["../../../../admin/src/future/services/api.ts"],"sourcesContent":["import { adminApi } from '@strapi/admin/strapi-admin';\n\nimport type { CreateFile } from '../../../../shared/contracts/files';\n\nconst uploadApi = adminApi\n .enhanceEndpoints({\n addTagTypes: ['Asset', 'Folder'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n uploadFiles: builder.mutation<CreateFile.Response, FormData>({\n query: (formData) => ({\n url: '/upload',\n method: 'POST',\n data: formData,\n }),\n invalidatesTags: ['Asset'],\n }),\n }),\n });\n\nexport const { useUploadFilesMutation } = uploadApi;\nexport { uploadApi };\n"],"names":["uploadApi","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","uploadFiles","mutation","query","formData","url","method","data","invalidatesTags","useUploadFilesMutation"],"mappings":";;AAIMA,MAAAA,SAAAA,GAAYC,QACfC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA,OAAA;AAAS,QAAA;AAAS;AAClC,CAAA,CAAA,CACCC,eAAe,CAAC;IACfC,SAAW,EAAA,CAACC,WAAa;YACvBC,WAAaD,EAAAA,OAAAA,CAAQE,QAAQ,CAAgC;gBAC3DC,KAAO,EAAA,CAACC,YAAc;wBACpBC,GAAK,EAAA,SAAA;wBACLC,MAAQ,EAAA,MAAA;wBACRC,IAAMH,EAAAA;qBACR,CAAA;gBACAI,eAAiB,EAAA;AAAC,oBAAA;AAAQ;AAC5B,aAAA;SACF;AACF,CAAA;AAEW,MAAA,EAAEC,sBAAsB,EAAE,GAAGf;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var pluginId = require('../../pluginId.js');
4
+
5
+ const getTranslationKey = (id)=>`${pluginId.pluginId}.${id}`;
6
+
7
+ exports.getTranslationKey = getTranslationKey;
8
+ //# sourceMappingURL=translations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.js","sources":["../../../../admin/src/future/utils/translations.ts"],"sourcesContent":["import { pluginId } from '../../pluginId';\n\nexport const getTranslationKey = (id: string) => `${pluginId}.${id}`;\n"],"names":["getTranslationKey","id","pluginId"],"mappings":";;;;AAEO,MAAMA,oBAAoB,CAACC,EAAAA,GAAe,GAAGC,iBAAS,CAAA,CAAC,EAAED,EAAAA,CAAAA;;;;"}
@@ -0,0 +1,6 @@
1
+ import { pluginId } from '../../pluginId.mjs';
2
+
3
+ const getTranslationKey = (id)=>`${pluginId}.${id}`;
4
+
5
+ export { getTranslationKey };
6
+ //# sourceMappingURL=translations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.mjs","sources":["../../../../admin/src/future/utils/translations.ts"],"sourcesContent":["import { pluginId } from '../../pluginId';\n\nexport const getTranslationKey = (id: string) => `${pluginId}.${id}`;\n"],"names":["getTranslationKey","id","pluginId"],"mappings":";;AAEO,MAAMA,oBAAoB,CAACC,EAAAA,GAAe,GAAGC,QAAS,CAAA,CAAC,EAAED,EAAAA,CAAAA;;;;"}
@@ -40,6 +40,7 @@ const editAssetRequest = (asset, file, signal, onProgress, post)=>{
40
40
  formData.append('fileInfo', JSON.stringify({
41
41
  alternativeText: asset.alternativeText,
42
42
  caption: asset.caption,
43
+ focalPoint: asset.focalPoint,
43
44
  folder: asset.folder,
44
45
  name: asset.name
45
46
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"useEditAsset.js","sources":["../../../admin/src/hooks/useEditAsset.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useFetchClient, FetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { UpdateFile, File as FileAsset } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport type ErrorMutation = {\n message: string;\n response: {\n status: number;\n data: {\n error: Error;\n };\n };\n} | null;\n\nconst editAssetRequest = (\n asset: FileAsset,\n file: File,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const endpoint = `/${pluginId}?id=${asset.id}`;\n\n const formData = new FormData();\n\n if (file) {\n formData.append('files', file);\n }\n\n formData.append(\n 'fileInfo',\n JSON.stringify({\n alternativeText: asset.alternativeText,\n caption: asset.caption,\n folder: asset.folder,\n name: asset.name,\n })\n );\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useEditAsset = () => {\n const [progress, setProgress] = React.useState(0);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n UpdateFile.Response['data'],\n ErrorMutation,\n { asset: FileAsset; file: File }\n >(({ asset, file }) => editAssetRequest(asset, file, signal, setProgress, post), {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n },\n onError(reason) {\n if (reason?.response?.status === 403) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('permissions.not-allowed.update') }),\n });\n } else {\n toggleNotification({ type: 'danger', message: reason?.message });\n }\n },\n });\n\n const editAsset = (asset: FileAsset, file: File) => mutation.mutateAsync({ asset, file });\n\n const cancel = () => abortController.abort();\n\n return { ...mutation, cancel, editAsset, progress, status: mutation.status };\n};\n"],"names":["editAssetRequest","asset","file","signal","onProgress","post","endpoint","pluginId","id","formData","FormData","append","JSON","stringify","alternativeText","caption","folder","name","then","res","data","useEditAsset","progress","setProgress","React","useState","formatMessage","useIntl","toggleNotification","useNotification","queryClient","useQueryClient","abortController","AbortController","useFetchClient","mutation","useMutation","onSuccess","refetchQueries","active","onError","reason","response","status","type","message","getTrad","editAsset","mutateAsync","cancel","abort"],"mappings":"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"}
1
+ {"version":3,"file":"useEditAsset.js","sources":["../../../admin/src/hooks/useEditAsset.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useFetchClient, FetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { UpdateFile, File as FileAsset } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport type ErrorMutation = {\n message: string;\n response: {\n status: number;\n data: {\n error: Error;\n };\n };\n} | null;\n\nconst editAssetRequest = (\n asset: FileAsset,\n file: File,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const endpoint = `/${pluginId}?id=${asset.id}`;\n\n const formData = new FormData();\n\n if (file) {\n formData.append('files', file);\n }\n\n formData.append(\n 'fileInfo',\n JSON.stringify({\n alternativeText: asset.alternativeText,\n caption: asset.caption,\n focalPoint: asset.focalPoint,\n folder: asset.folder,\n name: asset.name,\n })\n );\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useEditAsset = () => {\n const [progress, setProgress] = React.useState(0);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n UpdateFile.Response['data'],\n ErrorMutation,\n { asset: FileAsset; file: File }\n >(({ asset, file }) => editAssetRequest(asset, file, signal, setProgress, post), {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n },\n onError(reason) {\n if (reason?.response?.status === 403) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('permissions.not-allowed.update') }),\n });\n } else {\n toggleNotification({ type: 'danger', message: reason?.message });\n }\n },\n });\n\n const editAsset = (asset: FileAsset, file: File) => mutation.mutateAsync({ asset, file });\n\n const cancel = () => abortController.abort();\n\n return { ...mutation, cancel, editAsset, progress, status: mutation.status };\n};\n"],"names":["editAssetRequest","asset","file","signal","onProgress","post","endpoint","pluginId","id","formData","FormData","append","JSON","stringify","alternativeText","caption","focalPoint","folder","name","then","res","data","useEditAsset","progress","setProgress","React","useState","formatMessage","useIntl","toggleNotification","useNotification","queryClient","useQueryClient","abortController","AbortController","useFetchClient","mutation","useMutation","onSuccess","refetchQueries","active","onError","reason","response","status","type","message","getTrad","editAsset","mutateAsync","cancel","abort"],"mappings":"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"}
@@ -19,6 +19,7 @@ const editAssetRequest = (asset, file, signal, onProgress, post)=>{
19
19
  formData.append('fileInfo', JSON.stringify({
20
20
  alternativeText: asset.alternativeText,
21
21
  caption: asset.caption,
22
+ focalPoint: asset.focalPoint,
22
23
  folder: asset.folder,
23
24
  name: asset.name
24
25
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"useEditAsset.mjs","sources":["../../../admin/src/hooks/useEditAsset.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useFetchClient, FetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { UpdateFile, File as FileAsset } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport type ErrorMutation = {\n message: string;\n response: {\n status: number;\n data: {\n error: Error;\n };\n };\n} | null;\n\nconst editAssetRequest = (\n asset: FileAsset,\n file: File,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const endpoint = `/${pluginId}?id=${asset.id}`;\n\n const formData = new FormData();\n\n if (file) {\n formData.append('files', file);\n }\n\n formData.append(\n 'fileInfo',\n JSON.stringify({\n alternativeText: asset.alternativeText,\n caption: asset.caption,\n folder: asset.folder,\n name: asset.name,\n })\n );\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useEditAsset = () => {\n const [progress, setProgress] = React.useState(0);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n UpdateFile.Response['data'],\n ErrorMutation,\n { asset: FileAsset; file: File }\n >(({ asset, file }) => editAssetRequest(asset, file, signal, setProgress, post), {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n },\n onError(reason) {\n if (reason?.response?.status === 403) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('permissions.not-allowed.update') }),\n });\n } else {\n toggleNotification({ type: 'danger', message: reason?.message });\n }\n },\n });\n\n const editAsset = (asset: FileAsset, file: File) => mutation.mutateAsync({ asset, file });\n\n const cancel = () => abortController.abort();\n\n return { ...mutation, cancel, editAsset, progress, status: mutation.status };\n};\n"],"names":["editAssetRequest","asset","file","signal","onProgress","post","endpoint","pluginId","id","formData","FormData","append","JSON","stringify","alternativeText","caption","folder","name","then","res","data","useEditAsset","progress","setProgress","React","useState","formatMessage","useIntl","toggleNotification","useNotification","queryClient","useQueryClient","abortController","AbortController","useFetchClient","mutation","useMutation","onSuccess","refetchQueries","active","onError","reason","response","status","type","message","getTrad","editAsset","mutateAsync","cancel","abort"],"mappings":"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"}
1
+ {"version":3,"file":"useEditAsset.mjs","sources":["../../../admin/src/hooks/useEditAsset.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useFetchClient, FetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { UpdateFile, File as FileAsset } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport type ErrorMutation = {\n message: string;\n response: {\n status: number;\n data: {\n error: Error;\n };\n };\n} | null;\n\nconst editAssetRequest = (\n asset: FileAsset,\n file: File,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const endpoint = `/${pluginId}?id=${asset.id}`;\n\n const formData = new FormData();\n\n if (file) {\n formData.append('files', file);\n }\n\n formData.append(\n 'fileInfo',\n JSON.stringify({\n alternativeText: asset.alternativeText,\n caption: asset.caption,\n focalPoint: asset.focalPoint,\n folder: asset.folder,\n name: asset.name,\n })\n );\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useEditAsset = () => {\n const [progress, setProgress] = React.useState(0);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n UpdateFile.Response['data'],\n ErrorMutation,\n { asset: FileAsset; file: File }\n >(({ asset, file }) => editAssetRequest(asset, file, signal, setProgress, post), {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n },\n onError(reason) {\n if (reason?.response?.status === 403) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('permissions.not-allowed.update') }),\n });\n } else {\n toggleNotification({ type: 'danger', message: reason?.message });\n }\n },\n });\n\n const editAsset = (asset: FileAsset, file: File) => mutation.mutateAsync({ asset, file });\n\n const cancel = () => abortController.abort();\n\n return { ...mutation, cancel, editAsset, progress, status: mutation.status };\n};\n"],"names":["editAssetRequest","asset","file","signal","onProgress","post","endpoint","pluginId","id","formData","FormData","append","JSON","stringify","alternativeText","caption","focalPoint","folder","name","then","res","data","useEditAsset","progress","setProgress","React","useState","formatMessage","useIntl","toggleNotification","useNotification","queryClient","useQueryClient","abortController","AbortController","useFetchClient","mutation","useMutation","onSuccess","refetchQueries","active","onError","reason","response","status","type","message","getTrad","editAsset","mutateAsync","cancel","abort"],"mappings":"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"}
@@ -75,7 +75,7 @@ const admin = {
75
75
  permissions: constants.PERMISSIONS.main,
76
76
  Component: ()=>{
77
77
  return Promise.resolve().then(function () { return require('./future/App.js'); }).then((mod)=>({
78
- default: mod.UnstableMediaLibraryPage
78
+ default: mod.UnstableMediaLibrary
79
79
  }));
80
80
  },
81
81
  position: 5
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { Images, WarningCircle } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { MediaLibraryDialog } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport { MediaLibraryInput } from './components/MediaLibraryInput/MediaLibraryInput';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { getTrad, prefixPluginTranslations } from './utils';\n\nimport type { MediaLibraryDialogProps } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport type { MediaLibraryInputProps } from './components/MediaLibraryInput/MediaLibraryInput';\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst name = pluginPkg.strapi.name;\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Images,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./pages/App/App').then((mod) => ({ default: mod.Upload }));\n },\n position: 4,\n });\n\n if (window.strapi.future.isEnabled('unstableMediaLibrary')) {\n app.addMenuLink({\n to: `plugins/unstable-${pluginId}`,\n icon: WarningCircle,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./future/App').then((mod) => ({\n default: mod.UnstableMediaLibraryPage,\n }));\n },\n position: 5,\n });\n }\n\n app.addSettingsLink('global', {\n id: 'media-library-settings',\n to: 'media-library',\n intlLabel: {\n id: getTrad('plugin.name'),\n defaultMessage: 'Media Library',\n },\n async Component() {\n const { ProtectedSettingsPage } = await import('./pages/SettingsPage/SettingsPage');\n return { default: ProtectedSettingsPage };\n },\n permissions: PERMISSIONS.settings,\n });\n\n app.addFields({\n type: 'media',\n Component: MediaLibraryInput as React.FC<Partial<MediaLibraryInputProps>>,\n });\n app.addComponents([\n {\n name: 'media-library',\n Component: MediaLibraryDialog as React.FC<Partial<MediaLibraryDialogProps>>,\n },\n ]);\n\n app.registerPlugin({\n id: pluginId,\n name,\n });\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["name","pluginPkg","strapi","admin","register","app","addMenuLink","to","pluginId","icon","Images","intlLabel","id","defaultMessage","permissions","PERMISSIONS","main","Component","then","mod","default","Upload","position","window","future","isEnabled","WarningCircle","UnstableMediaLibraryPage","addSettingsLink","getTrad","ProtectedSettingsPage","settings","addFields","type","MediaLibraryInput","addComponents","MediaLibraryDialog","registerPlugin","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { Images, WarningCircle } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { MediaLibraryDialog } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport { MediaLibraryInput } from './components/MediaLibraryInput/MediaLibraryInput';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { getTrad, prefixPluginTranslations } from './utils';\n\nimport type { MediaLibraryDialogProps } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport type { MediaLibraryInputProps } from './components/MediaLibraryInput/MediaLibraryInput';\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst name = pluginPkg.strapi.name;\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Images,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./pages/App/App').then((mod) => ({ default: mod.Upload }));\n },\n position: 4,\n });\n\n if (window.strapi.future.isEnabled('unstableMediaLibrary')) {\n app.addMenuLink({\n to: `plugins/unstable-${pluginId}`,\n icon: WarningCircle,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./future/App').then((mod) => ({\n default: mod.UnstableMediaLibrary,\n }));\n },\n position: 5,\n });\n }\n\n app.addSettingsLink('global', {\n id: 'media-library-settings',\n to: 'media-library',\n intlLabel: {\n id: getTrad('plugin.name'),\n defaultMessage: 'Media Library',\n },\n async Component() {\n const { ProtectedSettingsPage } = await import('./pages/SettingsPage/SettingsPage');\n return { default: ProtectedSettingsPage };\n },\n permissions: PERMISSIONS.settings,\n });\n\n app.addFields({\n type: 'media',\n Component: MediaLibraryInput as React.FC<Partial<MediaLibraryInputProps>>,\n });\n app.addComponents([\n {\n name: 'media-library',\n Component: MediaLibraryDialog as React.FC<Partial<MediaLibraryDialogProps>>,\n },\n ]);\n\n app.registerPlugin({\n id: pluginId,\n name,\n });\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["name","pluginPkg","strapi","admin","register","app","addMenuLink","to","pluginId","icon","Images","intlLabel","id","defaultMessage","permissions","PERMISSIONS","main","Component","then","mod","default","Upload","position","window","future","isEnabled","WarningCircle","UnstableMediaLibrary","addSettingsLink","getTrad","ProtectedSettingsPage","settings","addFields","type","MediaLibraryInput","addComponents","MediaLibraryDialog","registerPlugin","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -71,7 +71,7 @@ const admin = {
71
71
  permissions: PERMISSIONS.main,
72
72
  Component: ()=>{
73
73
  return import('./future/App.mjs').then((mod)=>({
74
- default: mod.UnstableMediaLibraryPage
74
+ default: mod.UnstableMediaLibrary
75
75
  }));
76
76
  },
77
77
  position: 5
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { Images, WarningCircle } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { MediaLibraryDialog } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport { MediaLibraryInput } from './components/MediaLibraryInput/MediaLibraryInput';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { getTrad, prefixPluginTranslations } from './utils';\n\nimport type { MediaLibraryDialogProps } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport type { MediaLibraryInputProps } from './components/MediaLibraryInput/MediaLibraryInput';\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst name = pluginPkg.strapi.name;\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Images,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./pages/App/App').then((mod) => ({ default: mod.Upload }));\n },\n position: 4,\n });\n\n if (window.strapi.future.isEnabled('unstableMediaLibrary')) {\n app.addMenuLink({\n to: `plugins/unstable-${pluginId}`,\n icon: WarningCircle,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./future/App').then((mod) => ({\n default: mod.UnstableMediaLibraryPage,\n }));\n },\n position: 5,\n });\n }\n\n app.addSettingsLink('global', {\n id: 'media-library-settings',\n to: 'media-library',\n intlLabel: {\n id: getTrad('plugin.name'),\n defaultMessage: 'Media Library',\n },\n async Component() {\n const { ProtectedSettingsPage } = await import('./pages/SettingsPage/SettingsPage');\n return { default: ProtectedSettingsPage };\n },\n permissions: PERMISSIONS.settings,\n });\n\n app.addFields({\n type: 'media',\n Component: MediaLibraryInput as React.FC<Partial<MediaLibraryInputProps>>,\n });\n app.addComponents([\n {\n name: 'media-library',\n Component: MediaLibraryDialog as React.FC<Partial<MediaLibraryDialogProps>>,\n },\n ]);\n\n app.registerPlugin({\n id: pluginId,\n name,\n });\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["name","pluginPkg","strapi","admin","register","app","addMenuLink","to","pluginId","icon","Images","intlLabel","id","defaultMessage","permissions","PERMISSIONS","main","Component","then","mod","default","Upload","position","window","future","isEnabled","WarningCircle","UnstableMediaLibraryPage","addSettingsLink","getTrad","ProtectedSettingsPage","settings","addFields","type","MediaLibraryInput","addComponents","MediaLibraryDialog","registerPlugin","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { Images, WarningCircle } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { MediaLibraryDialog } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport { MediaLibraryInput } from './components/MediaLibraryInput/MediaLibraryInput';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { getTrad, prefixPluginTranslations } from './utils';\n\nimport type { MediaLibraryDialogProps } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport type { MediaLibraryInputProps } from './components/MediaLibraryInput/MediaLibraryInput';\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst name = pluginPkg.strapi.name;\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Images,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./pages/App/App').then((mod) => ({ default: mod.Upload }));\n },\n position: 4,\n });\n\n if (window.strapi.future.isEnabled('unstableMediaLibrary')) {\n app.addMenuLink({\n to: `plugins/unstable-${pluginId}`,\n icon: WarningCircle,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => {\n return import('./future/App').then((mod) => ({\n default: mod.UnstableMediaLibrary,\n }));\n },\n position: 5,\n });\n }\n\n app.addSettingsLink('global', {\n id: 'media-library-settings',\n to: 'media-library',\n intlLabel: {\n id: getTrad('plugin.name'),\n defaultMessage: 'Media Library',\n },\n async Component() {\n const { ProtectedSettingsPage } = await import('./pages/SettingsPage/SettingsPage');\n return { default: ProtectedSettingsPage };\n },\n permissions: PERMISSIONS.settings,\n });\n\n app.addFields({\n type: 'media',\n Component: MediaLibraryInput as React.FC<Partial<MediaLibraryInputProps>>,\n });\n app.addComponents([\n {\n name: 'media-library',\n Component: MediaLibraryDialog as React.FC<Partial<MediaLibraryDialogProps>>,\n },\n ]);\n\n app.registerPlugin({\n id: pluginId,\n name,\n });\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["name","pluginPkg","strapi","admin","register","app","addMenuLink","to","pluginId","icon","Images","intlLabel","id","defaultMessage","permissions","PERMISSIONS","main","Component","then","mod","default","Upload","position","window","future","isEnabled","WarningCircle","UnstableMediaLibrary","addSettingsLink","getTrad","ProtectedSettingsPage","settings","addFields","type","MediaLibraryInput","addComponents","MediaLibraryDialog","registerPlugin","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@strapi/upload";
6
- var version = "5.34.0";
6
+ var version = "5.35.0";
7
7
  var description = "Makes it easy to upload images and files to your Strapi Application.";
8
8
  var license = "SEE LICENSE IN LICENSE";
9
9
  var author = {
@@ -68,8 +68,8 @@ var dependencies = {
68
68
  "@strapi/database": "5.33.3",
69
69
  "@strapi/design-system": "2.1.2",
70
70
  "@strapi/icons": "2.1.2",
71
- "@strapi/provider-upload-local": "5.34.0",
72
- "@strapi/utils": "5.34.0",
71
+ "@strapi/provider-upload-local": "5.35.0",
72
+ "@strapi/utils": "5.35.0",
73
73
  "byte-size": "8.1.1",
74
74
  cropperjs: "1.6.1",
75
75
  "date-fns": "2.30.0",
@@ -93,8 +93,8 @@ var dependencies = {
93
93
  zod: "3.25.67"
94
94
  };
95
95
  var devDependencies = {
96
- "@strapi/admin": "5.34.0",
97
- "@strapi/types": "5.34.0",
96
+ "@strapi/admin": "5.35.0",
97
+ "@strapi/types": "5.35.0",
98
98
  "@testing-library/dom": "10.4.1",
99
99
  "@testing-library/react": "16.3.0",
100
100
  "@testing-library/user-event": "14.6.1",
@@ -1,5 +1,5 @@
1
1
  var name = "@strapi/upload";
2
- var version = "5.34.0";
2
+ var version = "5.35.0";
3
3
  var description = "Makes it easy to upload images and files to your Strapi Application.";
4
4
  var license = "SEE LICENSE IN LICENSE";
5
5
  var author = {
@@ -64,8 +64,8 @@ var dependencies = {
64
64
  "@strapi/database": "5.33.3",
65
65
  "@strapi/design-system": "2.1.2",
66
66
  "@strapi/icons": "2.1.2",
67
- "@strapi/provider-upload-local": "5.34.0",
68
- "@strapi/utils": "5.34.0",
67
+ "@strapi/provider-upload-local": "5.35.0",
68
+ "@strapi/utils": "5.35.0",
69
69
  "byte-size": "8.1.1",
70
70
  cropperjs: "1.6.1",
71
71
  "date-fns": "2.30.0",
@@ -89,8 +89,8 @@ var dependencies = {
89
89
  zod: "3.25.67"
90
90
  };
91
91
  var devDependencies = {
92
- "@strapi/admin": "5.34.0",
93
- "@strapi/types": "5.34.0",
92
+ "@strapi/admin": "5.35.0",
93
+ "@strapi/types": "5.35.0",
94
94
  "@testing-library/dom": "10.4.1",
95
95
  "@testing-library/react": "16.3.0",
96
96
  "@testing-library/user-event": "14.6.1",
@@ -1,9 +1,8 @@
1
1
  import * as React from 'react';
2
- interface AssetPreviewProps {
2
+ interface AssetPreviewProps extends React.HTMLAttributes<HTMLElement> {
3
3
  mime: string;
4
4
  name: string;
5
5
  url: string;
6
- onLoad?: () => void;
7
6
  }
8
7
  export declare const AssetPreview: React.ForwardRefExoticComponent<AssetPreviewProps & React.RefAttributes<HTMLAudioElement | HTMLVideoElement | HTMLImageElement>>;
9
8
  export {};
@@ -0,0 +1,7 @@
1
+ interface FocalPointActionsProps {
2
+ onCancel: () => void;
3
+ onValidate: () => void;
4
+ onReset: () => void;
5
+ }
6
+ export declare const FocalPointActions: ({ onCancel, onValidate, onReset }: FocalPointActionsProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -1,4 +1,4 @@
1
- import type { File as FileDefinition, RawFile } from '../../../../../shared/contracts/files';
1
+ import type { File as FileDefinition, RawFile, FocalPoint } from '../../../../../shared/contracts/files';
2
2
  interface Asset extends Omit<FileDefinition, 'folder'> {
3
3
  isLocal?: boolean;
4
4
  rawFile?: RawFile;
@@ -17,6 +17,10 @@ interface PreviewBoxProps {
17
17
  onCropStart: () => void;
18
18
  onCropCancel: () => void;
19
19
  trackedLocation?: string;
20
+ formFocalPoint?: FocalPoint | null;
21
+ onFocalPointStart: () => void;
22
+ onFocalPointFinish: (focalPoint: FocalPoint) => void;
23
+ onFocalPointCancel: () => void;
20
24
  }
21
- export declare const PreviewBox: ({ asset, canUpdate, canCopyLink, canDownload, onDelete, onCropFinish, onCropStart, onCropCancel, replacementFile, trackedLocation, }: PreviewBoxProps) => import("react/jsx-runtime").JSX.Element;
25
+ export declare const PreviewBox: ({ asset, canUpdate, canCopyLink, canDownload, onDelete, onCropFinish, onCropStart, onCropCancel, replacementFile, trackedLocation, formFocalPoint, onFocalPointStart, onFocalPointFinish, onFocalPointCancel, }: PreviewBoxProps) => import("react/jsx-runtime").JSX.Element;
22
26
  export {};
@@ -15,3 +15,16 @@ export declare const CroppingActionRow: import("styled-components").IStyledCompo
15
15
  }, never>> & Omit<(<C extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "div">(props: import("react").PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & import("react").RefAttributes<unknown>) => import("react").ReactNode), keyof import("react").Component<any, {}, any>>;
16
16
  export declare const BadgeOverride: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("@strapi/design-system").BadgeProps, never>> & Omit<({ active, size, textColor, backgroundColor, variant, children, minWidth, ...props }: import("@strapi/design-system").BadgeProps) => import("react/jsx-runtime").JSX.Element, keyof import("react").Component<any, {}, any>>;
17
17
  export declare const UploadProgressWrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
18
+ export declare const FocalPointActionRow: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Omit<Omit<import("@strapi/design-system").FlexProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
19
+ ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
20
+ }, never>> & Omit<(<C extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "div">(props: import("react").PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & import("react").RefAttributes<unknown>) => import("react").ReactNode), keyof import("react").Component<any, {}, any>>;
21
+ export declare const FocalPointImageWrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
22
+ interface FocalPointAimProps {
23
+ $focalPoint: {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ }
28
+ export declare const FocalPointAim: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, FocalPointAimProps>>;
29
+ export declare const FocalPointHalo: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
30
+ export {};
@@ -1 +1 @@
1
- export declare const UnstableMediaLibraryPage: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare const UnstableMediaLibrary: () => import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,6 @@
1
- declare const uploadApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, import("@reduxjs/toolkit/dist/query/endpointDefinitions").UpdateDefinitions<{}, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "AIFeatureConfig" | "Asset" | "Folder", never>, "adminApi", "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "AIFeatureConfig" | "Asset" | "Folder", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/dist/query/react").reactHooksModuleName>;
1
+ import type { CreateFile } from '../../../../shared/contracts/files';
2
+ declare const uploadApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, import("@reduxjs/toolkit/dist/query/endpointDefinitions").UpdateDefinitions<{}, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "AIFeatureConfig" | "Asset" | "Folder", never> & {
3
+ uploadFiles: import("@reduxjs/toolkit/query").MutationDefinition<FormData, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "AIFeatureConfig" | "Asset" | "Folder", CreateFile.Response, "adminApi">;
4
+ }, "adminApi", "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "AIFeatureConfig" | "Asset" | "Folder", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/dist/query/react").reactHooksModuleName>;
5
+ export declare const useUploadFilesMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<FormData, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "AIFeatureConfig" | "Asset" | "Folder", CreateFile.Response, "adminApi">>;
2
6
  export { uploadApi };
@@ -0,0 +1 @@
1
+ export declare const getTranslationKey: (id: string) => string;