solid-ui 2.4.23 → 2.4.24
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/dist/main.js +2159 -5039
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +4 -67
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +59 -137
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +14 -54
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +32 -107
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +0 -92
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js +1 -3
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js +1 -2
- package/lib/acl/styles.js.map +1 -1
- package/lib/chat/bookmarks.js +8 -80
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +109 -180
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +6 -91
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +33 -185
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +37 -150
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +23 -96
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +33 -91
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js +19 -51
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js +0 -2
- package/lib/create/index.js.map +1 -1
- package/lib/debug.js +0 -8
- package/lib/debug.js.map +1 -1
- package/lib/folders.js +4 -27
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +2 -24
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js +3 -72
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js +4 -3
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js +3 -4
- package/lib/iconBase.js.map +1 -1
- package/lib/index.js +5 -46
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js +3 -9
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js +15 -51
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +74 -303
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js +0 -2
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js +7 -55
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/media/index.js +0 -2
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js +13 -33
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js +23 -64
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js +5 -7
- package/lib/ns.js.map +1 -1
- package/lib/pad.js +48 -234
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +10 -65
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +21 -42
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js +1 -8
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js +6 -13
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js +0 -2
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js +8 -5
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js +1 -5
- package/lib/style_multiSelect.js.map +1 -1
- package/lib/table.js +309 -322
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +20 -100
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +4 -52
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js +41 -135
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +13 -34
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +4 -4
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js +0 -8
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js +115 -291
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +12 -41
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.js +3 -9
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +6 -55
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +12 -131
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js +12 -55
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js +1 -15
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +3 -16
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js +0 -12
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +1 -14
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +70 -474
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -21
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js +48 -171
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js +20 -90
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js +2 -9
- package/lib/widgets/widgetHelpers.js.map +1 -1
- package/package.json +28 -28
|
@@ -1,45 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.AccessController = void 0;
|
|
11
|
-
|
|
12
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
|
|
16
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
-
|
|
18
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
-
|
|
20
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
|
|
22
14
|
var _acl = require("./acl");
|
|
23
|
-
|
|
24
15
|
var _rdflib = require("rdflib");
|
|
25
|
-
|
|
26
16
|
var _accessGroups = require("./access-groups");
|
|
27
|
-
|
|
28
17
|
var _aclControl = require("./acl-control");
|
|
29
|
-
|
|
30
18
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
31
|
-
|
|
32
19
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
33
|
-
|
|
34
20
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
35
|
-
|
|
36
21
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
37
|
-
|
|
38
22
|
/**
|
|
39
23
|
* Contains the [[AccessController]] class
|
|
40
24
|
* @packageDocumentation
|
|
41
25
|
*/
|
|
42
|
-
|
|
43
26
|
/**
|
|
44
27
|
* Rendered HTML component used in the databrowser's Sharing pane.
|
|
45
28
|
*/
|
|
@@ -68,7 +51,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
68
51
|
this.rootElement = dom.createElement('div');
|
|
69
52
|
this.rootElement.classList.add(classes.aclGroupContent);
|
|
70
53
|
this.isContainer = targetDoc.uri.slice(-1) === '/'; // Give default for all directories
|
|
71
|
-
|
|
72
54
|
if (defaultHolder && defaultACLDoc) {
|
|
73
55
|
this.isUsingDefaults = true;
|
|
74
56
|
var aclDefaultStore = (0, _acl.adoptACLDefault)(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc);
|
|
@@ -86,7 +68,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
86
68
|
this.defaultsDiffer = !(0, _acl.sameACL)(this.mainCombo.aclMap, this.defaultsCombo.aclMap);
|
|
87
69
|
}
|
|
88
70
|
}
|
|
89
|
-
|
|
90
71
|
(0, _createClass2["default"])(AccessController, [{
|
|
91
72
|
key: "isEditable",
|
|
92
73
|
get: function get() {
|
|
@@ -96,10 +77,8 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
96
77
|
key: "render",
|
|
97
78
|
value: function render() {
|
|
98
79
|
this.rootElement.innerHTML = '';
|
|
99
|
-
|
|
100
80
|
if (this.isUsingDefaults) {
|
|
101
81
|
this.renderStatus("The sharing for this ".concat(this.noun, " is the default for folder "));
|
|
102
|
-
|
|
103
82
|
if (this.defaultHolder) {
|
|
104
83
|
var defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'));
|
|
105
84
|
defaultHolderLink.href = this.defaultHolder.uri;
|
|
@@ -110,29 +89,24 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
110
89
|
} else {
|
|
111
90
|
this.renderStatus('');
|
|
112
91
|
}
|
|
113
|
-
|
|
114
92
|
this.rootElement.appendChild(this.mainCombo.render());
|
|
115
|
-
|
|
116
93
|
if (this.defaultsCombo && this.defaultsDiffer) {
|
|
117
94
|
this.rootElement.appendChild(this.renderRemoveDefaultsController());
|
|
118
95
|
this.rootElement.appendChild(this.defaultsCombo.render());
|
|
119
96
|
} else if (this.isEditable && this.isContainer) {
|
|
120
97
|
this.rootElement.appendChild(this.renderAddDefaultsController());
|
|
121
98
|
}
|
|
122
|
-
|
|
123
99
|
if (!this.targetIsProtected && this.isUsingDefaults) {
|
|
124
100
|
this.rootElement.appendChild(this.renderAddAclsController());
|
|
125
101
|
} else if (!this.targetIsProtected) {
|
|
126
102
|
this.rootElement.appendChild(this.renderRemoveAclsController());
|
|
127
103
|
}
|
|
128
|
-
|
|
129
104
|
return this.rootElement;
|
|
130
105
|
}
|
|
131
106
|
}, {
|
|
132
107
|
key: "renderRemoveAclsController",
|
|
133
108
|
value: function renderRemoveAclsController() {
|
|
134
109
|
var _this = this;
|
|
135
|
-
|
|
136
110
|
var useDefaultButton = this.dom.createElement('button');
|
|
137
111
|
useDefaultButton.innerText = "Remove custom sharing settings for this ".concat(this.noun, " -- just use default").concat(this.prospectiveDefaultHolder ? " for ".concat(utils.label(this.prospectiveDefaultHolder)) : '');
|
|
138
112
|
useDefaultButton.classList.add(this.classes.bigButton);
|
|
@@ -149,7 +123,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
149
123
|
key: "renderAddAclsController",
|
|
150
124
|
value: function renderAddAclsController() {
|
|
151
125
|
var _this2 = this;
|
|
152
|
-
|
|
153
126
|
var addAclButton = this.dom.createElement('button');
|
|
154
127
|
addAclButton.innerText = "Set specific sharing for this ".concat(this.noun);
|
|
155
128
|
addAclButton.classList.add(this.classes.bigButton);
|
|
@@ -166,7 +139,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
166
139
|
key: "renderAddDefaultsController",
|
|
167
140
|
value: function renderAddDefaultsController() {
|
|
168
141
|
var _this3 = this;
|
|
169
|
-
|
|
170
142
|
var containerElement = this.dom.createElement('div');
|
|
171
143
|
containerElement.classList.add(this.classes.defaultsController);
|
|
172
144
|
var noticeElement = containerElement.appendChild(this.dom.createElement('div'));
|
|
@@ -186,7 +158,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
186
158
|
key: "renderRemoveDefaultsController",
|
|
187
159
|
value: function renderRemoveDefaultsController() {
|
|
188
160
|
var _this4 = this;
|
|
189
|
-
|
|
190
161
|
var containerElement = this.dom.createElement('div');
|
|
191
162
|
containerElement.classList.add(this.classes.defaultsController);
|
|
192
163
|
var noticeElement = containerElement.appendChild(this.dom.createElement('div'));
|
|
@@ -208,7 +179,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
208
179
|
key: "renderTemporaryStatus",
|
|
209
180
|
value: function renderTemporaryStatus(message) {
|
|
210
181
|
var _this5 = this;
|
|
211
|
-
|
|
212
182
|
// @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87
|
|
213
183
|
this.statusElement.classList.add(this.classes.aclControlBoxStatusRevealed);
|
|
214
184
|
this.statusElement.innerText = message;
|
|
@@ -232,9 +202,7 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
232
202
|
value: function () {
|
|
233
203
|
var _addAcls = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
234
204
|
var _this6 = this;
|
|
235
|
-
|
|
236
205
|
var message, aclGraph, _message;
|
|
237
|
-
|
|
238
206
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
239
207
|
while (1) {
|
|
240
208
|
switch (_context.prev = _context.next) {
|
|
@@ -243,11 +211,9 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
243
211
|
_context.next = 4;
|
|
244
212
|
break;
|
|
245
213
|
}
|
|
246
|
-
|
|
247
214
|
message = 'Unable to find defaults to copy';
|
|
248
215
|
debug.error(message);
|
|
249
216
|
return _context.abrupt("return", Promise.reject(message));
|
|
250
|
-
|
|
251
217
|
case 4:
|
|
252
218
|
aclGraph = (0, _acl.adoptACLDefault)(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc);
|
|
253
219
|
aclGraph.statements.forEach(function (st) {
|
|
@@ -256,18 +222,15 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
256
222
|
_context.prev = 6;
|
|
257
223
|
_context.next = 9;
|
|
258
224
|
return this.store.fetcher.putBack(this.targetACLDoc);
|
|
259
|
-
|
|
260
225
|
case 9:
|
|
261
226
|
this.isUsingDefaults = false;
|
|
262
227
|
return _context.abrupt("return", Promise.resolve());
|
|
263
|
-
|
|
264
228
|
case 13:
|
|
265
229
|
_context.prev = 13;
|
|
266
230
|
_context.t0 = _context["catch"](6);
|
|
267
231
|
_message = " Error writing back access control file! ".concat(_context.t0);
|
|
268
232
|
debug.error(_message);
|
|
269
233
|
return _context.abrupt("return", Promise.reject(_message));
|
|
270
|
-
|
|
271
234
|
case 18:
|
|
272
235
|
case "end":
|
|
273
236
|
return _context.stop();
|
|
@@ -275,11 +238,9 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
275
238
|
}
|
|
276
239
|
}, _callee, this, [[6, 13]]);
|
|
277
240
|
}));
|
|
278
|
-
|
|
279
241
|
function addAcls() {
|
|
280
242
|
return _addAcls.apply(this, arguments);
|
|
281
243
|
}
|
|
282
|
-
|
|
283
244
|
return addAcls;
|
|
284
245
|
}()
|
|
285
246
|
}, {
|
|
@@ -294,7 +255,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
294
255
|
defaults: true
|
|
295
256
|
});
|
|
296
257
|
this.defaultsDiffer = true;
|
|
297
|
-
|
|
298
258
|
case 2:
|
|
299
259
|
case "end":
|
|
300
260
|
return _context2.stop();
|
|
@@ -302,11 +262,9 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
302
262
|
}
|
|
303
263
|
}, _callee2, this);
|
|
304
264
|
}));
|
|
305
|
-
|
|
306
265
|
function addDefaults() {
|
|
307
266
|
return _addDefaults.apply(this, arguments);
|
|
308
267
|
}
|
|
309
|
-
|
|
310
268
|
return addDefaults;
|
|
311
269
|
}()
|
|
312
270
|
}, {
|
|
@@ -321,35 +279,29 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
321
279
|
_context3.prev = 0;
|
|
322
280
|
_context3.next = 3;
|
|
323
281
|
return this.store.fetcher["delete"](this.targetACLDoc.uri, {});
|
|
324
|
-
|
|
325
282
|
case 3:
|
|
326
283
|
this.isUsingDefaults = true;
|
|
327
284
|
_context3.prev = 4;
|
|
328
285
|
_context3.next = 7;
|
|
329
286
|
return (0, _acl.getProspectiveHolder)(this.targetDoc.uri);
|
|
330
|
-
|
|
331
287
|
case 7:
|
|
332
288
|
this.prospectiveDefaultHolder = _context3.sent;
|
|
333
289
|
_context3.next = 13;
|
|
334
290
|
break;
|
|
335
|
-
|
|
336
291
|
case 10:
|
|
337
292
|
_context3.prev = 10;
|
|
338
293
|
_context3.t0 = _context3["catch"](4);
|
|
339
294
|
// No need to show this error in status, but good to warn about it in console
|
|
340
295
|
debug.warn(_context3.t0);
|
|
341
|
-
|
|
342
296
|
case 13:
|
|
343
297
|
_context3.next = 20;
|
|
344
298
|
break;
|
|
345
|
-
|
|
346
299
|
case 15:
|
|
347
300
|
_context3.prev = 15;
|
|
348
301
|
_context3.t1 = _context3["catch"](0);
|
|
349
302
|
message = "Error deleting access control file: ".concat(this.targetACLDoc, ": ").concat(_context3.t1);
|
|
350
303
|
debug.error(message);
|
|
351
304
|
return _context3.abrupt("return", Promise.reject(message));
|
|
352
|
-
|
|
353
305
|
case 20:
|
|
354
306
|
case "end":
|
|
355
307
|
return _context3.stop();
|
|
@@ -357,11 +309,9 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
357
309
|
}
|
|
358
310
|
}, _callee3, this, [[0, 15], [4, 10]]);
|
|
359
311
|
}));
|
|
360
|
-
|
|
361
312
|
function removeAcls() {
|
|
362
313
|
return _removeAcls.apply(this, arguments);
|
|
363
314
|
}
|
|
364
|
-
|
|
365
315
|
return removeAcls;
|
|
366
316
|
}()
|
|
367
317
|
}, {
|
|
@@ -379,11 +329,9 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
379
329
|
this.defaultsDiffer = false;
|
|
380
330
|
_context4.next = 6;
|
|
381
331
|
return this.save();
|
|
382
|
-
|
|
383
332
|
case 6:
|
|
384
333
|
_context4.next = 14;
|
|
385
334
|
break;
|
|
386
|
-
|
|
387
335
|
case 8:
|
|
388
336
|
_context4.prev = 8;
|
|
389
337
|
_context4.t0 = _context4["catch"](1);
|
|
@@ -391,7 +339,6 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
391
339
|
this.defaultsDiffer = true;
|
|
392
340
|
debug.error(_context4.t0);
|
|
393
341
|
return _context4.abrupt("return", Promise.reject(_context4.t0));
|
|
394
|
-
|
|
395
342
|
case 14:
|
|
396
343
|
case "end":
|
|
397
344
|
return _context4.stop();
|
|
@@ -399,21 +346,17 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
399
346
|
}
|
|
400
347
|
}, _callee4, this, [[1, 8]]);
|
|
401
348
|
}));
|
|
402
|
-
|
|
403
349
|
function removeDefaults() {
|
|
404
350
|
return _removeDefaults.apply(this, arguments);
|
|
405
351
|
}
|
|
406
|
-
|
|
407
352
|
return removeDefaults;
|
|
408
353
|
}()
|
|
409
354
|
}, {
|
|
410
355
|
key: "save",
|
|
411
356
|
value: function save() {
|
|
412
357
|
var _this7 = this;
|
|
413
|
-
|
|
414
358
|
// build graph
|
|
415
359
|
var newAClGraph = (0, _rdflib.graph)();
|
|
416
|
-
|
|
417
360
|
if (!this.isContainer) {
|
|
418
361
|
(0, _acl.makeACLGraphbyCombo)(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true);
|
|
419
362
|
} else if (this.defaultsCombo && this.defaultsDiffer) {
|
|
@@ -423,32 +366,27 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
423
366
|
} else {
|
|
424
367
|
// Linked controls
|
|
425
368
|
(0, _acl.makeACLGraphbyCombo)(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true);
|
|
426
|
-
}
|
|
427
|
-
|
|
369
|
+
}
|
|
428
370
|
|
|
371
|
+
// add authenticated fetcher
|
|
429
372
|
newAClGraph.fetcher = (0, _rdflib.fetcher)(newAClGraph, {
|
|
430
373
|
fetch: this.store.fetcher._fetch
|
|
431
374
|
});
|
|
432
|
-
var updater = newAClGraph.updater || new _rdflib.UpdateManager(newAClGraph);
|
|
375
|
+
var updater = newAClGraph.updater || new _rdflib.UpdateManager(newAClGraph);
|
|
433
376
|
|
|
377
|
+
// save ACL resource
|
|
434
378
|
return new Promise(function (resolve, reject) {
|
|
435
379
|
updater.put(_this7.targetACLDoc, newAClGraph.statementsMatching(undefined, undefined, undefined, _this7.targetACLDoc), 'text/turtle', function (uri, ok, message) {
|
|
436
380
|
if (!ok) {
|
|
437
381
|
return reject(new Error("ACL file save failed: ".concat(message)));
|
|
438
382
|
}
|
|
439
|
-
|
|
440
383
|
_this7.store.fetcher.unload(_this7.targetACLDoc);
|
|
441
|
-
|
|
442
384
|
_this7.store.add(newAClGraph.statements);
|
|
443
|
-
|
|
444
385
|
_this7.store.fetcher.requested[_this7.targetACLDoc.uri] = 'done'; // missing: save headers
|
|
445
|
-
|
|
446
386
|
_this7.mainCombo.store = _this7.store;
|
|
447
|
-
|
|
448
387
|
if (_this7.defaultsCombo) {
|
|
449
388
|
_this7.defaultsCombo.store = _this7.store;
|
|
450
389
|
}
|
|
451
|
-
|
|
452
390
|
_this7.defaultsDiffer = !!_this7.defaultsCombo && !(0, _acl.sameACL)(_this7.mainCombo.aclMap, _this7.defaultsCombo.aclMap);
|
|
453
391
|
debug.log('ACL modification: success!');
|
|
454
392
|
resolve();
|
|
@@ -458,6 +396,5 @@ var AccessController = /*#__PURE__*/function () {
|
|
|
458
396
|
}]);
|
|
459
397
|
return AccessController;
|
|
460
398
|
}();
|
|
461
|
-
|
|
462
399
|
exports.AccessController = AccessController;
|
|
463
400
|
//# sourceMappingURL=access-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-controller.js","names":["AccessController","subject","noun","context","statusElement","classes","targetIsProtected","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","prospectiveDefaultHolder","store","dom","rootElement","createElement","classList","add","aclGroupContent","isContainer","uri","slice","isUsingDefaults","aclDefaultStore","adoptACLDefault","mainCombo","AccessGroups","defaults","defaultsCombo","defaultsDiffer","sameACL","aclMap","innerHTML","renderStatus","defaultHolderLink","appendChild","href","innerText","shortNameForFolder","render","renderRemoveDefaultsController","isEditable","renderAddDefaultsController","renderAddAclsController","renderRemoveAclsController","useDefaultButton","utils","label","bigButton","addEventListener","removeAcls","then","error","addAclButton","addAcls","containerElement","defaultsController","noticeElement","defaultsControllerNotice","button","addDefaults","removeDefaults","message","aclControlBoxStatusRevealed","temporaryStatusInit","setTimeout","temporaryStatusEnd","toggle","debug","Promise","reject","aclGraph","statements","forEach","st","predicate","object","fetcher","putBack","resolve","getProspectiveHolder","warn","fallbackCombo","save","newAClGraph","graph","makeACLGraphbyCombo","byCombo","fetch","_fetch","updater","UpdateManager","put","statementsMatching","undefined","ok","Error","unload","requested","log"],"sources":["../../src/acl/access-controller.ts"],"sourcesContent":["/**\n * Contains the [[AccessController]] class\n * @packageDocumentation\n */\n\nimport { adoptACLDefault, getProspectiveHolder, makeACLGraphbyCombo, sameACL } from './acl'\nimport { fetcher, graph, NamedNode, UpdateManager } from 'rdflib'\nimport { AccessGroups } from './access-groups'\nimport { DataBrowserContext } from 'pane-registry'\nimport { shortNameForFolder } from './acl-control'\nimport * as utils from '../utils'\nimport * as debug from '../debug'\n\n/**\n * Rendered HTML component used in the databrowser's Sharing pane.\n */\nexport class AccessController {\n public mainCombo: AccessGroups\n public defaultsCombo: AccessGroups | null\n private readonly isContainer: boolean\n private defaultsDiffer: boolean\n private readonly rootElement: HTMLElement\n private isUsingDefaults: boolean\n\n constructor (\n public subject: NamedNode,\n public noun: string,\n public context: DataBrowserContext,\n private statusElement: HTMLElement,\n public classes: Record<string, string>,\n public targetIsProtected: boolean,\n private targetDoc: NamedNode,\n private targetACLDoc: NamedNode,\n private defaultHolder: NamedNode | null,\n private defaultACLDoc: NamedNode | null,\n private prospectiveDefaultHolder: NamedNode | undefined,\n public store,\n public dom\n ) {\n this.rootElement = dom.createElement('div')\n this.rootElement.classList.add(classes.aclGroupContent)\n this.isContainer = targetDoc.uri.slice(-1) === '/' // Give default for all directories\n if (defaultHolder && defaultACLDoc) {\n this.isUsingDefaults = true\n const aclDefaultStore = adoptACLDefault(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc)\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, aclDefaultStore, { defaults: this.isContainer })\n this.defaultsCombo = null\n this.defaultsDiffer = false\n } else {\n this.isUsingDefaults = false\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, store)\n this.defaultsCombo = new AccessGroups(targetDoc, targetACLDoc, this, store, { defaults: this.isContainer })\n this.defaultsDiffer = !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n }\n }\n\n public get isEditable (): boolean {\n return !this.isUsingDefaults\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n if (this.isUsingDefaults) {\n this.renderStatus(`The sharing for this ${this.noun} is the default for folder `)\n if (this.defaultHolder) {\n const defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'))\n defaultHolderLink.href = this.defaultHolder.uri\n defaultHolderLink.innerText = shortNameForFolder(this.defaultHolder)\n }\n } else if (!this.defaultsDiffer && this.isContainer) {\n this.renderStatus('This is also the default for things in this folder.')\n } else {\n this.renderStatus('')\n }\n this.rootElement.appendChild(this.mainCombo.render())\n if (this.defaultsCombo && this.defaultsDiffer) {\n this.rootElement.appendChild(this.renderRemoveDefaultsController())\n this.rootElement.appendChild(this.defaultsCombo.render())\n } else if (this.isEditable && this.isContainer) {\n this.rootElement.appendChild(this.renderAddDefaultsController())\n }\n if (!this.targetIsProtected && this.isUsingDefaults) {\n this.rootElement.appendChild(this.renderAddAclsController())\n } else if (!this.targetIsProtected) {\n this.rootElement.appendChild(this.renderRemoveAclsController())\n }\n return this.rootElement\n }\n\n private renderRemoveAclsController (): HTMLElement {\n const useDefaultButton = this.dom.createElement('button')\n useDefaultButton.innerText = `Remove custom sharing settings for this ${this.noun} -- just use default${this.prospectiveDefaultHolder ? ` for ${utils.label(this.prospectiveDefaultHolder)}` : ''}`\n useDefaultButton.classList.add(this.classes.bigButton)\n useDefaultButton.addEventListener('click', () => this.removeAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return useDefaultButton\n }\n\n private renderAddAclsController (): HTMLElement {\n const addAclButton = this.dom.createElement('button')\n addAclButton.innerText = `Set specific sharing for this ${this.noun}`\n addAclButton.classList.add(this.classes.bigButton)\n addAclButton.addEventListener('click', () => this.addAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return addAclButton\n }\n\n private renderAddDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Sharing for things within the folder currently tracks sharing for the folder.'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set the sharing of folder contents separately from the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.addDefaults()\n .then(() => this.render()))\n return containerElement\n }\n\n private renderRemoveDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Access to things within this folder:'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set default for folder contents to just track the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.removeDefaults()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return containerElement\n }\n\n public renderTemporaryStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.add(this.classes.aclControlBoxStatusRevealed)\n this.statusElement.innerText = message\n this.statusElement.classList.add(this.classes.temporaryStatusInit)\n setTimeout(() => {\n this.statusElement.classList.add(this.classes.temporaryStatusEnd)\n })\n setTimeout(() => {\n this.statusElement.innerText = ''\n }, 5000)\n }\n\n public renderStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.toggle(this.classes.aclControlBoxStatusRevealed, !!message)\n this.statusElement.innerText = message\n }\n\n private async addAcls (): Promise<void> {\n if (!this.defaultHolder || !this.defaultACLDoc) {\n const message = 'Unable to find defaults to copy'\n debug.error(message)\n return Promise.reject(message)\n }\n const aclGraph = adoptACLDefault(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc)\n aclGraph.statements.forEach(st => this.store.add(st.subject, st.predicate, st.object, this.targetACLDoc))\n try {\n await this.store.fetcher.putBack(this.targetACLDoc)\n this.isUsingDefaults = false\n return Promise.resolve()\n } catch (error) {\n const message = ` Error writing back access control file! ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async addDefaults (): Promise<void> {\n this.defaultsCombo = new AccessGroups(this.targetDoc, this.targetACLDoc, this, this.store, { defaults: true })\n this.defaultsDiffer = true\n }\n\n private async removeAcls (): Promise<void> {\n try {\n await this.store.fetcher.delete(this.targetACLDoc.uri, {})\n this.isUsingDefaults = true\n try {\n this.prospectiveDefaultHolder = await getProspectiveHolder(this.targetDoc.uri)\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n debug.warn(error)\n }\n } catch (error) {\n const message = `Error deleting access control file: ${this.targetACLDoc}: ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async removeDefaults (): Promise<void> {\n const fallbackCombo = this.defaultsCombo\n try {\n this.defaultsCombo = null\n this.defaultsDiffer = false\n await this.save()\n } catch (error) {\n this.defaultsCombo = fallbackCombo\n this.defaultsDiffer = true\n debug.error(error)\n return Promise.reject(error)\n }\n }\n\n public save (): Promise<void> {\n // build graph\n const newAClGraph = graph()\n if (!this.isContainer) {\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n } else if (this.defaultsCombo && this.defaultsDiffer) {\n // Pair of controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.defaultsCombo.byCombo, this.targetACLDoc, false, true)\n } else {\n // Linked controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true)\n }\n\n // add authenticated fetcher\n newAClGraph.fetcher = fetcher(newAClGraph, { fetch: this.store.fetcher._fetch })\n const updater = newAClGraph.updater || new UpdateManager(newAClGraph)\n\n // save ACL resource\n return new Promise((resolve, reject) => {\n updater.put(\n this.targetACLDoc,\n newAClGraph.statementsMatching(undefined, undefined, undefined, this.targetACLDoc),\n 'text/turtle',\n (uri, ok, message) => {\n if (!ok) {\n return reject(new Error(`ACL file save failed: ${message}`))\n }\n this.store.fetcher.unload(this.targetACLDoc)\n this.store.add(newAClGraph.statements)\n this.store.fetcher.requested[this.targetACLDoc.uri] = 'done' // missing: save headers\n this.mainCombo.store = this.store\n if (this.defaultsCombo) {\n this.defaultsCombo.store = this.store\n }\n this.defaultsDiffer = !!this.defaultsCombo && !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n debug.log('ACL modification: success!')\n resolve()\n }\n )\n })\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"access-controller.js","names":["AccessController","subject","noun","context","statusElement","classes","targetIsProtected","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","prospectiveDefaultHolder","store","dom","rootElement","createElement","classList","add","aclGroupContent","isContainer","uri","slice","isUsingDefaults","aclDefaultStore","adoptACLDefault","mainCombo","AccessGroups","defaults","defaultsCombo","defaultsDiffer","sameACL","aclMap","innerHTML","renderStatus","defaultHolderLink","appendChild","href","innerText","shortNameForFolder","render","renderRemoveDefaultsController","isEditable","renderAddDefaultsController","renderAddAclsController","renderRemoveAclsController","useDefaultButton","utils","label","bigButton","addEventListener","removeAcls","then","error","addAclButton","addAcls","containerElement","defaultsController","noticeElement","defaultsControllerNotice","button","addDefaults","removeDefaults","message","aclControlBoxStatusRevealed","temporaryStatusInit","setTimeout","temporaryStatusEnd","toggle","debug","Promise","reject","aclGraph","statements","forEach","st","predicate","object","fetcher","putBack","resolve","getProspectiveHolder","warn","fallbackCombo","save","newAClGraph","graph","makeACLGraphbyCombo","byCombo","fetch","_fetch","updater","UpdateManager","put","statementsMatching","undefined","ok","Error","unload","requested","log"],"sources":["../../src/acl/access-controller.ts"],"sourcesContent":["/**\n * Contains the [[AccessController]] class\n * @packageDocumentation\n */\n\nimport { adoptACLDefault, getProspectiveHolder, makeACLGraphbyCombo, sameACL } from './acl'\nimport { fetcher, graph, NamedNode, UpdateManager } from 'rdflib'\nimport { AccessGroups } from './access-groups'\nimport { DataBrowserContext } from 'pane-registry'\nimport { shortNameForFolder } from './acl-control'\nimport * as utils from '../utils'\nimport * as debug from '../debug'\n\n/**\n * Rendered HTML component used in the databrowser's Sharing pane.\n */\nexport class AccessController {\n public mainCombo: AccessGroups\n public defaultsCombo: AccessGroups | null\n private readonly isContainer: boolean\n private defaultsDiffer: boolean\n private readonly rootElement: HTMLElement\n private isUsingDefaults: boolean\n\n constructor (\n public subject: NamedNode,\n public noun: string,\n public context: DataBrowserContext,\n private statusElement: HTMLElement,\n public classes: Record<string, string>,\n public targetIsProtected: boolean,\n private targetDoc: NamedNode,\n private targetACLDoc: NamedNode,\n private defaultHolder: NamedNode | null,\n private defaultACLDoc: NamedNode | null,\n private prospectiveDefaultHolder: NamedNode | undefined,\n public store,\n public dom\n ) {\n this.rootElement = dom.createElement('div')\n this.rootElement.classList.add(classes.aclGroupContent)\n this.isContainer = targetDoc.uri.slice(-1) === '/' // Give default for all directories\n if (defaultHolder && defaultACLDoc) {\n this.isUsingDefaults = true\n const aclDefaultStore = adoptACLDefault(this.targetDoc, targetACLDoc, defaultHolder, defaultACLDoc)\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, aclDefaultStore, { defaults: this.isContainer })\n this.defaultsCombo = null\n this.defaultsDiffer = false\n } else {\n this.isUsingDefaults = false\n this.mainCombo = new AccessGroups(targetDoc, targetACLDoc, this, store)\n this.defaultsCombo = new AccessGroups(targetDoc, targetACLDoc, this, store, { defaults: this.isContainer })\n this.defaultsDiffer = !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n }\n }\n\n public get isEditable (): boolean {\n return !this.isUsingDefaults\n }\n\n public render (): HTMLElement {\n this.rootElement.innerHTML = ''\n if (this.isUsingDefaults) {\n this.renderStatus(`The sharing for this ${this.noun} is the default for folder `)\n if (this.defaultHolder) {\n const defaultHolderLink = this.statusElement.appendChild(this.dom.createElement('a'))\n defaultHolderLink.href = this.defaultHolder.uri\n defaultHolderLink.innerText = shortNameForFolder(this.defaultHolder)\n }\n } else if (!this.defaultsDiffer && this.isContainer) {\n this.renderStatus('This is also the default for things in this folder.')\n } else {\n this.renderStatus('')\n }\n this.rootElement.appendChild(this.mainCombo.render())\n if (this.defaultsCombo && this.defaultsDiffer) {\n this.rootElement.appendChild(this.renderRemoveDefaultsController())\n this.rootElement.appendChild(this.defaultsCombo.render())\n } else if (this.isEditable && this.isContainer) {\n this.rootElement.appendChild(this.renderAddDefaultsController())\n }\n if (!this.targetIsProtected && this.isUsingDefaults) {\n this.rootElement.appendChild(this.renderAddAclsController())\n } else if (!this.targetIsProtected) {\n this.rootElement.appendChild(this.renderRemoveAclsController())\n }\n return this.rootElement\n }\n\n private renderRemoveAclsController (): HTMLElement {\n const useDefaultButton = this.dom.createElement('button')\n useDefaultButton.innerText = `Remove custom sharing settings for this ${this.noun} -- just use default${this.prospectiveDefaultHolder ? ` for ${utils.label(this.prospectiveDefaultHolder)}` : ''}`\n useDefaultButton.classList.add(this.classes.bigButton)\n useDefaultButton.addEventListener('click', () => this.removeAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return useDefaultButton\n }\n\n private renderAddAclsController (): HTMLElement {\n const addAclButton = this.dom.createElement('button')\n addAclButton.innerText = `Set specific sharing for this ${this.noun}`\n addAclButton.classList.add(this.classes.bigButton)\n addAclButton.addEventListener('click', () => this.addAcls()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return addAclButton\n }\n\n private renderAddDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Sharing for things within the folder currently tracks sharing for the folder.'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set the sharing of folder contents separately from the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.addDefaults()\n .then(() => this.render()))\n return containerElement\n }\n\n private renderRemoveDefaultsController (): HTMLElement {\n const containerElement = this.dom.createElement('div')\n containerElement.classList.add(this.classes.defaultsController)\n\n const noticeElement = containerElement.appendChild(this.dom.createElement('div'))\n noticeElement.innerText = 'Access to things within this folder:'\n noticeElement.classList.add(this.classes.defaultsControllerNotice)\n\n const button = containerElement.appendChild(this.dom.createElement('button'))\n button.innerText = 'Set default for folder contents to just track the sharing for the folder'\n button.classList.add(this.classes.bigButton)\n button.addEventListener('click', () => this.removeDefaults()\n .then(() => this.render())\n .catch(error => this.renderStatus(error)))\n return containerElement\n }\n\n public renderTemporaryStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.add(this.classes.aclControlBoxStatusRevealed)\n this.statusElement.innerText = message\n this.statusElement.classList.add(this.classes.temporaryStatusInit)\n setTimeout(() => {\n this.statusElement.classList.add(this.classes.temporaryStatusEnd)\n })\n setTimeout(() => {\n this.statusElement.innerText = ''\n }, 5000)\n }\n\n public renderStatus (message: string): void {\n // @@ TODO Introduce better system for error notification to user https://github.com/solidos/mashlib/issues/87\n this.statusElement.classList.toggle(this.classes.aclControlBoxStatusRevealed, !!message)\n this.statusElement.innerText = message\n }\n\n private async addAcls (): Promise<void> {\n if (!this.defaultHolder || !this.defaultACLDoc) {\n const message = 'Unable to find defaults to copy'\n debug.error(message)\n return Promise.reject(message)\n }\n const aclGraph = adoptACLDefault(this.targetDoc, this.targetACLDoc, this.defaultHolder, this.defaultACLDoc)\n aclGraph.statements.forEach(st => this.store.add(st.subject, st.predicate, st.object, this.targetACLDoc))\n try {\n await this.store.fetcher.putBack(this.targetACLDoc)\n this.isUsingDefaults = false\n return Promise.resolve()\n } catch (error) {\n const message = ` Error writing back access control file! ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async addDefaults (): Promise<void> {\n this.defaultsCombo = new AccessGroups(this.targetDoc, this.targetACLDoc, this, this.store, { defaults: true })\n this.defaultsDiffer = true\n }\n\n private async removeAcls (): Promise<void> {\n try {\n await this.store.fetcher.delete(this.targetACLDoc.uri, {})\n this.isUsingDefaults = true\n try {\n this.prospectiveDefaultHolder = await getProspectiveHolder(this.targetDoc.uri)\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n debug.warn(error)\n }\n } catch (error) {\n const message = `Error deleting access control file: ${this.targetACLDoc}: ${error}`\n debug.error(message)\n return Promise.reject(message)\n }\n }\n\n private async removeDefaults (): Promise<void> {\n const fallbackCombo = this.defaultsCombo\n try {\n this.defaultsCombo = null\n this.defaultsDiffer = false\n await this.save()\n } catch (error) {\n this.defaultsCombo = fallbackCombo\n this.defaultsDiffer = true\n debug.error(error)\n return Promise.reject(error)\n }\n }\n\n public save (): Promise<void> {\n // build graph\n const newAClGraph = graph()\n if (!this.isContainer) {\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n } else if (this.defaultsCombo && this.defaultsDiffer) {\n // Pair of controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true)\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.defaultsCombo.byCombo, this.targetACLDoc, false, true)\n } else {\n // Linked controls\n makeACLGraphbyCombo(newAClGraph, this.targetDoc, this.mainCombo.byCombo, this.targetACLDoc, true, true)\n }\n\n // add authenticated fetcher\n newAClGraph.fetcher = fetcher(newAClGraph, { fetch: this.store.fetcher._fetch })\n const updater = newAClGraph.updater || new UpdateManager(newAClGraph)\n\n // save ACL resource\n return new Promise((resolve, reject) => {\n updater.put(\n this.targetACLDoc,\n newAClGraph.statementsMatching(undefined, undefined, undefined, this.targetACLDoc),\n 'text/turtle',\n (uri, ok, message) => {\n if (!ok) {\n return reject(new Error(`ACL file save failed: ${message}`))\n }\n this.store.fetcher.unload(this.targetACLDoc)\n this.store.add(newAClGraph.statements)\n this.store.fetcher.requested[this.targetACLDoc.uri] = 'done' // missing: save headers\n this.mainCombo.store = this.store\n if (this.defaultsCombo) {\n this.defaultsCombo.store = this.store\n }\n this.defaultsDiffer = !!this.defaultsCombo && !sameACL(this.mainCombo.aclMap, this.defaultsCombo.aclMap)\n debug.log('ACL modification: success!')\n resolve()\n }\n )\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAKA;AACA;AACA;AAEA;AACA;AACA;AAAiC;AAAA;AAXjC;AACA;AACA;AACA;AAUA;AACA;AACA;AAFA,IAGaA,gBAAgB;EAQ3B,0BACSC,OAAkB,EAClBC,IAAY,EACZC,OAA2B,EAC1BC,aAA0B,EAC3BC,OAA+B,EAC/BC,iBAA0B,EACzBC,SAAoB,EACpBC,YAAuB,EACvBC,aAA+B,EAC/BC,aAA+B,EAC/BC,wBAA+C,EAChDC,KAAK,EACLC,GAAG,EACV;IAAA;IAAA,KAbOZ,OAAkB,GAAlBA,OAAkB;IAAA,KAClBC,IAAY,GAAZA,IAAY;IAAA,KACZC,OAA2B,GAA3BA,OAA2B;IAAA,KAC1BC,aAA0B,GAA1BA,aAA0B;IAAA,KAC3BC,OAA+B,GAA/BA,OAA+B;IAAA,KAC/BC,iBAA0B,GAA1BA,iBAA0B;IAAA,KACzBC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,YAAuB,GAAvBA,YAAuB;IAAA,KACvBC,aAA+B,GAA/BA,aAA+B;IAAA,KAC/BC,aAA+B,GAA/BA,aAA+B;IAAA,KAC/BC,wBAA+C,GAA/CA,wBAA+C;IAAA,KAChDC,KAAK,GAALA,KAAK;IAAA,KACLC,GAAG,GAAHA,GAAG;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAEV,IAAI,CAACC,WAAW,GAAGD,GAAG,CAACE,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAI,CAACD,WAAW,CAACE,SAAS,CAACC,GAAG,CAACZ,OAAO,CAACa,eAAe,CAAC;IACvD,IAAI,CAACC,WAAW,GAAGZ,SAAS,CAACa,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAC;IACnD,IAAIZ,aAAa,IAAIC,aAAa,EAAE;MAClC,IAAI,CAACY,eAAe,GAAG,IAAI;MAC3B,IAAMC,eAAe,GAAG,IAAAC,oBAAe,EAAC,IAAI,CAACjB,SAAS,EAAEC,YAAY,EAAEC,aAAa,EAAEC,aAAa,CAAC;MACnG,IAAI,CAACe,SAAS,GAAG,IAAIC,0BAAY,CAACnB,SAAS,EAAEC,YAAY,EAAE,IAAI,EAAEe,eAAe,EAAE;QAAEI,QAAQ,EAAE,IAAI,CAACR;MAAY,CAAC,CAAC;MACjH,IAAI,CAACS,aAAa,GAAG,IAAI;MACzB,IAAI,CAACC,cAAc,GAAG,KAAK;IAC7B,CAAC,MAAM;MACL,IAAI,CAACP,eAAe,GAAG,KAAK;MAC5B,IAAI,CAACG,SAAS,GAAG,IAAIC,0BAAY,CAACnB,SAAS,EAAEC,YAAY,EAAE,IAAI,EAAEI,KAAK,CAAC;MACvE,IAAI,CAACgB,aAAa,GAAG,IAAIF,0BAAY,CAACnB,SAAS,EAAEC,YAAY,EAAE,IAAI,EAAEI,KAAK,EAAE;QAAEe,QAAQ,EAAE,IAAI,CAACR;MAAY,CAAC,CAAC;MAC3G,IAAI,CAACU,cAAc,GAAG,CAAC,IAAAC,YAAO,EAAC,IAAI,CAACL,SAAS,CAACM,MAAM,EAAE,IAAI,CAACH,aAAa,CAACG,MAAM,CAAC;IAClF;EACF;EAAC;IAAA;IAAA,KAED,eAAkC;MAChC,OAAO,CAAC,IAAI,CAACT,eAAe;IAC9B;EAAC;IAAA;IAAA,OAED,kBAA8B;MAC5B,IAAI,CAACR,WAAW,CAACkB,SAAS,GAAG,EAAE;MAC/B,IAAI,IAAI,CAACV,eAAe,EAAE;QACxB,IAAI,CAACW,YAAY,gCAAyB,IAAI,CAAC/B,IAAI,iCAA8B;QACjF,IAAI,IAAI,CAACO,aAAa,EAAE;UACtB,IAAMyB,iBAAiB,GAAG,IAAI,CAAC9B,aAAa,CAAC+B,WAAW,CAAC,IAAI,CAACtB,GAAG,CAACE,aAAa,CAAC,GAAG,CAAC,CAAC;UACrFmB,iBAAiB,CAACE,IAAI,GAAG,IAAI,CAAC3B,aAAa,CAACW,GAAG;UAC/Cc,iBAAiB,CAACG,SAAS,GAAG,IAAAC,8BAAkB,EAAC,IAAI,CAAC7B,aAAa,CAAC;QACtE;MACF,CAAC,MAAM,IAAI,CAAC,IAAI,CAACoB,cAAc,IAAI,IAAI,CAACV,WAAW,EAAE;QACnD,IAAI,CAACc,YAAY,CAAC,qDAAqD,CAAC;MAC1E,CAAC,MAAM;QACL,IAAI,CAACA,YAAY,CAAC,EAAE,CAAC;MACvB;MACA,IAAI,CAACnB,WAAW,CAACqB,WAAW,CAAC,IAAI,CAACV,SAAS,CAACc,MAAM,EAAE,CAAC;MACrD,IAAI,IAAI,CAACX,aAAa,IAAI,IAAI,CAACC,cAAc,EAAE;QAC7C,IAAI,CAACf,WAAW,CAACqB,WAAW,CAAC,IAAI,CAACK,8BAA8B,EAAE,CAAC;QACnE,IAAI,CAAC1B,WAAW,CAACqB,WAAW,CAAC,IAAI,CAACP,aAAa,CAACW,MAAM,EAAE,CAAC;MAC3D,CAAC,MAAM,IAAI,IAAI,CAACE,UAAU,IAAI,IAAI,CAACtB,WAAW,EAAE;QAC9C,IAAI,CAACL,WAAW,CAACqB,WAAW,CAAC,IAAI,CAACO,2BAA2B,EAAE,CAAC;MAClE;MACA,IAAI,CAAC,IAAI,CAACpC,iBAAiB,IAAI,IAAI,CAACgB,eAAe,EAAE;QACnD,IAAI,CAACR,WAAW,CAACqB,WAAW,CAAC,IAAI,CAACQ,uBAAuB,EAAE,CAAC;MAC9D,CAAC,MAAM,IAAI,CAAC,IAAI,CAACrC,iBAAiB,EAAE;QAClC,IAAI,CAACQ,WAAW,CAACqB,WAAW,CAAC,IAAI,CAACS,0BAA0B,EAAE,CAAC;MACjE;MACA,OAAO,IAAI,CAAC9B,WAAW;IACzB;EAAC;IAAA;IAAA,OAED,sCAAmD;MAAA;MACjD,IAAM+B,gBAAgB,GAAG,IAAI,CAAChC,GAAG,CAACE,aAAa,CAAC,QAAQ,CAAC;MACzD8B,gBAAgB,CAACR,SAAS,qDAA8C,IAAI,CAACnC,IAAI,iCAAuB,IAAI,CAACS,wBAAwB,kBAAWmC,KAAK,CAACC,KAAK,CAAC,IAAI,CAACpC,wBAAwB,CAAC,IAAK,EAAE,CAAE;MACnMkC,gBAAgB,CAAC7B,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAAC2C,SAAS,CAAC;MACtDH,gBAAgB,CAACI,gBAAgB,CAAC,OAAO,EAAE;QAAA,OAAM,KAAI,CAACC,UAAU,EAAE,CAC/DC,IAAI,CAAC;UAAA,OAAM,KAAI,CAACZ,MAAM,EAAE;QAAA,EAAC,SACpB,CAAC,UAAAa,KAAK;UAAA,OAAI,KAAI,CAACnB,YAAY,CAACmB,KAAK,CAAC;QAAA,EAAC;MAAA,EAAC;MAC5C,OAAOP,gBAAgB;IACzB;EAAC;IAAA;IAAA,OAED,mCAAgD;MAAA;MAC9C,IAAMQ,YAAY,GAAG,IAAI,CAACxC,GAAG,CAACE,aAAa,CAAC,QAAQ,CAAC;MACrDsC,YAAY,CAAChB,SAAS,2CAAoC,IAAI,CAACnC,IAAI,CAAE;MACrEmD,YAAY,CAACrC,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAAC2C,SAAS,CAAC;MAClDK,YAAY,CAACJ,gBAAgB,CAAC,OAAO,EAAE;QAAA,OAAM,MAAI,CAACK,OAAO,EAAE,CACxDH,IAAI,CAAC;UAAA,OAAM,MAAI,CAACZ,MAAM,EAAE;QAAA,EAAC,SACpB,CAAC,UAAAa,KAAK;UAAA,OAAI,MAAI,CAACnB,YAAY,CAACmB,KAAK,CAAC;QAAA,EAAC;MAAA,EAAC;MAC5C,OAAOC,YAAY;IACrB;EAAC;IAAA;IAAA,OAED,uCAAoD;MAAA;MAClD,IAAME,gBAAgB,GAAG,IAAI,CAAC1C,GAAG,CAACE,aAAa,CAAC,KAAK,CAAC;MACtDwC,gBAAgB,CAACvC,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAACmD,kBAAkB,CAAC;MAE/D,IAAMC,aAAa,GAAGF,gBAAgB,CAACpB,WAAW,CAAC,IAAI,CAACtB,GAAG,CAACE,aAAa,CAAC,KAAK,CAAC,CAAC;MACjF0C,aAAa,CAACpB,SAAS,GAAG,+EAA+E;MACzGoB,aAAa,CAACzC,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAACqD,wBAAwB,CAAC;MAElE,IAAMC,MAAM,GAAGJ,gBAAgB,CAACpB,WAAW,CAAC,IAAI,CAACtB,GAAG,CAACE,aAAa,CAAC,QAAQ,CAAC,CAAC;MAC7E4C,MAAM,CAACtB,SAAS,GAAG,+EAA+E;MAClGsB,MAAM,CAAC3C,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAAC2C,SAAS,CAAC;MAC5CW,MAAM,CAACV,gBAAgB,CAAC,OAAO,EAAE;QAAA,OAAM,MAAI,CAACW,WAAW,EAAE,CACtDT,IAAI,CAAC;UAAA,OAAM,MAAI,CAACZ,MAAM,EAAE;QAAA,EAAC;MAAA,EAAC;MAC7B,OAAOgB,gBAAgB;IACzB;EAAC;IAAA;IAAA,OAED,0CAAuD;MAAA;MACrD,IAAMA,gBAAgB,GAAG,IAAI,CAAC1C,GAAG,CAACE,aAAa,CAAC,KAAK,CAAC;MACtDwC,gBAAgB,CAACvC,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAACmD,kBAAkB,CAAC;MAE/D,IAAMC,aAAa,GAAGF,gBAAgB,CAACpB,WAAW,CAAC,IAAI,CAACtB,GAAG,CAACE,aAAa,CAAC,KAAK,CAAC,CAAC;MACjF0C,aAAa,CAACpB,SAAS,GAAG,sCAAsC;MAChEoB,aAAa,CAACzC,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAACqD,wBAAwB,CAAC;MAElE,IAAMC,MAAM,GAAGJ,gBAAgB,CAACpB,WAAW,CAAC,IAAI,CAACtB,GAAG,CAACE,aAAa,CAAC,QAAQ,CAAC,CAAC;MAC7E4C,MAAM,CAACtB,SAAS,GAAG,0EAA0E;MAC7FsB,MAAM,CAAC3C,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAAC2C,SAAS,CAAC;MAC5CW,MAAM,CAACV,gBAAgB,CAAC,OAAO,EAAE;QAAA,OAAM,MAAI,CAACY,cAAc,EAAE,CACzDV,IAAI,CAAC;UAAA,OAAM,MAAI,CAACZ,MAAM,EAAE;QAAA,EAAC,SACpB,CAAC,UAAAa,KAAK;UAAA,OAAI,MAAI,CAACnB,YAAY,CAACmB,KAAK,CAAC;QAAA,EAAC;MAAA,EAAC;MAC5C,OAAOG,gBAAgB;IACzB;EAAC;IAAA;IAAA,OAED,+BAA8BO,OAAe,EAAQ;MAAA;MACnD;MACA,IAAI,CAAC1D,aAAa,CAACY,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAAC0D,2BAA2B,CAAC;MAC1E,IAAI,CAAC3D,aAAa,CAACiC,SAAS,GAAGyB,OAAO;MACtC,IAAI,CAAC1D,aAAa,CAACY,SAAS,CAACC,GAAG,CAAC,IAAI,CAACZ,OAAO,CAAC2D,mBAAmB,CAAC;MAClEC,UAAU,CAAC,YAAM;QACf,MAAI,CAAC7D,aAAa,CAACY,SAAS,CAACC,GAAG,CAAC,MAAI,CAACZ,OAAO,CAAC6D,kBAAkB,CAAC;MACnE,CAAC,CAAC;MACFD,UAAU,CAAC,YAAM;QACf,MAAI,CAAC7D,aAAa,CAACiC,SAAS,GAAG,EAAE;MACnC,CAAC,EAAE,IAAI,CAAC;IACV;EAAC;IAAA;IAAA,OAED,sBAAqByB,OAAe,EAAQ;MAC1C;MACA,IAAI,CAAC1D,aAAa,CAACY,SAAS,CAACmD,MAAM,CAAC,IAAI,CAAC9D,OAAO,CAAC0D,2BAA2B,EAAE,CAAC,CAACD,OAAO,CAAC;MACxF,IAAI,CAAC1D,aAAa,CAACiC,SAAS,GAAGyB,OAAO;IACxC;EAAC;IAAA;IAAA;MAAA,6FAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,MACM,CAAC,IAAI,CAACrD,aAAa,IAAI,CAAC,IAAI,CAACC,aAAa;kBAAA;kBAAA;gBAAA;gBACtCoD,OAAO,GAAG,iCAAiC;gBACjDM,KAAK,CAAChB,KAAK,CAACU,OAAO,CAAC;gBAAA,iCACbO,OAAO,CAACC,MAAM,CAACR,OAAO,CAAC;cAAA;gBAE1BS,QAAQ,GAAG,IAAA/C,oBAAe,EAAC,IAAI,CAACjB,SAAS,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,CAACC,aAAa,EAAE,IAAI,CAACC,aAAa,CAAC;gBAC3G6D,QAAQ,CAACC,UAAU,CAACC,OAAO,CAAC,UAAAC,EAAE;kBAAA,OAAI,MAAI,CAAC9D,KAAK,CAACK,GAAG,CAACyD,EAAE,CAACzE,OAAO,EAAEyE,EAAE,CAACC,SAAS,EAAED,EAAE,CAACE,MAAM,EAAE,MAAI,CAACpE,YAAY,CAAC;gBAAA,EAAC;gBAAA;gBAAA;gBAAA,OAEjG,IAAI,CAACI,KAAK,CAACiE,OAAO,CAACC,OAAO,CAAC,IAAI,CAACtE,YAAY,CAAC;cAAA;gBACnD,IAAI,CAACc,eAAe,GAAG,KAAK;gBAAA,iCACrB+C,OAAO,CAACU,OAAO,EAAE;cAAA;gBAAA;gBAAA;gBAElBjB,QAAO;gBACbM,KAAK,CAAChB,KAAK,CAACU,QAAO,CAAC;gBAAA,iCACbO,OAAO,CAACC,MAAM,CAACR,QAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEjC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iGAED;QAAA;UAAA;YAAA;cAAA;gBACE,IAAI,CAAClC,aAAa,GAAG,IAAIF,0BAAY,CAAC,IAAI,CAACnB,SAAS,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,EAAE,IAAI,CAACI,KAAK,EAAE;kBAAEe,QAAQ,EAAE;gBAAK,CAAC,CAAC;gBAC9G,IAAI,CAACE,cAAc,GAAG,IAAI;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,gGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;gBAAA,OAEU,IAAI,CAACjB,KAAK,CAACiE,OAAO,UAAO,CAAC,IAAI,CAACrE,YAAY,CAACY,GAAG,EAAE,CAAC,CAAC,CAAC;cAAA;gBAC1D,IAAI,CAACE,eAAe,GAAG,IAAI;gBAAA;gBAAA;gBAAA,OAEa,IAAA0D,yBAAoB,EAAC,IAAI,CAACzE,SAAS,CAACa,GAAG,CAAC;cAAA;gBAA9E,IAAI,CAACT,wBAAwB;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAE7B;gBACAyD,KAAK,CAACa,IAAI,cAAO;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAGbnB,OAAO,iDAA0C,IAAI,CAACtD,YAAY;gBACxE4D,KAAK,CAAChB,KAAK,CAACU,OAAO,CAAC;gBAAA,kCACbO,OAAO,CAACC,MAAM,CAACR,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAEjC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,oGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBACQoB,aAAa,GAAG,IAAI,CAACtD,aAAa;gBAAA;gBAEtC,IAAI,CAACA,aAAa,GAAG,IAAI;gBACzB,IAAI,CAACC,cAAc,GAAG,KAAK;gBAAA;gBAAA,OACrB,IAAI,CAACsD,IAAI,EAAE;cAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAEjB,IAAI,CAACvD,aAAa,GAAGsD,aAAa;gBAClC,IAAI,CAACrD,cAAc,GAAG,IAAI;gBAC1BuC,KAAK,CAAChB,KAAK,cAAO;gBAAA,kCACXiB,OAAO,CAACC,MAAM,cAAO;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAE/B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,gBAA8B;MAAA;MAC5B;MACA,IAAMc,WAAW,GAAG,IAAAC,aAAK,GAAE;MAC3B,IAAI,CAAC,IAAI,CAAClE,WAAW,EAAE;QACrB,IAAAmE,wBAAmB,EAACF,WAAW,EAAE,IAAI,CAAC7E,SAAS,EAAE,IAAI,CAACkB,SAAS,CAAC8D,OAAO,EAAE,IAAI,CAAC/E,YAAY,EAAE,IAAI,CAAC;MACnG,CAAC,MAAM,IAAI,IAAI,CAACoB,aAAa,IAAI,IAAI,CAACC,cAAc,EAAE;QACpD;QACA,IAAAyD,wBAAmB,EAACF,WAAW,EAAE,IAAI,CAAC7E,SAAS,EAAE,IAAI,CAACkB,SAAS,CAAC8D,OAAO,EAAE,IAAI,CAAC/E,YAAY,EAAE,IAAI,CAAC;QACjG,IAAA8E,wBAAmB,EAACF,WAAW,EAAE,IAAI,CAAC7E,SAAS,EAAE,IAAI,CAACqB,aAAa,CAAC2D,OAAO,EAAE,IAAI,CAAC/E,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC;MAC9G,CAAC,MAAM;QACL;QACA,IAAA8E,wBAAmB,EAACF,WAAW,EAAE,IAAI,CAAC7E,SAAS,EAAE,IAAI,CAACkB,SAAS,CAAC8D,OAAO,EAAE,IAAI,CAAC/E,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;MACzG;;MAEA;MACA4E,WAAW,CAACP,OAAO,GAAG,IAAAA,eAAO,EAACO,WAAW,EAAE;QAAEI,KAAK,EAAE,IAAI,CAAC5E,KAAK,CAACiE,OAAO,CAACY;MAAO,CAAC,CAAC;MAChF,IAAMC,OAAO,GAAGN,WAAW,CAACM,OAAO,IAAI,IAAIC,qBAAa,CAACP,WAAW,CAAC;;MAErE;MACA,OAAO,IAAIf,OAAO,CAAC,UAACU,OAAO,EAAET,MAAM,EAAK;QACtCoB,OAAO,CAACE,GAAG,CACT,MAAI,CAACpF,YAAY,EACjB4E,WAAW,CAACS,kBAAkB,CAACC,SAAS,EAAEA,SAAS,EAAEA,SAAS,EAAE,MAAI,CAACtF,YAAY,CAAC,EAClF,aAAa,EACb,UAACY,GAAG,EAAE2E,EAAE,EAAEjC,OAAO,EAAK;UACpB,IAAI,CAACiC,EAAE,EAAE;YACP,OAAOzB,MAAM,CAAC,IAAI0B,KAAK,iCAA0BlC,OAAO,EAAG,CAAC;UAC9D;UACA,MAAI,CAAClD,KAAK,CAACiE,OAAO,CAACoB,MAAM,CAAC,MAAI,CAACzF,YAAY,CAAC;UAC5C,MAAI,CAACI,KAAK,CAACK,GAAG,CAACmE,WAAW,CAACZ,UAAU,CAAC;UACtC,MAAI,CAAC5D,KAAK,CAACiE,OAAO,CAACqB,SAAS,CAAC,MAAI,CAAC1F,YAAY,CAACY,GAAG,CAAC,GAAG,MAAM,EAAC;UAC7D,MAAI,CAACK,SAAS,CAACb,KAAK,GAAG,MAAI,CAACA,KAAK;UACjC,IAAI,MAAI,CAACgB,aAAa,EAAE;YACtB,MAAI,CAACA,aAAa,CAAChB,KAAK,GAAG,MAAI,CAACA,KAAK;UACvC;UACA,MAAI,CAACiB,cAAc,GAAG,CAAC,CAAC,MAAI,CAACD,aAAa,IAAI,CAAC,IAAAE,YAAO,EAAC,MAAI,CAACL,SAAS,CAACM,MAAM,EAAE,MAAI,CAACH,aAAa,CAACG,MAAM,CAAC;UACxGqC,KAAK,CAAC+B,GAAG,CAAC,4BAA4B,CAAC;UACvCpB,OAAO,EAAE;QACX,CAAC,CACF;MACH,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAAA"}
|