@webiny/app-admin 0.0.0-unstable.bca7b3e350 → 0.0.0-unstable.c2780f51fe
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/assets/icons/add-18px.svg +1 -1
- package/assets/icons/arrow_drop_down-24px.svg +1 -1
- package/assets/icons/filter-24px.svg +1 -1
- package/assets/icons/highlight-24px.svg +1 -1
- package/assets/icons/info.svg +1 -1
- package/assets/icons/insert_drive_file-24px.svg +1 -1
- package/assets/icons/insert_photo-24px.svg +1 -1
- package/assets/icons/label-24px.svg +1 -1
- package/assets/icons/round-account_circle-24px.svg +1 -1
- package/assets/icons/round-arrow_drop_down-24px.svg +1 -1
- package/assets/icons/round-help-24px.svg +1 -1
- package/assets/icons/round-settings-24px.svg +1 -1
- package/assets/icons/today-24px.svg +1 -1
- package/assets/icons/touch_app.svg +1 -1
- package/base/Base.js +6 -25
- package/base/Base.js.map +1 -1
- package/base/plugins/AddGraphQLQuerySelection.js +5 -1
- package/base/plugins/AddGraphQLQuerySelection.js.map +1 -1
- package/base/ui/FileManager.d.ts +67 -0
- package/base/ui/FileManager.js +61 -0
- package/base/ui/FileManager.js.map +1 -0
- package/components/AppInstaller/AppInstaller.js +2 -34
- package/components/AppInstaller/AppInstaller.js.map +1 -1
- package/components/AppInstaller/Sidebar.js +2 -12
- package/components/AppInstaller/Sidebar.js.map +1 -1
- package/components/AppInstaller/styled.d.ts +17 -5
- package/components/AppInstaller/useInstaller.d.ts +1 -7
- package/components/AppInstaller/useInstaller.js +16 -71
- package/components/AppInstaller/useInstaller.js.map +1 -1
- package/components/EmptyView.js +1 -1
- package/components/EmptyView.js.map +1 -1
- package/components/FileManager/BottomInfoBar/SupportedFileTypes.js +14 -0
- package/components/FileManager/BottomInfoBar/SupportedFileTypes.js.map +1 -1
- package/components/FileManager/BottomInfoBar/UploadStatus.js +9 -0
- package/components/FileManager/BottomInfoBar/UploadStatus.js.map +1 -1
- package/components/FileManager/BottomInfoBar.js +12 -0
- package/components/FileManager/BottomInfoBar.js.map +1 -1
- package/components/FileManager/DropFilesHere.js +12 -3
- package/components/FileManager/DropFilesHere.js.map +1 -1
- package/components/FileManager/File.js +18 -5
- package/components/FileManager/File.js.map +1 -1
- package/components/FileManager/FileDetails/Name.js +75 -45
- package/components/FileManager/FileDetails/Name.js.map +1 -1
- package/components/FileManager/FileDetails/Tags.js +138 -85
- package/components/FileManager/FileDetails/Tags.js.map +1 -1
- package/components/FileManager/FileDetails.js +161 -94
- package/components/FileManager/FileDetails.js.map +1 -1
- package/components/FileManager/FileManagerContext.js +45 -12
- package/components/FileManager/FileManagerContext.js.map +1 -1
- package/components/FileManager/FileManagerView.js +295 -185
- package/components/FileManager/FileManagerView.js.map +1 -1
- package/components/FileManager/LeftSidebar.js +29 -10
- package/components/FileManager/LeftSidebar.js.map +1 -1
- package/components/FileManager/NoPermissionView.js +13 -0
- package/components/FileManager/NoPermissionView.js.map +1 -1
- package/components/FileManager/NoResults.js +6 -0
- package/components/FileManager/NoResults.js.map +1 -1
- package/components/FileManager/getFileTypePlugin.js +15 -9
- package/components/FileManager/getFileTypePlugin.js.map +1 -1
- package/components/FileManager/getFileUploader.js +5 -0
- package/components/FileManager/getFileUploader.js.map +1 -1
- package/components/FileManager/graphql.js +14 -3
- package/components/FileManager/graphql.js.map +1 -1
- package/components/FileManager/outputFileSelectionError.js +14 -0
- package/components/FileManager/outputFileSelectionError.js.map +1 -1
- package/components/FileManager.js +43 -17
- package/components/FileManager.js.map +1 -1
- package/components/FloatingActionButton.js +2 -2
- package/components/FloatingActionButton.js.map +1 -1
- package/components/OverlayLayout/OverlayLayout.js +2 -2
- package/components/OverlayLayout/OverlayLayout.js.map +1 -1
- package/components/SearchUI.js +2 -2
- package/components/SearchUI.js.map +1 -1
- package/components/SingleImageUpload.d.ts +1 -1
- package/components/SingleImageUpload.js +2 -2
- package/components/SingleImageUpload.js.map +1 -1
- package/components/SplitView/SplitView.js +1 -0
- package/components/SplitView/SplitView.js.map +1 -1
- package/components/index.d.ts +1 -1
- package/components/index.js +1 -1
- package/components/index.js.map +1 -1
- package/index.d.ts +2 -3
- package/index.js +1 -13
- package/index.js.map +1 -1
- package/package.json +19 -29
- package/plugins/FileManagerFileTypePlugin.js +15 -0
- package/plugins/FileManagerFileTypePlugin.js.map +1 -1
- package/plugins/fileManager/fileDefault.js +6 -0
- package/plugins/fileManager/fileDefault.js.map +1 -1
- package/plugins/fileManager/fileImage/DeleteAction.js +40 -16
- package/plugins/fileManager/fileImage/DeleteAction.js.map +1 -1
- package/plugins/fileManager/fileImage/EditAction.js +58 -22
- package/plugins/fileManager/fileImage/EditAction.js.map +1 -1
- package/plugins/fileManager/fileImage/index.js +8 -0
- package/plugins/fileManager/fileImage/index.js.map +1 -1
- package/plugins/fileManager/index.js +2 -0
- package/plugins/fileManager/index.js.map +1 -1
- package/plugins/globalSearch/SearchBar.js +2 -2
- package/plugins/globalSearch/SearchBar.js.map +1 -1
- package/plugins/globalSearch/SearchBarDropdown.js +2 -2
- package/plugins/globalSearch/SearchBarDropdown.js.map +1 -1
- package/plugins/globalSearch/styled.d.ts +13 -4
- package/types.d.ts +23 -27
- package/types.js.map +1 -1
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js +5 -5
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -1
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +1 -1
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -1
- package/ui/elements/form/FileManagerElement/styled.d.ts +23 -16
- package/ui/views/AdminView/components/Hamburger.js +2 -2
- package/ui/views/AdminView/components/Hamburger.js.map +1 -1
- package/ui/views/OverlayView/HeaderElement.js +1 -1
- package/ui/views/OverlayView/HeaderElement.js.map +1 -1
- package/ui/views/OverlayView.js +1 -1
- package/ui/views/OverlayView.js.map +1 -1
|
@@ -2,17 +2,12 @@ import { AdminInstallationPlugin } from "../../types";
|
|
|
2
2
|
interface UseInstallerParams {
|
|
3
3
|
isInstalled: boolean;
|
|
4
4
|
}
|
|
5
|
-
interface SkippingVersionState {
|
|
6
|
-
current: string;
|
|
7
|
-
latest: string;
|
|
8
|
-
availableUpgrades: string[];
|
|
9
|
-
}
|
|
10
5
|
interface BaseInstaller {
|
|
11
6
|
installed: string | null;
|
|
12
7
|
plugin: AdminInstallationPlugin;
|
|
13
8
|
}
|
|
14
9
|
export interface Installer extends BaseInstaller {
|
|
15
|
-
type: "install"
|
|
10
|
+
type: "install";
|
|
16
11
|
name: string;
|
|
17
12
|
title: string;
|
|
18
13
|
render: AdminInstallationPlugin["render"];
|
|
@@ -26,6 +21,5 @@ export declare const useInstaller: (params: UseInstallerParams) => {
|
|
|
26
21
|
showNextInstaller: () => any;
|
|
27
22
|
showLogin: boolean;
|
|
28
23
|
onUser: () => void;
|
|
29
|
-
skippingVersions: SkippingVersionState | null;
|
|
30
24
|
};
|
|
31
25
|
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -11,24 +10,11 @@ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helper
|
|
|
11
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
11
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
14
|
-
var
|
|
15
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _react = require("react");
|
|
16
14
|
var _graphlib = require("graphlib");
|
|
17
|
-
var _semver = require("semver");
|
|
18
15
|
var _reactHooks = require("@apollo/react-hooks");
|
|
19
16
|
var _plugins = require("@webiny/plugins");
|
|
20
|
-
var _Progress = require("@webiny/ui/Progress");
|
|
21
17
|
var _config = require("@webiny/app/config");
|
|
22
|
-
var _excluded = ["children"];
|
|
23
|
-
var Loader = function Loader(_ref) {
|
|
24
|
-
var children = _ref.children,
|
|
25
|
-
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
26
|
-
return /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
27
|
-
fallback: /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, {
|
|
28
|
-
label: "Loading..."
|
|
29
|
-
})
|
|
30
|
-
}, /*#__PURE__*/_react.default.cloneElement(children, props));
|
|
31
|
-
};
|
|
32
18
|
var useInstaller = function useInstaller(params) {
|
|
33
19
|
var isInstalled = params.isInstalled;
|
|
34
20
|
var _useReducer = (0, _react.useReducer)(function (prev, next) {
|
|
@@ -37,8 +23,7 @@ var useInstaller = function useInstaller(params) {
|
|
|
37
23
|
loading: true,
|
|
38
24
|
installers: [],
|
|
39
25
|
installerIndex: -1,
|
|
40
|
-
showLogin: false
|
|
41
|
-
skippingVersions: null
|
|
26
|
+
showLogin: false
|
|
42
27
|
}),
|
|
43
28
|
_useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
|
|
44
29
|
state = _useReducer2[0],
|
|
@@ -46,8 +31,7 @@ var useInstaller = function useInstaller(params) {
|
|
|
46
31
|
var loading = state.loading,
|
|
47
32
|
installers = state.installers,
|
|
48
33
|
installerIndex = state.installerIndex,
|
|
49
|
-
showLogin = state.showLogin
|
|
50
|
-
skippingVersions = state.skippingVersions;
|
|
34
|
+
showLogin = state.showLogin;
|
|
51
35
|
var client = (0, _reactHooks.useApolloClient)();
|
|
52
36
|
var validateGraph = function validateGraph(graph) {
|
|
53
37
|
var isAcyclic = _graphlib.alg.isAcyclic(graph);
|
|
@@ -68,12 +52,12 @@ var useInstaller = function useInstaller(params) {
|
|
|
68
52
|
};
|
|
69
53
|
var createGraph = function createGraph(installers) {
|
|
70
54
|
var graph = new _graphlib.Graph();
|
|
71
|
-
installers.forEach(function (
|
|
72
|
-
var plugin =
|
|
55
|
+
installers.forEach(function (_ref) {
|
|
56
|
+
var plugin = _ref.plugin;
|
|
73
57
|
graph.setNode(plugin.name, plugin);
|
|
74
58
|
});
|
|
75
|
-
installers.forEach(function (
|
|
76
|
-
var pl =
|
|
59
|
+
installers.forEach(function (_ref2) {
|
|
60
|
+
var pl = _ref2.plugin;
|
|
77
61
|
if (Array.isArray(pl.dependencies)) {
|
|
78
62
|
pl.dependencies.forEach(function (dep) {
|
|
79
63
|
graph.setEdge(pl.name, dep);
|
|
@@ -85,7 +69,6 @@ var useInstaller = function useInstaller(params) {
|
|
|
85
69
|
};
|
|
86
70
|
var getInstallers = (0, _react.useCallback)(function (installers, graph) {
|
|
87
71
|
var toInstall = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
88
|
-
var toUpgrade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
89
72
|
var leaf = graph.sinks()[0];
|
|
90
73
|
if (leaf) {
|
|
91
74
|
var installer = installers.find(function (inst) {
|
|
@@ -105,44 +88,8 @@ var useInstaller = function useInstaller(params) {
|
|
|
105
88
|
installed: null,
|
|
106
89
|
plugin: installer.plugin
|
|
107
90
|
});
|
|
108
|
-
} else {
|
|
109
|
-
var wbyVersion = _config.config.getKey("WEBINY_VERSION", process.env.REACT_APP_WEBINY_VERSION);
|
|
110
|
-
var upgrades = (installer.plugin.upgrades || []).filter(function (_ref4) {
|
|
111
|
-
var version = _ref4.version;
|
|
112
|
-
// TODO use coerce
|
|
113
|
-
return (0, _semver.lte)(version, wbyVersion) && (0, _semver.gt)(version, installer.installed || "");
|
|
114
|
-
});
|
|
115
|
-
if (upgrades.length > 1) {
|
|
116
|
-
var availableUpgrades = (0, _semver.sort)(upgrades.map(function (u) {
|
|
117
|
-
return u.version;
|
|
118
|
-
}));
|
|
119
|
-
var latestUpgrade = availableUpgrades[availableUpgrades.length - 1];
|
|
120
|
-
setState({
|
|
121
|
-
skippingVersions: {
|
|
122
|
-
current: installer.installed,
|
|
123
|
-
latest: latestUpgrade,
|
|
124
|
-
availableUpgrades: availableUpgrades
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
} else if (upgrades.length === 1) {
|
|
128
|
-
toUpgrade.push({
|
|
129
|
-
type: "upgrade",
|
|
130
|
-
name: "".concat(installer.plugin.name, "-upgrade"),
|
|
131
|
-
title: installer.plugin.title,
|
|
132
|
-
secure: true,
|
|
133
|
-
installed: null,
|
|
134
|
-
plugin: installer.plugin,
|
|
135
|
-
render: function render(_ref5) {
|
|
136
|
-
var onInstalled = _ref5.onInstalled;
|
|
137
|
-
var Component = upgrades[0].getComponent();
|
|
138
|
-
return /*#__PURE__*/_react.default.createElement(Loader, null, /*#__PURE__*/_react.default.createElement(Component, {
|
|
139
|
-
onInstalled: onInstalled
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
91
|
}
|
|
145
|
-
return getInstallers(installers, graph, toInstall
|
|
92
|
+
return getInstallers(installers, graph, toInstall);
|
|
146
93
|
}
|
|
147
94
|
toInstall.sort(function (a, b) {
|
|
148
95
|
if (a.secure && !b.secure) {
|
|
@@ -153,8 +100,7 @@ var useInstaller = function useInstaller(params) {
|
|
|
153
100
|
return 0;
|
|
154
101
|
});
|
|
155
102
|
return {
|
|
156
|
-
toInstall: toInstall
|
|
157
|
-
toUpgrade: toUpgrade
|
|
103
|
+
toInstall: toInstall
|
|
158
104
|
};
|
|
159
105
|
}, []);
|
|
160
106
|
var onUser = function onUser() {
|
|
@@ -193,7 +139,7 @@ var useInstaller = function useInstaller(params) {
|
|
|
193
139
|
};
|
|
194
140
|
(0, _react.useEffect)(function () {
|
|
195
141
|
(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
|
|
196
|
-
var allInstallers, graph, _getInstallers, toInstall,
|
|
142
|
+
var allInstallers, graph, _getInstallers, toInstall, installers;
|
|
197
143
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
|
198
144
|
while (1) switch (_context2.prev = _context2.next) {
|
|
199
145
|
case 0:
|
|
@@ -206,7 +152,7 @@ var useInstaller = function useInstaller(params) {
|
|
|
206
152
|
allInstallers = [];
|
|
207
153
|
_context2.next = 5;
|
|
208
154
|
return Promise.all(_plugins.plugins.byType("admin-installation").map( /*#__PURE__*/function () {
|
|
209
|
-
var
|
|
155
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(pl) {
|
|
210
156
|
var installed;
|
|
211
157
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
212
158
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -228,18 +174,18 @@ var useInstaller = function useInstaller(params) {
|
|
|
228
174
|
}, _callee);
|
|
229
175
|
}));
|
|
230
176
|
return function (_x) {
|
|
231
|
-
return
|
|
177
|
+
return _ref4.apply(this, arguments);
|
|
232
178
|
};
|
|
233
179
|
}()));
|
|
234
180
|
case 5:
|
|
235
181
|
graph = createGraph(allInstallers);
|
|
236
|
-
_getInstallers = getInstallers(allInstallers, graph), toInstall = _getInstallers.toInstall
|
|
237
|
-
installers =
|
|
182
|
+
_getInstallers = getInstallers(allInstallers, graph), toInstall = _getInstallers.toInstall;
|
|
183
|
+
installers = (0, _toConsumableArray2.default)(toInstall);
|
|
238
184
|
setState({
|
|
239
185
|
installers: installers,
|
|
240
186
|
installerIndex: 0,
|
|
241
187
|
loading: false,
|
|
242
|
-
showLogin:
|
|
188
|
+
showLogin: toInstall.length > 0 && toInstall[0].secure
|
|
243
189
|
});
|
|
244
190
|
case 9:
|
|
245
191
|
case "end":
|
|
@@ -258,8 +204,7 @@ var useInstaller = function useInstaller(params) {
|
|
|
258
204
|
installer: installers[installerIndex],
|
|
259
205
|
showNextInstaller: showNextInstaller,
|
|
260
206
|
showLogin: showLogin,
|
|
261
|
-
onUser: onUser
|
|
262
|
-
skippingVersions: skippingVersions
|
|
207
|
+
onUser: onUser
|
|
263
208
|
};
|
|
264
209
|
};
|
|
265
210
|
exports.useInstaller = useInstaller;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Loader","children","props","React","cloneElement","useInstaller","params","isInstalled","useReducer","prev","next","loading","installers","installerIndex","showLogin","skippingVersions","state","setState","client","useApolloClient","validateGraph","graph","isAcyclic","alg","cycles","findCycles","msg","forEach","cycle","index","fromAToB","join","fromBToA","reverse","padLength","length","push","padStart","Error","createGraph","Graph","plugin","setNode","name","pl","Array","isArray","dependencies","dep","setEdge","getInstallers","useCallback","toInstall","toUpgrade","leaf","sinks","installer","find","inst","removeNode","installed","type","title","render","secure","wbyVersion","appConfig","getKey","process","env","REACT_APP_WEBINY_VERSION","upgrades","filter","version","lte","gt","availableUpgrades","sort","map","u","latestUpgrade","current","latest","onInstalled","Component","getComponent","a","b","onUser","showNextInstaller","prevInstaller","undefined","nextIndex","nextInstaller","prevSecure","nextSecure","useEffect","allInstallers","Promise","all","plugins","byType","getInstalledVersion","isFirstInstall","some"],"sources":["useInstaller.tsx"],"sourcesContent":["import React, { useCallback, useReducer, useEffect, Suspense } from \"react\";\nimport { Graph, alg } from \"graphlib\";\nimport { sort, gt, lte } from \"semver\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { plugins } from \"@webiny/plugins\";\nimport { AdminInstallationPlugin } from \"~/types\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { config as appConfig } from \"@webiny/app/config\";\n\nconst Loader: React.FC<{ children: React.ReactElement }> = ({ children, ...props }) => (\n <Suspense fallback={<CircularProgress label={\"Loading...\"} />}>\n {React.cloneElement(children, props)}\n </Suspense>\n);\n\ninterface GetInstallersResult {\n toInstall: Installer[];\n toUpgrade: Installer[];\n}\n\ninterface UseInstallerParams {\n isInstalled: boolean;\n}\n\ninterface SkippingVersionState {\n current: string;\n latest: string;\n availableUpgrades: string[];\n}\n\ninterface BaseInstaller {\n installed: string | null;\n plugin: AdminInstallationPlugin;\n}\n\nexport interface Installer extends BaseInstaller {\n type: \"install\" | \"upgrade\";\n name: string;\n title: string;\n render: AdminInstallationPlugin[\"render\"];\n secure?: boolean;\n}\ninterface State {\n loading: boolean;\n installers: Installer[];\n installerIndex: number;\n showLogin: boolean;\n skippingVersions: SkippingVersionState | null;\n}\n\ninterface Reducer {\n (prev: State, next: Partial<State>): State;\n}\n\nexport const useInstaller = (params: UseInstallerParams) => {\n const { isInstalled } = params;\n const [state, setState] = useReducer<Reducer>((prev, next) => ({ ...prev, ...next }), {\n loading: true,\n installers: [],\n installerIndex: -1,\n showLogin: false,\n skippingVersions: null\n });\n const { loading, installers, installerIndex, showLogin, skippingVersions } = state;\n\n const client = useApolloClient();\n\n const validateGraph = (graph: Graph): void => {\n const isAcyclic = alg.isAcyclic(graph);\n if (isAcyclic) {\n return;\n }\n const cycles = alg.findCycles(graph);\n const msg = [\"Your installers have circular dependencies:\"];\n cycles.forEach((cycle, index) => {\n let fromAToB = cycle.join(\" --> \");\n fromAToB = `${index + 1}. ${fromAToB}`;\n const fromBToA = cycle.reverse().join(\" <-- \");\n const padLength = fromAToB.length + 4;\n msg.push(fromAToB.padStart(padLength));\n msg.push(fromBToA.padStart(padLength));\n }, cycles);\n throw new Error(msg.join(\"\\n\"));\n };\n\n const createGraph = (installers: BaseInstaller[]): Graph => {\n const graph = new Graph();\n installers.forEach(({ plugin }) => {\n graph.setNode(plugin.name as string, plugin);\n });\n\n installers.forEach(({ plugin: pl }) => {\n if (Array.isArray(pl.dependencies)) {\n pl.dependencies.forEach(dep => {\n graph.setEdge(pl.name as string, dep);\n });\n }\n });\n\n validateGraph(graph);\n\n return graph;\n };\n\n const getInstallers = useCallback(\n (\n installers: BaseInstaller[],\n graph: Graph,\n toInstall: Installer[] = [],\n toUpgrade: Installer[] = []\n ): GetInstallersResult => {\n const leaf = graph.sinks()[0];\n if (leaf) {\n const installer = installers.find(inst => inst.plugin.name === leaf);\n if (!installer) {\n throw new Error(`Missing installer plugin \"${leaf}\"!`);\n }\n\n graph.removeNode(leaf);\n if (!installer.installed) {\n toInstall.push({\n type: \"install\",\n name: `${installer.plugin.name}-install`,\n title: installer.plugin.title,\n render: installer.plugin.render,\n secure: installer.plugin.secure,\n installed: null,\n plugin: installer.plugin\n });\n } else {\n const wbyVersion = appConfig.getKey(\n \"WEBINY_VERSION\",\n process.env.REACT_APP_WEBINY_VERSION as string\n );\n\n const upgrades = (installer.plugin.upgrades || []).filter(({ version }) => {\n // TODO use coerce\n return lte(version, wbyVersion) && gt(version, installer.installed || \"\");\n });\n\n if (upgrades.length > 1) {\n const availableUpgrades = sort(upgrades.map(u => u.version));\n const latestUpgrade = availableUpgrades[availableUpgrades.length - 1];\n setState({\n skippingVersions: {\n current: installer.installed,\n latest: latestUpgrade,\n availableUpgrades\n }\n });\n } else if (upgrades.length === 1) {\n toUpgrade.push({\n type: \"upgrade\",\n name: `${installer.plugin.name}-upgrade`,\n title: installer.plugin.title,\n secure: true,\n installed: null,\n plugin: installer.plugin,\n render({ onInstalled }) {\n const Component = upgrades[0].getComponent();\n return (\n <Loader>\n <Component onInstalled={onInstalled} />\n </Loader>\n );\n }\n });\n }\n }\n return getInstallers(installers, graph, toInstall, toUpgrade);\n }\n toInstall.sort((a, b) => {\n if (a.secure && !b.secure) {\n return 1;\n } else if (!a.secure && b.secure) {\n return -1;\n }\n return 0;\n });\n return { toInstall, toUpgrade };\n },\n []\n );\n\n const onUser = () => {\n setState({ showLogin: false });\n };\n\n /**\n * If set to anything else, it breaks in AppInstaller.tsx\n */\n const showNextInstaller = (): any => {\n const prevInstaller = installers[installerIndex];\n\n installers[installerIndex].installed = appConfig.getKey(\n \"WEBINY_VERSION\",\n process.env.REACT_APP_WEBINY_VERSION as string\n );\n setState({ installers });\n\n if (installers.length < installerIndex + 1) {\n setState({ installerIndex: undefined });\n return;\n }\n\n const nextIndex = installerIndex + 1;\n\n let showLogin = false;\n const nextInstaller = installers[nextIndex];\n\n const prevSecure = prevInstaller && prevInstaller.secure;\n const nextSecure = nextInstaller && nextInstaller.secure;\n if (!prevSecure && nextSecure) {\n showLogin = true;\n }\n setState({ installerIndex: nextIndex, showLogin });\n };\n\n useEffect(() => {\n (async () => {\n if (isInstalled) {\n return;\n }\n\n const allInstallers: BaseInstaller[] = [];\n await Promise.all(\n plugins.byType<AdminInstallationPlugin>(\"admin-installation\").map(async pl => {\n const installed = await pl.getInstalledVersion({ client });\n allInstallers.push({ plugin: pl, installed });\n })\n );\n\n const graph = createGraph(allInstallers);\n const { toInstall, toUpgrade } = getInstallers(allInstallers, graph);\n const installers = [...toUpgrade, ...toInstall];\n setState({\n installers,\n installerIndex: 0,\n loading: false,\n showLogin: toUpgrade.length > 0 || (toInstall.length > 0 && toInstall[0].secure)\n });\n })();\n }, []);\n\n const isFirstInstall = installers.some(installer => installer.installed);\n\n return {\n loading,\n installers,\n isFirstInstall,\n installer: installers[installerIndex],\n showNextInstaller,\n showLogin,\n onUser,\n skippingVersions\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useInstaller","params","isInstalled","useReducer","prev","next","loading","installers","installerIndex","showLogin","state","setState","client","useApolloClient","validateGraph","graph","isAcyclic","alg","cycles","findCycles","msg","forEach","cycle","index","fromAToB","join","fromBToA","reverse","padLength","length","push","padStart","Error","createGraph","Graph","plugin","setNode","name","pl","Array","isArray","dependencies","dep","setEdge","getInstallers","useCallback","toInstall","leaf","sinks","installer","find","inst","removeNode","installed","type","title","render","secure","sort","a","b","onUser","showNextInstaller","prevInstaller","appConfig","getKey","process","env","REACT_APP_WEBINY_VERSION","undefined","nextIndex","nextInstaller","prevSecure","nextSecure","useEffect","allInstallers","Promise","all","plugins","byType","map","getInstalledVersion","isFirstInstall","some"],"sources":["useInstaller.tsx"],"sourcesContent":["import { useCallback, useReducer, useEffect } from \"react\";\nimport { Graph, alg } from \"graphlib\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { plugins } from \"@webiny/plugins\";\nimport { AdminInstallationPlugin } from \"~/types\";\nimport { config as appConfig } from \"@webiny/app/config\";\n\ninterface GetInstallersResult {\n toInstall: Installer[];\n}\n\ninterface UseInstallerParams {\n isInstalled: boolean;\n}\n\ninterface BaseInstaller {\n installed: string | null;\n plugin: AdminInstallationPlugin;\n}\n\nexport interface Installer extends BaseInstaller {\n type: \"install\";\n name: string;\n title: string;\n render: AdminInstallationPlugin[\"render\"];\n secure?: boolean;\n}\ninterface State {\n loading: boolean;\n installers: Installer[];\n installerIndex: number;\n showLogin: boolean;\n}\n\ninterface Reducer {\n (prev: State, next: Partial<State>): State;\n}\n\nexport const useInstaller = (params: UseInstallerParams) => {\n const { isInstalled } = params;\n const [state, setState] = useReducer<Reducer>((prev, next) => ({ ...prev, ...next }), {\n loading: true,\n installers: [],\n installerIndex: -1,\n showLogin: false\n });\n const { loading, installers, installerIndex, showLogin } = state;\n\n const client = useApolloClient();\n\n const validateGraph = (graph: Graph): void => {\n const isAcyclic = alg.isAcyclic(graph);\n if (isAcyclic) {\n return;\n }\n const cycles = alg.findCycles(graph);\n const msg = [\"Your installers have circular dependencies:\"];\n cycles.forEach((cycle, index) => {\n let fromAToB = cycle.join(\" --> \");\n fromAToB = `${index + 1}. ${fromAToB}`;\n const fromBToA = cycle.reverse().join(\" <-- \");\n const padLength = fromAToB.length + 4;\n msg.push(fromAToB.padStart(padLength));\n msg.push(fromBToA.padStart(padLength));\n }, cycles);\n throw new Error(msg.join(\"\\n\"));\n };\n\n const createGraph = (installers: BaseInstaller[]): Graph => {\n const graph = new Graph();\n installers.forEach(({ plugin }) => {\n graph.setNode(plugin.name as string, plugin);\n });\n\n installers.forEach(({ plugin: pl }) => {\n if (Array.isArray(pl.dependencies)) {\n pl.dependencies.forEach(dep => {\n graph.setEdge(pl.name as string, dep);\n });\n }\n });\n\n validateGraph(graph);\n\n return graph;\n };\n\n const getInstallers = useCallback(\n (\n installers: BaseInstaller[],\n graph: Graph,\n toInstall: Installer[] = []\n ): GetInstallersResult => {\n const leaf = graph.sinks()[0];\n if (leaf) {\n const installer = installers.find(inst => inst.plugin.name === leaf);\n if (!installer) {\n throw new Error(`Missing installer plugin \"${leaf}\"!`);\n }\n\n graph.removeNode(leaf);\n if (!installer.installed) {\n toInstall.push({\n type: \"install\",\n name: `${installer.plugin.name}-install`,\n title: installer.plugin.title,\n render: installer.plugin.render,\n secure: installer.plugin.secure,\n installed: null,\n plugin: installer.plugin\n });\n }\n\n return getInstallers(installers, graph, toInstall);\n }\n toInstall.sort((a, b) => {\n if (a.secure && !b.secure) {\n return 1;\n } else if (!a.secure && b.secure) {\n return -1;\n }\n return 0;\n });\n return { toInstall };\n },\n []\n );\n\n const onUser = () => {\n setState({ showLogin: false });\n };\n\n /**\n * If set to anything else, it breaks in AppInstaller.tsx\n */\n const showNextInstaller = (): any => {\n const prevInstaller = installers[installerIndex];\n\n installers[installerIndex].installed = appConfig.getKey(\n \"WEBINY_VERSION\",\n process.env.REACT_APP_WEBINY_VERSION as string\n );\n setState({ installers });\n\n if (installers.length < installerIndex + 1) {\n setState({ installerIndex: undefined });\n return;\n }\n\n const nextIndex = installerIndex + 1;\n\n let showLogin = false;\n const nextInstaller = installers[nextIndex];\n\n const prevSecure = prevInstaller && prevInstaller.secure;\n const nextSecure = nextInstaller && nextInstaller.secure;\n if (!prevSecure && nextSecure) {\n showLogin = true;\n }\n setState({ installerIndex: nextIndex, showLogin });\n };\n\n useEffect(() => {\n (async () => {\n if (isInstalled) {\n return;\n }\n\n const allInstallers: BaseInstaller[] = [];\n await Promise.all(\n plugins.byType<AdminInstallationPlugin>(\"admin-installation\").map(async pl => {\n const installed = await pl.getInstalledVersion({ client });\n allInstallers.push({ plugin: pl, installed });\n })\n );\n\n const graph = createGraph(allInstallers);\n const { toInstall } = getInstallers(allInstallers, graph);\n const installers = [...toInstall];\n setState({\n installers,\n installerIndex: 0,\n loading: false,\n showLogin: toInstall.length > 0 && toInstall[0].secure\n });\n })();\n }, []);\n\n const isFirstInstall = installers.some(installer => installer.installed);\n\n return {\n loading,\n installers,\n isFirstInstall,\n installer: installers[installerIndex],\n showNextInstaller,\n showLogin,\n onUser\n };\n};\n"],"mappings":"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"}
|
package/components/EmptyView.js
CHANGED
|
@@ -8,7 +8,7 @@ exports.default = void 0;
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
10
|
var _Typography = require("@webiny/ui/Typography");
|
|
11
|
-
var _touch_app = require("
|
|
11
|
+
var _touch_app = require("@material-design-icons/svg/filled/touch_app.svg");
|
|
12
12
|
var EmptyViewWrapper = /*#__PURE__*/(0, _styled.default)("div", {
|
|
13
13
|
target: "eu81oh40",
|
|
14
14
|
label: "EmptyViewWrapper"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EmptyViewWrapper","styled","width","height","display","flexDirection","alignItems","justifyContent","fill","marginBottom","maxWidth","textAlign","color","padding","backgroundColor","EmptyView","icon","title","action"],"sources":["EmptyView.tsx"],"sourcesContent":["import React, { ReactElement } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { ReactComponent as TouchIcon } from \"
|
|
1
|
+
{"version":3,"names":["EmptyViewWrapper","styled","width","height","display","flexDirection","alignItems","justifyContent","fill","marginBottom","maxWidth","textAlign","color","padding","backgroundColor","EmptyView","icon","title","action"],"sources":["EmptyView.tsx"],"sourcesContent":["import React, { ReactElement } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { ReactComponent as TouchIcon } from \"@material-design-icons/svg/filled/touch_app.svg\";\n\nconst EmptyViewWrapper = styled(\"div\")({\n width: \"100%\",\n height: \"80%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n\n \"& .media\": {\n \"& svg\": {\n width: 75,\n height: 75,\n fill: \"var(--mdc-theme-text-icon-on-background)\"\n },\n marginBottom: 30\n },\n \"& .title__container\": {\n maxWidth: 276,\n textAlign: \"center\",\n marginBottom: 24,\n \"& .title\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n },\n \"& .action__container\": {\n \"& .mdc-button\": {\n padding: \"0px 16px\",\n backgroundColor: \"var(--mdc-theme-surface)\"\n }\n }\n});\nexport interface EmptyViewProps {\n icon?: ReactElement;\n title: string;\n action: ReactElement | null;\n}\nconst EmptyView: React.FC<EmptyViewProps> = ({ icon = <TouchIcon />, title, action }) => {\n return (\n <EmptyViewWrapper>\n <div className={\"media\"}>{icon}</div>\n <div className=\"title__container\">\n <Typography use={\"subtitle1\"} className={\"title\"}>\n {title}\n </Typography>\n </div>\n <div className=\"action__container\">{action}</div>\n </EmptyViewWrapper>\n );\n};\n\nexport default EmptyView;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAEA,IAAMA,gBAAgB,oBAAGC,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EACnCC,KAAK,EAAE,MAAM;EACbC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAE,MAAM;EACfC,aAAa,EAAE,QAAQ;EACvBC,UAAU,EAAE,QAAQ;EACpBC,cAAc,EAAE,QAAQ;EAExB,UAAU,EAAE;IACR,OAAO,EAAE;MACLL,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE,EAAE;MACVK,IAAI,EAAE;IACV,CAAC;IACDC,YAAY,EAAE;EAClB,CAAC;EACD,qBAAqB,EAAE;IACnBC,QAAQ,EAAE,GAAG;IACbC,SAAS,EAAE,QAAQ;IACnBF,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE;MACRG,KAAK,EAAE;IACX;EACJ,CAAC;EACD,sBAAsB,EAAE;IACpB,eAAe,EAAE;MACbC,OAAO,EAAE,UAAU;MACnBC,eAAe,EAAE;IACrB;EACJ;AACJ,CAAC,CAAC;AAMF,IAAMC,SAAmC,GAAG,SAAtCA,SAAmC,OAAgD;EAAA,qBAA1CC,IAAI;IAAJA,IAAI,uCAAG,6BAAC,yBAAS,OAAG;IAAEC,KAAK,QAALA,KAAK;IAAEC,MAAM,QAANA,MAAM;EAC9E,oBACI,6BAAC,gBAAgB,qBACb;IAAK,SAAS,EAAE;EAAQ,GAAEF,IAAI,CAAO,eACrC;IAAK,SAAS,EAAC;EAAkB,gBAC7B,6BAAC,sBAAU;IAAC,GAAG,EAAE,WAAY;IAAC,SAAS,EAAE;EAAQ,GAC5CC,KAAK,CACG,CACX,eACN;IAAK,SAAS,EAAC;EAAmB,GAAEC,MAAM,CAAO,CAClC;AAE3B,CAAC;AAAC,eAEaH,SAAS;AAAA"}
|
|
@@ -1,41 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
9
|
+
|
|
8
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
9
12
|
var _lite = _interopRequireDefault(require("mime/lite"));
|
|
13
|
+
|
|
10
14
|
_lite.default.define({
|
|
11
15
|
"image/x-icon": ["ico"]
|
|
12
16
|
}, true);
|
|
17
|
+
|
|
13
18
|
_lite.default.define({
|
|
14
19
|
"image/jpg": ["jpg"]
|
|
15
20
|
}, true);
|
|
21
|
+
|
|
16
22
|
_lite.default.define({
|
|
17
23
|
"image/vnd.microsoft.icon": ["ico"]
|
|
18
24
|
}, true);
|
|
25
|
+
|
|
19
26
|
var getUniqueFilePlugins = function getUniqueFilePlugins(accept) {
|
|
20
27
|
var exts = {};
|
|
21
28
|
accept.forEach(function (item) {
|
|
22
29
|
var ext = _lite.default.getExtension(item);
|
|
30
|
+
|
|
23
31
|
if (!ext) {
|
|
24
32
|
return;
|
|
25
33
|
}
|
|
34
|
+
|
|
26
35
|
exts[ext] = true;
|
|
27
36
|
});
|
|
28
37
|
return Object.keys(exts);
|
|
29
38
|
};
|
|
39
|
+
|
|
30
40
|
var SupportedFileTypes = function SupportedFileTypes(_ref) {
|
|
31
41
|
var accept = _ref.accept;
|
|
42
|
+
|
|
32
43
|
if (!accept) {
|
|
33
44
|
return null;
|
|
34
45
|
}
|
|
46
|
+
|
|
35
47
|
if (accept.length === 0) {
|
|
36
48
|
return /*#__PURE__*/_react.default.createElement("span", null, "Showing all file extensions.");
|
|
37
49
|
}
|
|
50
|
+
|
|
38
51
|
return /*#__PURE__*/_react.default.createElement("span", null, "Showing the following file extensions: ", getUniqueFilePlugins(accept).join(", "), ".");
|
|
39
52
|
};
|
|
53
|
+
|
|
40
54
|
var _default = SupportedFileTypes;
|
|
41
55
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mime","define","getUniqueFilePlugins","accept","exts","forEach","item","ext","getExtension","Object","keys","SupportedFileTypes","length","join"],"sources":["SupportedFileTypes.tsx"],"sourcesContent":["import React from \"react\";\nimport mime from \"mime/lite\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst getUniqueFilePlugins = (accept: string[]): string[] => {\n const exts: Record<string, boolean> = {};\n accept.forEach(item => {\n const ext = mime.getExtension(item);\n if (!ext) {\n return;\n }\n exts[ext] = true;\n });\n\n return Object.keys(exts);\n};\n\nexport interface SupportedFileTypesProps {\n accept: string[];\n}\n\nconst SupportedFileTypes: React.FC<SupportedFileTypesProps> = ({ accept }) => {\n if (!accept) {\n return null;\n }\n\n if (accept.length === 0) {\n return <span>Showing all file extensions.</span>;\n }\n\n return (\n <span>\n Showing the following file extensions: {getUniqueFilePlugins(accept).join(\", \")}.\n </span>\n );\n};\n\nexport default SupportedFileTypes;\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["mime","define","getUniqueFilePlugins","accept","exts","forEach","item","ext","getExtension","Object","keys","SupportedFileTypes","length","join"],"sources":["SupportedFileTypes.tsx"],"sourcesContent":["import React from \"react\";\nimport mime from \"mime/lite\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst getUniqueFilePlugins = (accept: string[]): string[] => {\n const exts: Record<string, boolean> = {};\n accept.forEach(item => {\n const ext = mime.getExtension(item);\n if (!ext) {\n return;\n }\n exts[ext] = true;\n });\n\n return Object.keys(exts);\n};\n\nexport interface SupportedFileTypesProps {\n accept: string[];\n}\n\nconst SupportedFileTypes: React.FC<SupportedFileTypesProps> = ({ accept }) => {\n if (!accept) {\n return null;\n }\n\n if (accept.length === 0) {\n return <span>Showing all file extensions.</span>;\n }\n\n return (\n <span>\n Showing the following file extensions: {getUniqueFilePlugins(accept).join(\", \")}.\n </span>\n );\n};\n\nexport default SupportedFileTypes;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEAA,aAAA,CAAKC,MAAL,CAAY;EAAE,gBAAgB,CAAC,KAAD;AAAlB,CAAZ,EAAyC,IAAzC;;AACAD,aAAA,CAAKC,MAAL,CAAY;EAAE,aAAa,CAAC,KAAD;AAAf,CAAZ,EAAsC,IAAtC;;AACAD,aAAA,CAAKC,MAAL,CAAY;EAAE,4BAA4B,CAAC,KAAD;AAA9B,CAAZ,EAAqD,IAArD;;AAEA,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,MAAD,EAAgC;EACzD,IAAMC,IAA6B,GAAG,EAAtC;EACAD,MAAM,CAACE,OAAP,CAAe,UAAAC,IAAI,EAAI;IACnB,IAAMC,GAAG,GAAGP,aAAA,CAAKQ,YAAL,CAAkBF,IAAlB,CAAZ;;IACA,IAAI,CAACC,GAAL,EAAU;MACN;IACH;;IACDH,IAAI,CAACG,GAAD,CAAJ,GAAY,IAAZ;EACH,CAND;EAQA,OAAOE,MAAM,CAACC,IAAP,CAAYN,IAAZ,CAAP;AACH,CAXD;;AAiBA,IAAMO,kBAAqD,GAAG,SAAxDA,kBAAwD,OAAgB;EAAA,IAAbR,MAAa,QAAbA,MAAa;;EAC1E,IAAI,CAACA,MAAL,EAAa;IACT,OAAO,IAAP;EACH;;EAED,IAAIA,MAAM,CAACS,MAAP,KAAkB,CAAtB,EAAyB;IACrB,oBAAO,2CAAM,8BAAN,CAAP;EACH;;EAED,oBACI,2CAAM,yCAAN,EAC4CV,oBAAoB,CAACC,MAAD,CAApB,CAA6BU,IAA7B,CAAkC,IAAlC,CAD5C,EACoF,GADpF,CADJ;AAKH,CAdD;;eAgBeF,kB"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
9
|
+
|
|
8
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
9
12
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
13
|
+
|
|
10
14
|
var _Progress = require("@webiny/ui/Progress");
|
|
15
|
+
|
|
11
16
|
var StatusWrapper = /*#__PURE__*/(0, _styled.default)("div", {
|
|
12
17
|
target: "e8hlyp40",
|
|
13
18
|
label: "StatusWrapper"
|
|
@@ -37,15 +42,19 @@ var UploadingLabel = /*#__PURE__*/(0, _styled.default)("div", {
|
|
|
37
42
|
})({
|
|
38
43
|
marginRight: 5
|
|
39
44
|
});
|
|
45
|
+
|
|
40
46
|
var UploadStatus = function UploadStatus(_ref) {
|
|
41
47
|
var uploading = _ref.uploading;
|
|
48
|
+
|
|
42
49
|
if (!uploading) {
|
|
43
50
|
return null;
|
|
44
51
|
}
|
|
52
|
+
|
|
45
53
|
return /*#__PURE__*/_react.default.createElement(StatusWrapper, null, /*#__PURE__*/_react.default.createElement(UploadingLabel, null, "Uploading..."), /*#__PURE__*/_react.default.createElement(CircularProgressHolder, null, /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, {
|
|
46
54
|
size: 10,
|
|
47
55
|
spinnerWidth: 1
|
|
48
56
|
})));
|
|
49
57
|
};
|
|
58
|
+
|
|
50
59
|
var _default = UploadStatus;
|
|
51
60
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StatusWrapper","styled","color","position","right","bottom","marginRight","display","alignItems","CircularProgressHolder","height","width","UploadingLabel","UploadStatus","uploading"],"sources":["UploadStatus.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\n\nconst StatusWrapper = styled(\"div\")({\n color: \"var(--mdc-theme-primary)\",\n position: \"absolute\",\n right: 0,\n bottom: 10,\n marginRight: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"> div\": {\n display: \"inline-block\"\n }\n});\n\nconst CircularProgressHolder = styled(\"div\")({\n position: \"relative\",\n height: 12,\n width: 12\n});\n\nconst UploadingLabel = styled(\"div\")({\n marginRight: 5\n});\n\nexport interface UploadStatusProps {\n uploading: boolean;\n}\nconst UploadStatus: React.FC<UploadStatusProps> = ({ uploading }) => {\n if (!uploading) {\n return null;\n }\n\n return (\n <StatusWrapper>\n <UploadingLabel>Uploading...</UploadingLabel>\n <CircularProgressHolder>\n <CircularProgress size={10} spinnerWidth={1} />\n </CircularProgressHolder>\n </StatusWrapper>\n );\n};\n\nexport default UploadStatus;\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["StatusWrapper","styled","color","position","right","bottom","marginRight","display","alignItems","CircularProgressHolder","height","width","UploadingLabel","UploadStatus","uploading"],"sources":["UploadStatus.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\n\nconst StatusWrapper = styled(\"div\")({\n color: \"var(--mdc-theme-primary)\",\n position: \"absolute\",\n right: 0,\n bottom: 10,\n marginRight: 10,\n display: \"flex\",\n alignItems: \"center\",\n \"> div\": {\n display: \"inline-block\"\n }\n});\n\nconst CircularProgressHolder = styled(\"div\")({\n position: \"relative\",\n height: 12,\n width: 12\n});\n\nconst UploadingLabel = styled(\"div\")({\n marginRight: 5\n});\n\nexport interface UploadStatusProps {\n uploading: boolean;\n}\nconst UploadStatus: React.FC<UploadStatusProps> = ({ uploading }) => {\n if (!uploading) {\n return null;\n }\n\n return (\n <StatusWrapper>\n <UploadingLabel>Uploading...</UploadingLabel>\n <CircularProgressHolder>\n <CircularProgress size={10} spinnerWidth={1} />\n </CircularProgressHolder>\n </StatusWrapper>\n );\n};\n\nexport default UploadStatus;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAMA,aAAa,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EAChCC,KAAK,EAAE,0BADyB;EAEhCC,QAAQ,EAAE,UAFsB;EAGhCC,KAAK,EAAE,CAHyB;EAIhCC,MAAM,EAAE,EAJwB;EAKhCC,WAAW,EAAE,EALmB;EAMhCC,OAAO,EAAE,MANuB;EAOhCC,UAAU,EAAE,QAPoB;EAQhC,SAAS;IACLD,OAAO,EAAE;EADJ;AARuB,CAAjB,CAAnB;AAaA,IAAME,sBAAsB,oBAAGR,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACzCE,QAAQ,EAAE,UAD+B;EAEzCO,MAAM,EAAE,EAFiC;EAGzCC,KAAK,EAAE;AAHkC,CAAjB,CAA5B;AAMA,IAAMC,cAAc,oBAAGX,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACjCK,WAAW,EAAE;AADoB,CAAjB,CAApB;;AAOA,IAAMO,YAAyC,GAAG,SAA5CA,YAA4C,OAAmB;EAAA,IAAhBC,SAAgB,QAAhBA,SAAgB;;EACjE,IAAI,CAACA,SAAL,EAAgB;IACZ,OAAO,IAAP;EACH;;EAED,oBACI,6BAAC,aAAD,qBACI,6BAAC,cAAD,QAAgB,cAAhB,CADJ,eAEI,6BAAC,sBAAD,qBACI,6BAAC,0BAAD;IAAkB,IAAI,EAAE,EAAxB;IAA4B,YAAY,EAAE;EAA1C,EADJ,CAFJ,CADJ;AAQH,CAbD;;eAeeD,Y"}
|
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
9
|
+
|
|
8
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
9
12
|
var _lite = _interopRequireDefault(require("mime/lite"));
|
|
13
|
+
|
|
10
14
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
15
|
+
|
|
11
16
|
var _SupportedFileTypes = _interopRequireDefault(require("./BottomInfoBar/SupportedFileTypes"));
|
|
17
|
+
|
|
12
18
|
var _UploadStatus = _interopRequireDefault(require("./BottomInfoBar/UploadStatus"));
|
|
19
|
+
|
|
13
20
|
_lite.default.define({
|
|
14
21
|
"image/x-icon": ["ico"]
|
|
15
22
|
}, true);
|
|
23
|
+
|
|
16
24
|
_lite.default.define({
|
|
17
25
|
"image/jpg": ["jpg"]
|
|
18
26
|
}, true);
|
|
27
|
+
|
|
19
28
|
_lite.default.define({
|
|
20
29
|
"image/vnd.microsoft.icon": ["ico"]
|
|
21
30
|
}, true);
|
|
31
|
+
|
|
22
32
|
var BottomInfoBarWrapper = /*#__PURE__*/(0, _styled.default)("div", {
|
|
23
33
|
target: "el4b0yq0",
|
|
24
34
|
label: "BottomInfoBarWrapper"
|
|
@@ -41,8 +51,10 @@ var BottomInfoBarWrapper = /*#__PURE__*/(0, _styled.default)("div", {
|
|
|
41
51
|
width: "100%"
|
|
42
52
|
}
|
|
43
53
|
});
|
|
54
|
+
|
|
44
55
|
var BottomInfoBar = function BottomInfoBar(props) {
|
|
45
56
|
return /*#__PURE__*/_react.default.createElement(BottomInfoBarWrapper, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_SupportedFileTypes.default, props), /*#__PURE__*/_react.default.createElement(_UploadStatus.default, props)));
|
|
46
57
|
};
|
|
58
|
+
|
|
47
59
|
var _default = BottomInfoBar;
|
|
48
60
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mime","define","BottomInfoBarWrapper","styled","fontSize","position","bottom","height","color","borderTop","backgroundColor","width","transform","overflow","display","alignItems","zIndex","padding","BottomInfoBar","props"],"sources":["BottomInfoBar.tsx"],"sourcesContent":["import React from \"react\";\nimport mime from \"mime/lite\";\nimport styled from \"@emotion/styled\";\nimport SupportedFileTypes, { SupportedFileTypesProps } from \"./BottomInfoBar/SupportedFileTypes\";\nimport UploadStatus, { UploadStatusProps } from \"./BottomInfoBar/UploadStatus\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst BottomInfoBarWrapper = styled(\"div\")({\n fontSize: \"0.8rem\",\n position: \"sticky\",\n bottom: 0,\n height: 30,\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n borderTop: \"1px solid var(--mdc-theme-on-background)\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n width: \"100%\",\n transform: \"translateZ(0)\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 1,\n \"> div\": {\n padding: \"0 10px\",\n width: \"100%\"\n }\n});\n\nconst BottomInfoBar: React.FC<SupportedFileTypesProps & UploadStatusProps> = props => {\n return (\n <BottomInfoBarWrapper>\n <div>\n <SupportedFileTypes {...props} />\n <UploadStatus {...props} />\n </div>\n </BottomInfoBarWrapper>\n );\n};\n\nexport default BottomInfoBar;\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["mime","define","BottomInfoBarWrapper","styled","fontSize","position","bottom","height","color","borderTop","backgroundColor","width","transform","overflow","display","alignItems","zIndex","padding","BottomInfoBar","props"],"sources":["BottomInfoBar.tsx"],"sourcesContent":["import React from \"react\";\nimport mime from \"mime/lite\";\nimport styled from \"@emotion/styled\";\nimport SupportedFileTypes, { SupportedFileTypesProps } from \"./BottomInfoBar/SupportedFileTypes\";\nimport UploadStatus, { UploadStatusProps } from \"./BottomInfoBar/UploadStatus\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst BottomInfoBarWrapper = styled(\"div\")({\n fontSize: \"0.8rem\",\n position: \"sticky\",\n bottom: 0,\n height: 30,\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n borderTop: \"1px solid var(--mdc-theme-on-background)\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n width: \"100%\",\n transform: \"translateZ(0)\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 1,\n \"> div\": {\n padding: \"0 10px\",\n width: \"100%\"\n }\n});\n\nconst BottomInfoBar: React.FC<SupportedFileTypesProps & UploadStatusProps> = props => {\n return (\n <BottomInfoBarWrapper>\n <div>\n <SupportedFileTypes {...props} />\n <UploadStatus {...props} />\n </div>\n </BottomInfoBarWrapper>\n );\n};\n\nexport default BottomInfoBar;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEAA,aAAA,CAAKC,MAAL,CAAY;EAAE,gBAAgB,CAAC,KAAD;AAAlB,CAAZ,EAAyC,IAAzC;;AACAD,aAAA,CAAKC,MAAL,CAAY;EAAE,aAAa,CAAC,KAAD;AAAf,CAAZ,EAAsC,IAAtC;;AACAD,aAAA,CAAKC,MAAL,CAAY;EAAE,4BAA4B,CAAC,KAAD;AAA9B,CAAZ,EAAqD,IAArD;;AAEA,IAAMC,oBAAoB,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACvCC,QAAQ,EAAE,QAD6B;EAEvCC,QAAQ,EAAE,QAF6B;EAGvCC,MAAM,EAAE,CAH+B;EAIvCC,MAAM,EAAE,EAJ+B;EAKvCC,KAAK,EAAE,+CALgC;EAMvCC,SAAS,EAAE,0CAN4B;EAOvCC,eAAe,EAAE,0BAPsB;EAQvCC,KAAK,EAAE,MARgC;EASvCC,SAAS,EAAE,eAT4B;EAUvCC,QAAQ,EAAE,QAV6B;EAWvCC,OAAO,EAAE,MAX8B;EAYvCC,UAAU,EAAE,QAZ2B;EAavCC,MAAM,EAAE,CAb+B;EAcvC,SAAS;IACLC,OAAO,EAAE,QADJ;IAELN,KAAK,EAAE;EAFF;AAd8B,CAAjB,CAA1B;;AAoBA,IAAMO,aAAoE,GAAG,SAAvEA,aAAuE,CAAAC,KAAK,EAAI;EAClF,oBACI,6BAAC,oBAAD,qBACI,uDACI,6BAAC,2BAAD,EAAwBA,KAAxB,CADJ,eAEI,6BAAC,qBAAD,EAAkBA,KAAlB,CAFJ,CADJ,CADJ;AAQH,CATD;;eAWeD,a"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
9
|
+
|
|
8
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
9
12
|
var _emotion = require("emotion");
|
|
13
|
+
|
|
10
14
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
+
|
|
11
16
|
var _Icon = require("@webiny/ui/Icon");
|
|
17
|
+
|
|
12
18
|
var _roundCloud_upload24px = require("./icons/round-cloud_upload-24px.svg");
|
|
19
|
+
|
|
13
20
|
var styles = /*#__PURE__*/(0, _emotion.css)({
|
|
14
21
|
margin: "0 auto",
|
|
15
22
|
paddingTop: 0,
|
|
@@ -47,11 +54,12 @@ var styles = /*#__PURE__*/(0, _emotion.css)({
|
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
56
|
}, "label:styles;");
|
|
57
|
+
|
|
50
58
|
var DropFilesHere = function DropFilesHere(_ref) {
|
|
51
59
|
var onDrop = _ref.onDrop,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
onDragLeave = _ref.onDragLeave,
|
|
61
|
+
empty = _ref.empty,
|
|
62
|
+
onClick = _ref.onClick;
|
|
55
63
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
56
64
|
className: (0, _classnames.default)(styles, {
|
|
57
65
|
empty: empty
|
|
@@ -63,5 +71,6 @@ var DropFilesHere = function DropFilesHere(_ref) {
|
|
|
63
71
|
icon: /*#__PURE__*/_react.default.createElement(_roundCloud_upload24px.ReactComponent, null)
|
|
64
72
|
}), /*#__PURE__*/_react.default.createElement("div", null, "Drop files here"))));
|
|
65
73
|
};
|
|
74
|
+
|
|
66
75
|
var _default = DropFilesHere;
|
|
67
76
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","css","margin","paddingTop","height","zIndex","width","position","backgroundColor","textAlign","borderRadius","left","top","transform","color","display","DropFilesHere","onDrop","onDragLeave","empty","onClick","classNames"],"sources":["DropFilesHere.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\nimport { Icon } from \"@webiny/ui/Icon\";\n\nimport { ReactComponent as UploadIcon } from \"./icons/round-cloud_upload-24px.svg\";\n\nconst styles = css({\n margin: \"0 auto\",\n paddingTop: 0,\n height: \"100%\",\n zIndex: 2,\n width: \"100%\",\n position: \"absolute\",\n backgroundColor: \"var(--mdc-theme-text-hint-on-light)\",\n \"&.empty\": {\n backgroundColor: \"transparent\",\n \"> div\": {\n backgroundColor: \"var(--mdc-theme-surface)\"\n }\n },\n \"> div\": {\n textAlign: \"center\",\n width: 300,\n height: 300,\n backgroundColor: \"var(--mdc-theme-background)\",\n borderRadius: \"50%\",\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translateX(-50%) translateY(-100%)\",\n \"> div\": {\n position: \"absolute\",\n top: 90,\n width: 300,\n color: \"var(--mdc-theme-on-surface)\",\n \"svg.mdc-button__icon\": {\n width: 100,\n display: \"inline-block\",\n color: \"var(--mdc-theme-on-surface)\"\n }\n }\n }\n});\n\nexport interface DropFilesHereProps {\n onDragLeave?: (event?: React.DragEvent<HTMLElement>) => void;\n onDrop?: (event?: React.DragEvent<HTMLElement>) => void;\n empty?: boolean;\n onClick?: (event?: React.MouseEvent<HTMLElement>) => void;\n}\n\nconst DropFilesHere: React.FC<DropFilesHereProps> = ({ onDrop, onDragLeave, empty, onClick }) => {\n return (\n <div\n className={classNames(styles, { empty })}\n onDrop={onDrop}\n onClick={onClick}\n onDragLeave={onDragLeave}\n >\n <div>\n <div>\n <Icon icon={<UploadIcon />} />\n <div>Drop files here</div>\n </div>\n </div>\n </div>\n );\n};\nexport default DropFilesHere;\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["styles","css","margin","paddingTop","height","zIndex","width","position","backgroundColor","textAlign","borderRadius","left","top","transform","color","display","DropFilesHere","onDrop","onDragLeave","empty","onClick","classNames"],"sources":["DropFilesHere.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\nimport { Icon } from \"@webiny/ui/Icon\";\n\nimport { ReactComponent as UploadIcon } from \"./icons/round-cloud_upload-24px.svg\";\n\nconst styles = css({\n margin: \"0 auto\",\n paddingTop: 0,\n height: \"100%\",\n zIndex: 2,\n width: \"100%\",\n position: \"absolute\",\n backgroundColor: \"var(--mdc-theme-text-hint-on-light)\",\n \"&.empty\": {\n backgroundColor: \"transparent\",\n \"> div\": {\n backgroundColor: \"var(--mdc-theme-surface)\"\n }\n },\n \"> div\": {\n textAlign: \"center\",\n width: 300,\n height: 300,\n backgroundColor: \"var(--mdc-theme-background)\",\n borderRadius: \"50%\",\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translateX(-50%) translateY(-100%)\",\n \"> div\": {\n position: \"absolute\",\n top: 90,\n width: 300,\n color: \"var(--mdc-theme-on-surface)\",\n \"svg.mdc-button__icon\": {\n width: 100,\n display: \"inline-block\",\n color: \"var(--mdc-theme-on-surface)\"\n }\n }\n }\n});\n\nexport interface DropFilesHereProps {\n onDragLeave?: (event?: React.DragEvent<HTMLElement>) => void;\n onDrop?: (event?: React.DragEvent<HTMLElement>) => void;\n empty?: boolean;\n onClick?: (event?: React.MouseEvent<HTMLElement>) => void;\n}\n\nconst DropFilesHere: React.FC<DropFilesHereProps> = ({ onDrop, onDragLeave, empty, onClick }) => {\n return (\n <div\n className={classNames(styles, { empty })}\n onDrop={onDrop}\n onClick={onClick}\n onDragLeave={onDragLeave}\n >\n <div>\n <div>\n <Icon icon={<UploadIcon />} />\n <div>Drop files here</div>\n </div>\n </div>\n </div>\n );\n};\nexport default DropFilesHere;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA,IAAMA,MAAM,gBAAG,IAAAC,YAAA,EAAI;EACfC,MAAM,EAAE,QADO;EAEfC,UAAU,EAAE,CAFG;EAGfC,MAAM,EAAE,MAHO;EAIfC,MAAM,EAAE,CAJO;EAKfC,KAAK,EAAE,MALQ;EAMfC,QAAQ,EAAE,UANK;EAOfC,eAAe,EAAE,qCAPF;EAQf,WAAW;IACPA,eAAe,EAAE,aADV;IAEP,SAAS;MACLA,eAAe,EAAE;IADZ;EAFF,CARI;EAcf,SAAS;IACLC,SAAS,EAAE,QADN;IAELH,KAAK,EAAE,GAFF;IAGLF,MAAM,EAAE,GAHH;IAILI,eAAe,EAAE,6BAJZ;IAKLE,YAAY,EAAE,KALT;IAMLH,QAAQ,EAAE,UANL;IAOLI,IAAI,EAAE,KAPD;IAQLC,GAAG,EAAE,KARA;IASLC,SAAS,EAAE,oCATN;IAUL,SAAS;MACLN,QAAQ,EAAE,UADL;MAELK,GAAG,EAAE,EAFA;MAGLN,KAAK,EAAE,GAHF;MAILQ,KAAK,EAAE,6BAJF;MAKL,wBAAwB;QACpBR,KAAK,EAAE,GADa;QAEpBS,OAAO,EAAE,cAFW;QAGpBD,KAAK,EAAE;MAHa;IALnB;EAVJ;AAdM,CAAJ,kBAAf;;AA6CA,IAAME,aAA2C,GAAG,SAA9CA,aAA8C,OAA6C;EAAA,IAA1CC,MAA0C,QAA1CA,MAA0C;EAAA,IAAlCC,WAAkC,QAAlCA,WAAkC;EAAA,IAArBC,KAAqB,QAArBA,KAAqB;EAAA,IAAdC,OAAc,QAAdA,OAAc;EAC7F,oBACI;IACI,SAAS,EAAE,IAAAC,mBAAA,EAAWrB,MAAX,EAAmB;MAAEmB,KAAK,EAALA;IAAF,CAAnB,CADf;IAEI,MAAM,EAAEF,MAFZ;IAGI,OAAO,EAAEG,OAHb;IAII,WAAW,EAAEF;EAJjB,gBAMI,uDACI,uDACI,6BAAC,UAAD;IAAM,IAAI,eAAE,6BAAC,qCAAD;EAAZ,EADJ,eAEI,0CAAK,iBAAL,CAFJ,CADJ,CANJ,CADJ;AAeH,CAhBD;;eAiBeF,a"}
|