@webiny/app-file-manager 5.23.1 → 5.25.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/admin/graphql.js CHANGED
@@ -5,9 +5,9 @@ var _templateObject, _templateObject2;
5
5
  import gql from "graphql-tag";
6
6
  var fields =
7
7
  /* GraphQL */
8
- "\n {\n data {\n uploadMinFileSize\n uploadMaxFileSize\n }\n }\n";
8
+ "\n {\n data {\n uploadMinFileSize\n uploadMaxFileSize\n srcPrefix\n }\n }\n";
9
9
  var graphql = {
10
- GET_SETTINGS: gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query getSettings {\n fileManager {\n getSettings", "\n }\n }\n "])), fields),
11
- UPDATE_SETTINGS: gql(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n mutation updateSettings($data: FileManagerSettingsInput) {\n fileManager {\n updateSettings(data: $data) ", "\n }\n }\n "])), fields)
10
+ GET_SETTINGS: gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query GetFileManagerSettings {\n fileManager {\n getSettings", "\n }\n }\n "])), fields),
11
+ UPDATE_SETTINGS: gql(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n mutation UpdateFileManagerSettings($data: FileManagerSettingsInput) {\n fileManager {\n updateSettings(data: $data) ", "\n }\n }\n "])), fields)
12
12
  };
13
13
  export default graphql;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["graphql.ts"],"names":["gql","fields","graphql","GET_SETTINGS","UPDATE_SETTINGS"],"mappings":";;;;AAAA,OAAOA,GAAP,MAAgB,aAAhB;AAEA,IAAMC,MAAM;AAAG;AAAH,kIAAZ;AAUA,IAAMC,OAAO,GAAG;AACZC,EAAAA,YAAY,EAAEH,GAAF,kOAGiBC,MAHjB,CADA;AAQZG,EAAAA,eAAe,EAAEJ,GAAF,oQAG2BC,MAH3B;AARH,CAAhB;AAiBA,eAAeC,OAAf","sourcesContent":["import gql from \"graphql-tag\";\n\nconst fields = /* GraphQL */ `\n {\n data {\n uploadMinFileSize\n uploadMaxFileSize\n srcPrefix\n }\n }\n`;\n\nconst graphql = {\n GET_SETTINGS: gql`\n query GetFileManagerSettings {\n fileManager {\n getSettings${fields}\n }\n }\n `,\n UPDATE_SETTINGS: gql`\n mutation UpdateFileManagerSettings($data: FileManagerSettingsInput) {\n fileManager {\n updateSettings(data: $data) ${fields}\n }\n }\n `\n};\n\nexport default graphql;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["plugins"],"mappings":"AAAA,OAAOA,OAAP;AAEA,gBAAe;AAAA,SAAM,CAACA,OAAD,CAAN;AAAA,CAAf","sourcesContent":["import plugins from \"./plugins\";\n\nexport default () => [plugins];\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["installation","permissionRenderer"],"mappings":"AAAA,OAAOA,YAAP;AACA,OAAOC,kBAAP;AAEA,gBAAe;AAAA,SAAM,CAACD,YAAD,EAAeC,kBAAf,CAAN;AAAA,CAAf","sourcesContent":["import installation from \"./installation\";\nimport permissionRenderer from \"./permissionRenderer\";\n\nexport default () => [installation, permissionRenderer];\n"]}
@@ -5,7 +5,7 @@ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral
5
5
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
6
6
 
7
7
  import _regeneratorRuntime from "@babel/runtime/regenerator";
8
- import React, { useState, useEffect, lazy } from "react";
8
+ import React, { useState, useEffect } from "react";
9
9
  import gql from "graphql-tag";
10
10
  import { useApolloClient } from "@apollo/react-hooks";
11
11
  import { i18n } from "@webiny/app/i18n";
@@ -102,13 +102,6 @@ var plugin = {
102
102
  onInstalled: onInstalled
103
103
  });
104
104
  },
105
- upgrades: [{
106
- version: "5.0.0",
107
- getComponent: function getComponent() {
108
- return /*#__PURE__*/lazy(function () {
109
- return import("./upgrades/v5.0.0");
110
- });
111
- }
112
- }]
105
+ upgrades: []
113
106
  };
