solid-panes 4.4.2-5 → 4.4.2-7
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/RDFXMLPane2.cjs.js +1 -1
- package/dist/RDFXMLPane2.esm.js +1 -1
- package/dist/_virtual/~icons/lucide/arrow-left.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/arrow-left.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/arrow-left.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/arrow-left.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/globe.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/globe.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/globe.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/globe.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/pencil.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/pencil.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/pencil.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/pencil.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/share-2.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/share-2.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/share-2.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/share-2.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/trash-2.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/trash-2.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/trash-2.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/trash-2.esm.js.map +1 -0
- package/dist/audio/audioPane.cjs.js +1 -1
- package/dist/audio/audioPane.cjs.js.map +1 -1
- package/dist/audio/audioPane.esm.js +13 -10
- package/dist/audio/audioPane.esm.js.map +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js +14 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.d.ts +19 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.d.ts.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.esm.js +292 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js +2 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js +7 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +22 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts +15 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +266 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js +2 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js +7 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +19 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts +19 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +321 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js +2 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js +7 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.cjs.js +13 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.d.ts +36 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.d.ts.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.esm.js +468 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.cjs.js +2 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.esm.js +7 -0
- package/dist/components/file-explorer-header/FileExplorerProvider.styles.esm.js.map +1 -0
- package/dist/components/file-explorer-header/helper.cjs.js +2 -0
- package/dist/components/file-explorer-header/helper.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/helper.d.ts +15 -0
- package/dist/components/file-explorer-header/helper.d.ts.map +1 -0
- package/dist/components/file-explorer-header/helper.esm.js +64 -0
- package/dist/components/file-explorer-header/helper.esm.js.map +1 -0
- package/dist/components/file-explorer-header/types.d.ts +2 -0
- package/dist/components/file-explorer-header/types.d.ts.map +1 -0
- package/dist/components/header/Header.cjs.js +1 -1
- package/dist/components/header/Header.cjs.js.map +1 -1
- package/dist/components/header/Header.esm.js +3 -3
- package/dist/components/navbar/Navbar.cjs.js +1 -1
- package/dist/components/navbar/Navbar.cjs.js.map +1 -1
- package/dist/components/navbar/Navbar.esm.js +3 -3
- package/dist/components/resource-actions-menu/DeleteResourceDialog.cjs.js +16 -0
- package/dist/components/resource-actions-menu/DeleteResourceDialog.cjs.js.map +1 -0
- package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts +8 -0
- package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts.map +1 -0
- package/dist/components/resource-actions-menu/DeleteResourceDialog.esm.js +215 -0
- package/dist/components/resource-actions-menu/DeleteResourceDialog.esm.js.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +18 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts +16 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +260 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js.map +1 -0
- package/dist/dashboard/basicPreferences.cjs.js +1 -1
- package/dist/dashboard/basicPreferences.cjs.js.map +1 -1
- package/dist/dashboard/dashboardPane.cjs.js +1 -1
- package/dist/dashboard/dashboardPane.cjs.js.map +1 -1
- package/dist/home/homePane.cjs.js +1 -1
- package/dist/home/homePane.cjs.js.map +1 -1
- package/dist/internal/internalPane2.cjs.js +1 -1
- package/dist/internal/internalPane2.cjs.js.map +1 -1
- package/dist/mainPage/header.cjs.js +1 -1
- package/dist/mainPage/header.cjs.js.map +1 -1
- package/dist/n3Pane2.cjs.js +1 -1
- package/dist/n3Pane2.esm.js +1 -1
- package/dist/outline/manager2.cjs.js +1 -2
- package/dist/outline/manager2.cjs.js.map +1 -1
- package/dist/outline/manager2.esm.js +356 -397
- package/dist/outline/manager2.esm.js.map +1 -1
- package/dist/outline/propertyViews.cjs.js +1 -1
- package/dist/outline/propertyViews.cjs.js.map +1 -1
- package/dist/outline/sourcePaneIcon.d.ts +2 -0
- package/dist/outline/sourcePaneIcon.d.ts.map +1 -0
- package/dist/outline/userInput.cjs.js +1 -1
- package/dist/outline/userInput.cjs.js.map +1 -1
- package/dist/outline/userInput.esm.js +6 -4
- package/dist/outline/userInput.esm.js.map +1 -1
- package/dist/pad/padPane2.cjs.js +1 -1
- package/dist/pad/padPane2.cjs.js.map +1 -1
- package/dist/sharing/sharingPane.cjs.js +1 -1
- package/dist/sharing/sharingPane.cjs.js.map +1 -1
- package/dist/social/editProfileDetails.cjs.js +1 -1
- package/dist/social/editProfileDetails.cjs.js.map +1 -1
- package/dist/social/editProfileDetails.esm.js +1 -1
- package/dist/social/socialPane2.cjs.js +1 -1
- package/dist/social/socialPane2.cjs.js.map +1 -1
- package/dist/social/socialSections.cjs.js +1 -1
- package/dist/social/socialSections.cjs.js.map +1 -1
- package/dist/social/socialSections.esm.js +7 -6
- package/dist/social/socialSections.esm.js.map +1 -1
- package/dist/social/triage.cjs.js +1 -1
- package/dist/social/triage.cjs.js.map +1 -1
- package/dist/tabbed/tabbedPane.cjs.js +1 -1
- package/dist/tabbed/tabbedPane.cjs.js.map +1 -1
- package/dist/trustedApplications/trustedApplications.dom.cjs.js +1 -1
- package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +1 -1
- package/dist/trustedApplications/trustedApplications.utils.cjs.js +1 -1
- package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +1 -1
- package/dist/trustedApplications/trustedApplications.view.cjs.js +1 -1
- package/dist/trustedApplications/trustedApplications.view.cjs.js.map +1 -1
- package/dist/utils/podUtils.cjs.js +1 -1
- package/dist/utils/podUtils.cjs.js.map +1 -1
- package/dist/utils/webIdUtils.cjs.js +1 -1
- package/dist/utils/webIdUtils.cjs.js.map +1 -1
- package/dist/versionInfo.cjs.js +1 -1
- package/dist/versionInfo.cjs.js.map +1 -1
- package/dist/versionInfo.esm.js +3 -3
- package/dist/versionInfo.esm.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import "../../_virtual/~icons/lucide/ellipsis-vertical.esm.js";
|
|
2
|
+
import e from "./DeleteResourceDialog.esm.js";
|
|
3
|
+
import "../../_virtual/~icons/lucide/trash-2.esm.js";
|
|
4
|
+
import { WebComponent as t, showDialog as n, utils as r } from "solid-ui";
|
|
5
|
+
import { html as i } from "lit";
|
|
6
|
+
import { customElement as a, property as o } from "lit/decorators.js";
|
|
7
|
+
import "solid-ui/components/button";
|
|
8
|
+
import "solid-ui/components/menu";
|
|
9
|
+
import "solid-ui/components/menu-item";
|
|
10
|
+
//#region src/components/resource-actions-menu/ResourceActionsMenu.ts
|
|
11
|
+
var s, c, l, u, d, f, p, m, h, g, _;
|
|
12
|
+
function v(e, t, n) {
|
|
13
|
+
y(e, t), t.set(e, n);
|
|
14
|
+
}
|
|
15
|
+
function y(e, t) {
|
|
16
|
+
if (t.has(e)) throw TypeError("Cannot initialize the same private elements twice on an object");
|
|
17
|
+
}
|
|
18
|
+
function b(e, t, n) {
|
|
19
|
+
return e.set(S(e, t), n), n;
|
|
20
|
+
}
|
|
21
|
+
function x(e, t) {
|
|
22
|
+
return e.get(S(e, t));
|
|
23
|
+
}
|
|
24
|
+
function S(e, t, n) {
|
|
25
|
+
if (typeof e == "function" ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
|
|
26
|
+
throw TypeError("Private element is not present on this object");
|
|
27
|
+
}
|
|
28
|
+
function C(e, t, n, r, i, a) {
|
|
29
|
+
function o(e, t, n) {
|
|
30
|
+
return function(r, i) {
|
|
31
|
+
return n && n(r), e[t].call(r, i);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function s(e, t) {
|
|
35
|
+
for (var n = 0; n < e.length; n++) e[n].call(t);
|
|
36
|
+
return t;
|
|
37
|
+
}
|
|
38
|
+
function c(e, t, n, r) {
|
|
39
|
+
if (typeof e != "function" && (r || e !== void 0)) throw TypeError(t + " must " + (n || "be") + " a function" + (r ? "" : " or undefined"));
|
|
40
|
+
return e;
|
|
41
|
+
}
|
|
42
|
+
function l(e, t, n, r, i, a, s, l, u, d, f, p, m) {
|
|
43
|
+
function h(e) {
|
|
44
|
+
if (!m(e)) throw TypeError("Attempted to access private element on non-instance");
|
|
45
|
+
}
|
|
46
|
+
var g, _ = t[0], v = t[3], y = !l;
|
|
47
|
+
if (!y) {
|
|
48
|
+
n || Array.isArray(_) || (_ = [_]);
|
|
49
|
+
var b = {}, x = [], S = i === 3 ? "get" : i === 4 || p ? "set" : "value";
|
|
50
|
+
d ? (f || p ? b = {
|
|
51
|
+
get: E(function() {
|
|
52
|
+
return v(this);
|
|
53
|
+
}, r, "get"),
|
|
54
|
+
set: function(e) {
|
|
55
|
+
t[4](this, e);
|
|
56
|
+
}
|
|
57
|
+
} : b[S] = v, f || E(b[S], r, i === 2 ? "" : S)) : f || (b = Object.getOwnPropertyDescriptor(e, r));
|
|
58
|
+
}
|
|
59
|
+
for (var C = e, w = _.length - 1; w >= 0; w -= n ? 2 : 1) {
|
|
60
|
+
var T = _[w], D = n ? _[w - 1] : void 0, O = {}, k = {
|
|
61
|
+
kind: [
|
|
62
|
+
"field",
|
|
63
|
+
"accessor",
|
|
64
|
+
"method",
|
|
65
|
+
"getter",
|
|
66
|
+
"setter",
|
|
67
|
+
"class"
|
|
68
|
+
][i],
|
|
69
|
+
name: r,
|
|
70
|
+
metadata: a,
|
|
71
|
+
addInitializer: function(e, t) {
|
|
72
|
+
if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
|
|
73
|
+
c(t, "An initializer", "be", !0), s.push(t);
|
|
74
|
+
}.bind(null, O)
|
|
75
|
+
};
|
|
76
|
+
try {
|
|
77
|
+
if (y) (g = c(T.call(D, C, k), "class decorators", "return")) && (C = g);
|
|
78
|
+
else {
|
|
79
|
+
var A, j;
|
|
80
|
+
k.static = u, k.private = d, d ? i === 2 ? A = function(e) {
|
|
81
|
+
return h(e), b.value;
|
|
82
|
+
} : (i < 4 && (A = o(b, "get", h)), i !== 3 && (j = o(b, "set", h))) : (A = function(e) {
|
|
83
|
+
return e[r];
|
|
84
|
+
}, (i < 2 || i === 4) && (j = function(e, t) {
|
|
85
|
+
e[r] = t;
|
|
86
|
+
}));
|
|
87
|
+
var M = k.access = { has: d ? m.bind() : function(e) {
|
|
88
|
+
return r in e;
|
|
89
|
+
} };
|
|
90
|
+
if (A && (M.get = A), j && (M.set = j), C = T.call(D, p ? {
|
|
91
|
+
get: b.get,
|
|
92
|
+
set: b.set
|
|
93
|
+
} : b[S], k), p) {
|
|
94
|
+
if (typeof C == "object" && C) (g = c(C.get, "accessor.get")) && (b.get = g), (g = c(C.set, "accessor.set")) && (b.set = g), (g = c(C.init, "accessor.init")) && x.push(g);
|
|
95
|
+
else if (C !== void 0) throw TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
|
|
96
|
+
} else c(C, (f ? "field" : "method") + " decorators", "return") && (f ? x.push(C) : b[S] = C);
|
|
97
|
+
}
|
|
98
|
+
} finally {
|
|
99
|
+
O.v = !0;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return (f || p) && l.push(function(e, t) {
|
|
103
|
+
for (var n = x.length - 1; n >= 0; n--) t = x[n].call(e, t);
|
|
104
|
+
return t;
|
|
105
|
+
}), f || y || (d ? p ? l.push(o(b, "get"), o(b, "set")) : l.push(i === 2 ? b[S] : o.call.bind(b[S])) : Object.defineProperty(e, r, b)), C;
|
|
106
|
+
}
|
|
107
|
+
function u(e, t) {
|
|
108
|
+
return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), {
|
|
109
|
+
configurable: !0,
|
|
110
|
+
enumerable: !0,
|
|
111
|
+
value: t
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (arguments.length >= 6) var d = a[Symbol.metadata || Symbol.for("Symbol.metadata")];
|
|
115
|
+
var f = Object.create(d ?? null), p = function(e, t, n, r) {
|
|
116
|
+
var i, a, o = [], c = function(t) {
|
|
117
|
+
return D(t) === e;
|
|
118
|
+
}, u = /* @__PURE__ */ new Map();
|
|
119
|
+
function d(e) {
|
|
120
|
+
e && o.push(s.bind(null, e));
|
|
121
|
+
}
|
|
122
|
+
for (var f = 0; f < t.length; f++) {
|
|
123
|
+
var p = t[f];
|
|
124
|
+
if (Array.isArray(p)) {
|
|
125
|
+
var m = p[1], h = p[2], g = p.length > 3, _ = 16 & m, v = !!(8 & m), y = (m &= 7) == 0, b = h + "/" + v;
|
|
126
|
+
if (!y && !g) {
|
|
127
|
+
var x = u.get(b);
|
|
128
|
+
if (!0 === x || x === 3 && m !== 4 || x === 4 && m !== 3) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
|
|
129
|
+
u.set(b, !(m > 2) || m);
|
|
130
|
+
}
|
|
131
|
+
l(v ? e : e.prototype, p, _, g ? "#" + h : w(h), m, r, v ? a ||= [] : i ||= [], o, v, g, y, m === 1, v && g ? c : n);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return d(i), d(a), o;
|
|
135
|
+
}(e, t, i, f);
|
|
136
|
+
return n.length || u(e, f), {
|
|
137
|
+
e: p,
|
|
138
|
+
get c() {
|
|
139
|
+
var t = [];
|
|
140
|
+
return n.length && [u(l(e, [n], r, e.name, 5, f, t), f), s.bind(null, t, e)];
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function w(e) {
|
|
145
|
+
var t = T(e, "string");
|
|
146
|
+
return typeof t == "symbol" ? t : t + "";
|
|
147
|
+
}
|
|
148
|
+
function T(e, t) {
|
|
149
|
+
if (typeof e != "object" || !e) return e;
|
|
150
|
+
var n = e[Symbol.toPrimitive];
|
|
151
|
+
if (n !== void 0) {
|
|
152
|
+
var r = n.call(e, t || "default");
|
|
153
|
+
if (typeof r != "object") return r;
|
|
154
|
+
throw TypeError("@@toPrimitive must return a primitive value.");
|
|
155
|
+
}
|
|
156
|
+
return (t === "string" ? String : Number)(e);
|
|
157
|
+
}
|
|
158
|
+
function E(e, t, n) {
|
|
159
|
+
typeof t == "symbol" && (t = (t = t.description) ? "[" + t + "]" : "");
|
|
160
|
+
try {
|
|
161
|
+
Object.defineProperty(e, "name", {
|
|
162
|
+
configurable: !0,
|
|
163
|
+
value: n ? n + " " + t : t
|
|
164
|
+
});
|
|
165
|
+
} catch {}
|
|
166
|
+
return e;
|
|
167
|
+
}
|
|
168
|
+
function D(e) {
|
|
169
|
+
if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (e === null ? "null" : typeof e));
|
|
170
|
+
return e;
|
|
171
|
+
}
|
|
172
|
+
u = [a("resource-actions-menu")];
|
|
173
|
+
var O, k = /*#__PURE__*/ new WeakMap(), A = /*#__PURE__*/ new WeakMap(), j = /*#__PURE__*/ new WeakMap();
|
|
174
|
+
_ = (d = o({ attribute: !1 }), p = o({ type: String }), h = o({ attribute: !1 }), "store"), s = class extends t {
|
|
175
|
+
constructor(...e) {
|
|
176
|
+
super(...e), v(this, k, (c(this), f(this))), v(this, A, m(this)), v(this, j, g(this, []));
|
|
177
|
+
}
|
|
178
|
+
get [_]() {
|
|
179
|
+
return x(k, this);
|
|
180
|
+
}
|
|
181
|
+
set store(e) {
|
|
182
|
+
b(k, this, e);
|
|
183
|
+
}
|
|
184
|
+
get subjectUri() {
|
|
185
|
+
return x(A, this);
|
|
186
|
+
}
|
|
187
|
+
set subjectUri(e) {
|
|
188
|
+
b(A, this, e);
|
|
189
|
+
}
|
|
190
|
+
get menuItems() {
|
|
191
|
+
return x(j, this);
|
|
192
|
+
}
|
|
193
|
+
set menuItems(e) {
|
|
194
|
+
b(j, this, e);
|
|
195
|
+
}
|
|
196
|
+
confirmDelete(t) {
|
|
197
|
+
return new Promise((r) => {
|
|
198
|
+
n(e, {
|
|
199
|
+
props: { resourceName: t },
|
|
200
|
+
onClose: (e) => r(e === !0)
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
async deleteResourceIfPresent(e, t) {
|
|
205
|
+
try {
|
|
206
|
+
await e.fetcher.webOperation("DELETE", t);
|
|
207
|
+
} catch (e) {
|
|
208
|
+
if ((e?.response?.status ?? e?.status) === 404) return;
|
|
209
|
+
throw e;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
async handleDelete(e) {
|
|
213
|
+
if (e.preventDefault(), !this.store?.fetcher || !this.subjectUri) return;
|
|
214
|
+
let t = this.store, n = t.sym(this.subjectUri);
|
|
215
|
+
if (await this.confirmDelete(r.label(n))) try {
|
|
216
|
+
await this.deleteResourceIfPresent(t, n.value);
|
|
217
|
+
let e = this.subjectUri + ".acl";
|
|
218
|
+
e && (await this.deleteResourceIfPresent(t, e), t.removeDocument(t.sym(e))), t.removeDocument(n);
|
|
219
|
+
} catch {}
|
|
220
|
+
}
|
|
221
|
+
render() {
|
|
222
|
+
return i`
|
|
223
|
+
<solid-ui-menu>
|
|
224
|
+
<solid-ui-button slot="trigger" variant="ghost" title="More options">
|
|
225
|
+
<icon-lucide-ellipsis-vertical slot="icon"></icon-lucide-ellipsis-vertical>
|
|
226
|
+
</solid-ui-button>
|
|
227
|
+
${this.menuItems.map((e) => i`
|
|
228
|
+
<solid-ui-menu-item @solid-ui-select=${(t) => e.action(t)}>
|
|
229
|
+
${e.icon}
|
|
230
|
+
${e.label}
|
|
231
|
+
</solid-ui-menu-item>
|
|
232
|
+
`)}
|
|
233
|
+
<solid-ui-menu-item @solid-ui-select=${(e) => this.handleDelete(e)}>
|
|
234
|
+
<icon-lucide-trash-2 slot="left-icon"></icon-lucide-trash-2>
|
|
235
|
+
Delete
|
|
236
|
+
</solid-ui-menu-item>
|
|
237
|
+
</solid-ui-menu>
|
|
238
|
+
`;
|
|
239
|
+
}
|
|
240
|
+
}, {e: [f, m, g, c], c: [O, l]} = C(s, [
|
|
241
|
+
[
|
|
242
|
+
d,
|
|
243
|
+
1,
|
|
244
|
+
"store"
|
|
245
|
+
],
|
|
246
|
+
[
|
|
247
|
+
p,
|
|
248
|
+
1,
|
|
249
|
+
"subjectUri"
|
|
250
|
+
],
|
|
251
|
+
[
|
|
252
|
+
h,
|
|
253
|
+
1,
|
|
254
|
+
"menuItems"
|
|
255
|
+
]
|
|
256
|
+
], u, 0, void 0, t), l();
|
|
257
|
+
//#endregion
|
|
258
|
+
export { O as default };
|
|
259
|
+
|
|
260
|
+
//# sourceMappingURL=ResourceActionsMenu.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceActionsMenu.esm.js","names":["showDialog","utils","WebComponent","customElement","property","html","DeleteResourceDialog","_classDecs","_ResourceActionsMenu","_A","WeakMap","_B","_C","_ref","_storeDecs","attribute","_subjectUriDecs","type","String","_menuItemsDecs","ResourceActionsMenu","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_store","_init_subjectUri","_init_menuItems","_classPrivateFieldGet","store","v","_classPrivateFieldSet","subjectUri","menuItems","confirmDelete","resourceName","Promise","resolve","props","onClose","result","deleteResourceIfPresent","uri","fetcher","webOperation","err","status","response","handleDelete","event","preventDefault","resourceNode","sym","confirmation","label","value","aclUri","removeDocument","render","map","item","action","icon","_ResourceActionsMenu2","e","c","_initClass","_applyDecs","default"],"sources":["../../../src/components/resource-actions-menu/ResourceActionsMenu.ts"],"sourcesContent":["import { showDialog, utils, WebComponent } from 'solid-ui'\nimport { customElement, property } from 'lit/decorators.js'\nimport { html } from 'lit'\nimport 'solid-ui/components/button'\nimport 'solid-ui/components/menu'\nimport 'solid-ui/components/menu-item'\nimport DeleteResourceDialog from './DeleteResourceDialog'\nimport '~icons/lucide/ellipsis-vertical'\nimport '~icons/lucide/trash-2'\nimport { LiveStore } from 'rdflib'\n// TODO: Add Error Status section\n\n@customElement('resource-actions-menu')\nexport default class ResourceActionsMenu extends WebComponent {\n @property({ attribute: false })\n accessor store: LiveStore | undefined\n\n @property({ type: String })\n accessor subjectUri: string | undefined\n\n @property({ attribute: false })\n accessor menuItems: Array<{ label: string, icon?: HTMLElement, action: (event: Event) => void }> = []\n\n private confirmDelete (resourceName: string) {\n return new Promise<boolean>(resolve => {\n showDialog(DeleteResourceDialog, {\n props: { resourceName },\n onClose: (result) => resolve(result === true)\n })\n })\n }\n\n /* private gotoParentFolder(resourceUri: string) {\n const sourceContext = this.sourceContext\n const outliner = sourceContext?.context?.getOutliner?.(sourceContext.context.dom)\n\n if (!outliner) return\n\n const parentFolderUri = this.getParentFolderUri(resourceUri)\n ;(outliner as any).GotoSubject(sourceContext.context.session.store.sym(parentFolderUri), true, undefined, true, undefined)\n } */\n\n private async deleteResourceIfPresent (store: LiveStore, uri: string) {\n try {\n await store.fetcher.webOperation('DELETE', uri)\n } catch (err: any) {\n const status = err?.response?.status ?? err?.status\n if (status === 404) return\n throw err\n }\n }\n\n // TODO: Below is for a file only. I need to move this to a function\n // that function needs to check if it's a container and if so we can do the\n // recursive delete function.\n // dont' forget public and private type indexes.\n private async handleDelete (event: Event) {\n event.preventDefault()\n\n if (!this.store?.fetcher || !this.subjectUri) return\n\n const store = this.store\n const resourceNode = store.sym(this.subjectUri)\n\n const confirmation = await this.confirmDelete(utils.label(resourceNode))\n if (!confirmation) return\n\n try {\n await this.deleteResourceIfPresent(store, resourceNode.value)\n\n const aclUri = this.subjectUri + '.acl'\n if (aclUri) {\n await this.deleteResourceIfPresent(store, aclUri)\n store.removeDocument(store.sym(aclUri))\n }\n\n store.removeDocument(resourceNode)\n // this.gotoParentFolder(resourceNode.value)\n } catch (err) {\n // error('Error deleting resource:', err)\n // getStatusSection()?.showError('Failed to delete resource. Check console for details.')\n }\n }\n\n render () {\n return html`\n <solid-ui-menu>\n <solid-ui-button slot=\"trigger\" variant=\"ghost\" title=\"More options\">\n <icon-lucide-ellipsis-vertical slot=\"icon\"></icon-lucide-ellipsis-vertical>\n </solid-ui-button>\n ${this.menuItems.map(item => html`\n <solid-ui-menu-item @solid-ui-select=${(event: Event) => item.action(event)}>\n ${item.icon}\n ${item.label}\n </solid-ui-menu-item>\n `)}\n <solid-ui-menu-item @solid-ui-select=${(event: Event) => this.handleDelete(event)}>\n <icon-lucide-trash-2 slot=\"left-icon\"></icon-lucide-trash-2>\n Delete\n </solid-ui-menu-item>\n </solid-ui-menu>\n `\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQ8BO,IAAA,CAI7BJ,EAAc,uBAAuB,CAAC;AAAA,IAAAK,GAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,kBAAA,IAAAF,QAAA;AAAAG,KAAAC,IAEpCV,EAAS,EAAEW,WAAW,GAAM,CAAC,GAACC,IAG9BZ,EAAS,EAAEa,MAAMC,OAAO,CAAC,GAACC,IAG1Bf,EAAS,EAAEW,WAAW,GAAM,CAAC,GAAC,UAmFhCgD,IAAA3C,cA1FgDlB,EAAa;CAAAmB,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAd,IAAAe,EAAA,IAAA,GAAAC,EAAA,IAAA,EAAA,GAAAF,EAAA,MAAAZ,GAAAe,EAAA,IAAA,CAAA,GAAAH,EAAA,MAAAX,GAAAe,EAAA,MAQuC,CAAA,CAAE,CAAA;CAAA;CAAA,KAAAd,KAAA;EAAA,OAAAe,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAN5FoB,MAAKC,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGLE,aAAU;EAAA,OAAAJ,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAAVqB,WAAUF,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAAA,IAGVG,YAAS;EAAA,OAAAL,EAAAhB,GAAA,IAAA;CAAA;CAAA,IAATqB,UAASH,GAAA;EAAAC,EAAAnB,GAAA,MAAAkB,CAAA;CAAA;CAEVI,cAAeC,GAAsB;EAC3C,OAAO,IAAIC,SAAiBC,MAAW;GACrCrC,EAAWM,GAAsB;IAC/BgC,OAAO,EAAEH,gBAAa;IACtBI,UAAUC,MAAWH,EAAQG,MAAW,EAAI;GAC9C,CAAC;EACH,CAAC;CACH;CAYA,MAAcC,wBAAyBZ,GAAkBa,GAAa;EACpE,IAAI;GACF,MAAMb,EAAMc,QAAQC,aAAa,UAAUF,CAAG;EAChD,SAASG,GAAU;GAEjB,KADeA,GAAKE,UAAUD,UAAUD,GAAKC,YAC9B,KAAK;GACpB,MAAMD;EACR;CACF;CAMA,MAAcG,aAAcC,GAAc;EAGxC,IAFAA,EAAMC,eAAe,GAEjB,CAAC,KAAKrB,OAAOc,WAAW,CAAC,KAAKX,YAAY;EAE9C,IAAMH,IAAQ,KAAKA,OACbsB,IAAetB,EAAMuB,IAAI,KAAKpB,UAAU;EAGzCqB,UADsB,KAAKnB,cAAcjC,EAAMqD,MAAMH,CAAY,CAAC,GAGvE,IAAI;GACF,MAAM,KAAKV,wBAAwBZ,GAAOsB,EAAaI,KAAK;GAE5D,IAAMC,IAAS,KAAKxB,aAAa;GAMjCH,AALI2B,MACF,MAAM,KAAKf,wBAAwBZ,GAAO2B,CAAM,GAChD3B,EAAM4B,eAAe5B,EAAMuB,IAAII,CAAM,CAAC,IAGxC3B,EAAM4B,eAAeN,CAAY;EAEnC,QAAc,CAEZ;CAEJ;CAEAO,SAAU;EACR,OAAOrD,CAAI;;;;;UAKL,KAAK4B,UAAU0B,KAAIC,MAAQvD,CAAI;kDACS4C,MAAiBW,EAAKC,OAAOZ,CAAK,EAAC;cACvEW,EAAKE,KAAI;cACTF,EAAKN,MAAK;;SAEf,EAAC;gDACsCL,MAAiB,KAAKD,aAAaC,CAAK,EAAC;;;;;;CAMvF;AACF,GAAC,CAAAe,GAAA,CAAAvC,GAAAC,GAAAC,GAAAH,IAAAyC,GAAA,CAAAzD,GAAA0D,MAAAC,EAAAJ,GAAA;CAAA;EAAAjD;EAAA;EAAA;CAAA;CAAA;EAAAE;EAAA;EAAA;CAAA;CAAA;EAAAG;EAAA;EAAA;CAAA;AAAA,GAAAZ,GAAA,GAAA,KAAA,GA1FgDL,CAAY,GAAAgE,EAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
const e=require("./ontologyData.cjs.js"),t=require("./preferencesFormText.cjs.js");let n=require("solid-ui"),r=require("rdflib");var i={icon:n.icons.iconBase+`noun_Sliders_341315_000000.svg`,name:`basicPreferences`,label:e=>null,render:(i,s)=>{let c=s.dom,l=s.session.store;function u(e,t){e||d.appendChild(n.widgets.errorMessageBlock(c,t,`#fee`))}let d=c.createElement(`div`),f=a(d,c);function p(e,t){e=e.doc(),l.holds(void 0,void 0,void 0,e)||(0,r.parse)(t,l,e.uri,`text/turtle`,null)}let m=l.sym(`urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597#this`);p(m,t.default),p(l.sym(`urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597-ONT`),e.default);async function h(){let e=await n.login.ensureLoadedPreferences({dom:c,div:d});if(!e.preferencesFile){console.log(`Not doing private class preferences as no access to preferences file. `+e.preferencesFileError);return}let t=n.widgets.appendForm(c,f,{},e.me,m,e.preferencesFile,u);t.style.borderStyle=`none`;let r=s.session.paneRegistry.byName(`trustedApplications`);r&&d.appendChild(r.render(null,s)),o(d,l,e.me,c)}return h(),d}};function a(e,t){let n=l(e,t,`User types`),r=n.appendChild(t.createElement(`p`));r.innerText=`Here you can self-assign user types to help the data browser know which views you would like to access.`;let i=n.appendChild(t.createElement(`a`));return i.href=`https://github.com/solidos/userguide/#role`,i.innerText=`Read more`,n.appendChild(t.createElement(`div`))}function o(e,t,r,i){let a=l(e,i,`Delete account`),o=t.each(r,n.ns.space(`storage`),null,r.doc()).map(e=>e.value),c=a.appendChild(i.createElement(`ul`));o.forEach(async e=>{let t=await s(e,i);t&&c.appendChild(i.createElement(`li`)).appendChild(t)})}async function s(e,t){let n=t.createElement(`a`);n.textContent=`Delete your account at ${e}`;let r=await c(e);return typeof r==`string`?(n.href=r,n):null}async function c(e){let t=new URL(e),n=new URL(e);return n.pathname=t.pathname=`/account/delete`,n.hostname=n.hostname.split(`.`).slice(1).join(`.`),(await fetch(n.href,{method:`HEAD`})).ok?n.href:(await fetch(t.href,{method:`HEAD`})).ok?t.href:null}function l(e,t,n){let r=e.appendChild(t.createElement(`div`));r.style.border=`0.3em solid #418d99`,r.style.borderRadius=`0.5em`,r.style.padding=`0.7em`,r.style.marginTop=`0.7em`;let i=r.appendChild(t.createElement(`h3`));return i.innerText=n,r}exports.basicPreferencesPane=i,exports.default=i;
|
|
2
2
|
//# sourceMappingURL=basicPreferences.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basicPreferences.cjs.js","names":[],"sources":["../../src/dashboard/basicPreferences.ts"],"sourcesContent":["import { PaneDefinition } from 'pane-registry'\nimport { IndexedFormula, NamedNode, parse, Store } from 'rdflib'\nimport { icons, login, ns, widgets } from 'solid-ui'\nimport ontologyData from './ontologyData.ttl'\nimport preferencesFormText from './preferencesFormText.ttl'\n\nexport const basicPreferencesPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_Sliders_341315_000000.svg',\n name: 'basicPreferences',\n label: _subject => {\n return null\n },\n\n // Render the pane\n // The subject should be the logged in user.\n render: (subject, context) => {\n const dom = context.dom\n // @ts-ignore\n const store = context.session.store as Store\n\n function complainIfBad (ok: Boolean, mess: any) {\n if (ok) return\n container.appendChild(widgets.errorMessageBlock(dom, mess, '#fee'))\n }\n\n const container = dom.createElement('div')\n\n const formArea = setupUserTypesSection(container, dom)\n\n function loadData (doc: NamedNode, turtle: String) {\n doc = doc.doc() // remove # from URI if nec\n if (!store.holds(undefined, undefined, undefined, doc)) {\n // If not loaded already\n ;(parse as any)(turtle, store, doc.uri, 'text/turtle', null) // Load form directly\n }\n }\n\n const preferencesForm = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597#this'\n )\n loadData(preferencesForm, preferencesFormText)\n\n const ontologyExtra = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597-ONT'\n )\n loadData(ontologyExtra, ontologyData)\n\n async function doRender () {\n const renderContext = await login.ensureLoadedPreferences({\n dom,\n div: container\n })\n if (!renderContext.preferencesFile) {\n // Could be CORS\n console.log(\n 'Not doing private class preferences as no access to preferences file. ' +\n renderContext.preferencesFileError\n )\n return\n }\n const appendedForm = widgets.appendForm(\n dom,\n formArea,\n {},\n renderContext.me,\n preferencesForm,\n renderContext.preferencesFile,\n complainIfBad\n )\n appendedForm.style.borderStyle = 'none'\n\n const trustedApplicationsView = context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplicationsView) {\n container.appendChild(trustedApplicationsView.render(null, context))\n }\n\n // @@ TODO Remove need for casting as any and bang (!) syntax\n addDeleteSection(container, store, renderContext.me!, dom)\n }\n\n doRender()\n\n return container\n }\n}\n\nfunction setupUserTypesSection (\n container: Element,\n dom: HTMLDocument\n): Element {\n const formContainer = createSection(container, dom, 'User types')\n\n const description = formContainer.appendChild(dom.createElement('p'))\n description.innerText = 'Here you can self-assign user types to help the data browser know which views you would like to access.'\n\n const userTypesLink = formContainer.appendChild(dom.createElement('a'))\n userTypesLink.href = 'https://github.com/solidos/userguide/#role'\n userTypesLink.innerText = 'Read more'\n\n const formArea = formContainer.appendChild(dom.createElement('div'))\n\n return formArea\n}\n\nexport default basicPreferencesPane\n\n// ends\n\nfunction addDeleteSection (\n container: HTMLElement,\n store: IndexedFormula,\n profile: NamedNode,\n dom: HTMLDocument\n): void {\n const section = createSection(container, dom, 'Delete account')\n\n const podServerNodes = store.each(profile, ns.space('storage'), null, profile.doc())\n const podServers = podServerNodes.map(node => node.value)\n\n const list = section.appendChild(dom.createElement('ul'))\n\n podServers.forEach(async server => {\n const deletionLink = await generateDeletionLink(server, dom)\n if (deletionLink) {\n const listItem = list.appendChild(dom.createElement('li'))\n listItem.appendChild(deletionLink)\n }\n })\n}\n\nasync function generateDeletionLink (\n podServer: string,\n dom: HTMLDocument\n): Promise<HTMLElement | null> {\n const link = dom.createElement('a')\n link.textContent = `Delete your account at ${podServer}`\n const deletionUrl = await getDeletionUrlForServer(podServer)\n if (typeof deletionUrl !== 'string') {\n return null\n }\n link.href = deletionUrl\n return link\n}\n\n/**\n * Hacky way to get the deletion link to a Pod\n *\n * This function infers the deletion link by assuming the URL structure of Node Solid server.\n * In the future, Solid will hopefully provide a standardised way of discovering the deletion link:\n * https://github.com/solidos/data-interoperability-panel/issues/18\n *\n * If NSS is in multi-user mode (the case on inrupt.net and solid.community), the deletion URL for\n * vincent.dev.inrupt.net would be at dev.inrupt.net/account/delete. In single-user mode, the\n * deletion URL would be at vincent.dev.inrupt.net/account/delete.\n *\n * @param server Pod server containing the user's account.\n * @returns URL of the page that Node Solid Server would offer to delete the account, or null if\n * the URLs we tried give invalid responses.\n */\nasync function getDeletionUrlForServer (\n server: string\n): Promise<string | null> {\n const singleUserUrl = new URL(server)\n const multiUserUrl = new URL(server)\n multiUserUrl.pathname = singleUserUrl.pathname = '/account/delete'\n\n const hostnameParts = multiUserUrl.hostname.split('.')\n // Remove `vincent.` from `vincent.dev.inrupt.net`, for example:\n multiUserUrl.hostname = hostnameParts.slice(1).join('.')\n\n const multiUserNssResponse = await fetch(multiUserUrl.href, {\n method: 'HEAD'\n })\n if (multiUserNssResponse.ok) {\n return multiUserUrl.href\n }\n\n const singleUserNssResponse = await fetch(singleUserUrl.href, {\n method: 'HEAD'\n })\n if (singleUserNssResponse.ok) {\n return singleUserUrl.href\n }\n return null\n}\n\nfunction createSection (\n container: Element,\n dom: HTMLDocument,\n title: string\n): Element {\n const section = container.appendChild(dom.createElement('div'))\n section.style.border = '0.3em solid #418d99'\n section.style.borderRadius = '0.5em'\n section.style.padding = '0.7em'\n section.style.marginTop = '0.7em'\n\n const titleElement = section.appendChild(dom.createElement('h3'))\n titleElement.innerText = title\n\n return section\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"basicPreferences.cjs.js","names":[],"sources":["../../src/dashboard/basicPreferences.ts"],"sourcesContent":["import { PaneDefinition } from 'pane-registry'\nimport { IndexedFormula, NamedNode, parse, Store } from 'rdflib'\nimport { icons, login, ns, widgets } from 'solid-ui'\nimport ontologyData from './ontologyData.ttl'\nimport preferencesFormText from './preferencesFormText.ttl'\n\nexport const basicPreferencesPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_Sliders_341315_000000.svg',\n name: 'basicPreferences',\n label: _subject => {\n return null\n },\n\n // Render the pane\n // The subject should be the logged in user.\n render: (subject, context) => {\n const dom = context.dom\n // @ts-ignore\n const store = context.session.store as Store\n\n function complainIfBad (ok: Boolean, mess: any) {\n if (ok) return\n container.appendChild(widgets.errorMessageBlock(dom, mess, '#fee'))\n }\n\n const container = dom.createElement('div')\n\n const formArea = setupUserTypesSection(container, dom)\n\n function loadData (doc: NamedNode, turtle: String) {\n doc = doc.doc() // remove # from URI if nec\n if (!store.holds(undefined, undefined, undefined, doc)) {\n // If not loaded already\n ;(parse as any)(turtle, store, doc.uri, 'text/turtle', null) // Load form directly\n }\n }\n\n const preferencesForm = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597#this'\n )\n loadData(preferencesForm, preferencesFormText)\n\n const ontologyExtra = store.sym(\n 'urn:uuid:93774ba1-d3b6-41f2-85b6-4ae27ffd2597-ONT'\n )\n loadData(ontologyExtra, ontologyData)\n\n async function doRender () {\n const renderContext = await login.ensureLoadedPreferences({\n dom,\n div: container\n })\n if (!renderContext.preferencesFile) {\n // Could be CORS\n console.log(\n 'Not doing private class preferences as no access to preferences file. ' +\n renderContext.preferencesFileError\n )\n return\n }\n const appendedForm = widgets.appendForm(\n dom,\n formArea,\n {},\n renderContext.me,\n preferencesForm,\n renderContext.preferencesFile,\n complainIfBad\n )\n appendedForm.style.borderStyle = 'none'\n\n const trustedApplicationsView = context.session.paneRegistry.byName('trustedApplications')\n if (trustedApplicationsView) {\n container.appendChild(trustedApplicationsView.render(null, context))\n }\n\n // @@ TODO Remove need for casting as any and bang (!) syntax\n addDeleteSection(container, store, renderContext.me!, dom)\n }\n\n doRender()\n\n return container\n }\n}\n\nfunction setupUserTypesSection (\n container: Element,\n dom: HTMLDocument\n): Element {\n const formContainer = createSection(container, dom, 'User types')\n\n const description = formContainer.appendChild(dom.createElement('p'))\n description.innerText = 'Here you can self-assign user types to help the data browser know which views you would like to access.'\n\n const userTypesLink = formContainer.appendChild(dom.createElement('a'))\n userTypesLink.href = 'https://github.com/solidos/userguide/#role'\n userTypesLink.innerText = 'Read more'\n\n const formArea = formContainer.appendChild(dom.createElement('div'))\n\n return formArea\n}\n\nexport default basicPreferencesPane\n\n// ends\n\nfunction addDeleteSection (\n container: HTMLElement,\n store: IndexedFormula,\n profile: NamedNode,\n dom: HTMLDocument\n): void {\n const section = createSection(container, dom, 'Delete account')\n\n const podServerNodes = store.each(profile, ns.space('storage'), null, profile.doc())\n const podServers = podServerNodes.map(node => node.value)\n\n const list = section.appendChild(dom.createElement('ul'))\n\n podServers.forEach(async server => {\n const deletionLink = await generateDeletionLink(server, dom)\n if (deletionLink) {\n const listItem = list.appendChild(dom.createElement('li'))\n listItem.appendChild(deletionLink)\n }\n })\n}\n\nasync function generateDeletionLink (\n podServer: string,\n dom: HTMLDocument\n): Promise<HTMLElement | null> {\n const link = dom.createElement('a')\n link.textContent = `Delete your account at ${podServer}`\n const deletionUrl = await getDeletionUrlForServer(podServer)\n if (typeof deletionUrl !== 'string') {\n return null\n }\n link.href = deletionUrl\n return link\n}\n\n/**\n * Hacky way to get the deletion link to a Pod\n *\n * This function infers the deletion link by assuming the URL structure of Node Solid server.\n * In the future, Solid will hopefully provide a standardised way of discovering the deletion link:\n * https://github.com/solidos/data-interoperability-panel/issues/18\n *\n * If NSS is in multi-user mode (the case on inrupt.net and solid.community), the deletion URL for\n * vincent.dev.inrupt.net would be at dev.inrupt.net/account/delete. In single-user mode, the\n * deletion URL would be at vincent.dev.inrupt.net/account/delete.\n *\n * @param server Pod server containing the user's account.\n * @returns URL of the page that Node Solid Server would offer to delete the account, or null if\n * the URLs we tried give invalid responses.\n */\nasync function getDeletionUrlForServer (\n server: string\n): Promise<string | null> {\n const singleUserUrl = new URL(server)\n const multiUserUrl = new URL(server)\n multiUserUrl.pathname = singleUserUrl.pathname = '/account/delete'\n\n const hostnameParts = multiUserUrl.hostname.split('.')\n // Remove `vincent.` from `vincent.dev.inrupt.net`, for example:\n multiUserUrl.hostname = hostnameParts.slice(1).join('.')\n\n const multiUserNssResponse = await fetch(multiUserUrl.href, {\n method: 'HEAD'\n })\n if (multiUserNssResponse.ok) {\n return multiUserUrl.href\n }\n\n const singleUserNssResponse = await fetch(singleUserUrl.href, {\n method: 'HEAD'\n })\n if (singleUserNssResponse.ok) {\n return singleUserUrl.href\n }\n return null\n}\n\nfunction createSection (\n container: Element,\n dom: HTMLDocument,\n title: string\n): Element {\n const section = container.appendChild(dom.createElement('div'))\n section.style.border = '0.3em solid #418d99'\n section.style.borderRadius = '0.5em'\n section.style.padding = '0.7em'\n section.style.marginTop = '0.7em'\n\n const titleElement = section.appendChild(dom.createElement('h3'))\n titleElement.innerText = title\n\n return section\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("
|
|
1
|
+
require("./homepage.cjs.js");let e=require("solid-ui");require("solid-logic"),e.icons.iconBase+``;
|
|
2
2
|
//# sourceMappingURL=dashboardPane.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboardPane.cjs.js","names":[],"sources":["../../src/dashboard/dashboardPane.ts"],"sourcesContent":["import { icons } from 'solid-ui'\nimport { authn, authSession, store } from 'solid-logic'\nimport { Fetcher, NamedNode } from 'rdflib'\nimport { generateHomepage } from './homepage'\nimport { DataBrowserContext, PaneDefinition } from 'pane-registry'\n\nexport const dashboardPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_547570.svg',\n name: 'dashboard',\n label: subject => {\n if (subject.termType === 'NamedNode' && subject.uri === subject.site().uri) {\n return 'Dashboard'\n }\n return null\n },\n render: (subject, context) => {\n console.log('Dashboard Pane Render')\n const dom = context.dom\n const container = dom.createElement('div')\n const runBuildPage = () => {\n container.innerHTML = ''\n buildPage(\n container,\n authn.currentUser() || null,\n context,\n subject\n )\n }\n\n authSession.events.on('login', () => {\n // console.log('On Login')\n runBuildPage()\n })\n authSession.events.on('sessionRestore', () => {\n // console.log('On Session Restore')\n runBuildPage()\n })\n // console.log('Initial Load')\n runBuildPage()\n\n return container\n }\n}\n\nfunction buildPage (\n container: HTMLElement,\n webId: NamedNode | null,\n context: DataBrowserContext,\n subject: NamedNode | null\n) {\n const uri = (new URL(window.location.href)).searchParams.get('uri')\n\n if (uri && webId) {\n return buildDashboard(container, context)\n }\n\n if (!uri && subject) {\n return buildHomePage(container, subject)\n }\n\n if (!uri && !subject && webId) {\n return buildDashboard(container, context)\n }\n\n const fallbackSubject = subject || webId || store.sym(window.location.href)\n return buildHomePage(container, fallbackSubject)\n}\n\nfunction buildDashboard (container: HTMLElement, context: DataBrowserContext) {\n // console.log('build dashboard')\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(context.dom)\n outliner\n .getDashboard()\n .then((dashboard: HTMLElement) => container.appendChild(dashboard))\n}\n\nfunction buildHomePage (container: HTMLElement, subject: NamedNode) {\n // console.log('build home page')\n const wrapper = document.createElement('div')\n container.appendChild(wrapper)\n const shadow = wrapper.attachShadow({ mode: 'open' })\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/common/css/bootstrap.min.css'\n shadow.appendChild(link)\n generateHomepage(subject, store, store.fetcher as Fetcher).then(homepage =>\n shadow.appendChild(homepage)\n )\n}\n\nexport default dashboardPane\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"dashboardPane.cjs.js","names":[],"sources":["../../src/dashboard/dashboardPane.ts"],"sourcesContent":["import { icons } from 'solid-ui'\nimport { authn, authSession, store } from 'solid-logic'\nimport { Fetcher, NamedNode } from 'rdflib'\nimport { generateHomepage } from './homepage'\nimport { DataBrowserContext, PaneDefinition } from 'pane-registry'\n\nexport const dashboardPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_547570.svg',\n name: 'dashboard',\n label: subject => {\n if (subject.termType === 'NamedNode' && subject.uri === subject.site().uri) {\n return 'Dashboard'\n }\n return null\n },\n render: (subject, context) => {\n console.log('Dashboard Pane Render')\n const dom = context.dom\n const container = dom.createElement('div')\n const runBuildPage = () => {\n container.innerHTML = ''\n buildPage(\n container,\n authn.currentUser() || null,\n context,\n subject\n )\n }\n\n authSession.events.on('login', () => {\n // console.log('On Login')\n runBuildPage()\n })\n authSession.events.on('sessionRestore', () => {\n // console.log('On Session Restore')\n runBuildPage()\n })\n // console.log('Initial Load')\n runBuildPage()\n\n return container\n }\n}\n\nfunction buildPage (\n container: HTMLElement,\n webId: NamedNode | null,\n context: DataBrowserContext,\n subject: NamedNode | null\n) {\n const uri = (new URL(window.location.href)).searchParams.get('uri')\n\n if (uri && webId) {\n return buildDashboard(container, context)\n }\n\n if (!uri && subject) {\n return buildHomePage(container, subject)\n }\n\n if (!uri && !subject && webId) {\n return buildDashboard(container, context)\n }\n\n const fallbackSubject = subject || webId || store.sym(window.location.href)\n return buildHomePage(container, fallbackSubject)\n}\n\nfunction buildDashboard (container: HTMLElement, context: DataBrowserContext) {\n // console.log('build dashboard')\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(context.dom)\n outliner\n .getDashboard()\n .then((dashboard: HTMLElement) => container.appendChild(dashboard))\n}\n\nfunction buildHomePage (container: HTMLElement, subject: NamedNode) {\n // console.log('build home page')\n const wrapper = document.createElement('div')\n container.appendChild(wrapper)\n const shadow = wrapper.attachShadow({ mode: 'open' })\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/common/css/bootstrap.min.css'\n shadow.appendChild(link)\n generateHomepage(subject, store, store.fetcher as Fetcher).then(homepage =>\n shadow.appendChild(homepage)\n )\n}\n\nexport default dashboardPane\n"],"mappings":"8EAOQ,EAAA,MAAM,SAAW"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
let e=require("solid-ui"),t=require("solid-logic");var n={icon:e.icons.iconBase+`noun_547570.svg`,global:!0,name:`home`,label:function(){return`home`},audience:[e.ns.solid(`PowerUser`)],render:function(n,r){let i=r.dom,a=async function(){let t={div:o,dom:i,statusArea:o,me:s};o.appendChild(i.createElement(`h4`)).textContent=`Create new thing somewhere`;let n={div:o.appendChild(i.createElement(`div`)),dom:i,statusArea:o,me:s},a=await e.login.filterAvailablePanes(r.session.paneRegistry.list);e.create.newThingUI(n,r,a),e.login.registrationList(t,{}).then(function(){})},o=i.createElement(`div`),s=t.authn.currentUser();return a(),o}};exports.default=n;
|
|
2
2
|
//# sourceMappingURL=homePane.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homePane.cjs.js","names":[],"sources":["../../src/home/homePane.ts"],"sourcesContent":["/* Home Pane\n **\n ** The home pane is avaiable everywhere and allows a user\n ** to\n ** - keep track of their stuff\n ** - make new things, and possibly\n ** - keep track of accounts and workspaces etc\n **\n */\n\nimport { DataBrowserContext, PaneDefinition } from 'pane-registry'\nimport { NamedNode } from 'rdflib'\nimport { authn } from 'solid-logic'\nimport { create, icons, login, ns } from 'solid-ui'\nimport type { CreateContext } from 'solid-ui'\n\nconst HomePaneSource: PaneDefinition = {\n icon: icons.iconBase + 'noun_547570.svg', // noun_25830\n\n global: true,\n\n name: 'home',\n\n // Does the subject deserve an home pane?\n //\n // yes, always!\n //\n label: function () {\n return 'home'\n },\n\n audience: [ns.solid('PowerUser')],\n\n render: function (subject, context: DataBrowserContext) {\n const dom = context.dom\n const showContent = async function () {\n const homePaneContext = { div, dom, statusArea: div, me }\n /*\n div.appendChild(dom.createElement('h4')).textContent = 'Login status'\n var loginStatusDiv = div.appendChild(context.dom.createElement('div'))\n // TODO: Find out what the actual type is:\n type UriType = unknown;\n loginStatusDiv.appendChild(UI.login.loginStatusBox(context.dom, () => {\n // Here we know new log in status\n }))\n */\n div.appendChild(dom.createElement('h4')).textContent =\n 'Create new thing somewhere'\n const creationDiv = div.appendChild(dom.createElement('div'))\n const creationContext: CreateContext = {\n div: creationDiv,\n dom,\n statusArea: div,\n me\n }\n const relevantPanes = await login.filterAvailablePanes(\n context.session.paneRegistry.list\n )\n // @ts-ignore\n create.newThingUI(creationContext, context, relevantPanes) // newUI Have to pass panes down\n\n login.registrationList(homePaneContext, {}).then(function () {})\n }\n\n const div = dom.createElement('div')\n const me: NamedNode = authn.currentUser() as NamedNode // this will be incorrect if not logged in\n\n showContent()\n\n return div\n }\n} // pane object\n\n// ends\nexport default HomePaneSource\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"homePane.cjs.js","names":[],"sources":["../../src/home/homePane.ts"],"sourcesContent":["/* Home Pane\n **\n ** The home pane is avaiable everywhere and allows a user\n ** to\n ** - keep track of their stuff\n ** - make new things, and possibly\n ** - keep track of accounts and workspaces etc\n **\n */\n\nimport { DataBrowserContext, PaneDefinition } from 'pane-registry'\nimport { NamedNode } from 'rdflib'\nimport { authn } from 'solid-logic'\nimport { create, icons, login, ns } from 'solid-ui'\nimport type { CreateContext } from 'solid-ui'\n\nconst HomePaneSource: PaneDefinition = {\n icon: icons.iconBase + 'noun_547570.svg', // noun_25830\n\n global: true,\n\n name: 'home',\n\n // Does the subject deserve an home pane?\n //\n // yes, always!\n //\n label: function () {\n return 'home'\n },\n\n audience: [ns.solid('PowerUser')],\n\n render: function (subject, context: DataBrowserContext) {\n const dom = context.dom\n const showContent = async function () {\n const homePaneContext = { div, dom, statusArea: div, me }\n /*\n div.appendChild(dom.createElement('h4')).textContent = 'Login status'\n var loginStatusDiv = div.appendChild(context.dom.createElement('div'))\n // TODO: Find out what the actual type is:\n type UriType = unknown;\n loginStatusDiv.appendChild(UI.login.loginStatusBox(context.dom, () => {\n // Here we know new log in status\n }))\n */\n div.appendChild(dom.createElement('h4')).textContent =\n 'Create new thing somewhere'\n const creationDiv = div.appendChild(dom.createElement('div'))\n const creationContext: CreateContext = {\n div: creationDiv,\n dom,\n statusArea: div,\n me\n }\n const relevantPanes = await login.filterAvailablePanes(\n context.session.paneRegistry.list\n )\n // @ts-ignore\n create.newThingUI(creationContext, context, relevantPanes) // newUI Have to pass panes down\n\n login.registrationList(homePaneContext, {}).then(function () {})\n }\n\n const div = dom.createElement('div')\n const me: NamedNode = authn.currentUser() as NamedNode // this will be incorrect if not logged in\n\n showContent()\n\n return div\n }\n} // pane object\n\n// ends\nexport default HomePaneSource\n"],"mappings":"mDAgBA,IAAM,EAAiC,CACrC,KAAM,EAAA,MAAM,SAAW,kBAEvB,OAAQ,GAER,KAAM,OAMN,MAAO,UAAY,CACjB,MAAO,MACT,EAEA,SAAU,CAAC,EAAA,GAAG,MAAM,WAAW,CAAC,EAEhC,OAAQ,SAAU,EAAS,EAA6B,CACtD,IAAM,EAAM,EAAQ,IACd,EAAc,gBAAkB,CACpC,IAAM,EAAkB,CAAE,MAAK,MAAK,WAAY,EAAK,IAAG,EAUxD,EAAI,YAAY,EAAI,cAAc,IAAI,CAAC,CAAC,CAAC,YACvC,6BAEF,IAAM,EAAiC,CACrC,IAFkB,EAAI,YAAY,EAAI,cAAc,KAAK,CAEpD,EACL,MACA,WAAY,EACZ,IACF,EACM,EAAgB,MAAM,EAAA,MAAM,qBAChC,EAAQ,QAAQ,aAAa,IAC/B,EAEA,EAAA,OAAO,WAAW,EAAiB,EAAS,CAAa,EAEzD,EAAA,MAAM,iBAAiB,EAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,UAAY,CAAC,CAAC,CACjE,EAEM,EAAM,EAAI,cAAc,KAAK,EAC7B,EAAgB,EAAA,MAAM,YAAY,EAIxC,OAFA,EAAY,EAEL,CACT,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.internalPaneContent{padding:var(--spacing-xs,.5em);background-color:#ddf;border-radius:1rem}.internalPaneControls{width:100%;margin:var(--spacing-sm,1em)}.internalPaneDeleteButton{height:var(--icon-base,2em)}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})()
|
|
1
|
+
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.internalPaneContent{padding:var(--spacing-xs,.5em);background-color:#ddf;border-radius:1rem}.internalPaneControls{width:100%;margin:var(--spacing-sm,1em)}.internalPaneDeleteButton{height:var(--icon-base,2em)}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();;let e=require("solid-ui"),t=require("rdflib");var n={icon:e.icons.originalIconBase+`tango/22-emblem-system.png`,name:`internal`,label:function(){return`under the hood`},render:function(n,i){let a=i.dom,o=i.session.store,s=o.canon(n),c=o.findTypeURIs(s);function l(e){if(c[`http://www.w3.org/2007/ont/link#ProtocolEvent`])return!0;let t=i.session.paneRegistry.byName(`internal`);return t&&t.predicates&&t.predicates[e.uri]!==void 0}let u=a.createElement(`div`);u.classList.add(`internalPane`,`internalPaneContent`);function d(t,n){let r=t.fetcher;if(!r){console.error(`No fetcher available`);return}return new Promise(function(i,a){r.load(n).then(function(){let o=t.each(n,e.ns.ldp(`contains`)).map(n=>t.holds(n,e.ns.rdf(`type`),e.ns.ldp(`BasicContainer`))?d(t,n):(console.log(`deleteRecursive leaf file: `+n),r.webOperation(`DELETE`,n.uri)));Promise.all(o).then(()=>{console.log(`deleteRecursive empty folder: `+n),r.webOperation(`DELETE`,n.uri).then(()=>{console.log(`Deleted Ok: `+n),i(void 0)}).catch(e=>{let t=`Unable to delete `+n+`: `+e;console.log(t),a(Error(t))}),i(void 0)},e=>{alert(e),a(e)})})})}if(n.uri&&!n.uri.includes(`#`)){let t=u.appendChild(a.createElement(`table`));t.classList.add(`internalPaneControls`);let i=t.appendChild(a.createElement(`tr`)),s=i.appendChild(a.createElement(`td`)),c=n.uri&&n.uri.endsWith(`/`)||o.holds(n,e.ns.rdf(`type`),e.ns.ldp(`Container`)),l=c?`folder`:`file`;if(!r(n)){console.log(n);let t=e.widgets.deleteButtonWithCheck(a,s,l,function(){if(confirm(`Are you sure you want to delete ${n}? This cannot be undone.`)){if(!o.fetcher)throw Error(`Store has no fetcher`);(c?d(o,n)||Promise.resolve():o.fetcher.webOperation(`DELETE`,n.uri)||Promise.resolve()).then(()=>{let e=`Deleted: `+n;console.log(e)}).catch(e=>{let t=`Unable to delete `+n+`: `+e;console.log(t),alert(t)})}});t.removeAttribute(`class`),t.classList.add(`internalPaneDeleteButton`),s.appendChild(t)}let f=i.appendChild(a.createElement(`td`)),p=e.widgets.button(a,e.icons.iconBase+`noun_479395.svg`,`refresh`);f.appendChild(p),p.addEventListener(`click`,()=>{if(!o.fetcher)throw Error(`Store has no fetcher`);o.fetcher.refresh(n,function(e,t){let r;r=e?`Refreshed OK: `+n:`Error refreshing: `+n+`: `+t,console.log(r),alert(r)})})}let f=o.statementsMatching(n),p=``;if(!o.fetcher)throw Error(`Store has no fetcher`);if(n.uri&&(f.push((0,t.st)(n,(0,t.sym)(`http://www.w3.org/2007/ont/link#uri`),n.uri,o.fetcher.appNode)),n.uri.indexOf(`#`)>=0?(p=n.uri.split(`#`)[0],f.push((0,t.st)(n,(0,t.sym)(`http://www.w3.org/2007/ont/link#documentURI`),n.uri.split(`#`)[0],o.fetcher.appNode)),f.push((0,t.st)(n,(0,t.sym)(`http://www.w3.org/2007/ont/link#document`),(0,t.sym)(n.uri.split(`#`)[0]),o.fetcher.appNode))):p=n.uri),p){if(!o.updater)throw Error(`Store has no updater`);let e=o.updater.editable(p);e&&f.push((0,t.st)(n,(0,t.sym)(`http://www.w3.org/ns/rww#editable`),(0,t.literal)(e.toString()),o.fetcher.appNode))}let m=i.getOutliner(a);return m.appendPropertyTRs(u,f,!1,l),f=o.statementsMatching(void 0,void 0,n),m.appendPropertyTRs(u,f,!0,l),u},predicates:{"http://www.w3.org/2007/ont/link#request":1,"http://www.w3.org/2007/ont/link#requestedBy":1,"http://www.w3.org/2007/ont/link#source":1,"http://www.w3.org/2007/ont/link#session":2,"http://www.w3.org/2007/ont/link#uri":1,"http://www.w3.org/2007/ont/link#documentURI":1,"http://www.w3.org/2007/ont/link#document":1,"http://www.w3.org/2007/ont/link#all":1,"http://www.w3.org/2007/ont/link#Document":1,"http://www.w3.org/ns/rww#editable":1,"http://www.w3.org/2000/01/rdf-schema#seeAlso":1,"http://www.w3.org/2002/07/owl#":1},classes:{"http://www.w3.org/2007/ont/link#ProtocolEvent":1}};function r(e){let t=e.site().uri;return e.uri===t||e.uri===t+`profile/`||e.uri===t+`profile/card`||e.uri===t+`settings/`||e.uri===t+`settings/prefs.ttl`||e.uri===t+`settings/privateTypeIndex.ttl`||e.uri===t+`settings/publicTypeIndex.ttl`||e.uri===t+`settings/serverSide.ttl`}exports.default=n;
|
|
2
2
|
//# sourceMappingURL=internalPane2.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalPane2.cjs.js","names":[],"sources":["../../src/internal/internalPane.ts"],"sourcesContent":["/* Internal Pane\n **\n ** This outline pane contains the properties which are\n ** internal to the user's interaction with the web, and are not normally displayed\n */\n/* global alert confirm */\n\nimport { icons, ns, widgets } from 'solid-ui'\nimport { BlankNode, IndexedFormula, literal, NamedNode, st, sym, Variable, Store } from 'rdflib'\nimport { PaneDefinition } from 'pane-registry'\nimport './internalPane.css'\n\nconst pane: PaneDefinition = {\n icon: icons.originalIconBase + 'tango/22-emblem-system.png',\n\n name: 'internal',\n\n label: function () {\n return 'under the hood' // There is often a URI even of no statements\n },\n\n render: function (subject, context) {\n const dom = context.dom\n // @ts-ignore\n const store = context.session.store as Store\n const canonizedSubject = store.canon(subject) as BlankNode | NamedNode | Variable\n const types = store.findTypeURIs(canonizedSubject)\n\n function filter (pred: NamedNode) {\n if (types['http://www.w3.org/2007/ont/link#ProtocolEvent']) return true // display everything for them\n const view = context.session.paneRegistry.byName('internal')\n return (\n view &&\n view.predicates &&\n !!(typeof view.predicates[pred.uri] !== 'undefined')\n )\n }\n\n const div = dom.createElement('div')\n div.classList.add('internalPane', 'internalPaneContent')\n\n function deleteRecursive (kb: IndexedFormula, folder: NamedNode) {\n const fetcher = (kb as any).fetcher\n if (!fetcher) {\n console.error('No fetcher available')\n return\n }\n return new Promise(function (resolve, reject) {\n fetcher.load(folder).then(function () {\n const promises = kb.each(folder, ns.ldp('contains')).map(file => {\n if (kb.holds(file, ns.rdf('type'), ns.ldp('BasicContainer'))) {\n return deleteRecursive(kb, file as NamedNode)\n } else {\n console.log('deleteRecursive leaf file: ' + file)\n return fetcher.webOperation('DELETE', (file as NamedNode).uri)\n }\n })\n Promise.all(promises).then(\n () => {\n console.log('deleteRecursive empty folder: ' + folder)\n fetcher\n .webOperation('DELETE', folder.uri)\n .then(() => {\n console.log('Deleted Ok: ' + folder)\n resolve(undefined)\n })\n .catch((err: string) => {\n const str = 'Unable to delete ' + folder + ': ' + err\n console.log(str)\n reject(new Error(str))\n })\n resolve(undefined)\n },\n err => {\n alert(err)\n reject(err)\n }\n )\n })\n })\n }\n\n const isDocument = subject.uri && !subject.uri.includes('#')\n if (isDocument) {\n const controls = div.appendChild(dom.createElement('table'))\n controls.classList.add('internalPaneControls')\n const controlRow = controls.appendChild(dom.createElement('tr'))\n\n const deleteCell = controlRow.appendChild(dom.createElement('td'))\n const isFolder =\n (subject.uri && subject.uri.endsWith('/')) ||\n store.holds(subject, ns.rdf('type'), ns.ldp('Container'))\n const noun = isFolder ? 'folder' : 'file'\n if (!isProtectedUri(subject)) {\n console.log(subject)\n const deleteButton = widgets.deleteButtonWithCheck(\n dom,\n deleteCell,\n noun,\n function () {\n if (\n !confirm(\n `Are you sure you want to delete ${subject}? This cannot be undone.`\n )\n ) {\n return\n }\n // @@ TODO Remove casing of store.fetcher\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n const promise = isFolder\n ? (deleteRecursive(store, subject) || Promise.resolve())\n : store.fetcher.webOperation('DELETE', subject.uri) || Promise.resolve()\n promise\n .then(() => {\n const str = 'Deleted: ' + subject\n console.log(str)\n })\n .catch((err: any) => {\n const str = 'Unable to delete ' + subject + ': ' + err\n console.log(str)\n alert(str)\n })\n }\n )\n\n deleteButton.removeAttribute('class') // Remove hover hide\n deleteButton.classList.add('internalPaneDeleteButton')\n deleteCell.appendChild(deleteButton)\n }\n\n const refreshCell = controlRow.appendChild(dom.createElement('td'))\n const refreshButton = widgets.button(\n dom,\n icons.iconBase + 'noun_479395.svg',\n 'refresh'\n )\n refreshCell.appendChild(refreshButton)\n refreshButton.addEventListener('click', () => {\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n store.fetcher.refresh(subject, function (\n ok,\n errm\n ) {\n let str\n if (ok) {\n str = 'Refreshed OK: ' + subject\n } else {\n str = 'Error refreshing: ' + subject + ': ' + errm\n }\n console.log(str)\n alert(str)\n })\n })\n }\n\n let plist = store.statementsMatching(subject)\n let docURI = ''\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n\n if (subject.uri) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#uri'),\n subject.uri as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n if (subject.uri.indexOf('#') >= 0) {\n docURI = subject.uri.split('#')[0]\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#documentURI'),\n subject.uri.split('#')[0] as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#document'),\n sym(subject.uri.split('#')[0]),\n store.fetcher.appNode\n )\n )\n } else {\n docURI = subject.uri\n }\n }\n if (docURI) {\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n\n const ed = store.updater.editable(docURI)\n if (ed) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/ns/rww#editable'),\n literal(ed.toString()),\n store.fetcher.appNode\n )\n )\n }\n }\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(dom)\n outliner.appendPropertyTRs(div, plist, false, filter)\n plist = store.statementsMatching(undefined, undefined, subject)\n outliner.appendPropertyTRs(div, plist, true, filter)\n return div\n },\n\n predicates: {\n // Predicates used for inner workings. Under the hood\n 'http://www.w3.org/2007/ont/link#request': 1,\n 'http://www.w3.org/2007/ont/link#requestedBy': 1,\n 'http://www.w3.org/2007/ont/link#source': 1,\n 'http://www.w3.org/2007/ont/link#session': 2, // 2= test neg but display\n 'http://www.w3.org/2007/ont/link#uri': 1,\n 'http://www.w3.org/2007/ont/link#documentURI': 1,\n 'http://www.w3.org/2007/ont/link#document': 1,\n 'http://www.w3.org/2007/ont/link#all': 1, // From userinput.js\n 'http://www.w3.org/2007/ont/link#Document': 1,\n 'http://www.w3.org/ns/rww#editable': 1,\n 'http://www.w3.org/2000/01/rdf-schema#seeAlso': 1,\n 'http://www.w3.org/2002/07/owl#': 1\n },\n\n classes: {\n // Things which are inherently already undercover\n 'http://www.w3.org/2007/ont/link#ProtocolEvent': 1\n }\n}\n\nfunction isProtectedUri (subject: NamedNode): boolean {\n // TODO: Could make the code below smarter by removing some of the redundancy by creating a recursive function, but did not bother now\n const siteUri = subject.site().uri\n return (\n subject.uri === siteUri ||\n subject.uri === siteUri + 'profile/' ||\n subject.uri === siteUri + 'profile/card' ||\n subject.uri === siteUri + 'settings/' ||\n subject.uri === siteUri + 'settings/prefs.ttl' ||\n subject.uri === siteUri + 'settings/privateTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/publicTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/serverSide.ttl'\n )\n}\n\nexport default pane\n\n// ends\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"internalPane2.cjs.js","names":[],"sources":["../../src/internal/internalPane.ts"],"sourcesContent":["/* Internal Pane\n **\n ** This outline pane contains the properties which are\n ** internal to the user's interaction with the web, and are not normally displayed\n */\n/* global alert confirm */\n\nimport { icons, ns, widgets } from 'solid-ui'\nimport { BlankNode, IndexedFormula, literal, NamedNode, st, sym, Variable, Store } from 'rdflib'\nimport { PaneDefinition } from 'pane-registry'\nimport './internalPane.css'\n\nconst pane: PaneDefinition = {\n icon: icons.originalIconBase + 'tango/22-emblem-system.png',\n\n name: 'internal',\n\n label: function () {\n return 'under the hood' // There is often a URI even of no statements\n },\n\n render: function (subject, context) {\n const dom = context.dom\n // @ts-ignore\n const store = context.session.store as Store\n const canonizedSubject = store.canon(subject) as BlankNode | NamedNode | Variable\n const types = store.findTypeURIs(canonizedSubject)\n\n function filter (pred: NamedNode) {\n if (types['http://www.w3.org/2007/ont/link#ProtocolEvent']) return true // display everything for them\n const view = context.session.paneRegistry.byName('internal')\n return (\n view &&\n view.predicates &&\n !!(typeof view.predicates[pred.uri] !== 'undefined')\n )\n }\n\n const div = dom.createElement('div')\n div.classList.add('internalPane', 'internalPaneContent')\n\n function deleteRecursive (kb: IndexedFormula, folder: NamedNode) {\n const fetcher = (kb as any).fetcher\n if (!fetcher) {\n console.error('No fetcher available')\n return\n }\n return new Promise(function (resolve, reject) {\n fetcher.load(folder).then(function () {\n const promises = kb.each(folder, ns.ldp('contains')).map(file => {\n if (kb.holds(file, ns.rdf('type'), ns.ldp('BasicContainer'))) {\n return deleteRecursive(kb, file as NamedNode)\n } else {\n console.log('deleteRecursive leaf file: ' + file)\n return fetcher.webOperation('DELETE', (file as NamedNode).uri)\n }\n })\n Promise.all(promises).then(\n () => {\n console.log('deleteRecursive empty folder: ' + folder)\n fetcher\n .webOperation('DELETE', folder.uri)\n .then(() => {\n console.log('Deleted Ok: ' + folder)\n resolve(undefined)\n })\n .catch((err: string) => {\n const str = 'Unable to delete ' + folder + ': ' + err\n console.log(str)\n reject(new Error(str))\n })\n resolve(undefined)\n },\n err => {\n alert(err)\n reject(err)\n }\n )\n })\n })\n }\n\n const isDocument = subject.uri && !subject.uri.includes('#')\n if (isDocument) {\n const controls = div.appendChild(dom.createElement('table'))\n controls.classList.add('internalPaneControls')\n const controlRow = controls.appendChild(dom.createElement('tr'))\n\n const deleteCell = controlRow.appendChild(dom.createElement('td'))\n const isFolder =\n (subject.uri && subject.uri.endsWith('/')) ||\n store.holds(subject, ns.rdf('type'), ns.ldp('Container'))\n const noun = isFolder ? 'folder' : 'file'\n if (!isProtectedUri(subject)) {\n console.log(subject)\n const deleteButton = widgets.deleteButtonWithCheck(\n dom,\n deleteCell,\n noun,\n function () {\n if (\n !confirm(\n `Are you sure you want to delete ${subject}? This cannot be undone.`\n )\n ) {\n return\n }\n // @@ TODO Remove casing of store.fetcher\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n const promise = isFolder\n ? (deleteRecursive(store, subject) || Promise.resolve())\n : store.fetcher.webOperation('DELETE', subject.uri) || Promise.resolve()\n promise\n .then(() => {\n const str = 'Deleted: ' + subject\n console.log(str)\n })\n .catch((err: any) => {\n const str = 'Unable to delete ' + subject + ': ' + err\n console.log(str)\n alert(str)\n })\n }\n )\n\n deleteButton.removeAttribute('class') // Remove hover hide\n deleteButton.classList.add('internalPaneDeleteButton')\n deleteCell.appendChild(deleteButton)\n }\n\n const refreshCell = controlRow.appendChild(dom.createElement('td'))\n const refreshButton = widgets.button(\n dom,\n icons.iconBase + 'noun_479395.svg',\n 'refresh'\n )\n refreshCell.appendChild(refreshButton)\n refreshButton.addEventListener('click', () => {\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n store.fetcher.refresh(subject, function (\n ok,\n errm\n ) {\n let str\n if (ok) {\n str = 'Refreshed OK: ' + subject\n } else {\n str = 'Error refreshing: ' + subject + ': ' + errm\n }\n console.log(str)\n alert(str)\n })\n })\n }\n\n let plist = store.statementsMatching(subject)\n let docURI = ''\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n\n if (subject.uri) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#uri'),\n subject.uri as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n if (subject.uri.indexOf('#') >= 0) {\n docURI = subject.uri.split('#')[0]\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#documentURI'),\n subject.uri.split('#')[0] as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#document'),\n sym(subject.uri.split('#')[0]),\n store.fetcher.appNode\n )\n )\n } else {\n docURI = subject.uri\n }\n }\n if (docURI) {\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n\n const ed = store.updater.editable(docURI)\n if (ed) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/ns/rww#editable'),\n literal(ed.toString()),\n store.fetcher.appNode\n )\n )\n }\n }\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(dom)\n outliner.appendPropertyTRs(div, plist, false, filter)\n plist = store.statementsMatching(undefined, undefined, subject)\n outliner.appendPropertyTRs(div, plist, true, filter)\n return div\n },\n\n predicates: {\n // Predicates used for inner workings. Under the hood\n 'http://www.w3.org/2007/ont/link#request': 1,\n 'http://www.w3.org/2007/ont/link#requestedBy': 1,\n 'http://www.w3.org/2007/ont/link#source': 1,\n 'http://www.w3.org/2007/ont/link#session': 2, // 2= test neg but display\n 'http://www.w3.org/2007/ont/link#uri': 1,\n 'http://www.w3.org/2007/ont/link#documentURI': 1,\n 'http://www.w3.org/2007/ont/link#document': 1,\n 'http://www.w3.org/2007/ont/link#all': 1, // From userinput.js\n 'http://www.w3.org/2007/ont/link#Document': 1,\n 'http://www.w3.org/ns/rww#editable': 1,\n 'http://www.w3.org/2000/01/rdf-schema#seeAlso': 1,\n 'http://www.w3.org/2002/07/owl#': 1\n },\n\n classes: {\n // Things which are inherently already undercover\n 'http://www.w3.org/2007/ont/link#ProtocolEvent': 1\n }\n}\n\nfunction isProtectedUri (subject: NamedNode): boolean {\n // TODO: Could make the code below smarter by removing some of the redundancy by creating a recursive function, but did not bother now\n const siteUri = subject.site().uri\n return (\n subject.uri === siteUri ||\n subject.uri === siteUri + 'profile/' ||\n subject.uri === siteUri + 'profile/card' ||\n subject.uri === siteUri + 'settings/' ||\n subject.uri === siteUri + 'settings/prefs.ttl' ||\n subject.uri === siteUri + 'settings/privateTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/publicTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/serverSide.ttl'\n )\n}\n\nexport default pane\n\n// ends\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../_virtual
|
|
1
|
+
require("../_virtual/~icons/lucide/user.cjs.js"),require("../_virtual/~icons/lucide/users.cjs.js"),require("../_virtual/~icons/lucide/folder-open.cjs.js"),require("../_virtual/~icons/lucide/layout-dashboard.cjs.js"),require("../_virtual/~icons/lucide/settings-2.cjs.js"),require("../components/header/index.cjs.js");const e=require("../utils/paneUtils.cjs.js");let t=require("solid-logic"),n=require("rdflib"),r=require("lit-html");async function i(i){let a=document.querySelector(`solid-panes-header`);if(a)return a;let o=t.authn.currentUser(),s=document.getElementById(`MainContent`),c=document.getElementById(`OutlineView`),l=document.createElement(`div`);function u(){let e=document.querySelector(`solid-panes-navbar`);e&&e.classList.add(`navbar--hidden`)}let d=(o?await e.getFolderPanesFromURI(o):[]).map(e=>({label:r.html`<icon-lucide-folder-open slot="left-icon"></icon-lucide-folder-open> ${e.label()}`,async onSelected(){u(),o&&i.GotoSubject((0,n.sym)(window.location.href),!0,e,!0,void 0,c,!1)}})),f=[{label:r.html`<icon-lucide-user slot="left-icon"></icon-lucide-user> Profile`,async onSelected(){if(u(),o){let t=await e.getProfilePaneFromURI(o);i.GotoSubject((0,n.sym)(window.location.href),!0,t,!0,void 0,c,!1)}}},{label:r.html`<icon-lucide-users slot="left-icon"></icon-lucide-users> Friends`,async onSelected(){if(u(),o){let t=await e.getSocialPaneFromURI(o);i.GotoSubject((0,n.sym)(window.location.href),!0,t,!0,void 0,c,!1)}}},...d,{label:r.html`<icon-lucide-layout-dashboard slot="left-icon"></icon-lucide-layout-dashboard> Dashboard`,onSelected(){if(u(),o){let e=i.context.session.paneRegistry.byName(`home`);e&&i.GotoSubject((0,n.sym)(window.location.href),!0,e,!0,void 0,c,!1)}}},{label:r.html`<icon-lucide-settings-2 slot="left-icon"></icon-lucide-settings-2> Preferences`,onSelected(){if(u(),o){let e=i.context.session.paneRegistry.byName(`basicPreferences`);e&&i.GotoSubject((0,n.sym)(window.location.href),!0,e,!0,void 0,c,!1)}}}];(0,r.render)(r.html`<solid-panes-header .menuItems=${f}></solid-panes-header>`,l);let p=l.firstElementChild;if(!p)throw Error(`Failed to create header`);return s&&s.parentNode?s.parentNode.insertBefore(p,s):document.body.prepend(p),p}exports.createHeader=i;
|
|
2
2
|
//# sourceMappingURL=header.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.cjs.js","names":[],"sources":["../../src/mainPage/header.ts"],"sourcesContent":["import { authn } from 'solid-logic'\nimport { html, render } from 'lit-html'\nimport type { AccountMenuItem } from 'solid-ui/components/account'\nimport type { OutlineManager } from '../outline/manager'\n\nimport '~icons/lucide/user'\nimport '~icons/lucide/users'\nimport '~icons/lucide/folder-open'\nimport '~icons/lucide/layout-dashboard'\nimport '~icons/lucide/settings-2'\nimport '../components/header'\nimport { getProfilePaneFromURI, getSocialPaneFromURI, getFolderPanesFromURI } from '../utils/paneUtils'\nimport { sym } from 'rdflib'\n\nexport async function createHeader (outliner: OutlineManager) {\n const existingHeader = document.querySelector('solid-panes-header')\n\n if (existingHeader) {\n return existingHeader\n }\n\n const me = authn.currentUser()\n\n const main = document.getElementById('MainContent')\n const outlineView = document.getElementById('OutlineView')\n const tmpContainer = document.createElement('div')\n\n function hideNavbar () {\n const navbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n if (navbar) {\n navbar.classList.add('navbar--hidden')\n }\n }\n\n const storagePanes = me ? await getFolderPanesFromURI(me) : []\n const storageMenuItems: AccountMenuItem[] = storagePanes.map(pane => ({\n label: html`<icon-lucide-folder-open slot=\"left-icon\"></icon-lucide-folder-open> ${pane.label()}`,\n async onSelected () {\n hideNavbar()\n if (me) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }))\n const menuItems: AccountMenuItem[] = [\n {\n label: html`<icon-lucide-user slot=\"left-icon\"></icon-lucide-user> Profile`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const profilePane = await getProfilePaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, profilePane, true, undefined, outlineView, false)\n }\n }\n },\n {\n label: html`<icon-lucide-users slot=\"left-icon\"></icon-lucide-users> Friends`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const socialPane = await getSocialPaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, socialPane, true, undefined, outlineView, false)\n }\n }\n },\n ...storageMenuItems,\n {\n label: html`<icon-lucide-layout-dashboard slot=\"left-icon\"></icon-lucide-layout-dashboard> Dashboard`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('home')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n {\n label: html`<icon-lucide-settings-2 slot=\"left-icon\"></icon-lucide-settings-2> Preferences`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('basicPreferences')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n ]\n\n render(\n html`<solid-panes-header .menuItems=${menuItems}></solid-panes-header>`,\n tmpContainer\n )\n\n const header = tmpContainer.firstElementChild\n\n if (!header) {\n throw new Error('Failed to create header')\n }\n\n // ensure it is in DOM (before MainContent for consistency)\n if (main && main.parentNode) {\n main.parentNode.insertBefore(header, main)\n } else {\n document.body.prepend(header)\n }\n\n return header\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"header.cjs.js","names":[],"sources":["../../src/mainPage/header.ts"],"sourcesContent":["import { authn } from 'solid-logic'\nimport { html, render } from 'lit-html'\nimport type { AccountMenuItem } from 'solid-ui/components/account'\nimport type { OutlineManager } from '../outline/manager'\n\nimport '~icons/lucide/user'\nimport '~icons/lucide/users'\nimport '~icons/lucide/folder-open'\nimport '~icons/lucide/layout-dashboard'\nimport '~icons/lucide/settings-2'\nimport '../components/header'\nimport { getProfilePaneFromURI, getSocialPaneFromURI, getFolderPanesFromURI } from '../utils/paneUtils'\nimport { sym } from 'rdflib'\n\nexport async function createHeader (outliner: OutlineManager) {\n const existingHeader = document.querySelector('solid-panes-header')\n\n if (existingHeader) {\n return existingHeader\n }\n\n const me = authn.currentUser()\n\n const main = document.getElementById('MainContent')\n const outlineView = document.getElementById('OutlineView')\n const tmpContainer = document.createElement('div')\n\n function hideNavbar () {\n const navbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n if (navbar) {\n navbar.classList.add('navbar--hidden')\n }\n }\n\n const storagePanes = me ? await getFolderPanesFromURI(me) : []\n const storageMenuItems: AccountMenuItem[] = storagePanes.map(pane => ({\n label: html`<icon-lucide-folder-open slot=\"left-icon\"></icon-lucide-folder-open> ${pane.label()}`,\n async onSelected () {\n hideNavbar()\n if (me) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }))\n const menuItems: AccountMenuItem[] = [\n {\n label: html`<icon-lucide-user slot=\"left-icon\"></icon-lucide-user> Profile`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const profilePane = await getProfilePaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, profilePane, true, undefined, outlineView, false)\n }\n }\n },\n {\n label: html`<icon-lucide-users slot=\"left-icon\"></icon-lucide-users> Friends`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const socialPane = await getSocialPaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, socialPane, true, undefined, outlineView, false)\n }\n }\n },\n ...storageMenuItems,\n {\n label: html`<icon-lucide-layout-dashboard slot=\"left-icon\"></icon-lucide-layout-dashboard> Dashboard`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('home')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n {\n label: html`<icon-lucide-settings-2 slot=\"left-icon\"></icon-lucide-settings-2> Preferences`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('basicPreferences')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n ]\n\n render(\n html`<solid-panes-header .menuItems=${menuItems}></solid-panes-header>`,\n tmpContainer\n )\n\n const header = tmpContainer.firstElementChild\n\n if (!header) {\n throw new Error('Failed to create header')\n }\n\n // ensure it is in DOM (before MainContent for consistency)\n if (main && main.parentNode) {\n main.parentNode.insertBefore(header, main)\n } else {\n document.body.prepend(header)\n }\n\n return header\n}\n"],"mappings":"gbAcA,eAAsB,EAAc,EAA0B,CAC5D,IAAM,EAAiB,SAAS,cAAc,oBAAoB,EAElE,GAAI,EACF,OAAO,EAGT,IAAM,EAAK,EAAA,MAAM,YAAY,EAEvB,EAAO,SAAS,eAAe,aAAa,EAC5C,EAAc,SAAS,eAAe,aAAa,EACnD,EAAe,SAAS,cAAc,KAAK,EAEjD,SAAS,GAAc,CACrB,IAAM,EAAS,SAAS,cAA2B,oBAAoB,EACnE,GACF,EAAO,UAAU,IAAI,gBAAgB,CAEzC,CAGA,IAAM,GADe,EAAK,MAAM,EAAA,sBAAsB,CAAE,EAAI,CAAC,EAAA,CACJ,IAAI,IAAS,CACpE,MAAO,EAAA,IAAI,wEAAwE,EAAK,MAAM,IAC9F,MAAM,YAAc,CAClB,EAAW,EACP,GACF,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAM,GAAM,IAAA,GAAW,EAAa,EAAK,CAEnG,CACF,EAAE,EACI,EAA+B,CACnC,CACE,MAAO,EAAA,IAAI,iEACX,MAAM,YAAc,CAElB,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAc,MAAM,EAAA,sBAAsB,CAAE,EAClD,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAa,GAAM,IAAA,GAAW,EAAa,EAAK,CACxG,CACF,CACF,EACA,CACE,MAAO,EAAA,IAAI,mEACX,MAAM,YAAc,CAElB,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAa,MAAM,EAAA,qBAAqB,CAAE,EAChD,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAY,GAAM,IAAA,GAAW,EAAa,EAAK,CACvG,CACF,CACF,EACA,GAAG,EACH,CACE,MAAO,EAAA,IAAI,2FACX,YAAc,CAEZ,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAO,EAAS,QAAQ,QAAQ,aAAa,OAAO,MAAM,EAC5D,GACF,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAM,GAAM,IAAA,GAAW,EAAa,EAAK,CAEnG,CACF,CACF,EACA,CACE,MAAO,EAAA,IAAI,iFACX,YAAc,CAEZ,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAO,EAAS,QAAQ,QAAQ,aAAa,OAAO,kBAAkB,EACxE,GACF,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAM,GAAM,IAAA,GAAW,EAAa,EAAK,CAEnG,CACF,CACF,CACF,GAEA,EAAA,EAAA,OAAA,CACE,EAAA,IAAI,kCAAkC,EAAU,wBAChD,CACF,EAEA,IAAM,EAAS,EAAa,kBAE5B,GAAI,CAAC,EACH,MAAU,MAAM,yBAAyB,EAU3C,OANI,GAAQ,EAAK,WACf,EAAK,WAAW,aAAa,EAAQ,CAAI,EAEzC,SAAS,KAAK,QAAQ,CAAM,EAGvB,CACT"}
|
package/dist/n3Pane2.cjs.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.n3-pane{border-top:solid 1px var(--color-data-pane-border-top,black);border-left:solid 1px var(--color-data-pane-border-top,black);border-bottom:solid 1px var(--color-data-pane-border-side,#777);border-right:solid 1px var(--color-data-pane-border-side,#777);color:var(--color-text-blue,#004);box-sizing:border-box;padding:1rem}.n3-pane__source{box-sizing:border-box;white-space:pre;max-width:100%;margin:0;font-family:monospace;font-size:120%;overflow-x:auto}.n3-pane__line{white-space:pre}.n3-pane[data-layout=mobile] .n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane[data-layout=mobile] .n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}@media (width<=576px){.n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();const e=require("./_virtual/_rolldown/runtime.cjs.js");;let t=require("solid-ui");t=e.__toESM(t);let n=require("rdflib");n=e.__toESM(n);var r=t.ns;function i(e){if(e.trim().length===0)return 0;let t=0;for(let n of e){if(n===` `){t+=1;continue}if(n===` `){t+=2;continue}break}return Math.max(t,2)}var a={icon:t.icons.originalIconBase+`w3c/n3_smaller.png`,name:`n3`,audience:[r.solid(`Developer`)],label:function(e,t){let n=t.session.store;if(`http://www.w3.org/2007/ont/link#ProtocolEvent`in n.findTypeURIs(e))return null;let r=n.statementsMatching(void 0,void 0,void 0,e).length;return r===0?null:`Data (`+r+`) as N3`},render:function(e,t){let r=t.dom,a=t.session.store;function o(e){let n=t.environment??{};e.dataset.layout=n.layout??`desktop`}let s=r.createElement(`div`);s.setAttribute(`class`,`n3-pane`),o(s);let c=a.statementsMatching(void 0,void 0,void 0,e),l=n.Serializer(a);l.suggestNamespaces(a.namespaces),l.setBase(e.uri);let u=l.statementsToN3(c),d=r.createElement(`div`);return d.classList.add(`n3-pane__source`),u.split(`
|
|
1
|
+
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.n3-pane{border-top:solid 1px var(--color-data-pane-border-top,black);border-left:solid 1px var(--color-data-pane-border-top,black);border-bottom:solid 1px var(--color-data-pane-border-side,#777);border-right:solid 1px var(--color-data-pane-border-side,#777);width:100%;min-width:0;color:var(--color-text-blue,#004);box-sizing:border-box;padding:1rem}.n3-pane__source{box-sizing:border-box;white-space:pre;min-width:0;max-width:100%;margin:0;font-family:monospace;font-size:120%;overflow-x:auto}.n3-pane__line{white-space:pre}.n3-pane[data-layout=mobile] .n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane[data-layout=mobile] .n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}@media (width<=576px){.n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();const e=require("./_virtual/_rolldown/runtime.cjs.js");;let t=require("solid-ui");t=e.__toESM(t);let n=require("rdflib");n=e.__toESM(n);var r=t.ns;function i(e){if(e.trim().length===0)return 0;let t=0;for(let n of e){if(n===` `){t+=1;continue}if(n===` `){t+=2;continue}break}return Math.max(t,2)}var a={icon:t.icons.originalIconBase+`w3c/n3_smaller.png`,name:`n3`,audience:[r.solid(`Developer`)],label:function(e,t){let n=t.session.store;if(`http://www.w3.org/2007/ont/link#ProtocolEvent`in n.findTypeURIs(e))return null;let r=n.statementsMatching(void 0,void 0,void 0,e).length;return r===0?null:`Data (`+r+`) as N3`},render:function(e,t){let r=t.dom,a=t.session.store;function o(e){let n=t.environment??{};e.dataset.layout=n.layout??`desktop`}let s=r.createElement(`div`);s.setAttribute(`class`,`n3-pane`),o(s);let c=a.statementsMatching(void 0,void 0,void 0,e),l=n.Serializer(a);l.suggestNamespaces(a.namespaces),l.setBase(e.uri);let u=l.statementsToN3(c),d=r.createElement(`div`);return d.classList.add(`n3-pane__source`),u.split(`
|
|
2
2
|
`).forEach(e=>{let t=r.createElement(`div`),n=i(e);t.classList.add(`n3-pane__line`),t.style.setProperty(`--n3-indent`,`${n}ch`),t.textContent=e.length>0?e:` `,d.appendChild(t)}),s.appendChild(d),s}};exports.n3Pane=a;
|
|
3
3
|
//# sourceMappingURL=n3Pane2.cjs.js.map
|
package/dist/n3Pane2.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.n3-pane{border-top:solid 1px var(--color-data-pane-border-top,black);border-left:solid 1px var(--color-data-pane-border-top,black);border-bottom:solid 1px var(--color-data-pane-border-side,#777);border-right:solid 1px var(--color-data-pane-border-side,#777);color:var(--color-text-blue,#004);box-sizing:border-box;padding:1rem}.n3-pane__source{box-sizing:border-box;white-space:pre;max-width:100%;margin:0;font-family:monospace;font-size:120%;overflow-x:auto}.n3-pane__line{white-space:pre}.n3-pane[data-layout=mobile] .n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane[data-layout=mobile] .n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}@media (width<=576px){.n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();
|
|
1
|
+
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.n3-pane{border-top:solid 1px var(--color-data-pane-border-top,black);border-left:solid 1px var(--color-data-pane-border-top,black);border-bottom:solid 1px var(--color-data-pane-border-side,#777);border-right:solid 1px var(--color-data-pane-border-side,#777);width:100%;min-width:0;color:var(--color-text-blue,#004);box-sizing:border-box;padding:1rem}.n3-pane__source{box-sizing:border-box;white-space:pre;min-width:0;max-width:100%;margin:0;font-family:monospace;font-size:120%;overflow-x:auto}.n3-pane__line{white-space:pre}.n3-pane[data-layout=mobile] .n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane[data-layout=mobile] .n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}@media (width<=576px){.n3-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.n3-pane__line{white-space:pre-wrap;padding-left:var(--n3-indent,0);text-indent:calc(-1 * var(--n3-indent,0))}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();
|
|
2
2
|
import * as e from "solid-ui";
|
|
3
3
|
import * as t from "rdflib";
|
|
4
4
|
//#region src/n3Pane.ts
|