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
package/lib/acl/acl-control.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
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
|
});
|
|
@@ -13,37 +11,27 @@ exports.preventBrowserDropEvents = preventBrowserDropEvents;
|
|
|
13
11
|
exports.preventDrag = preventDrag;
|
|
14
12
|
exports.setGlobalWindow = setGlobalWindow;
|
|
15
13
|
exports.shortNameForFolder = shortNameForFolder;
|
|
16
|
-
|
|
17
14
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
18
|
-
|
|
19
15
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
20
|
-
|
|
21
16
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
22
|
-
|
|
23
17
|
var utils = _interopRequireWildcard(require("../utils"));
|
|
24
|
-
|
|
25
18
|
var _acl = require("./acl");
|
|
26
|
-
|
|
27
19
|
var _accessController = require("./access-controller");
|
|
28
|
-
|
|
29
20
|
var _jss = require("../jss");
|
|
30
|
-
|
|
31
21
|
var _styles = require("./styles");
|
|
32
|
-
|
|
33
22
|
var _debug = require("../debug");
|
|
34
|
-
|
|
35
23
|
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); }
|
|
36
|
-
|
|
37
24
|
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; }
|
|
38
|
-
|
|
39
25
|
/**
|
|
40
26
|
* Functions for rendering the ACL User Interface.
|
|
41
27
|
* See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view
|
|
42
28
|
* for a screenshot.
|
|
43
29
|
* @packageDocumentation
|
|
44
30
|
*/
|
|
31
|
+
|
|
45
32
|
var global = window;
|
|
46
33
|
var preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event');
|
|
34
|
+
|
|
47
35
|
/**
|
|
48
36
|
* See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript
|
|
49
37
|
* Without this dropping anything onto a browser page will cause chrome etc to jump to diff page
|
|
@@ -56,29 +44,24 @@ var preventBrowserDropEventsDone = Symbol('prevent double triggering of drop eve
|
|
|
56
44
|
* @param document The DOM
|
|
57
45
|
* @returns void
|
|
58
46
|
*/
|
|
59
|
-
|
|
60
47
|
function preventBrowserDropEvents(document) {
|
|
61
48
|
(0, _debug.log)('preventBrowserDropEvents called.');
|
|
62
|
-
|
|
63
49
|
if (typeof global !== 'undefined') {
|
|
64
50
|
if (global[preventBrowserDropEventsDone]) return;
|
|
65
51
|
global[preventBrowserDropEventsDone] = true;
|
|
66
52
|
}
|
|
67
|
-
|
|
68
53
|
document.addEventListener('drop', handleDrop, false);
|
|
69
54
|
document.addEventListener('dragenter', preventDrag, false);
|
|
70
55
|
document.addEventListener('dragover', preventDrag, false);
|
|
71
56
|
}
|
|
72
|
-
/** @internal */
|
|
73
|
-
|
|
74
57
|
|
|
58
|
+
/** @internal */
|
|
75
59
|
function preventDrag(e) {
|
|
76
60
|
e.stopPropagation();
|
|
77
61
|
e.preventDefault();
|
|
78
62
|
}
|
|
79
|
-
/** @internal */
|
|
80
|
-
|
|
81
63
|
|
|
64
|
+
/** @internal */
|
|
82
65
|
function handleDrop(e) {
|
|
83
66
|
if (e.dataTransfer.files.length > 0) {
|
|
84
67
|
if (!global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')) {
|
|
@@ -88,6 +71,7 @@ function handleDrop(e) {
|
|
|
88
71
|
}
|
|
89
72
|
}
|
|
90
73
|
}
|
|
74
|
+
|
|
91
75
|
/**
|
|
92
76
|
* Get a folder's own filename in the directory tree. Also works for
|
|
93
77
|
* domain names; the URL protocol ('https://') acts as the tree root
|
|
@@ -119,29 +103,27 @@ function handleDrop(e) {
|
|
|
119
103
|
* @param x RDF Node for the folder URL
|
|
120
104
|
* @returns Short name for the folder
|
|
121
105
|
*/
|
|
122
|
-
|
|
123
|
-
|
|
124
106
|
function shortNameForFolder(x) {
|
|
125
|
-
var str = x.uri;
|
|
107
|
+
var str = x.uri;
|
|
126
108
|
|
|
109
|
+
// Strip the trailing slash
|
|
127
110
|
if (str.slice(-1) === '/') {
|
|
128
111
|
str = str.slice(0, -1);
|
|
129
|
-
}
|
|
130
|
-
// after the last slash.
|
|
131
|
-
|
|
112
|
+
}
|
|
132
113
|
|
|
114
|
+
// Remove the path if present, keeping only the part
|
|
115
|
+
// after the last slash.
|
|
133
116
|
var slash = str.lastIndexOf('/');
|
|
134
|
-
|
|
135
117
|
if (slash >= 0) {
|
|
136
118
|
str = str.slice(slash + 1);
|
|
137
|
-
}
|
|
119
|
+
}
|
|
120
|
+
// Return the folder's filename, or '/' if nothing found
|
|
138
121
|
// (but see https://github.com/solidos/solid-ui/issues/196
|
|
139
122
|
// regarding whether this happens at the domain root or
|
|
140
123
|
// not)
|
|
141
|
-
|
|
142
|
-
|
|
143
124
|
return str || '/';
|
|
144
125
|
}
|
|
126
|
+
|
|
145
127
|
/**
|
|
146
128
|
* A wrapper that retrieves ACL data and uses it
|
|
147
129
|
* to render an [[AccessController]] component.
|
|
@@ -150,12 +132,9 @@ function shortNameForFolder(x) {
|
|
|
150
132
|
* when it was introduced into solid-ui in
|
|
151
133
|
* https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54
|
|
152
134
|
*/
|
|
153
|
-
|
|
154
|
-
|
|
155
135
|
function ACLControlBox5(subject, context, noun, kb) {
|
|
156
136
|
var dom = context.dom;
|
|
157
137
|
var doc = subject.doc(); // The ACL is actually to the doc describing the thing
|
|
158
|
-
|
|
159
138
|
var classes = (0, _jss.getClasses)(dom.head, _styles.styles).classes;
|
|
160
139
|
var container = dom.createElement('div');
|
|
161
140
|
container.classList.add(classes.aclControlBoxContainer);
|
|
@@ -164,7 +143,6 @@ function ACLControlBox5(subject, context, noun, kb) {
|
|
|
164
143
|
header.classList.add(classes.aclControlBoxHeader);
|
|
165
144
|
var status = container.appendChild(dom.createElement('div'));
|
|
166
145
|
status.classList.add(classes.aclControlBoxStatus);
|
|
167
|
-
|
|
168
146
|
try {
|
|
169
147
|
loadController(doc, kb, subject, noun, context, classes, dom, status).then(function (controller) {
|
|
170
148
|
return container.appendChild(controller.render());
|
|
@@ -172,14 +150,11 @@ function ACLControlBox5(subject, context, noun, kb) {
|
|
|
172
150
|
} catch (error) {
|
|
173
151
|
status.innerText = error;
|
|
174
152
|
}
|
|
175
|
-
|
|
176
153
|
return container;
|
|
177
154
|
}
|
|
178
|
-
|
|
179
155
|
function loadController(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8) {
|
|
180
156
|
return _loadController.apply(this, arguments);
|
|
181
157
|
}
|
|
182
|
-
|
|
183
158
|
function _loadController() {
|
|
184
159
|
_loadController = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(doc, kb, subject, noun, context, classes, dom, status) {
|
|
185
160
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
@@ -197,40 +172,31 @@ function _loadController() {
|
|
|
197
172
|
getController = function _getController(prospectiveDefaultHolder) {
|
|
198
173
|
return new _accessController.AccessController(subject, noun, context, status, classes, targetIsProtected, targetDoc, targetACLDoc, defaultHolder, defaultACLDoc, prospectiveDefaultHolder, kb, dom);
|
|
199
174
|
};
|
|
200
|
-
|
|
201
175
|
if (ok) {
|
|
202
176
|
_context.next = 3;
|
|
203
177
|
break;
|
|
204
178
|
}
|
|
205
|
-
|
|
206
179
|
return _context.abrupt("return", reject(new Error("Error reading ".concat(isDirectACL ? '' : ' default ', "ACL. status ").concat(targetDoc, ": ").concat(targetACLDoc))));
|
|
207
|
-
|
|
208
180
|
case 3:
|
|
209
181
|
targetDirectory = getDirectory(targetDoc);
|
|
210
182
|
targetIsProtected = isStorage(targetDoc, targetACLDoc, kb) || hasProtectedAcl(targetDoc);
|
|
211
|
-
|
|
212
183
|
if (!(!targetIsProtected && targetDirectory)) {
|
|
213
184
|
_context.next = 16;
|
|
214
185
|
break;
|
|
215
186
|
}
|
|
216
|
-
|
|
217
187
|
_context.prev = 6;
|
|
218
188
|
_context.next = 9;
|
|
219
189
|
return (0, _acl.getProspectiveHolder)(targetDirectory);
|
|
220
|
-
|
|
221
190
|
case 9:
|
|
222
191
|
prospectiveDefaultHolder = _context.sent;
|
|
223
192
|
return _context.abrupt("return", resolve(getController(prospectiveDefaultHolder)));
|
|
224
|
-
|
|
225
193
|
case 13:
|
|
226
194
|
_context.prev = 13;
|
|
227
195
|
_context.t0 = _context["catch"](6);
|
|
228
196
|
// No need to show this error in status, but good to warn about it in console
|
|
229
197
|
(0, _debug.warn)(_context.t0);
|
|
230
|
-
|
|
231
198
|
case 16:
|
|
232
199
|
return _context.abrupt("return", resolve(getController()));
|
|
233
|
-
|
|
234
200
|
case 17:
|
|
235
201
|
case "end":
|
|
236
202
|
return _context.stop();
|
|
@@ -238,13 +204,11 @@ function _loadController() {
|
|
|
238
204
|
}
|
|
239
205
|
}, _callee, null, [[6, 13]]);
|
|
240
206
|
}));
|
|
241
|
-
|
|
242
207
|
return function (_x9, _x10, _x11, _x12, _x13, _x14) {
|
|
243
208
|
return _ref.apply(this, arguments);
|
|
244
209
|
};
|
|
245
210
|
}());
|
|
246
211
|
}));
|
|
247
|
-
|
|
248
212
|
case 1:
|
|
249
213
|
case "end":
|
|
250
214
|
return _context2.stop();
|
|
@@ -254,29 +218,25 @@ function _loadController() {
|
|
|
254
218
|
}));
|
|
255
219
|
return _loadController.apply(this, arguments);
|
|
256
220
|
}
|
|
257
|
-
|
|
258
221
|
function getDirectory(doc) {
|
|
259
222
|
var str = doc.uri.split('#')[0];
|
|
260
223
|
var p = str.slice(0, -1).lastIndexOf('/');
|
|
261
224
|
var q = str.indexOf('//');
|
|
262
225
|
return q >= 0 && p < q + 2 || p < 0 ? null : str.slice(0, p + 1);
|
|
263
226
|
}
|
|
264
|
-
|
|
265
227
|
function isStorage(doc, aclDoc, store) {
|
|
266
228
|
// @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is
|
|
267
229
|
// @@ underway to standardize a behavior that does not rely upon this hack
|
|
268
230
|
// @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10
|
|
269
231
|
return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc);
|
|
270
232
|
}
|
|
271
|
-
|
|
272
233
|
function hasProtectedAcl(targetDoc) {
|
|
273
234
|
// @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed
|
|
274
235
|
// Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37
|
|
275
236
|
return targetDoc.uri === targetDoc.site().uri;
|
|
276
237
|
}
|
|
277
|
-
/** @internal */
|
|
278
|
-
|
|
279
238
|
|
|
239
|
+
/** @internal */
|
|
280
240
|
function setGlobalWindow(window) {
|
|
281
241
|
global = window;
|
|
282
242
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl-control.js","names":["global","window","preventBrowserDropEventsDone","Symbol","preventBrowserDropEvents","document","log","addEventListener","handleDrop","preventDrag","e","stopPropagation","preventDefault","dataTransfer","files","length","confirm","dropEffect","shortNameForFolder","x","str","uri","slice","slash","lastIndexOf","ACLControlBox5","subject","context","noun","kb","dom","doc","classes","getClasses","head","styles","container","createElement","classList","add","aclControlBoxContainer","header","appendChild","textContent","utils","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","Promise","resolve","reject","getACLorDefault","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","getController","prospectiveDefaultHolder","AccessController","targetIsProtected","Error","targetDirectory","getDirectory","isStorage","hasProtectedAcl","getProspectiveHolder","warn","split","p","q","indexOf","aclDoc","store","holds","ns","rdf","space","site","setGlobalWindow"],"sources":["../../src/acl/acl-control.ts"],"sourcesContent":["/**\n * Functions for rendering the ACL User Interface.\n * See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view\n * for a screenshot.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport { getACLorDefault, getProspectiveHolder } from './acl'\nimport { Store, NamedNode } from 'rdflib'\nimport { DataBrowserContext } from 'pane-registry'\nimport { AccessController } from './access-controller'\nimport { getClasses } from '../jss'\nimport { styles } from './styles'\nimport { log, warn } from '../debug'\n\nlet global: Window = window\nconst preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event')\n\n/**\n * See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript\n * Without this dropping anything onto a browser page will cause chrome etc to jump to diff page\n * throwing away all the user's work.\n *\n * In apps which may use drag and drop, this utility takes care of the fact\n * by default in a browser, an uncaught user drop into a browser window\n * causes the browser to lose all its work in that window and navigate to another page\n *\n * @param document The DOM\n * @returns void\n */\nexport function preventBrowserDropEvents (document: HTMLDocument): void {\n log('preventBrowserDropEvents called.')\n if (typeof global !== 'undefined') {\n if (global[preventBrowserDropEventsDone]) return\n global[preventBrowserDropEventsDone] = true\n }\n\n document.addEventListener('drop', handleDrop, false)\n document.addEventListener('dragenter', preventDrag, false)\n document.addEventListener('dragover', preventDrag, false)\n}\n\n/** @internal */\nexport function preventDrag (e) {\n e.stopPropagation()\n e.preventDefault()\n}\n\n/** @internal */\nexport function handleDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n if (\n !global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')\n ) {\n e.stopPropagation()\n e.preventDefault()\n log('@@@@ document-level DROP suppressed: ' + e.dataTransfer.dropEffect\n )\n }\n }\n}\n\n/**\n * Get a folder's own filename in the directory tree. Also works for\n * domain names; the URL protocol ('https://') acts as the tree root\n * with short name '/' (see also test/unit/acl/acl-control.test.ts).\n *\n * ```typescript\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder/'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://'))\n * // '/'\n * ```\n *\n * It also works with relative URLs:\n * ```typescript\n * shortNameForFolder($rdf.namedNode('../folder/'))\n * // 'folder'\n * ```\n *\n * @param x RDF Node for the folder URL\n * @returns Short name for the folder\n */\nexport function shortNameForFolder (x: NamedNode): string {\n let str = x.uri\n\n // Strip the trailing slash\n if (str.slice(-1) === '/') {\n str = str.slice(0, -1)\n }\n\n // Remove the path if present, keeping only the part\n // after the last slash.\n const slash = str.lastIndexOf('/')\n if (slash >= 0) {\n str = str.slice(slash + 1)\n }\n // Return the folder's filename, or '/' if nothing found\n // (but see https://github.com/solidos/solid-ui/issues/196\n // regarding whether this happens at the domain root or\n // not)\n return str || '/'\n}\n\n/**\n * A wrapper that retrieves ACL data and uses it\n * to render an [[AccessController]] component.\n * Presumably the '5' is a version number of some sort,\n * but all we know is it was already called ACLControlBox5\n * when it was introduced into solid-ui in\n * https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54\n */\nexport function ACLControlBox5 (\n subject: NamedNode,\n context: DataBrowserContext,\n noun: string,\n kb: Store\n): HTMLElement {\n const dom = context.dom\n const doc = subject.doc() // The ACL is actually to the doc describing the thing\n const classes = getClasses(dom.head, styles).classes\n\n const container = dom.createElement('div')\n container.classList.add(classes.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.classList.add(classes.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.classList.add(classes.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, classes, dom, status)\n .then(controller => container.appendChild(controller.render()))\n } catch (error) {\n status.innerText = error\n }\n\n return container\n}\n\nasync function loadController (\n doc: NamedNode,\n kb: Store,\n subject: NamedNode,\n noun: string,\n context: DataBrowserContext,\n classes: Record<string, string>,\n dom: HTMLDocument,\n status: HTMLElement\n): Promise<AccessController> {\n return new Promise((resolve, reject) => getACLorDefault(doc, async (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) => {\n if (!ok) {\n return reject(new Error(`Error reading ${isDirectACL ? '' : ' default '}ACL. status ${targetDoc}: ${targetACLDoc}`))\n }\n const targetDirectory = getDirectory(targetDoc as NamedNode)\n const targetIsProtected = isStorage(targetDoc as NamedNode, targetACLDoc as NamedNode, kb) || hasProtectedAcl(targetDoc as NamedNode)\n if (!targetIsProtected && targetDirectory) {\n try {\n const prospectiveDefaultHolder = await getProspectiveHolder(targetDirectory)\n return resolve(getController(prospectiveDefaultHolder))\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n warn(error)\n }\n }\n return resolve(getController())\n\n function getController (prospectiveDefaultHolder?: NamedNode) {\n return new AccessController(subject, noun, context, status, classes, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom)\n }\n }))\n}\n\nfunction getDirectory (doc: NamedNode): string | null {\n const str = doc.uri.split('#')[0]\n const p = str.slice(0, -1).lastIndexOf('/')\n const q = str.indexOf('//')\n return (q >= 0 && p < q + 2) || p < 0 ? null : str.slice(0, p + 1)\n}\n\nfunction isStorage (doc: NamedNode, aclDoc: NamedNode, store: Store): boolean {\n // @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is\n // @@ underway to standardize a behavior that does not rely upon this hack\n // @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10\n return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc)\n}\n\nfunction hasProtectedAcl (targetDoc: NamedNode): boolean {\n // @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed\n // Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37\n return targetDoc.uri === targetDoc.site().uri\n}\n\n/** @internal */\nexport function setGlobalWindow (window: Window) {\n global = window\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acl-control.js","names":["global","window","preventBrowserDropEventsDone","Symbol","preventBrowserDropEvents","document","log","addEventListener","handleDrop","preventDrag","e","stopPropagation","preventDefault","dataTransfer","files","length","confirm","dropEffect","shortNameForFolder","x","str","uri","slice","slash","lastIndexOf","ACLControlBox5","subject","context","noun","kb","dom","doc","classes","getClasses","head","styles","container","createElement","classList","add","aclControlBoxContainer","header","appendChild","textContent","utils","label","aclControlBoxHeader","status","aclControlBoxStatus","loadController","then","controller","render","error","innerText","Promise","resolve","reject","getACLorDefault","ok","isDirectACL","targetDoc","targetACLDoc","defaultHolder","defaultACLDoc","getController","prospectiveDefaultHolder","AccessController","targetIsProtected","Error","targetDirectory","getDirectory","isStorage","hasProtectedAcl","getProspectiveHolder","warn","split","p","q","indexOf","aclDoc","store","holds","ns","rdf","space","site","setGlobalWindow"],"sources":["../../src/acl/acl-control.ts"],"sourcesContent":["/**\n * Functions for rendering the ACL User Interface.\n * See https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#view\n * for a screenshot.\n * @packageDocumentation\n */\n\nimport * as ns from '../ns'\nimport * as utils from '../utils'\nimport { getACLorDefault, getProspectiveHolder } from './acl'\nimport { Store, NamedNode } from 'rdflib'\nimport { DataBrowserContext } from 'pane-registry'\nimport { AccessController } from './access-controller'\nimport { getClasses } from '../jss'\nimport { styles } from './styles'\nimport { log, warn } from '../debug'\n\nlet global: Window = window\nconst preventBrowserDropEventsDone = Symbol('prevent double triggering of drop event')\n\n/**\n * See https://coshx.com/preventing-drag-and-drop-disasters-with-a-chrome-userscript\n * Without this dropping anything onto a browser page will cause chrome etc to jump to diff page\n * throwing away all the user's work.\n *\n * In apps which may use drag and drop, this utility takes care of the fact\n * by default in a browser, an uncaught user drop into a browser window\n * causes the browser to lose all its work in that window and navigate to another page\n *\n * @param document The DOM\n * @returns void\n */\nexport function preventBrowserDropEvents (document: HTMLDocument): void {\n log('preventBrowserDropEvents called.')\n if (typeof global !== 'undefined') {\n if (global[preventBrowserDropEventsDone]) return\n global[preventBrowserDropEventsDone] = true\n }\n\n document.addEventListener('drop', handleDrop, false)\n document.addEventListener('dragenter', preventDrag, false)\n document.addEventListener('dragover', preventDrag, false)\n}\n\n/** @internal */\nexport function preventDrag (e) {\n e.stopPropagation()\n e.preventDefault()\n}\n\n/** @internal */\nexport function handleDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n if (\n !global.confirm('Are you sure you want to drop this file here? (Cancel opens it in a new tab)')\n ) {\n e.stopPropagation()\n e.preventDefault()\n log('@@@@ document-level DROP suppressed: ' + e.dataTransfer.dropEffect\n )\n }\n }\n}\n\n/**\n * Get a folder's own filename in the directory tree. Also works for\n * domain names; the URL protocol ('https://') acts as the tree root\n * with short name '/' (see also test/unit/acl/acl-control.test.ts).\n *\n * ```typescript\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder/'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/some/folder'))\n * // 'folder'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com/'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://example.com'))\n * // 'example.com'\n *\n * shortNameForFolder($rdf.namedNode('http://'))\n * // '/'\n * ```\n *\n * It also works with relative URLs:\n * ```typescript\n * shortNameForFolder($rdf.namedNode('../folder/'))\n * // 'folder'\n * ```\n *\n * @param x RDF Node for the folder URL\n * @returns Short name for the folder\n */\nexport function shortNameForFolder (x: NamedNode): string {\n let str = x.uri\n\n // Strip the trailing slash\n if (str.slice(-1) === '/') {\n str = str.slice(0, -1)\n }\n\n // Remove the path if present, keeping only the part\n // after the last slash.\n const slash = str.lastIndexOf('/')\n if (slash >= 0) {\n str = str.slice(slash + 1)\n }\n // Return the folder's filename, or '/' if nothing found\n // (but see https://github.com/solidos/solid-ui/issues/196\n // regarding whether this happens at the domain root or\n // not)\n return str || '/'\n}\n\n/**\n * A wrapper that retrieves ACL data and uses it\n * to render an [[AccessController]] component.\n * Presumably the '5' is a version number of some sort,\n * but all we know is it was already called ACLControlBox5\n * when it was introduced into solid-ui in\n * https://github.com/solidos/solid-ui/commit/948b874bd93e7bf5160e6e224821b888f07d15f3#diff-4192a29f38a0ababd563b36b47eba5bbR54\n */\nexport function ACLControlBox5 (\n subject: NamedNode,\n context: DataBrowserContext,\n noun: string,\n kb: Store\n): HTMLElement {\n const dom = context.dom\n const doc = subject.doc() // The ACL is actually to the doc describing the thing\n const classes = getClasses(dom.head, styles).classes\n\n const container = dom.createElement('div')\n container.classList.add(classes.aclControlBoxContainer)\n\n const header = container.appendChild(dom.createElement('h1'))\n header.textContent = `Sharing for ${noun} ${utils.label(subject)}`\n header.classList.add(classes.aclControlBoxHeader)\n\n const status = container.appendChild(dom.createElement('div'))\n status.classList.add(classes.aclControlBoxStatus)\n\n try {\n loadController(doc, kb, subject, noun, context, classes, dom, status)\n .then(controller => container.appendChild(controller.render()))\n } catch (error) {\n status.innerText = error\n }\n\n return container\n}\n\nasync function loadController (\n doc: NamedNode,\n kb: Store,\n subject: NamedNode,\n noun: string,\n context: DataBrowserContext,\n classes: Record<string, string>,\n dom: HTMLDocument,\n status: HTMLElement\n): Promise<AccessController> {\n return new Promise((resolve, reject) => getACLorDefault(doc, async (\n ok,\n isDirectACL,\n targetDoc,\n targetACLDoc,\n defaultHolder,\n defaultACLDoc\n ) => {\n if (!ok) {\n return reject(new Error(`Error reading ${isDirectACL ? '' : ' default '}ACL. status ${targetDoc}: ${targetACLDoc}`))\n }\n const targetDirectory = getDirectory(targetDoc as NamedNode)\n const targetIsProtected = isStorage(targetDoc as NamedNode, targetACLDoc as NamedNode, kb) || hasProtectedAcl(targetDoc as NamedNode)\n if (!targetIsProtected && targetDirectory) {\n try {\n const prospectiveDefaultHolder = await getProspectiveHolder(targetDirectory)\n return resolve(getController(prospectiveDefaultHolder))\n } catch (error) {\n // No need to show this error in status, but good to warn about it in console\n warn(error)\n }\n }\n return resolve(getController())\n\n function getController (prospectiveDefaultHolder?: NamedNode) {\n return new AccessController(subject, noun, context, status, classes, targetIsProtected, targetDoc as NamedNode, targetACLDoc as NamedNode, defaultHolder as NamedNode,\n defaultACLDoc as NamedNode, prospectiveDefaultHolder, kb, dom)\n }\n }))\n}\n\nfunction getDirectory (doc: NamedNode): string | null {\n const str = doc.uri.split('#')[0]\n const p = str.slice(0, -1).lastIndexOf('/')\n const q = str.indexOf('//')\n return (q >= 0 && p < q + 2) || p < 0 ? null : str.slice(0, p + 1)\n}\n\nfunction isStorage (doc: NamedNode, aclDoc: NamedNode, store: Store): boolean {\n // @@ TODO: The methods used for targetIsStorage are HACKs - it should not be relied upon, and work is\n // @@ underway to standardize a behavior that does not rely upon this hack\n // @@ hopefully fixed as part of https://github.com/solidos/data-interoperability-panel/issues/10\n return store.holds(doc, ns.rdf('type'), ns.space('Storage'), aclDoc)\n}\n\nfunction hasProtectedAcl (targetDoc: NamedNode): boolean {\n // @@ TODO: This is hacky way of knowing whether or not a certain ACL file can be removed\n // Hopefully we'll find a better, standardized solution to this - https://github.com/solidos/specification/issues/37\n return targetDoc.uri === targetDoc.site().uri\n}\n\n/** @internal */\nexport function setGlobalWindow (window: Window) {\n global = window\n}\n"],"mappings":"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"}
|