114
107
  export default plugin;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["installation.tsx"],"names":["React","useState","useEffect","gql","useApolloClient","i18n","Alert","CircularProgress","SimpleForm","SimpleFormContent","styled","config","appConfig","SimpleFormPlaceholder","minHeight","minWidth","t","ns","IS_INSTALLED","INSTALL","FMInstaller","onInstalled","client","error","setError","apiUrl","getKey","process","env","REACT_APP_API_URL","mutate","mutation","variables","srcPrefix","then","data","fileManager","install","message","setTimeout","label","plugin","name","type","title","dependencies","secure","getInstalledVersion","query","version","render","upgrades"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport gql from \"graphql-tag\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { AdminInstallationPlugin } from \"@webiny/app-admin/types\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { SimpleForm, SimpleFormContent } from \"@webiny/app-admin/components/SimpleForm\";\nimport styled from \"@emotion/styled\";\nimport { config as appConfig } from \"@webiny/app/config\";\n\nconst SimpleFormPlaceholder = styled.div({\n minHeight: 300,\n minWidth: 400\n});\n\nconst t = i18n.ns(\"app-file-manager/admin/installation\");\n\nconst IS_INSTALLED = gql`\n query IsFileManagerInstalled {\n fileManager {\n version\n }\n }\n`;\n\nconst INSTALL = gql`\n mutation InstallFileManager($srcPrefix: String) {\n fileManager {\n install(srcPrefix: $srcPrefix) {\n data\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\ninterface FileManagerInstallerProps {\n onInstalled: () => Promise<void>;\n}\nconst FMInstaller: React.FC<FileManagerInstallerProps> = ({ onInstalled }) => {\n const client = useApolloClient();\n const [error, setError] = useState(null);\n\n const apiUrl = appConfig.getKey(\"API_URL\", process.env.REACT_APP_API_URL);\n\n useEffect(() => {\n client\n .mutate({\n mutation: INSTALL,\n variables: { srcPrefix: apiUrl + \"/files\" }\n })\n .then(({ data }) => {\n const { error } = data.fileManager.install;\n if (error) {\n setError(error.message);\n return;\n }\n\n // Just so the user sees the actual message.\n setTimeout(onInstalled, 3000);\n });\n }, []);\n\n const label = error ? (\n <Alert title={t`Something went wrong`} type={\"danger\"}>\n {error}\n </Alert>\n ) : (\n t`Installing File Manager...`\n );\n\n return (\n <SimpleForm>\n <CircularProgress label={label} />\n <SimpleFormContent>\n <SimpleFormPlaceholder />\n </SimpleFormContent>\n </SimpleForm>\n );\n};\n\nconst plugin: AdminInstallationPlugin = {\n name: \"admin-installation-fm\",\n type: \"admin-installation\",\n title: t`File Manager`,\n dependencies: [\"admin-installation-security\", \"admin-installation-i18n\"],\n secure: true,\n async getInstalledVersion({ client }) {\n const { data } = await client.query({ query: IS_INSTALLED });\n return data.fileManager.version;\n },\n render({ onInstalled }) {\n return <FMInstaller onInstalled={onInstalled} />;\n },\n upgrades: []\n};\n\nexport default plugin;\n"]}
