@webiny/app-file-manager 0.0.0-ee-vpcs.549378cf03

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Webiny
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # @webiny/file-manager
2
+ [![](https://img.shields.io/npm/dw/@webiny/app-file-manager.svg)](https://www.npmjs.com/package/@webiny/app-file-manager)
3
+ [![](https://img.shields.io/npm/v/@webiny/app-file-manager.svg)](https://www.npmjs.com/package/@webiny/app-file-manager)
4
+ [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
5
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
6
+
7
+ UI Components for File Manager configurations
8
+
9
+ ## Install
10
+ ```
11
+ npm install --save @webiny/app-file-manager
12
+ ```
13
+
14
+ Or if you prefer yarn:
15
+ ```
16
+ yarn add @webiny/app-file-manager
17
+ ```
18
+
19
+ ## Setup
20
+ To setup, you must register a set of plugins. For more information on
21
+ plugins, please visit [Webiny documentation](https://docs.webiny.com/docs/developer-tutorials/plugins-crash-course).
22
+
23
+ #### Admin
24
+ ```
25
+ import { plugins } from "@webiny/plugins";
26
+ import appFileManagerPlugin from "@webiny/app-file-manager/admin"
27
+
28
+ plugins.register(appFileManagerPlugin);
29
+ ```
30
+
31
+ Enables the file manager settings components which can be accessed via Settings
32
+ section in the main menu.
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="black" width="24px" height="24px"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M20 6h-8l-1.41-1.41C10.21 4.21 9.7 4 9.17 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-1 12H5c-.55 0-1-.45-1-1V9c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1z"/></svg>
@@ -0,0 +1,5 @@
1
+ declare const graphql: {
2
+ GET_SETTINGS: import("graphql").DocumentNode;
3
+ UPDATE_SETTINGS: import("graphql").DocumentNode;
4
+ };
5
+ export default graphql;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
12
+ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
13
+
14
+ var _templateObject, _templateObject2;
15
+
16
+ var fields =
17
+ /* GraphQL */
18
+ "\n {\n data {\n uploadMinFileSize\n uploadMaxFileSize\n srcPrefix\n }\n }\n";
19
+ var graphql = {
20
+ GET_SETTINGS: (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query GetFileManagerSettings {\n fileManager {\n getSettings", "\n }\n }\n "])), fields),
21
+ UPDATE_SETTINGS: (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n mutation UpdateFileManagerSettings($data: FileManagerSettingsInput) {\n fileManager {\n updateSettings(data: $data) ", "\n }\n }\n "])), fields)
22
+ };
23
+ var _default = graphql;
24
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fields","graphql","GET_SETTINGS","gql","UPDATE_SETTINGS"],"sources":["graphql.ts"],"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"],"mappings":";;;;;;;;;;;AAAA;;;;AAEA,IAAMA,MAAM;AAAG;AAAH,kIAAZ;AAUA,IAAMC,OAAO,GAAG;EACZC,YAAY,MAAEC,mBAAF,iPAGiBH,MAHjB,CADA;EAQZI,eAAe,MAAED,mBAAF,mRAG2BH,MAH3B;AARH,CAAhB;eAiBeC,O"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => (() => (import("@webiny/app-admin/types").AdminInstallationPlugin | import("@webiny/app-admin/types").AdminAppPermissionRendererPlugin)[])[];
2
+ export default _default;
package/admin/index.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _plugins = _interopRequireDefault(require("./plugins"));
11
+
12
+ var _default = function _default() {
13
+ return [_plugins.default];
14
+ };
15
+
16
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["plugins"],"sources":["index.ts"],"sourcesContent":["import plugins from \"./plugins\";\n\nexport default () => [plugins];\n"],"mappings":";;;;;;;;;AAAA;;eAEe;EAAA,OAAM,CAACA,gBAAD,CAAN;AAAA,C"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => (import("@webiny/app-admin/types").AdminInstallationPlugin | import("@webiny/app-admin/types").AdminAppPermissionRendererPlugin)[];
2
+ export default _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _installation = _interopRequireDefault(require("./installation"));
11
+
12
+ var _permissionRenderer = _interopRequireDefault(require("./permissionRenderer"));
13
+
14
+ var _default = function _default() {
15
+ return [_installation.default, _permissionRenderer.default];
16
+ };
17
+
18
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["installation","permissionRenderer"],"sources":["index.ts"],"sourcesContent":["import installation from \"./installation\";\nimport permissionRenderer from \"./permissionRenderer\";\n\nexport default () => [installation, permissionRenderer];\n"],"mappings":";;;;;;;;;AAAA;;AACA;;eAEe;EAAA,OAAM,CAACA,qBAAD,EAAeC,2BAAf,CAAN;AAAA,C"}
@@ -0,0 +1,3 @@
1
+ import { AdminInstallationPlugin } from "@webiny/app-admin/types";
2
+ declare const plugin: AdminInstallationPlugin;
3
+ export default plugin;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
23
+
24
+ var _reactHooks = require("@apollo/react-hooks");
25
+
26
+ var _i18n = require("@webiny/app/i18n");
27
+
28
+ var _Alert = require("@webiny/ui/Alert");
29
+
30
+ var _Progress = require("@webiny/ui/Progress");
31
+
32
+ var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
33
+
34
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
35
+
36
+ var _config = require("@webiny/app/config");
37
+
38
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
39
+
40
+ var SimpleFormPlaceholder = /*#__PURE__*/(0, _styled.default)("div", {
41
+ target: "eratgeh0",
42
+ label: "SimpleFormPlaceholder"
43
+ })({
44
+ minHeight: 300,
45
+ minWidth: 400
46
+ });
47
+
48
+ var t = _i18n.i18n.ns("app-file-manager/admin/installation");
49
+
50
+ var IS_INSTALLED = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query IsFileManagerInstalled {\n fileManager {\n version\n }\n }\n"])));
51
+ var INSTALL = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\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"])));
52
+
53
+ var FMInstaller = function FMInstaller(_ref) {
54
+ var onInstalled = _ref.onInstalled;
55
+ var client = (0, _reactHooks.useApolloClient)();
56
+
57
+ var _useState = (0, _react.useState)(null),
58
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
59
+ error = _useState2[0],
60
+ setError = _useState2[1];
61
+
62
+ var apiUrl = _config.config.getKey("API_URL", process.env.REACT_APP_API_URL);
63
+
64
+ (0, _react.useEffect)(function () {
65
+ client.mutate({
66
+ mutation: INSTALL,
67
+ variables: {
68
+ srcPrefix: apiUrl + "/files"
69
+ }
70
+ }).then(function (_ref2) {
71
+ var data = _ref2.data;
72
+ var error = data.fileManager.install.error;
73
+
74
+ if (error) {
75
+ setError(error.message);
76
+ return;
77
+ } // Just so the user sees the actual message.
78
+
79
+
80
+ setTimeout(onInstalled, 3000);
81
+ });
82
+ }, []);
83
+ var label = error ? /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
84
+ title: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Something went wrong"]))),
85
+ type: "danger"
86
+ }, error) : t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Installing File Manager..."])));
87
+ return /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleForm, null, /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, {
88
+ label: label
89
+ }), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormContent, null, /*#__PURE__*/_react.default.createElement(SimpleFormPlaceholder, null)));
90
+ };
91
+
92
+ var plugin = {
93
+ name: "admin-installation-fm",
94
+ type: "admin-installation",
95
+ title: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["File Manager"]))),
96
+ dependencies: ["admin-installation-security", "admin-installation-i18n"],
97
+ secure: true,
98
+ getInstalledVersion: function getInstalledVersion(_ref3) {
99
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
100
+ var client, _yield$client$query, data;
101
+
102
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
103
+ while (1) {
104
+ switch (_context.prev = _context.next) {
105
+ case 0:
106
+ client = _ref3.client;
107
+ _context.next = 3;
108
+ return client.query({
109
+ query: IS_INSTALLED
110
+ });
111
+
112
+ case 3:
113
+ _yield$client$query = _context.sent;
114
+ data = _yield$client$query.data;
115
+ return _context.abrupt("return", data.fileManager.version);
116
+
117
+ case 6:
118
+ case "end":
119
+ return _context.stop();
120
+ }
121
+ }
122
+ }, _callee);
123
+ }))();
124
+ },
125
+ render: function render(_ref4) {
126
+ var onInstalled = _ref4.onInstalled;
127
+ return /*#__PURE__*/_react.default.createElement(FMInstaller, {
128
+ onInstalled: onInstalled
129
+ });
130
+ },
131
+ upgrades: []
132
+ };
133
+ var _default = plugin;
134
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SimpleFormPlaceholder","styled","minHeight","minWidth","t","i18n","ns","IS_INSTALLED","gql","INSTALL","FMInstaller","onInstalled","client","useApolloClient","useState","error","setError","apiUrl","appConfig","getKey","process","env","REACT_APP_API_URL","useEffect","mutate","mutation","variables","srcPrefix","then","data","fileManager","install","message","setTimeout","label","plugin","name","type","title","dependencies","secure","getInstalledVersion","query","version","render","upgrades"],"sources":["installation.tsx"],"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"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,qBAAqB,oBAAGC,eAAH;EAAA;EAAA;AAAA,GAAc;EACrCC,SAAS,EAAE,GAD0B;EAErCC,QAAQ,EAAE;AAF2B,CAAd,CAA3B;;AAKA,IAAMC,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,qCAAR,CAAV;;AAEA,IAAMC,YAAY,OAAGC,mBAAH,wLAAlB;AAQA,IAAMC,OAAO,OAAGD,mBAAH,wYAAb;;AAiBA,IAAME,WAAgD,GAAG,SAAnDA,WAAmD,OAAqB;EAAA,IAAlBC,WAAkB,QAAlBA,WAAkB;EAC1E,IAAMC,MAAM,GAAG,IAAAC,2BAAA,GAAf;;EACA,gBAA0B,IAAAC,eAAA,EAAS,IAAT,CAA1B;EAAA;EAAA,IAAOC,KAAP;EAAA,IAAcC,QAAd;;EAEA,IAAMC,MAAM,GAAGC,cAAA,CAAUC,MAAV,CAAiB,SAAjB,EAA4BC,OAAO,CAACC,GAAR,CAAYC,iBAAxC,CAAf;;EAEA,IAAAC,gBAAA,EAAU,YAAM;IACZX,MAAM,CACDY,MADL,CACY;MACJC,QAAQ,EAAEhB,OADN;MAEJiB,SAAS,EAAE;QAAEC,SAAS,EAAEV,MAAM,GAAG;MAAtB;IAFP,CADZ,EAKKW,IALL,CAKU,iBAAc;MAAA,IAAXC,IAAW,SAAXA,IAAW;MAChB,IAAQd,KAAR,GAAkBc,IAAI,CAACC,WAAL,CAAiBC,OAAnC,CAAQhB,KAAR;;MACA,IAAIA,KAAJ,EAAW;QACPC,QAAQ,CAACD,KAAK,CAACiB,OAAP,CAAR;QACA;MACH,CALe,CAOhB;;;MACAC,UAAU,CAACtB,WAAD,EAAc,IAAd,CAAV;IACH,CAdL;EAeH,CAhBD,EAgBG,EAhBH;EAkBA,IAAMuB,KAAK,GAAGnB,KAAK,gBACf,6BAAC,YAAD;IAAO,KAAK,EAAEX,CAAF,yGAAZ;IAAuC,IAAI,EAAE;EAA7C,GACKW,KADL,CADe,GAKfX,CALe,+GAAnB;EAQA,oBACI,6BAAC,sBAAD,qBACI,6BAAC,0BAAD;IAAkB,KAAK,EAAE8B;EAAzB,EADJ,eAEI,6BAAC,6BAAD,qBACI,6BAAC,qBAAD,OADJ,CAFJ,CADJ;AAQH,CAxCD;;AA0CA,IAAMC,MAA+B,GAAG;EACpCC,IAAI,EAAE,uBAD8B;EAEpCC,IAAI,EAAE,oBAF8B;EAGpCC,KAAK,EAAElC,CAAF,iGAH+B;EAIpCmC,YAAY,EAAE,CAAC,6BAAD,EAAgC,yBAAhC,CAJsB;EAKpCC,MAAM,EAAE,IAL4B;EAM9BC,mBAN8B,sCAME;IAAA;MAAA;;MAAA;QAAA;UAAA;YAAA;cAAV7B,MAAU,SAAVA,MAAU;cAAA;cAAA,OACXA,MAAM,CAAC8B,KAAP,CAAa;gBAAEA,KAAK,EAAEnC;cAAT,CAAb,CADW;;YAAA;cAAA;cAC1BsB,IAD0B,uBAC1BA,IAD0B;cAAA,iCAE3BA,IAAI,CAACC,WAAL,CAAiBa,OAFU;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;EAGrC,CATmC;EAUpCC,MAVoC,yBAUZ;IAAA,IAAfjC,WAAe,SAAfA,WAAe;IACpB,oBAAO,6BAAC,WAAD;MAAa,WAAW,EAAEA;IAA1B,EAAP;EACH,CAZmC;EAapCkC,QAAQ,EAAE;AAb0B,CAAxC;eAgBeV,M"}
@@ -0,0 +1,14 @@
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,249 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.FileManagerPermissions = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _Grid = require("@webiny/ui/Grid");
17
+
18
+ var _Select = require("@webiny/ui/Select");
19
+
20
+ var _i18n = require("@webiny/app/i18n");
21
+
22
+ var _Permissions = require("@webiny/app-admin/components/Permissions");
23
+
24
+ var _form = require("@webiny/form");
25
+
26
+ var _Elevation = require("@webiny/ui/Elevation");
27
+
28
+ var _Typography = require("@webiny/ui/Typography");
29
+
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18;
31
+
32
+ var t = _i18n.i18n.ns("app-file-manager/admin/plugins/permissionRenderer");
33
+
34
+ var FILE_MANAGER = "fm";
35
+ var FILE_MANAGER_FULL_ACCESS = "".concat(FILE_MANAGER, ".*");
36
+ var FILE_MANAGER_ACCESS_FILE = "".concat(FILE_MANAGER, ".file");
37
+ var FILE_MANAGER_ACCESS_SETTINGS = "".concat(FILE_MANAGER, ".settings");
38
+ var FULL_ACCESS = "full";
39
+ var NO_ACCESS = "no";
40
+ var CUSTOM_ACCESS = "custom";
41
+
42
+ var FileManagerPermissions = function FileManagerPermissions(_ref) {
43
+ var value = _ref.value,
44
+ onChange = _ref.onChange;
45
+ var onFormChange = (0, _react.useCallback)(function (data) {
46
+ var newValue = [];
47
+
48
+ if (Array.isArray(value)) {
49
+ // Let's just filter out the `file-manager*` permission objects, it's easier to build new ones from scratch.
50
+ newValue = value.filter(function (item) {
51
+ return !item.name.startsWith(FILE_MANAGER);
52
+ });
53
+ }
54
+
55
+ if (data.accessLevel === NO_ACCESS) {
56
+ onChange(newValue);
57
+ return;
58
+ }
59
+
60
+ if (data.accessLevel === FULL_ACCESS) {
61
+ newValue.push({
62
+ name: FILE_MANAGER_FULL_ACCESS
63
+ });
64
+ onChange(newValue);
65
+ return;
66
+ } // Handling custom access level.
67
+ // Files first.
68
+
69
+
70
+ if (data.filesAccessScope && data.filesAccessScope !== NO_ACCESS) {
71
+ var permission = {
72
+ name: FILE_MANAGER_ACCESS_FILE,
73
+ own: false,
74
+ rwd: undefined
75
+ };
76
+
77
+ if (data.filesAccessScope === "own") {
78
+ permission.own = true;
79
+ permission.rwd = "rwd";
80
+ } else {
81
+ permission.rwd = data.filesRWD || "r";
82
+ }
83
+
84
+ newValue.push(permission);
85
+ } // Settings second.
86
+
87
+
88
+ if (data.settingsAccessScope === FULL_ACCESS) {
89
+ newValue.push({
90
+ name: FILE_MANAGER_ACCESS_SETTINGS
91
+ });
92
+ }
93
+
94
+ onChange(newValue);
95
+ }, [value]);
96
+ var formData = (0, _react.useMemo)(function () {
97
+ if (!Array.isArray(value)) {
98
+ return {
99
+ accessLevel: NO_ACCESS
100
+ };
101
+ }
102
+
103
+ var hasFullAccess = value.find(function (item) {
104
+ return item.name === FILE_MANAGER_FULL_ACCESS || item.name === "*";
105
+ });
106
+
107
+ if (hasFullAccess) {
108
+ return {
109
+ accessLevel: FULL_ACCESS
110
+ };
111
+ }
112
+
113
+ var permissions = value.filter(function (item) {
114
+ return item.name.startsWith(FILE_MANAGER);
115
+ });
116
+
117
+ if (!permissions.length) {
118
+ return {
119
+ accessLevel: NO_ACCESS
120
+ };
121
+ }
122
+
123
+ var data = {
124
+ accessLevel: CUSTOM_ACCESS,
125
+ filesAccessScope: NO_ACCESS,
126
+ settingsAccessScope: NO_ACCESS,
127
+ filesRWD: "r"
128
+ };
129
+ var filesPermission = permissions.find(function (item) {
130
+ return item.name === FILE_MANAGER_ACCESS_FILE;
131
+ });
132
+
133
+ if (filesPermission) {
134
+ data.filesAccessScope = filesPermission.own ? "own" : FULL_ACCESS;
135
+
136
+ if (data.filesAccessScope === FULL_ACCESS) {
137
+ data.filesRWD = filesPermission.rwd;
138
+ } else {
139
+ data.filesRWD = "rwd";
140
+ }
141
+ }
142
+
143
+ var hasSettingsAccess = permissions.find(function (item) {
144
+ return item.name === FILE_MANAGER_ACCESS_SETTINGS;
145
+ });
146
+
147
+ if (hasSettingsAccess) {
148
+ data.settingsAccessScope = FULL_ACCESS;
149
+ }
150
+
151
+ return data;
152
+ }, []);
153
+ return /*#__PURE__*/_react.default.createElement(_form.Form, {
154
+ data: formData,
155
+ onChange: onFormChange
156
+ }, function (_ref2) {
157
+ var data = _ref2.data,
158
+ Bind = _ref2.Bind,
159
+ setValue = _ref2.setValue;
160
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
161
+ className: _Permissions.gridNoPaddingClass
162
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
163
+ span: 6
164
+ }, /*#__PURE__*/_react.default.createElement(_Permissions.PermissionInfo, {
165
+ title: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Access Level"])))
166
+ })), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
167
+ span: 6
168
+ }, /*#__PURE__*/_react.default.createElement(Bind, {
169
+ name: "accessLevel"
170
+ }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
171
+ label: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Access Level"])))
172
+ }, /*#__PURE__*/_react.default.createElement("option", {
173
+ value: NO_ACCESS
174
+ }, t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
175
+ value: FULL_ACCESS
176
+ }, t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Full access"])))), /*#__PURE__*/_react.default.createElement("option", {
177
+ value: CUSTOM_ACCESS
178
+ }, t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Custom access"])))))))), data.accessLevel === "custom" && /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
179
+ z: 1,
180
+ style: {
181
+ marginTop: 10
182
+ }
183
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
184
+ span: 12
185
+ }, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
186
+ use: "overline"
187
+ }, t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Files"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
188
+ span: 12
189
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
190
+ style: {
191
+ padding: 0,
192
+ paddingBottom: 24
193
+ }
194
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
195
+ span: 12
196
+ }, /*#__PURE__*/_react.default.createElement(Bind, {
197
+ name: "filesAccessScope",
198
+ beforeChange: function beforeChange(value, cb) {
199
+ if (value === "own") {
200
+ setValue("filesRWD", "rwd");
201
+ }
202
+
203
+ cb(value);
204
+ }
205
+ }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
206
+ label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Access Scope"])))
207
+ }, /*#__PURE__*/_react.default.createElement("option", {
208
+ value: NO_ACCESS
209
+ }, t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
210
+ value: FULL_ACCESS
211
+ }, t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["All files"])))), /*#__PURE__*/_react.default.createElement("option", {
212
+ value: "own"
213
+ }, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Only files created by the user"]))))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
214
+ span: 12
215
+ }, /*#__PURE__*/_react.default.createElement(Bind, {
216
+ name: "filesRWD"
217
+ }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
218
+ label: t(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["Primary Actions"]))),
219
+ disabled: data.filesAccessScope !== "full"
220
+ }, /*#__PURE__*/_react.default.createElement("option", {
221
+ value: "r"
222
+ }, t(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["Read"])))), /*#__PURE__*/_react.default.createElement("option", {
223
+ value: "rw"
224
+ }, t(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2.default)(["Read, write"])))), /*#__PURE__*/_react.default.createElement("option", {
225
+ value: "rwd"
226
+ }, t(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2.default)(["Read, write, delete"]))))))))))), /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
227
+ z: 1,
228
+ style: {
229
+ marginTop: 10
230
+ }
231
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
232
+ span: 12
233
+ }, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
234
+ use: "overline"
235
+ }, t(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2.default)(["Settings"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
236
+ span: 12
237
+ }, /*#__PURE__*/_react.default.createElement(Bind, {
238
+ name: "settingsAccessScope"
239
+ }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
240
+ label: t(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2.default)(["Access Scope"])))
241
+ }, /*#__PURE__*/_react.default.createElement("option", {
242
+ value: NO_ACCESS
243
+ }, t(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
244
+ value: FULL_ACCESS
245
+ }, t(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2.default)(["Full access"])))))))))));
246
+ });
247
+ };
248
+
249
+ exports.FileManagerPermissions = FileManagerPermissions;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["t","i18n","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","useCallback","data","newValue","Array","isArray","filter","item","name","startsWith","accessLevel","push","filesAccessScope","permission","own","rwd","undefined","filesRWD","settingsAccessScope","formData","useMemo","hasFullAccess","find","permissions","length","filesPermission","hasSettingsAccess","Bind","setValue","gridNoPaddingClass","marginTop","padding","paddingBottom","cb"],"sources":["FileManagerPermissions.tsx"],"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"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { AdminAppPermissionRendererPlugin } from "@webiny/app-admin/types";
2
+ declare const _default: AdminAppPermissionRendererPlugin;
3
+ export default _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _Accordion = require("@webiny/ui/Accordion");
15
+
16
+ var _folderOpen = require("../../assets/icons/folder-open.svg");
17
+
18
+ var _FileManagerPermissions = require("./FileManagerPermissions");
19
+
20
+ var _i18n = require("@webiny/app/i18n");
21
+
22
+ var _templateObject, _templateObject2;
23
+
24
+ var t = _i18n.i18n.ns("app-file-manager/admin/plugins/permissionRenderer");
25
+
26
+ var _default = {
27
+ type: "admin-app-permissions-renderer",
28
+ name: "admin-app-permissions-renderer-file-manager",
29
+ render: function render(props) {
30
+ return /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
31
+ icon: /*#__PURE__*/_react.default.createElement(_folderOpen.ReactComponent, null),
32
+ title: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["File Manager"]))),
33
+ description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Manage File manager app access permissions."]))),
34
+ "data-testid": "permission.fm"
35
+ }, /*#__PURE__*/_react.default.createElement(_FileManagerPermissions.FileManagerPermissions, props));
36
+ }
37
+ };
38
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["t","i18n","ns","type","name","render","props"],"sources":["index.tsx"],"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"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,mDAAR,CAAV;;eAEe;EACXC,IAAI,EAAE,gCADK;EAEXC,IAAI,EAAE,6CAFK;EAGXC,MAHW,kBAGJC,KAHI,EAGG;IACV,oBACI,6BAAC,wBAAD;MACI,IAAI,eAAE,6BAAC,0BAAD,OADV;MAEI,KAAK,EAAEN,CAAF,+FAFT;MAGI,WAAW,EAAEA,CAAF,gIAHf;MAII,eAAa;IAJjB,gBAMI,6BAAC,8CAAD,EAA4BM,KAA5B,CANJ,CADJ;EAUH;AAdU,C"}
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare const FileManagerSettings: React.FC;
3
+ export default FileManagerSettings;
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
+
14
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
+ var React = _interopRequireWildcard(require("react"));
19
+
20
+ var _form = require("@webiny/form");
21
+
22
+ var _Grid = require("@webiny/ui/Grid");
23
+
24
+ var _Button = require("@webiny/ui/Button");
25
+
26
+ var _reactComponents = require("@apollo/react-components");
27
+
28
+ var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
29
+
30
+ var _Input = require("@webiny/ui/Input");
31
+
32
+ var _graphql = _interopRequireDefault(require("../graphql"));
33
+
34
+ var _Progress = require("@webiny/ui/Progress");
35
+
36
+ var _lodash = _interopRequireDefault(require("lodash.get"));
37
+
38
+ var _validation = require("@webiny/validation");
39
+
40
+ var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
41
+
42
+ var _appAdmin = require("@webiny/app-admin");
43
+
44
+ function prefixValidator(value) {
45
+ if (!value.endsWith("/files/")) {
46
+ throw Error("File URL prefix must end with \"/files/\"");
47
+ }
48
+ }
49
+
50
+ var FileManagerSettings = function FileManagerSettings() {
51
+ var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
52
+ showSnackbar = _useSnackbar.showSnackbar;
53
+
54
+ return /*#__PURE__*/React.createElement(_reactComponents.Query, {
55
+ query: _graphql.default.GET_SETTINGS
56
+ }, function (_ref) {
57
+ var data = _ref.data,
58
+ queryInProgress = _ref.loading;
59
+ return /*#__PURE__*/React.createElement(_reactComponents.Mutation, {
60
+ mutation: _graphql.default.UPDATE_SETTINGS
61
+ }, function (update, result) {
62
+ var settings = (0, _lodash.default)(data, "fileManager.getSettings.data") || {};
63
+ var mutationInProgress = result.loading;
64
+
65
+ var _onSubmit = /*#__PURE__*/function () {
66
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(data) {
67
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
68
+ while (1) {
69
+ switch (_context.prev = _context.next) {
70
+ case 0:
71
+ _context.next = 2;
72
+ return update({
73
+ variables: {
74
+ data: {
75
+ uploadMinFileSize: parseFloat(data.uploadMinFileSize),
76
+ uploadMaxFileSize: parseFloat(data.uploadMaxFileSize),
77
+ srcPrefix: data.srcPrefix
78
+ }
79
+ },
80
+ update: function update(cache, result) {
81
+ var data = structuredClone(cache.readQuery({
82
+ query: _graphql.default.GET_SETTINGS
83
+ }));
84
+ data.fileManager.getSettings.data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data.fileManager.getSettings.data), result.data.fileManager.updateSettings.data);
85
+ cache.writeQuery({
86
+ query: _graphql.default.GET_SETTINGS,
87
+ data: data
88
+ });
89
+ }
90
+ });
91
+
92
+ case 2:
93
+ showSnackbar("Settings updated successfully.");
94
+
95
+ case 3:
96
+ case "end":
97
+ return _context.stop();
98
+ }
99
+ }
100
+ }, _callee);
101
+ }));
102
+
103
+ return function onSubmit(_x) {
104
+ return _ref2.apply(this, arguments);
105
+ };
106
+ }();
107
+
108
+ return /*#__PURE__*/React.createElement(_appAdmin.CenteredView, null, /*#__PURE__*/React.createElement(_form.Form, {
109
+ data: settings,
110
+ onSubmit: function onSubmit(data) {
111
+ /**
112
+ * We are positive that data is Settings.
113
+ */
114
+ _onSubmit(data);
115
+ }
116
+ }, function (_ref3) {
117
+ var Bind = _ref3.Bind,
118
+ form = _ref3.form;
119
+ return /*#__PURE__*/React.createElement(_SimpleForm.SimpleForm, null, (queryInProgress || mutationInProgress) && /*#__PURE__*/React.createElement(_Progress.CircularProgress, null), /*#__PURE__*/React.createElement(_SimpleForm.SimpleFormHeader, {
120
+ title: "General Settings"
121
+ }), /*#__PURE__*/React.createElement(_SimpleForm.SimpleFormContent, null, /*#__PURE__*/React.createElement(_Grid.Grid, null, /*#__PURE__*/React.createElement(_Grid.Cell, {
122
+ span: 12
123
+ }, /*#__PURE__*/React.createElement(_Grid.Grid, null, /*#__PURE__*/React.createElement(_Grid.Cell, {
124
+ span: 12
125
+ }, /*#__PURE__*/React.createElement(Bind, {
126
+ name: "uploadMinFileSize"
127
+ }, /*#__PURE__*/React.createElement(_Input.Input, {
128
+ type: "number",
129
+ label: "Minimum file upload size",
130
+ description: "The smallest file size in bytes."
131
+ }))))), /*#__PURE__*/React.createElement(_Grid.Cell, {
132
+ span: 12
133
+ }, /*#__PURE__*/React.createElement(_Grid.Grid, null, /*#__PURE__*/React.createElement(_Grid.Cell, {
134
+ span: 12
135
+ }, /*#__PURE__*/React.createElement(Bind, {
136
+ name: "uploadMaxFileSize"
137
+ }, /*#__PURE__*/React.createElement(_Input.Input, {
138
+ type: "number",
139
+ label: "Maximum file upload size",
140
+ description: "The largest file size in bytes."
141
+ }))))), /*#__PURE__*/React.createElement(_Grid.Cell, {
142
+ span: 12
143
+ }, /*#__PURE__*/React.createElement(_Grid.Grid, null, /*#__PURE__*/React.createElement(_Grid.Cell, {
144
+ span: 12
145
+ }, /*#__PURE__*/React.createElement(Bind, {
146
+ name: "srcPrefix",
147
+ validators: [_validation.validation.create("url"), prefixValidator]
148
+ }, /*#__PURE__*/React.createElement(_Input.Input, {
149
+ label: "File URL prefix",
150
+ description: "This prefix will be prepended to the file key to form the full file URL."
151
+ }))))))), /*#__PURE__*/React.createElement(_SimpleForm.SimpleFormFooter, null, /*#__PURE__*/React.createElement(_Button.ButtonPrimary, {
152
+ onClick: function onClick(ev) {
153
+ form.submit(ev);
154
+ }
155
+ }, "Save Settings")));
156
+ }));
157
+ });
158
+ });
159
+ };
160
+
161
+ var _default = FileManagerSettings;
162
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["prefixValidator","value","endsWith","Error","FileManagerSettings","useSnackbar","showSnackbar","graphql","GET_SETTINGS","data","queryInProgress","loading","UPDATE_SETTINGS","update","result","settings","get","mutationInProgress","onSubmit","variables","uploadMinFileSize","parseFloat","uploadMaxFileSize","srcPrefix","cache","structuredClone","readQuery","query","fileManager","getSettings","updateSettings","writeQuery","Bind","form","validation","create","ev","submit"],"sources":["FileManagerSettings.tsx"],"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 update: (cache, result) => {\n const data = structuredClone(\n cache.readQuery({ query: graphql.GET_SETTINGS })\n );\n\n data.fileManager.getSettings.data = {\n ...data.fileManager.getSettings.data,\n ...result.data.fileManager.updateSettings.data\n };\n\n cache.writeQuery({\n query: graphql.GET_SETTINGS,\n data\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"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAMA;;AAIA,SAASA,eAAT,CAAyBC,KAAzB,EAAwC;EACpC,IAAI,CAACA,KAAK,CAACC,QAAN,CAAe,SAAf,CAAL,EAAgC;IAC5B,MAAMC,KAAK,6CAAX;EACH;AACJ;;AAED,IAAMC,mBAA6B,GAAG,SAAhCA,mBAAgC,GAAM;EACxC,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EAEA,oBACI,oBAAC,sBAAD;IAAO,KAAK,EAAEC,gBAAA,CAAQC;EAAtB,GACK;IAAA,IAAGC,IAAH,QAAGA,IAAH;IAAA,IAAkBC,eAAlB,QAASC,OAAT;IAAA,oBACG,oBAAC,yBAAD;MAAU,QAAQ,EAAEJ,gBAAA,CAAQK;IAA5B,GACK,UAACC,MAAD,EAA2BC,MAA3B,EAAsD;MACnD,IAAMC,QAAQ,GAAI,IAAAC,eAAA,EAAIP,IAAJ,EAAU,8BAAV,KACd,EADJ;MAEA,IAAiBQ,kBAAjB,GAAwCH,MAAxC,CAAQH,OAAR;;MAEA,IAAMO,SAAQ;QAAA,mGAAG,iBAAOT,IAAP;UAAA;YAAA;cAAA;gBAAA;kBAAA;kBAAA,OACPI,MAAM,CAAC;oBACTM,SAAS,EAAE;sBACPV,IAAI,EAAE;wBACFW,iBAAiB,EAAEC,UAAU,CAACZ,IAAI,CAACW,iBAAN,CAD3B;wBAEFE,iBAAiB,EAAED,UAAU,CAACZ,IAAI,CAACa,iBAAN,CAF3B;wBAGFC,SAAS,EAAEd,IAAI,CAACc;sBAHd;oBADC,CADF;oBAQTV,MAAM,EAAE,gBAACW,KAAD,EAAQV,MAAR,EAAmB;sBACvB,IAAML,IAAI,GAAGgB,eAAe,CACxBD,KAAK,CAACE,SAAN,CAAgB;wBAAEC,KAAK,EAAEpB,gBAAA,CAAQC;sBAAjB,CAAhB,CADwB,CAA5B;sBAIAC,IAAI,CAACmB,WAAL,CAAiBC,WAAjB,CAA6BpB,IAA7B,+DACOA,IAAI,CAACmB,WAAL,CAAiBC,WAAjB,CAA6BpB,IADpC,GAEOK,MAAM,CAACL,IAAP,CAAYmB,WAAZ,CAAwBE,cAAxB,CAAuCrB,IAF9C;sBAKAe,KAAK,CAACO,UAAN,CAAiB;wBACbJ,KAAK,EAAEpB,gBAAA,CAAQC,YADF;wBAEbC,IAAI,EAAJA;sBAFa,CAAjB;oBAIH;kBAtBQ,CAAD,CADC;;gBAAA;kBAyBbH,YAAY,CAAC,gCAAD,CAAZ;;gBAzBa;gBAAA;kBAAA;cAAA;YAAA;UAAA;QAAA,CAAH;;QAAA,gBAARY,QAAQ;UAAA;QAAA;MAAA,GAAd;;MA2BA,oBACI,oBAAC,sBAAD,qBACI,oBAAC,UAAD;QACI,IAAI,EAAEH,QADV;QAEI,QAAQ,EAAE,kBAAAN,IAAI,EAAI;UACd;AACxC;AACA;UACwCS,SAAQ,CAACT,IAAD,CAAR;QACH;MAPL,GASK;QAAA,IAAGuB,IAAH,SAAGA,IAAH;QAAA,IAASC,IAAT,SAASA,IAAT;QAAA,oBACG,oBAAC,sBAAD,QACK,CAACvB,eAAe,IAAIO,kBAApB,kBACG,oBAAC,0BAAD,OAFR,eAII,oBAAC,4BAAD;UAAkB,KAAK,EAAC;QAAxB,EAJJ,eAKI,oBAAC,6BAAD,qBACI,oBAAC,UAAD,qBACI,oBAAC,UAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,UAAD,qBACI,oBAAC,UAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,IAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,YAAD;UACI,IAAI,EAAC,QADT;UAEI,KAAK,EAAC,0BAFV;UAGI,WAAW,EAAC;QAHhB,EADJ,CADJ,CADJ,CADJ,CADJ,eAcI,oBAAC,UAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,UAAD,qBACI,oBAAC,UAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,IAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,YAAD;UACI,IAAI,EAAC,QADT;UAEI,KAAK,EAAC,0BAFV;UAGI,WAAW,EAAC;QAHhB,EADJ,CADJ,CADJ,CADJ,CAdJ,eA2BI,oBAAC,UAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,UAAD,qBACI,oBAAC,UAAD;UAAM,IAAI,EAAE;QAAZ,gBACI,oBAAC,IAAD;UACI,IAAI,EAAE,WADV;UAEI,UAAU,EAAE,CACRiB,sBAAA,CAAWC,MAAX,CAAkB,KAAlB,CADQ,EAERnC,eAFQ;QAFhB,gBAOI,oBAAC,YAAD;UACI,KAAK,EAAC,iBADV;UAEI,WAAW,EAAC;QAFhB,EAPJ,CADJ,CADJ,CADJ,CA3BJ,CADJ,CALJ,eAqDI,oBAAC,4BAAD,qBACI,oBAAC,qBAAD;UACI,OAAO,EAAE,iBAAAoC,EAAE,EAAI;YACXH,IAAI,CAACI,MAAL,CAAYD,EAAZ;UACH;QAHL,mBADJ,CArDJ,CADH;MAAA,CATL,CADJ,CADJ;IA+EH,CAhHL,CADH;EAAA,CADL,CADJ;AAwHH,CA3HD;;eA6HehC,mB"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const FileManager: React.FC;
package/index.js ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.FileManager = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _appAdmin = require("@webiny/app-admin");
13
+
14
+ var _appSecurity = require("@webiny/app-security");
15
+
16
+ var _FileManagerSettings = _interopRequireDefault(require("./admin/views/FileManagerSettings"));
17
+
18
+ var FileManager = function FileManager() {
19
+ return /*#__PURE__*/_react.default.createElement(_appAdmin.Plugins, null, /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
20
+ name: "fm.settings"
21
+ }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddRoute, {
22
+ path: "/settings/file-manager/general"
23
+ }, /*#__PURE__*/_react.default.createElement(_appAdmin.Layout, {
24
+ title: "File Manager - General Settings"
25
+ }, /*#__PURE__*/_react.default.createElement(_FileManagerSettings.default, null))), /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
26
+ name: "settings"
27
+ }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
28
+ name: "settings.fileManager",
29
+ label: "File Manager"
30
+ }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
31
+ name: "settings.fileManager.general",
32
+ label: "General",
33
+ path: "/settings/file-manager/general"
34
+ })))));
35
+ };
36
+
37
+ exports.FileManager = FileManager;
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FileManager"],"sources":["index.tsx"],"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"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEO,IAAMA,WAAqB,GAAG,SAAxBA,WAAwB,GAAM;EACvC,oBACI,6BAAC,iBAAD,qBACI,6BAAC,0BAAD;IAAe,IAAI,EAAE;EAArB,gBACI,6BAAC,kBAAD;IAAU,IAAI,EAAC;EAAf,gBACI,6BAAC,gBAAD;IAAQ,KAAK,EAAE;EAAf,gBACI,6BAAC,4BAAD,OADJ,CADJ,CADJ,eAMI,6BAAC,iBAAD;IAAS,IAAI,EAAE;EAAf,gBACI,6BAAC,iBAAD;IAAS,IAAI,EAAE,sBAAf;IAAuC,KAAK,EAAE;EAA9C,gBACI,6BAAC,iBAAD;IACI,IAAI,EAAE,8BADV;IAEI,KAAK,EAAE,SAFX;IAGI,IAAI,EAAE;EAHV,EADJ,CADJ,CANJ,CADJ,CADJ;AAoBH,CArBM"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@webiny/app-file-manager",
3
+ "version": "0.0.0-ee-vpcs.549378cf03",
4
+ "main": "index.js",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/webiny/webiny-js.git"
8
+ },
9
+ "author": "Jon Rapp ",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "@apollo/react-common": "3.1.4",
13
+ "@apollo/react-components": "3.1.5",
14
+ "@apollo/react-hooks": "3.1.5",
15
+ "@babel/runtime": "7.19.0",
16
+ "@emotion/core": "10.3.1",
17
+ "@emotion/styled": "10.3.0",
18
+ "@types/react": "17.0.39",
19
+ "@webiny/app": "0.0.0-ee-vpcs.549378cf03",
20
+ "@webiny/app-admin": "0.0.0-ee-vpcs.549378cf03",
21
+ "@webiny/app-security": "0.0.0-ee-vpcs.549378cf03",
22
+ "@webiny/form": "0.0.0-ee-vpcs.549378cf03",
23
+ "@webiny/plugins": "0.0.0-ee-vpcs.549378cf03",
24
+ "@webiny/ui": "0.0.0-ee-vpcs.549378cf03",
25
+ "@webiny/validation": "0.0.0-ee-vpcs.549378cf03",
26
+ "apollo-cache": "1.3.5",
27
+ "apollo-client": "2.6.10",
28
+ "apollo-link": "1.2.14",
29
+ "apollo-utilities": "1.3.4",
30
+ "graphql": "15.8.0",
31
+ "graphql-tag": "2.12.6",
32
+ "lodash.get": "4.4.2",
33
+ "prop-types": "15.8.1",
34
+ "react": "17.0.2",
35
+ "react-dom": "17.0.2"
36
+ },
37
+ "devDependencies": {
38
+ "@babel/cli": "^7.19.3",
39
+ "@babel/core": "^7.19.3",
40
+ "@babel/preset-env": "^7.19.4",
41
+ "@babel/preset-react": "^7.18.6",
42
+ "@babel/preset-typescript": "^7.18.6",
43
+ "@svgr/webpack": "^6.1.1",
44
+ "@webiny/cli": "^0.0.0-ee-vpcs.549378cf03",
45
+ "@webiny/project-utils": "^0.0.0-ee-vpcs.549378cf03",
46
+ "rimraf": "^3.0.2",
47
+ "ttypescript": "^1.5.13",
48
+ "typescript": "4.7.4"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public",
52
+ "directory": "dist"
53
+ },
54
+ "scripts": {
55
+ "build": "yarn webiny run build",
56
+ "watch": "yarn webiny run watch"
57
+ },
58
+ "gitHead": "549378cf03fcd27845fc3fa23d1dc6b32896f630"
59
+ }
package/types.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ import { Plugin } from "@webiny/plugins/types";
3
+ import { SecurityPermission } from "@webiny/app-security/types";
4
+ export declare type PermissionRendererPluginRenderFunctionType = (props: {
5
+ value: SecurityPermission;
6
+ setValue: (newValue: SecurityPermission) => void;
7
+ }) => React.ReactElement<any>;
8
+ export declare type PermissionRendererFileManager = Plugin & {
9
+ type: "permission-renderer-file-manager";
10
+ key: string;
11
+ label: string;
12
+ render: PermissionRendererPluginRenderFunctionType;
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 ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\n\nexport type PermissionRendererPluginRenderFunctionType = (props: {\n value: SecurityPermission;\n setValue: (newValue: SecurityPermission) => void;\n}) => React.ReactElement<any>;\n\nexport type PermissionRendererFileManager = Plugin & {\n type: \"permission-renderer-file-manager\";\n key: string;\n label: string;\n render: PermissionRendererPluginRenderFunctionType;\n};\n\nexport interface Settings {\n uploadMinFileSize: string;\n uploadMaxFileSize: string;\n srcPrefix: string;\n}\nexport interface QueryGetSettingsResult {\n fileManager: {\n getSettings: {\n data: Settings;\n error: Error | null;\n };\n };\n}\n"],"mappings":""}