@@ -1,5 +1,14 @@
1
- /// <reference types="react" />
2
- export declare const FileManagerPermissions: ({ value, onChange }: {
3
- value: any;
4
- onChange: any;
5
- }) => JSX.Element;
1
+ import React from "react";
2
+ interface FileManagerPermissionItem {
3
+ settingsAccessScope?: string;
4
+ filesAccessScope?: string;
5
+ accessLevel?: string;
6
+ name?: string;
7
+ filesRWD?: string;
8
+ }
9
+ interface FileManagerPermissionsProps {
10
+ value: FileManagerPermissionItem;
11
+ onChange: (value: FileManagerPermissionItem[]) => void;
12
+ }
13
+ export declare const FileManagerPermissions: React.FC<FileManagerPermissionsProps>;
14
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileManagerPermissions.tsx"],"names":["React","Fragment","useCallback","useMemo","Grid","Cell","Select","i18n","PermissionInfo","gridNoPaddingClass","Form","Elevation","Typography","t","ns","FILE_MANAGER","FILE_MANAGER_FULL_ACCESS","FILE_MANAGER_ACCESS_FILE","FILE_MANAGER_ACCESS_SETTINGS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","FileManagerPermissions","value","onChange","onFormChange","data","newValue","Array","isArray","filter","item","name","startsWith","accessLevel","push","filesAccessScope","permission","own","rwd","undefined","filesRWD","settingsAccessScope","formData","hasFullAccess","find","permissions","length","filesPermission","hasSettingsAccess","Bind","setValue","marginTop","padding","paddingBottom","cb"],"mappings":"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","sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Typography } from \"@webiny/ui/Typography\";\n\nconst t = i18n.ns(\"app-file-manager/admin/plugins/permissionRenderer\");\n\nconst FILE_MANAGER = \"fm\";\nconst FILE_MANAGER_FULL_ACCESS = `${FILE_MANAGER}.*`;\nconst FILE_MANAGER_ACCESS_FILE = `${FILE_MANAGER}.file`;\nconst FILE_MANAGER_ACCESS_SETTINGS = `${FILE_MANAGER}.settings`;\n\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface FileManagerPermission {\n name: string;\n own?: boolean;\n rwd?: string;\n}\ninterface FileManagerPermissionItem {\n settingsAccessScope?: string;\n filesAccessScope?: string;\n accessLevel?: string;\n name?: string;\n filesRWD?: string;\n}\ninterface FileManagerPermissionsProps {\n value: FileManagerPermissionItem;\n onChange: (value: FileManagerPermissionItem[]) => void;\n}\n\nexport const FileManagerPermissions: React.FC<FileManagerPermissionsProps> = ({\n value,\n onChange\n}) => {\n const onFormChange = useCallback(\n (data: FileManagerPermissionItem) => {\n let newValue: FileManagerPermissionItem[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `file-manager*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(FILE_MANAGER));\n }\n\n if (data.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (data.accessLevel === FULL_ACCESS) {\n newValue.push({ name: FILE_MANAGER_FULL_ACCESS });\n onChange(newValue);\n return;\n }\n\n // Handling custom access level.\n\n // Files first.\n if (data.filesAccessScope && data.filesAccessScope !== NO_ACCESS) {\n const permission: FileManagerPermission = {\n name: FILE_MANAGER_ACCESS_FILE,\n own: false,\n rwd: undefined\n };\n\n if (data.filesAccessScope === \"own\") {\n permission.own = true;\n permission.rwd = \"rwd\";\n } else {\n permission.rwd = data.filesRWD || \"r\";\n }\n newValue.push(permission);\n }\n\n // Settings second.\n if (data.settingsAccessScope === FULL_ACCESS) {\n newValue.push({ name: FILE_MANAGER_ACCESS_SETTINGS });\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo((): FileManagerPermissionItem => {\n if (!Array.isArray(value)) {\n return { accessLevel: NO_ACCESS };\n }\n\n const hasFullAccess = value.find(\n item => item.name === FILE_MANAGER_FULL_ACCESS || item.name === \"*\"\n );\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(FILE_MANAGER));\n if (!permissions.length) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data: FileManagerPermissionItem = {\n accessLevel: CUSTOM_ACCESS,\n filesAccessScope: NO_ACCESS,\n settingsAccessScope: NO_ACCESS,\n filesRWD: \"r\"\n };\n\n const filesPermission = permissions.find(item => item.name === FILE_MANAGER_ACCESS_FILE);\n if (filesPermission) {\n data.filesAccessScope = filesPermission.own ? \"own\" : FULL_ACCESS;\n if (data.filesAccessScope === FULL_ACCESS) {\n data.filesRWD = filesPermission.rwd;\n } else {\n data.filesRWD = \"rwd\";\n }\n }\n\n const hasSettingsAccess = permissions.find(\n item => item.name === FILE_MANAGER_ACCESS_SETTINGS\n );\n if (hasSettingsAccess) {\n data.settingsAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind, setValue }) => (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === \"custom\" && (\n <Fragment>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Files`}</Typography>\n </Cell>\n <Cell span={12}>\n <Grid style={{ padding: 0, paddingBottom: 24 }}>\n <Cell span={12}>\n <Bind\n name={\"filesAccessScope\"}\n beforeChange={(value, cb) => {\n if (value === \"own\") {\n setValue(`filesRWD`, \"rwd\");\n }\n cb(value);\n }}\n >\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`All files`}</option>\n <option\n value={\"own\"}\n >{t`Only files created by the user`}</option>\n </Select>\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"filesRWD\"}>\n <Select\n label={t`Primary Actions`}\n disabled={data.filesAccessScope !== \"full\"}\n >\n <option value={\"r\"}>{t`Read`}</option>\n <option\n value={\"rw\"}\n >{t`Read, write`}</option>\n <option\n value={\"rwd\"}\n >{t`Read, write, delete`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Cell>\n </Grid>\n </Elevation>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Settings`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"settingsAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n </Fragment>\n )}\n </Fragment>\n )}\n </Form>\n );\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.tsx"],"names":["React","AccordionItem","ReactComponent","FileManagerIcon","FileManagerPermissions","i18n","t","ns","type","name","render","props"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,aAAT,QAA8B,sBAA9B;AAEA,SAASC,cAAc,IAAIC,eAA3B;AACA,SAASC,sBAAT;AACA,SAASC,IAAT,QAAqB,kBAArB;AAEA,IAAMC,CAAC,GAAGD,IAAI,CAACE,EAAL,CAAQ,mDAAR,CAAV;AAEA,eAAe;AACXC,EAAAA,IAAI,EAAE,gCADK;AAEXC,EAAAA,IAAI,EAAE,6CAFK;AAGXC,EAAAA,MAHW,kBAGJC,KAHI,EAGG;AACV,wBACI,oBAAC,aAAD;AACI,MAAA,IAAI,eAAE,oBAAC,eAAD,OADV;AAEI,MAAA,KAAK,EAAEL,CAAF,iFAFT;AAGI,MAAA,WAAW,EAAEA,CAAF,kHAHf;AAII,qBAAa;AAJjB,oBAMI,oBAAC,sBAAD,EAA4BK,KAA5B,CANJ,CADJ;AAUH;AAdU,CAAf","sourcesContent":["import React from \"react\";\nimport { AccordionItem } from \"@webiny/ui/Accordion\";\nimport { AdminAppPermissionRendererPlugin } from \"@webiny/app-admin/types\";\nimport { ReactComponent as FileManagerIcon } from \"../../assets/icons/folder-open.svg\";\nimport { FileManagerPermissions } from \"./FileManagerPermissions\";\nimport { i18n } from \"@webiny/app/i18n\";\n\nconst t = i18n.ns(\"app-file-manager/admin/plugins/permissionRenderer\");\n\nexport default {\n type: \"admin-app-permissions-renderer\",\n name: \"admin-app-permissions-renderer-file-manager\",\n render(props) {\n return (\n <AccordionItem\n icon={<FileManagerIcon />}\n title={t`File Manager`}\n description={t`Manage File manager app access permissions.`}\n data-testid={\"permission.fm\"}\n >\n <FileManagerPermissions {...props} />\n </AccordionItem>\n );\n }\n} as AdminAppPermissionRendererPlugin;\n"]}
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
2
- declare const FileManagerSettings: () => JSX.Element;
1
+ import * as React from "react";
2
+ declare const FileManagerSettings: React.FC;
3
3
  export default FileManagerSettings;
@@ -10,9 +10,16 @@ import { Input } from "@webiny/ui/Input";
10
10
  import graphql from "../graphql";
11
11
  import { CircularProgress } from "@webiny/ui/Progress";
12
12
  import get from "lodash.get";
13
+ import { validation } from "@webiny/validation";
13
14
  import { SimpleForm, SimpleFormFooter, SimpleFormContent, SimpleFormHeader } from "@webiny/app-admin/components/SimpleForm";
14
15
  import { CenteredView } from "@webiny/app-admin";
15
16
 
17
+ function prefixValidator(value) {
18
+ if (!value.endsWith("/files/")) {
19
+ throw Error("File URL prefix must end with \"/files/\"");
20
+ }
21
+ }
22
+
16
23
  var FileManagerSettings = function FileManagerSettings() {
17
24
  var _useSnackbar = useSnackbar(),
18
25
  showSnackbar = _useSnackbar.showSnackbar;
@@ -24,45 +31,54 @@ var FileManagerSettings = function FileManagerSettings() {
24
31
  queryInProgress = _ref.loading;
25
32
  return /*#__PURE__*/React.createElement(Mutation, {
26
33
  mutation: graphql.UPDATE_SETTINGS
27
- }, function (update, _ref2) {
28
- var mutationInProgress = _ref2.loading;
34
+ }, function (update, result) {
29
35
  var settings = get(data, "fileManager.getSettings.data") || {};
30
- return /*#__PURE__*/React.createElement(CenteredView, null, /*#__PURE__*/React.createElement(Form, {
31
- data: settings,
32
- onSubmit: /*#__PURE__*/function () {
33
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(data) {
34
- return _regeneratorRuntime.wrap(function _callee$(_context) {
35
- while (1) {
36
- switch (_context.prev = _context.next) {
37
- case 0:
38
- _context.next = 2;
39
- return update({
40
- variables: {
41
- data: {
42
- uploadMinFileSize: parseFloat(data.uploadMinFileSize),
43
- uploadMaxFileSize: parseFloat(data.uploadMaxFileSize)
44
- }
36
+ var mutationInProgress = result.loading;
37
+
38
+ var _onSubmit = /*#__PURE__*/function () {
39
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(data) {
40
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
41
+ while (1) {
42
+ switch (_context.prev = _context.next) {
43
+ case 0:
44
+ _context.next = 2;
45
+ return update({
46
+ variables: {
47
+ data: {
48
+ uploadMinFileSize: parseFloat(data.uploadMinFileSize),
49
+ uploadMaxFileSize: parseFloat(data.uploadMaxFileSize),
50
+ srcPrefix: data.srcPrefix
45
51
  }
46
- });
52
+ }
53
+ });
47
54
 
48
- case 2:
49
- showSnackbar("Settings updated successfully.");
55
+ case 2:
56
+ showSnackbar("Settings updated successfully.");
50
57
 
51
- case 3:
52
- case "end":
53
- return _context.stop();
54
- }
58
+ case 3:
59
+ case "end":
60
+ return _context.stop();
55
61
  }
56
- }, _callee);
57
- }));
62
+ }
63
+ }, _callee);
64
+ }));
58
65
 
59
- return function (_x) {
60
- return _ref3.apply(this, arguments);
61
- };
62
- }()
63
- }, function (_ref4) {
64
- var Bind = _ref4.Bind,
65
- form = _ref4.form;
66
+ return function onSubmit(_x) {
67
+ return _ref2.apply(this, arguments);
68
+ };
69
+ }();
70
+
71
+ return /*#__PURE__*/React.createElement(CenteredView, null, /*#__PURE__*/React.createElement(Form, {
72
+ data: settings,
73
+ onSubmit: function onSubmit(data) {
74
+ /**
75
+ * We are positive that data is Settings.
76
+ */
77
+ _onSubmit(data);
78
+ }
79
+ }, function (_ref3) {
80
+ var Bind = _ref3.Bind,
81
+ form = _ref3.form;
66
82
  return /*#__PURE__*/React.createElement(SimpleForm, null, (queryInProgress || mutationInProgress) && /*#__PURE__*/React.createElement(CircularProgress, null), /*#__PURE__*/React.createElement(SimpleFormHeader, {
67
83
  title: "General Settings"
68
84
  }), /*#__PURE__*/React.createElement(SimpleFormContent, null, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
@@ -74,7 +90,7 @@ var FileManagerSettings = function FileManagerSettings() {
74
90
  }, /*#__PURE__*/React.createElement(Input, {
75
91
  type: "number",
76
92
  label: "Minimum file upload size",
77
- description: "In bytes"
93
+ description: "The smallest file size in bytes."
78
94
  }))))), /*#__PURE__*/React.createElement(Cell, {
79
95
  span: 12
80
96
  }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
@@ -84,10 +100,22 @@ var FileManagerSettings = function FileManagerSettings() {
84
100
  }, /*#__PURE__*/React.createElement(Input, {
85
101
  type: "number",
86
102
  label: "Maximum file upload size",
87
- description: "In bytes"
103
+ description: "The largest file size in bytes."
104
+ }))))), /*#__PURE__*/React.createElement(Cell, {
105
+ span: 12
106
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
107
+ span: 12
108
+ }, /*#__PURE__*/React.createElement(Bind, {
109
+ name: "srcPrefix",
110
+ validators: [validation.create("url"), prefixValidator]
111
+ }, /*#__PURE__*/React.createElement(Input, {
112
+ label: "File URL prefix",
113
+ description: "This prefix will be prepended to the file key to form the full file URL."
88
114
  }))))))), /*#__PURE__*/React.createElement(SimpleFormFooter, null, /*#__PURE__*/React.createElement(ButtonPrimary, {
89
- onClick: form.submit
90
- }, "Save")));
115
+ onClick: function onClick(ev) {
116
+ form.submit(ev);
117
+ }
118
+ }, "Save Settings")));
91
119
  }));
92
120
  });
93
121
  });
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FileManagerSettings.tsx"],"names":["React","Form","Grid","Cell","ButtonPrimary","Query","Mutation","useSnackbar","Input","graphql","CircularProgress","get","validation","SimpleForm","SimpleFormFooter","SimpleFormContent","SimpleFormHeader","CenteredView","prefixValidator","value","endsWith","Error","FileManagerSettings","showSnackbar","GET_SETTINGS","data","queryInProgress","loading","UPDATE_SETTINGS","update","result","settings","mutationInProgress","onSubmit","variables","uploadMinFileSize","parseFloat","uploadMaxFileSize","srcPrefix","Bind","form","create","ev","submit"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Form } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport { Query, Mutation } from \"@apollo/react-components\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { Input } from \"@webiny/ui/Input\";\nimport graphql from \"../graphql\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport get from \"lodash.get\";\nimport { validation } from \"@webiny/validation\";\n\nimport {\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { CenteredView } from \"@webiny/app-admin\";\nimport { QueryGetSettingsResult, Settings } from \"~/types\";\nimport { MutationFunction, MutationResult } from \"@apollo/react-common\";\n\nfunction prefixValidator(value: string) {\n if (!value.endsWith(\"/files/\")) {\n throw Error(`File URL prefix must end with \"/files/\"`);\n }\n}\n\nconst FileManagerSettings: React.FC = () => {\n const { showSnackbar } = useSnackbar();\n\n return (\n <Query query={graphql.GET_SETTINGS}>\n {({ data, loading: queryInProgress }: MutationResult<QueryGetSettingsResult>) => (\n <Mutation mutation={graphql.UPDATE_SETTINGS}>\n {(update: MutationFunction, result: MutationResult) => {\n const settings = (get(data, \"fileManager.getSettings.data\") ||\n {}) as Settings;\n const { loading: mutationInProgress } = result;\n\n const onSubmit = async (data: Settings): Promise<void> => {\n await update({\n variables: {\n data: {\n uploadMinFileSize: parseFloat(data.uploadMinFileSize),\n uploadMaxFileSize: parseFloat(data.uploadMaxFileSize),\n srcPrefix: data.srcPrefix\n }\n }\n });\n showSnackbar(\"Settings updated successfully.\");\n };\n return (\n <CenteredView>\n <Form\n data={settings}\n onSubmit={data => {\n /**\n * We are positive that data is Settings.\n */\n onSubmit(data as unknown as Settings);\n }}\n >\n {({ Bind, form }) => (\n <SimpleForm>\n {(queryInProgress || mutationInProgress) && (\n <CircularProgress />\n )}\n <SimpleFormHeader title=\"General Settings\" />\n <SimpleFormContent>\n <Grid>\n <Cell span={12}>\n <Grid>\n <Cell span={12}>\n <Bind name={\"uploadMinFileSize\"}>\n <Input\n type=\"number\"\n label=\"Minimum file upload size\"\n description=\"The smallest file size in bytes.\"\n />\n </Bind>\n </Cell>\n </Grid>\n </Cell>\n <Cell span={12}>\n <Grid>\n <Cell span={12}>\n <Bind name={\"uploadMaxFileSize\"}>\n <Input\n type=\"number\"\n label=\"Maximum file upload size\"\n description=\"The largest file size in bytes.\"\n />\n </Bind>\n </Cell>\n </Grid>\n </Cell>\n <Cell span={12}>\n <Grid>\n <Cell span={12}>\n <Bind\n name={\"srcPrefix\"}\n validators={[\n validation.create(\"url\"),\n prefixValidator\n ]}\n >\n <Input\n label=\"File URL prefix\"\n description=\"This prefix will be prepended to the file key to form the full file URL.\"\n />\n </Bind>\n </Cell>\n </Grid>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >\n Save Settings\n </ButtonPrimary>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n </CenteredView>\n );\n }}\n </Mutation>\n )}\n </Query>\n );\n};\n\nexport default FileManagerSettings;\n"]}
package/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export declare const FileManager: () => JSX.Element;
1
+ import React from "react";
2
+ export declare const FileManager: React.FC;
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.tsx"],"names":["React","Plugins","Layout","AddMenu","AddRoute","HasPermission","FileManagerSettings","FileManager"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,OAAT,EAAkBC,MAAlB,EAA0BC,OAA1B,EAAmCC,QAAnC,QAAmD,mBAAnD;AACA,SAASC,aAAT,QAA8B,sBAA9B;AACA,OAAOC,mBAAP;AAEA,OAAO,IAAMC,WAAqB,GAAG,SAAxBA,WAAwB,GAAM;AACvC,sBACI,oBAAC,OAAD,qBACI,oBAAC,aAAD;AAAe,IAAA,IAAI,EAAE;AAArB,kBACI,oBAAC,QAAD;AAAU,IAAA,IAAI,EAAC;AAAf,kBACI,oBAAC,MAAD;AAAQ,IAAA,KAAK,EAAE;AAAf,kBACI,oBAAC,mBAAD,OADJ,CADJ,CADJ,eAMI,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAE;AAAf,kBACI,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAE,sBAAf;AAAuC,IAAA,KAAK,EAAE;AAA9C,kBACI,oBAAC,OAAD;AACI,IAAA,IAAI,EAAE,8BADV;AAEI,IAAA,KAAK,EAAE,SAFX;AAGI,IAAA,IAAI,EAAE;AAHV,IADJ,CADJ,CANJ,CADJ,CADJ;AAoBH,CArBM","sourcesContent":["import React from \"react\";\nimport { Plugins, Layout, AddMenu, AddRoute } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-security\";\nimport FileManagerSettings from \"~/admin/views/FileManagerSettings\";\n\nexport const FileManager: React.FC = () => {\n return (\n <Plugins>\n <HasPermission name={\"fm.settings\"}>\n <AddRoute path=\"/settings/file-manager/general\">\n <Layout title={\"File Manager - General Settings\"}>\n <FileManagerSettings />\n </Layout>\n </AddRoute>\n <AddMenu name={\"settings\"}>\n <AddMenu name={\"settings.fileManager\"} label={\"File Manager\"}>\n <AddMenu\n name={\"settings.fileManager.general\"}\n label={\"General\"}\n path={\"/settings/file-manager/general\"}\n />\n </AddMenu>\n </AddMenu>\n </HasPermission>\n </Plugins>\n );\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-file-manager",
3
- "version": "5.23.1",
3
+ "version": "5.25.0-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,18 +9,20 @@
9
9
  "author": "Jon Rapp ",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
+ "@apollo/react-common": "3.1.4",
12
13
  "@apollo/react-components": "3.1.5",
13
14
  "@apollo/react-hooks": "3.1.5",
14
- "@babel/runtime": "7.16.7",
15
+ "@babel/runtime": "7.17.2",
15
16
  "@emotion/core": "10.3.1",
16
17
  "@emotion/styled": "10.3.0",
17
18
  "@types/react": "16.14.2",
18
- "@webiny/app": "5.23.1",
19
- "@webiny/app-admin": "5.23.1",
20
- "@webiny/app-security": "5.23.1",
21
- "@webiny/form": "5.23.1",
22
- "@webiny/plugins": "5.23.1",
23
- "@webiny/ui": "5.23.1",
19
+ "@webiny/app": "5.25.0-beta.0",
20
+ "@webiny/app-admin": "5.25.0-beta.0",
21
+ "@webiny/app-security": "5.25.0-beta.0",
22
+ "@webiny/form": "5.25.0-beta.0",
23
+ "@webiny/plugins": "5.25.0-beta.0",
24
+ "@webiny/ui": "5.25.0-beta.0",
25
+ "@webiny/validation": "5.25.0-beta.0",
24
26
  "apollo-cache": "1.3.5",
25
27
  "apollo-client": "2.6.10",
26
28
  "apollo-link": "1.2.14",
@@ -39,10 +41,11 @@
39
41
  "@babel/preset-react": "^7.16.0",
40
42
  "@babel/preset-typescript": "^7.16.0",
41
43
  "@svgr/webpack": "^6.1.1",
42
- "@webiny/cli": "^5.23.1",
43
- "@webiny/project-utils": "^5.23.1",
44
+ "@webiny/cli": "^5.25.0-beta.0",
45
+ "@webiny/project-utils": "^5.25.0-beta.0",
44
46
  "rimraf": "^3.0.2",
45
- "typescript": "^4.1.3"
47
+ "ttypescript": "^1.5.13",
48
+ "typescript": "4.5.5"
46
49
  },
47
50
  "publishConfig": {
48
51
  "access": "public",
@@ -52,5 +55,5 @@
52
55
  "build": "yarn webiny run build",
53
56
  "watch": "yarn webiny run watch"
54
57
  },
55
- "gitHead": "a726d09d2647d13e5a4f376cef23463564ef7ca0"
58
+ "gitHead": "2d3e7833575e88fde77d84e5490e746933a5ec28"
56
59
  }
package/types.d.ts CHANGED
@@ -11,3 +11,16 @@ export declare type PermissionRendererFileManager = Plugin & {
11
11
  label: string;
12
12
  render: PermissionRendererPluginRenderFunctionType;
13
13
  };
14
+ export interface Settings {
15
+ uploadMinFileSize: string;
16
+ uploadMaxFileSize: string;
17
+ srcPrefix: string;
18
+ }
19
+ export interface QueryGetSettingsResult {
20
+ fileManager: {
21
+ getSettings: {
22
+ data: Settings;
23
+ error: Error | null;
24
+ };
25
+ };
26
+ }
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- declare const Upgrade: ({ onInstalled }: {
3
- onInstalled: any;
4
- }) => JSX.Element;
5
- export default Upgrade;
@@ -1,85 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
4
-
5
- var _templateObject, _templateObject2, _templateObject3;
6
-
7
- import _regeneratorRuntime from "@babel/runtime/regenerator";
8
- import React, { useCallback, useState } from "react";
9
- import gql from "graphql-tag";
10
- import { i18n } from "@webiny/app/i18n";
11
- import { SimpleForm, SimpleFormContent, SimpleFormFooter, SimpleFormHeader } from "@webiny/app-admin/components/SimpleForm";
12
- import { useApolloClient } from "@apollo/react-hooks";
13
- import { Alert } from "@webiny/ui/Alert";
14
- import { CircularProgress } from "@webiny/ui/Progress";
15
- import { Cell, Grid } from "@webiny/ui/Grid";
16
- import { ButtonPrimary } from "@webiny/ui/Button";
17
- import { Typography } from "@webiny/ui/Typography";
18
- var t = i18n.ns("app-headless-cms/admin/installation");
19
- var UPGRADE = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n mutation UpgradeFileManager($version: String!) {\n fileManager {\n upgrade(version: $version) {\n data\n error {\n code\n message\n data\n }\n }\n }\n }\n"])));
20
-
21
- var Upgrade = function Upgrade(_ref) {
22
- var onInstalled = _ref.onInstalled;
23
- var client = useApolloClient();
24
-
25
- var _useState = useState(null),
26
- _useState2 = _slicedToArray(_useState, 2),
27
- error = _useState2[0],
28
- setError = _useState2[1];
29
-
30
- var _useState3 = useState(false),
31
- _useState4 = _slicedToArray(_useState3, 2),
32
- loading = _useState4[0],
33
- setLoading = _useState4[1];
34
-
35
- var startUpgrade = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
36
- return _regeneratorRuntime.wrap(function _callee$(_context) {
37
- while (1) {
38
- switch (_context.prev = _context.next) {
39
- case 0:
40
- setLoading(true);
41
- _context.next = 3;
42
- return client.mutate({
43
- mutation: UPGRADE,
44
- variables: {
45
- version: "5.0.0"
46
- }
47
- }).then(function (_ref3) {
48
- var data = _ref3.data;
49
- setLoading(false);
50
- var error = data.fileManager.upgrade.error;
51
-
52
- if (error) {
53
- setError(error.message);
54
- return;
55
- }
56
-
57
- onInstalled();
58
- });
59
-
60
- case 3:
61
- case "end":
62
- return _context.stop();
63
- }
64
- }
65
- }, _callee);
66
- })), []);
67
- var label = error ? /*#__PURE__*/React.createElement(Alert, {
68
- title: t(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["Something went wrong"]))),
69
- type: "danger"
70
- }, error) : t(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["Upgrading File Manager..."])));
71
- return /*#__PURE__*/React.createElement(SimpleForm, null, loading && /*#__PURE__*/React.createElement(CircularProgress, {
72
- label: label
73
- }), /*#__PURE__*/React.createElement(SimpleFormHeader, {
74
- title: "Upgrade File Manager"
75
- }), /*#__PURE__*/React.createElement(SimpleFormContent, null, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
76
- span: 12
77
- }, /*#__PURE__*/React.createElement(Typography, {
78
- use: "body1",
79
- tag: "div"
80
- }, "This upgrade will do the following:", /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", null, "insert Elasticsearch records into a dedicated DynamoDB table")))))), /*#__PURE__*/React.createElement(SimpleFormFooter, null, /*#__PURE__*/React.createElement(ButtonPrimary, {
81
- onClick: startUpgrade
82
- }, "Upgrade")));
83
- };
84
-
85
- export default Upgrade;