solid-panes 4.4.2-3 → 4.4.2-5
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/README.md +0 -30
- package/dist/_virtual/_rolldown/runtime.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/folder-open.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/folder-open.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/folder-open.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/folder-open.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/help-circle.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/help-circle.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/help-circle.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/help-circle.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/settings-2.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/settings-2.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/settings-2.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/settings-2.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/users.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/users.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/users.esm.js +11 -0
- package/dist/_virtual/~icons/lucide/users.esm.js.map +1 -0
- package/dist/components/header/Header.cjs.js +19 -0
- package/dist/components/header/Header.cjs.js.map +1 -0
- package/dist/components/header/Header.esm.js +228 -0
- package/dist/components/header/Header.esm.js.map +1 -0
- package/dist/components/header/Header.styles.cjs.js +2 -0
- package/dist/components/header/Header.styles.cjs.js.map +1 -0
- package/dist/components/header/Header.styles.esm.js +7 -0
- package/dist/components/header/Header.styles.esm.js.map +1 -0
- package/dist/components/header/index.cjs.js +1 -0
- package/dist/components/header/index.esm.js +1 -0
- package/dist/components/navbar/Navbar.cjs.js +15 -0
- package/dist/components/navbar/Navbar.cjs.js.map +1 -0
- package/dist/components/navbar/Navbar.d.ts +14 -0
- package/dist/components/navbar/Navbar.d.ts.map +1 -0
- package/dist/components/navbar/Navbar.esm.js +232 -0
- package/dist/components/navbar/Navbar.esm.js.map +1 -0
- package/dist/components/navbar/Navbar.styles.cjs.js +2 -0
- package/dist/components/navbar/Navbar.styles.cjs.js.map +1 -0
- package/dist/components/navbar/Navbar.styles.esm.js +7 -0
- package/dist/components/navbar/Navbar.styles.esm.js.map +1 -0
- package/dist/components/navbar/index.cjs.js +1 -0
- package/dist/components/navbar/index.d.ts +4 -0
- package/dist/components/navbar/index.d.ts.map +1 -0
- package/dist/components/navbar/index.esm.js +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 +2 -0
- package/dist/dashboard/dashboardPane.cjs.js.map +1 -0
- package/dist/dashboard/dashboardPane.esm.js +7 -0
- package/dist/dashboard/dashboardPane.esm.js.map +1 -0
- package/dist/dashboard/homepage.cjs.js +2 -0
- package/dist/dashboard/homepage.cjs.js.map +1 -0
- package/dist/dashboard/homepage.esm.js +26 -0
- package/dist/dashboard/homepage.esm.js.map +1 -0
- package/dist/form/pane.cjs.js +1 -1
- package/dist/form/pane.cjs.js.map +1 -1
- package/dist/form/pane.esm.js +2 -1
- package/dist/form/pane.esm.js.map +1 -1
- package/dist/home/homePane.cjs.js +1 -1
- package/dist/home/homePane.cjs.js.map +1 -1
- package/dist/humanReadablePane2.cjs.js.map +1 -1
- package/dist/humanReadablePane2.esm.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +12 -7
- package/dist/index.esm.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/mainPage/header.d.ts.map +1 -1
- package/dist/mainPage/header.esm.js +65 -17
- package/dist/mainPage/header.esm.js.map +1 -1
- package/dist/mainPage/index.cjs.js +1 -1
- package/dist/mainPage/index.cjs.js.map +1 -1
- package/dist/mainPage/index.d.ts +1 -9
- package/dist/mainPage/index.d.ts.map +1 -1
- package/dist/mainPage/index.esm.js +19 -21
- package/dist/mainPage/index.esm.js.map +1 -1
- package/dist/mainPage/navbar.cjs.js +2 -0
- package/dist/mainPage/navbar.cjs.js.map +1 -0
- package/dist/mainPage/navbar.d.ts +3 -0
- package/dist/mainPage/navbar.d.ts.map +1 -0
- package/dist/mainPage/navbar.esm.js +66 -0
- package/dist/mainPage/navbar.esm.js.map +1 -0
- package/dist/outline/context.d.ts +1 -1
- package/dist/outline/manager2.cjs.js +2 -2
- package/dist/outline/manager2.cjs.js.map +1 -1
- package/dist/outline/manager2.esm.js +330 -453
- 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/queryByExample.esm.js +1 -0
- package/dist/outline/queryByExample.esm.js.map +1 -1
- package/dist/outline/userInput.cjs.js +3 -3
- package/dist/outline/userInput.cjs.js.map +1 -1
- package/dist/outline/userInput.esm.js +4 -6
- 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/pad/padPane2.esm.js +2 -1
- package/dist/pad/padPane2.esm.js.map +1 -1
- package/dist/registerPanes.cjs.js +1 -1
- package/dist/registerPanes.cjs.js.map +1 -1
- package/dist/registerPanes.esm.js +1 -0
- package/dist/registerPanes.esm.js.map +1 -1
- package/dist/schedule/schedulePane2.cjs.js +1 -1
- package/dist/schedule/schedulePane2.cjs.js.map +1 -1
- package/dist/schedule/schedulePane2.esm.js +2 -1
- package/dist/schedule/schedulePane2.esm.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 +2 -0
- package/dist/social/editProfileDetails.esm.js.map +1 -1
- package/dist/social/socialPane2.cjs.js +1 -1
- package/dist/social/socialPane2.cjs.js.map +1 -1
- package/dist/social/socialPane2.esm.js +1 -1
- package/dist/social/socialSections.cjs.js +1 -1
- package/dist/social/socialSections.cjs.js.map +1 -1
- package/dist/social/spinner.cjs.js +1 -0
- package/dist/social/spinner.esm.js +1 -0
- 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/transaction/pane.cjs.js.map +1 -1
- package/dist/transaction/pane.esm.js.map +1 -1
- package/dist/transaction/period.cjs.js.map +1 -1
- package/dist/transaction/period.esm.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/paneUtils.cjs.js +2 -0
- package/dist/utils/paneUtils.cjs.js.map +1 -0
- package/dist/utils/paneUtils.d.ts +19 -0
- package/dist/utils/paneUtils.d.ts.map +1 -0
- package/dist/utils/paneUtils.esm.js +52 -0
- package/dist/utils/paneUtils.esm.js.map +1 -0
- package/dist/utils/podUtils.cjs.js +2 -0
- package/dist/utils/podUtils.cjs.js.map +1 -0
- package/dist/utils/podUtils.d.ts +4 -0
- package/dist/utils/podUtils.d.ts.map +1 -0
- package/dist/utils/podUtils.esm.js +46 -0
- package/dist/utils/podUtils.esm.js.map +1 -0
- package/dist/utils/webIdUtils.cjs.js +2 -0
- package/dist/utils/webIdUtils.cjs.js.map +1 -0
- package/dist/utils/webIdUtils.d.ts +6 -0
- package/dist/utils/webIdUtils.d.ts.map +1 -0
- package/dist/utils/webIdUtils.esm.js +48 -0
- package/dist/utils/webIdUtils.esm.js.map +1 -0
- 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 +10 -16
- package/dist/icons/dashboard.cjs.js +0 -2
- package/dist/icons/dashboard.cjs.js.map +0 -1
- package/dist/icons/dashboard.esm.js +0 -6
- package/dist/icons/dashboard.esm.js.map +0 -1
- package/dist/icons/iconHelper.cjs.js +0 -2
- package/dist/icons/iconHelper.cjs.js.map +0 -1
- package/dist/icons/iconHelper.esm.js +0 -17
- package/dist/icons/iconHelper.esm.js.map +0 -1
- package/dist/icons/menu.cjs.js +0 -9
- package/dist/icons/menu.cjs.js.map +0 -1
- package/dist/icons/menu.esm.js +0 -6
- package/dist/icons/menu.esm.js.map +0 -1
- package/dist/mainPage/footer.cjs.js +0 -2
- package/dist/mainPage/footer.cjs.js.map +0 -1
- package/dist/mainPage/footer.d.ts +0 -13
- package/dist/mainPage/footer.d.ts.map +0 -1
- package/dist/mainPage/footer.esm.js +0 -18
- package/dist/mainPage/footer.esm.js.map +0 -1
- package/dist/mainPage/menu.d.ts +0 -6
- package/dist/mainPage/menu.d.ts.map +0 -1
- package/dist/mainPage/menu2.cjs.js +0 -2
- package/dist/mainPage/menu2.cjs.js.map +0 -1
- package/dist/mainPage/menu2.esm.js +0 -184
- package/dist/mainPage/menu2.esm.js.map +0 -1
- package/dist/profileUtils/ownerProfile.cjs.js +0 -2
- package/dist/profileUtils/ownerProfile.cjs.js.map +0 -1
- package/dist/profileUtils/ownerProfile.d.ts +0 -5
- package/dist/profileUtils/ownerProfile.d.ts.map +0 -1
- package/dist/profileUtils/ownerProfile.esm.js +0 -50
- package/dist/profileUtils/ownerProfile.esm.js.map +0 -1
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import "../../_virtual/~icons/lucide/help-circle.esm.js";
|
|
2
|
+
import e from "./Navbar.styles.esm.js";
|
|
3
|
+
import { WebComponent as t, customElement as n } from "solid-ui";
|
|
4
|
+
import "solid-ui/components/button";
|
|
5
|
+
import { html as r } from "lit";
|
|
6
|
+
import { property as i } from "lit/decorators.js";
|
|
7
|
+
import "solid-ui/components/account";
|
|
8
|
+
import "solid-ui/components/menu-item";
|
|
9
|
+
import "solid-ui/components/menu";
|
|
10
|
+
import "solid-ui/components/solid-emblem";
|
|
11
|
+
//#region src/components/navbar/Navbar.ts
|
|
12
|
+
var a, o, s, c, l, u, d, f, p, m;
|
|
13
|
+
function h(e, t, n) {
|
|
14
|
+
g(e, t), t.set(e, n);
|
|
15
|
+
}
|
|
16
|
+
function g(e, t) {
|
|
17
|
+
if (t.has(e)) throw TypeError("Cannot initialize the same private elements twice on an object");
|
|
18
|
+
}
|
|
19
|
+
function _(e, t, n) {
|
|
20
|
+
return e.set(y(e, t), n), n;
|
|
21
|
+
}
|
|
22
|
+
function v(e, t) {
|
|
23
|
+
return e.get(y(e, t));
|
|
24
|
+
}
|
|
25
|
+
function y(e, t, n) {
|
|
26
|
+
if (typeof e == "function" ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
|
|
27
|
+
throw TypeError("Private element is not present on this object");
|
|
28
|
+
}
|
|
29
|
+
function b(e, t, n) {
|
|
30
|
+
return (t = S(t)) in e ? Object.defineProperty(e, t, {
|
|
31
|
+
value: n,
|
|
32
|
+
enumerable: !0,
|
|
33
|
+
configurable: !0,
|
|
34
|
+
writable: !0
|
|
35
|
+
}) : e[t] = n, e;
|
|
36
|
+
}
|
|
37
|
+
function x(e, t, n, r, i, a) {
|
|
38
|
+
function o(e, t, n) {
|
|
39
|
+
return function(r, i) {
|
|
40
|
+
return n && n(r), e[t].call(r, i);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function s(e, t) {
|
|
44
|
+
for (var n = 0; n < e.length; n++) e[n].call(t);
|
|
45
|
+
return t;
|
|
46
|
+
}
|
|
47
|
+
function c(e, t, n, r) {
|
|
48
|
+
if (typeof e != "function" && (r || e !== void 0)) throw TypeError(t + " must " + (n || "be") + " a function" + (r ? "" : " or undefined"));
|
|
49
|
+
return e;
|
|
50
|
+
}
|
|
51
|
+
function l(e, t, n, r, i, a, s, l, u, d, f, p, m) {
|
|
52
|
+
function h(e) {
|
|
53
|
+
if (!m(e)) throw TypeError("Attempted to access private element on non-instance");
|
|
54
|
+
}
|
|
55
|
+
var g, _ = t[0], v = t[3], y = !l;
|
|
56
|
+
if (!y) {
|
|
57
|
+
n || Array.isArray(_) || (_ = [_]);
|
|
58
|
+
var b = {}, x = [], S = i === 3 ? "get" : i === 4 || p ? "set" : "value";
|
|
59
|
+
d ? (f || p ? b = {
|
|
60
|
+
get: w(function() {
|
|
61
|
+
return v(this);
|
|
62
|
+
}, r, "get"),
|
|
63
|
+
set: function(e) {
|
|
64
|
+
t[4](this, e);
|
|
65
|
+
}
|
|
66
|
+
} : b[S] = v, f || w(b[S], r, i === 2 ? "" : S)) : f || (b = Object.getOwnPropertyDescriptor(e, r));
|
|
67
|
+
}
|
|
68
|
+
for (var C = e, T = _.length - 1; T >= 0; T -= n ? 2 : 1) {
|
|
69
|
+
var E = _[T], D = n ? _[T - 1] : void 0, O = {}, k = {
|
|
70
|
+
kind: [
|
|
71
|
+
"field",
|
|
72
|
+
"accessor",
|
|
73
|
+
"method",
|
|
74
|
+
"getter",
|
|
75
|
+
"setter",
|
|
76
|
+
"class"
|
|
77
|
+
][i],
|
|
78
|
+
name: r,
|
|
79
|
+
metadata: a,
|
|
80
|
+
addInitializer: function(e, t) {
|
|
81
|
+
if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
|
|
82
|
+
c(t, "An initializer", "be", !0), s.push(t);
|
|
83
|
+
}.bind(null, O)
|
|
84
|
+
};
|
|
85
|
+
try {
|
|
86
|
+
if (y) (g = c(E.call(D, C, k), "class decorators", "return")) && (C = g);
|
|
87
|
+
else {
|
|
88
|
+
var A, j;
|
|
89
|
+
k.static = u, k.private = d, d ? i === 2 ? A = function(e) {
|
|
90
|
+
return h(e), b.value;
|
|
91
|
+
} : (i < 4 && (A = o(b, "get", h)), i !== 3 && (j = o(b, "set", h))) : (A = function(e) {
|
|
92
|
+
return e[r];
|
|
93
|
+
}, (i < 2 || i === 4) && (j = function(e, t) {
|
|
94
|
+
e[r] = t;
|
|
95
|
+
}));
|
|
96
|
+
var M = k.access = { has: d ? m.bind() : function(e) {
|
|
97
|
+
return r in e;
|
|
98
|
+
} };
|
|
99
|
+
if (A && (M.get = A), j && (M.set = j), C = E.call(D, p ? {
|
|
100
|
+
get: b.get,
|
|
101
|
+
set: b.set
|
|
102
|
+
} : b[S], k), p) {
|
|
103
|
+
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);
|
|
104
|
+
else if (C !== void 0) throw TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
|
|
105
|
+
} else c(C, (f ? "field" : "method") + " decorators", "return") && (f ? x.push(C) : b[S] = C);
|
|
106
|
+
}
|
|
107
|
+
} finally {
|
|
108
|
+
O.v = !0;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return (f || p) && l.push(function(e, t) {
|
|
112
|
+
for (var n = x.length - 1; n >= 0; n--) t = x[n].call(e, t);
|
|
113
|
+
return t;
|
|
114
|
+
}), 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;
|
|
115
|
+
}
|
|
116
|
+
function u(e, t) {
|
|
117
|
+
return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), {
|
|
118
|
+
configurable: !0,
|
|
119
|
+
enumerable: !0,
|
|
120
|
+
value: t
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (arguments.length >= 6) var d = a[Symbol.metadata || Symbol.for("Symbol.metadata")];
|
|
124
|
+
var f = Object.create(d ?? null), p = function(e, t, n, r) {
|
|
125
|
+
var i, a, o = [], c = function(t) {
|
|
126
|
+
return T(t) === e;
|
|
127
|
+
}, u = /* @__PURE__ */ new Map();
|
|
128
|
+
function d(e) {
|
|
129
|
+
e && o.push(s.bind(null, e));
|
|
130
|
+
}
|
|
131
|
+
for (var f = 0; f < t.length; f++) {
|
|
132
|
+
var p = t[f];
|
|
133
|
+
if (Array.isArray(p)) {
|
|
134
|
+
var m = p[1], h = p[2], g = p.length > 3, _ = 16 & m, v = !!(8 & m), y = (m &= 7) == 0, b = h + "/" + v;
|
|
135
|
+
if (!y && !g) {
|
|
136
|
+
var x = u.get(b);
|
|
137
|
+
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);
|
|
138
|
+
u.set(b, !(m > 2) || m);
|
|
139
|
+
}
|
|
140
|
+
l(v ? e : e.prototype, p, _, g ? "#" + h : S(h), m, r, v ? a ||= [] : i ||= [], o, v, g, y, m === 1, v && g ? c : n);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return d(i), d(a), o;
|
|
144
|
+
}(e, t, i, f);
|
|
145
|
+
return n.length || u(e, f), {
|
|
146
|
+
e: p,
|
|
147
|
+
get c() {
|
|
148
|
+
var t = [];
|
|
149
|
+
return n.length && [u(l(e, [n], r, e.name, 5, f, t), f), s.bind(null, t, e)];
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function S(e) {
|
|
154
|
+
var t = C(e, "string");
|
|
155
|
+
return typeof t == "symbol" ? t : t + "";
|
|
156
|
+
}
|
|
157
|
+
function C(e, t) {
|
|
158
|
+
if (typeof e != "object" || !e) return e;
|
|
159
|
+
var n = e[Symbol.toPrimitive];
|
|
160
|
+
if (n !== void 0) {
|
|
161
|
+
var r = n.call(e, t || "default");
|
|
162
|
+
if (typeof r != "object") return r;
|
|
163
|
+
throw TypeError("@@toPrimitive must return a primitive value.");
|
|
164
|
+
}
|
|
165
|
+
return (t === "string" ? String : Number)(e);
|
|
166
|
+
}
|
|
167
|
+
function w(e, t, n) {
|
|
168
|
+
typeof t == "symbol" && (t = (t = t.description) ? "[" + t + "]" : "");
|
|
169
|
+
try {
|
|
170
|
+
Object.defineProperty(e, "name", {
|
|
171
|
+
configurable: !0,
|
|
172
|
+
value: n ? n + " " + t : t
|
|
173
|
+
});
|
|
174
|
+
} catch {}
|
|
175
|
+
return e;
|
|
176
|
+
}
|
|
177
|
+
function T(e) {
|
|
178
|
+
if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (e === null ? "null" : typeof e));
|
|
179
|
+
return e;
|
|
180
|
+
}
|
|
181
|
+
function E(e) {
|
|
182
|
+
return e;
|
|
183
|
+
}
|
|
184
|
+
u = [n("solid-panes-navbar")];
|
|
185
|
+
var D;
|
|
186
|
+
new (p = (s = /*#__PURE__*/ new WeakMap(), m = (d = i({ type: Array }), "navbarItems"), o = class extends t {
|
|
187
|
+
constructor(...e) {
|
|
188
|
+
super(...e), h(this, s, (c(this), f(this, [])));
|
|
189
|
+
}
|
|
190
|
+
get [m]() {
|
|
191
|
+
return v(s, this);
|
|
192
|
+
}
|
|
193
|
+
set navbarItems(e) {
|
|
194
|
+
_(s, this, e);
|
|
195
|
+
}
|
|
196
|
+
selectItem(e) {
|
|
197
|
+
this.dispatchEvent(new CustomEvent("solid-ui-select", {
|
|
198
|
+
detail: e,
|
|
199
|
+
bubbles: !0,
|
|
200
|
+
composed: !0,
|
|
201
|
+
cancelable: !0
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
render() {
|
|
205
|
+
return r`
|
|
206
|
+
<nav class="navbar">
|
|
207
|
+
${this.navbarItems.map((e) => r`
|
|
208
|
+
<button
|
|
209
|
+
type="button"
|
|
210
|
+
class=${e.selected ? "selected" : ""}
|
|
211
|
+
@click=${() => this.selectItem(e)}
|
|
212
|
+
title=${typeof e.label == "string" ? e.label : ""}
|
|
213
|
+
>
|
|
214
|
+
${e.label}
|
|
215
|
+
</button>
|
|
216
|
+
`)}
|
|
217
|
+
</nav>
|
|
218
|
+
`;
|
|
219
|
+
}
|
|
220
|
+
}, {e: [f, c], c: [D, l]} = x(o, [[
|
|
221
|
+
d,
|
|
222
|
+
1,
|
|
223
|
+
"navbarItems"
|
|
224
|
+
]], u, 0, void 0, t), o), a = class extends E {
|
|
225
|
+
constructor() {
|
|
226
|
+
super(D), b(this, "styles", e), l();
|
|
227
|
+
}
|
|
228
|
+
}, b(a, p, void 0), a)();
|
|
229
|
+
//#endregion
|
|
230
|
+
export { D as default };
|
|
231
|
+
|
|
232
|
+
//# sourceMappingURL=Navbar.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navbar.esm.js","names":["customElement","WebComponent","html","property","styles","_classDecs","_Navbar","_Navbar2","_A","WeakMap","_ref","_navbarItemsDecs","type","Array","_Navbar3","Navbar","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_navbarItems","_classPrivateFieldGet","navbarItems","v","_classPrivateFieldSet","selectItem","item","dispatchEvent","CustomEvent","detail","bubbles","composed","cancelable","render","map","menuItem","selected","label","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default"],"sources":["../../../src/components/navbar/Navbar.ts"],"sourcesContent":["import { customElement, WebComponent } from 'solid-ui'\nimport { html, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport 'solid-ui/components/account'\nimport 'solid-ui/components/button'\nimport 'solid-ui/components/menu-item'\nimport 'solid-ui/components/menu'\nimport 'solid-ui/components/solid-emblem'\nimport '~icons/lucide/help-circle'\n\nimport styles from './Navbar.styles.css'\n\nexport interface NavbarMenuItem {\n label: string | TemplateResult\n selected?: boolean\n onSelected?(): void | Promise<void>\n}\n\n@customElement('solid-panes-navbar')\nexport default class Navbar extends WebComponent {\n static styles = styles\n\n @property({ type: Array })\n accessor navbarItems: NavbarMenuItem[] = []\n\n private selectItem (item: NavbarMenuItem) {\n this.dispatchEvent(new CustomEvent('solid-ui-select', {\n detail: item,\n bubbles: true,\n composed: true,\n cancelable: true\n }))\n }\n\n render () {\n return html`\n <nav class=\"navbar\">\n ${this.navbarItems.map(menuItem => html`\n <button\n type=\"button\"\n class=${menuItem.selected ? 'selected' : ''}\n @click=${() => this.selectItem(menuItem)}\n title=${typeof menuItem.label === 'string' ? menuItem.label : ''}\n >\n ${menuItem.label}\n </button>\n `)}\n </nav>\n `\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWwCK,IAAA,CAQvCL,EAAc,oBAAoB,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,KAAAC,IAIjCR,EAAS,EAAES,MAAMC,MAAM,CAAC,GAAC,gBAAAC,IAJ5B,cACoCb,EAAa;CAAAe,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAV,IAAAW,EAAA,IAAA,GAAAC,EAAA,MAIN,CAAA,CAAE,EAAA;CAAA;CAAA,KAAAV,KAAA;EAAA,OAAAW,EAAAb,GAAA,IAAA;CAAA;CAAA,IAAlCc,YAAWC,GAAA;EAAAC,EAAAhB,GAAA,MAAAe,CAAA;CAAA;CAEZE,WAAYC,GAAsB;EACxC,KAAKC,cAAc,IAAIC,YAAY,mBAAmB;GACpDC,QAAQH;GACRI,SAAS;GACTC,UAAU;GACVC,YAAY;EACd,CAAC,CAAC;CACJ;CAEAC,SAAU;EACR,OAAO/B,CAAI;;SAEN,KAAKoB,YAAYY,KAAIC,MAAYjC,CAAI;;;kBAG5BiC,EAASC,WAAW,aAAa,GAAE;yBAC5B,KAAKX,WAAWU,CAAQ,EAAC;kBAChC,OAAOA,EAASE,SAAU,WAAWF,EAASE,QAAQ,GAAE;;YAE9DF,EAASE,MAAK;;OAEnB,EAAC;;;CAGN;AACF,GAAC,CAAAC,GAAA,CAAAlB,GAAAD,IAAAoB,GAAA,CAAAjC,GAAAkC,MAAAC,EAAA3B,GAAA,CAAA;CAAAH;CAAA;CAAA;AAAA,CAAA,GAAAN,GAAA,GAAA,KAAA,GA/BmCJ,CAAY,GAAAa,IAAA4B,IAAA,cAAAC,EAAA;CAAA3B,cAAA;EAAA,MAAAV,CAAA,GAAAsC,EAAA,MAAA,UAC9BxC,CAAM,GAAAoC,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAAnC,GAAA,KAAA,CAAA,GAAAmC,GAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=require("lit").css`:host{display:block}:host(.navbar--hidden){display:none!important}.navbar{border:1px solid var(--color-border,#444);background:var(--solid-ui-color-white,#fff);border-radius:5px;display:flex;overflow:hidden}button{color:inherit;cursor:pointer;background:0 0;border-bottom:2px solid #0000;padding:10px 25px;font-size:90%;font-weight:500}button.selected,button:active,button:hover,button:focus{border-bottom-color:var(--solid-ui-color-primary,#7c4dff);color:var(--solid-ui-color-primary,#7c4dff);text-transform:capitalize;background:color-mix(in srgb, currentColor 25%, transparent);border-radius:0}`;exports.default=e;
|
|
2
|
+
//# sourceMappingURL=Navbar.styles.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navbar.styles.cjs.js","names":[],"sources":["../../../src/components/navbar/Navbar.styles.css"],"sourcesContent":[":host {\n display: block;\n}\n\n:host(.navbar--hidden) {\n display: none !important;\n}\n\n.navbar {\n border: 1px solid var(--color-border, #444);\n border-radius: 5px;\n display: flex;\n background: var(--solid-ui-color-white, #fff);\n overflow: hidden;\n}\n\nbutton {\n padding: 10px 25px;\n border-bottom: 2px solid transparent;\n font-weight: 500;\n font-size: 90%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n}\n\nbutton.selected,\nbutton:active,\nbutton:hover,\nbutton:focus {\n border-bottom-color: var(--solid-ui-color-primary, #7C4DFF);\n border-radius: 0;\n color: var(--solid-ui-color-primary, #7C4DFF);\n text-transform: capitalize;\n background: color-mix(in srgb, currentColor 25%, transparent);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { css as e } from "lit";
|
|
2
|
+
//#region src/components/navbar/Navbar.styles.css
|
|
3
|
+
var t = e`:host{display:block}:host(.navbar--hidden){display:none!important}.navbar{border:1px solid var(--color-border,#444);background:var(--solid-ui-color-white,#fff);border-radius:5px;display:flex;overflow:hidden}button{color:inherit;cursor:pointer;background:0 0;border-bottom:2px solid #0000;padding:10px 25px;font-size:90%;font-weight:500}button.selected,button:active,button:hover,button:focus{border-bottom-color:var(--solid-ui-color-primary,#7c4dff);color:var(--solid-ui-color-primary,#7c4dff);text-transform:capitalize;background:color-mix(in srgb, currentColor 25%, transparent);border-radius:0}`;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { t as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=Navbar.styles.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navbar.styles.esm.js","names":[],"sources":["../../../src/components/navbar/Navbar.styles.css"],"sourcesContent":[":host {\n display: block;\n}\n\n:host(.navbar--hidden) {\n display: none !important;\n}\n\n.navbar {\n border: 1px solid var(--color-border, #444);\n border-radius: 5px;\n display: flex;\n background: var(--solid-ui-color-white, #fff);\n overflow: hidden;\n}\n\nbutton {\n padding: 10px 25px;\n border-bottom: 2px solid transparent;\n font-weight: 500;\n font-size: 90%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n}\n\nbutton.selected,\nbutton:active,\nbutton:hover,\nbutton:focus {\n border-bottom-color: var(--solid-ui-color-primary, #7C4DFF);\n border-radius: 0;\n color: var(--solid-ui-color-primary, #7C4DFF);\n text-transform: capitalize;\n background: color-mix(in srgb, currentColor 25%, transparent);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require("./Navbar.cjs.js");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./Navbar.esm.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
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;
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs.js");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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"}
|
|
@@ -0,0 +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":"8HAOQ,EAAA,MAAM,SAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboardPane.esm.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":";;;AAOQ,EAAM,WAAW"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../utils/webIdUtils.cjs.js");async function t(t,i,a){let o=await e.loadProfileFromURI(t),s=e.getName(i,o),c=document.createElement(`div`);return c.classList.add(`container`),c.appendChild(r(o.uri,s)),c.appendChild(n(s)),c}function n(e){let t=document.createElement(`section`),n=document.createElement(`h2`);n.innerText=`Data`,t.appendChild(n);let r=document.createElement(`div`);r.classList.add(`list-group`),t.appendChild(r);let i=document.createElement(`a`);return i.classList.add(`list-group-item`),i.href=window.document.location.href+`public/`,i.innerText=`View ${e}'s files`,r.appendChild(i),t}function r(e,t){let n=document.createElement(`a`);n.href=e,n.innerText=t;let r=document.createElement(`span`);r.innerText=`'s Profile`;let i=document.createElement(`h1`);return i.appendChild(n),i.appendChild(r),i}exports.generateHomepage=t;
|
|
2
|
+
//# sourceMappingURL=homepage.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homepage.cjs.js","names":[],"sources":["../../src/dashboard/homepage.ts"],"sourcesContent":["import { Fetcher, IndexedFormula, NamedNode } from 'rdflib'\nimport { loadProfileFromURI, getName } from '../utils/webIdUtils'\n\nexport async function generateHomepage (\n uri: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<HTMLElement> {\n const ownersProfile = await loadProfileFromURI(uri)\n const name = getName(store, ownersProfile)\n\n const wrapper = document.createElement('div')\n wrapper.classList.add('container')\n wrapper.appendChild(createTitle(ownersProfile.uri, name))\n wrapper.appendChild(createDataSection(name))\n\n return wrapper\n}\n\nfunction createDataSection (name: string): HTMLElement {\n const dataSection = document.createElement('section')\n\n const title = document.createElement('h2')\n title.innerText = 'Data'\n dataSection.appendChild(title)\n\n const listGroup = document.createElement('div')\n listGroup.classList.add('list-group')\n dataSection.appendChild(listGroup)\n\n const publicDataLink = document.createElement('a')\n publicDataLink.classList.add('list-group-item')\n publicDataLink.href = window.document.location.href + 'public/'\n publicDataLink.innerText = `View ${name}'s files`\n listGroup.appendChild(publicDataLink)\n\n return dataSection\n}\n\nfunction createTitle (uri: string, name: string): HTMLElement {\n const profileLink = document.createElement('a')\n profileLink.href = uri\n profileLink.innerText = name\n\n const profileLinkPost = document.createElement('span')\n profileLinkPost.innerText = '\\'s Profile'\n\n const title = document.createElement('h1')\n title.appendChild(profileLink)\n title.appendChild(profileLinkPost)\n\n return title\n}\n"],"mappings":"8CAGA,eAAsB,EACpB,EACA,EACA,EACsB,CACtB,IAAM,EAAgB,MAAM,EAAA,mBAAmB,CAAG,EAC5C,EAAO,EAAA,QAAQ,EAAO,CAAa,EAEnC,EAAU,SAAS,cAAc,KAAK,EAK5C,OAJA,EAAQ,UAAU,IAAI,WAAW,EACjC,EAAQ,YAAY,EAAY,EAAc,IAAK,CAAI,CAAC,EACxD,EAAQ,YAAY,EAAkB,CAAI,CAAC,EAEpC,CACT,CAEA,SAAS,EAAmB,EAA2B,CACrD,IAAM,EAAc,SAAS,cAAc,SAAS,EAE9C,EAAQ,SAAS,cAAc,IAAI,EACzC,EAAM,UAAY,OAClB,EAAY,YAAY,CAAK,EAE7B,IAAM,EAAY,SAAS,cAAc,KAAK,EAC9C,EAAU,UAAU,IAAI,YAAY,EACpC,EAAY,YAAY,CAAS,EAEjC,IAAM,EAAiB,SAAS,cAAc,GAAG,EAMjD,OALA,EAAe,UAAU,IAAI,iBAAiB,EAC9C,EAAe,KAAO,OAAO,SAAS,SAAS,KAAO,UACtD,EAAe,UAAY,QAAQ,EAAK,UACxC,EAAU,YAAY,CAAc,EAE7B,CACT,CAEA,SAAS,EAAa,EAAa,EAA2B,CAC5D,IAAM,EAAc,SAAS,cAAc,GAAG,EAC9C,EAAY,KAAO,EACnB,EAAY,UAAY,EAExB,IAAM,EAAkB,SAAS,cAAc,MAAM,EACrD,EAAgB,UAAY,aAE5B,IAAM,EAAQ,SAAS,cAAc,IAAI,EAIzC,OAHA,EAAM,YAAY,CAAW,EAC7B,EAAM,YAAY,CAAe,EAE1B,CACT"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { getName as e, loadProfileFromURI as t } from "../utils/webIdUtils.esm.js";
|
|
2
|
+
//#region src/dashboard/homepage.ts
|
|
3
|
+
async function n(n, a, o) {
|
|
4
|
+
let s = await t(n), c = e(a, s), l = document.createElement("div");
|
|
5
|
+
return l.classList.add("container"), l.appendChild(i(s.uri, c)), l.appendChild(r(c)), l;
|
|
6
|
+
}
|
|
7
|
+
function r(e) {
|
|
8
|
+
let t = document.createElement("section"), n = document.createElement("h2");
|
|
9
|
+
n.innerText = "Data", t.appendChild(n);
|
|
10
|
+
let r = document.createElement("div");
|
|
11
|
+
r.classList.add("list-group"), t.appendChild(r);
|
|
12
|
+
let i = document.createElement("a");
|
|
13
|
+
return i.classList.add("list-group-item"), i.href = window.document.location.href + "public/", i.innerText = `View ${e}'s files`, r.appendChild(i), t;
|
|
14
|
+
}
|
|
15
|
+
function i(e, t) {
|
|
16
|
+
let n = document.createElement("a");
|
|
17
|
+
n.href = e, n.innerText = t;
|
|
18
|
+
let r = document.createElement("span");
|
|
19
|
+
r.innerText = "'s Profile";
|
|
20
|
+
let i = document.createElement("h1");
|
|
21
|
+
return i.appendChild(n), i.appendChild(r), i;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { n as generateHomepage };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=homepage.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homepage.esm.js","names":[],"sources":["../../src/dashboard/homepage.ts"],"sourcesContent":["import { Fetcher, IndexedFormula, NamedNode } from 'rdflib'\nimport { loadProfileFromURI, getName } from '../utils/webIdUtils'\n\nexport async function generateHomepage (\n uri: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<HTMLElement> {\n const ownersProfile = await loadProfileFromURI(uri)\n const name = getName(store, ownersProfile)\n\n const wrapper = document.createElement('div')\n wrapper.classList.add('container')\n wrapper.appendChild(createTitle(ownersProfile.uri, name))\n wrapper.appendChild(createDataSection(name))\n\n return wrapper\n}\n\nfunction createDataSection (name: string): HTMLElement {\n const dataSection = document.createElement('section')\n\n const title = document.createElement('h2')\n title.innerText = 'Data'\n dataSection.appendChild(title)\n\n const listGroup = document.createElement('div')\n listGroup.classList.add('list-group')\n dataSection.appendChild(listGroup)\n\n const publicDataLink = document.createElement('a')\n publicDataLink.classList.add('list-group-item')\n publicDataLink.href = window.document.location.href + 'public/'\n publicDataLink.innerText = `View ${name}'s files`\n listGroup.appendChild(publicDataLink)\n\n return dataSection\n}\n\nfunction createTitle (uri: string, name: string): HTMLElement {\n const profileLink = document.createElement('a')\n profileLink.href = uri\n profileLink.innerText = name\n\n const profileLinkPost = document.createElement('span')\n profileLinkPost.innerText = '\\'s Profile'\n\n const title = document.createElement('h1')\n title.appendChild(profileLink)\n title.appendChild(profileLinkPost)\n\n return title\n}\n"],"mappings":";;AAGA,eAAsB,EACpB,GACA,GACA,GACsB;CACtB,IAAM,IAAgB,MAAM,EAAmB,CAAG,GAC5C,IAAO,EAAQ,GAAO,CAAa,GAEnC,IAAU,SAAS,cAAc,KAAK;CAK5C,OAJA,EAAQ,UAAU,IAAI,WAAW,GACjC,EAAQ,YAAY,EAAY,EAAc,KAAK,CAAI,CAAC,GACxD,EAAQ,YAAY,EAAkB,CAAI,CAAC,GAEpC;AACT;AAEA,SAAS,EAAmB,GAA2B;CACrD,IAAM,IAAc,SAAS,cAAc,SAAS,GAE9C,IAAQ,SAAS,cAAc,IAAI;CAEzC,AADA,EAAM,YAAY,QAClB,EAAY,YAAY,CAAK;CAE7B,IAAM,IAAY,SAAS,cAAc,KAAK;CAE9C,AADA,EAAU,UAAU,IAAI,YAAY,GACpC,EAAY,YAAY,CAAS;CAEjC,IAAM,IAAiB,SAAS,cAAc,GAAG;CAMjD,OALA,EAAe,UAAU,IAAI,iBAAiB,GAC9C,EAAe,OAAO,OAAO,SAAS,SAAS,OAAO,WACtD,EAAe,YAAY,QAAQ,EAAK,WACxC,EAAU,YAAY,CAAc,GAE7B;AACT;AAEA,SAAS,EAAa,GAAa,GAA2B;CAC5D,IAAM,IAAc,SAAS,cAAc,GAAG;CAE9C,AADA,EAAY,OAAO,GACnB,EAAY,YAAY;CAExB,IAAM,IAAkB,SAAS,cAAc,MAAM;CACrD,EAAgB,YAAY;CAE5B,IAAM,IAAQ,SAAS,cAAc,IAAI;CAIzC,OAHA,EAAM,YAAY,CAAW,GAC7B,EAAM,YAAY,CAAe,GAE1B;AACT"}
|
package/dist/form/pane.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.formPane a,.formPane a:link{color:var(--color-text-link,#3b5998);text-decoration:none}.formPane a:visited{color:var(--color-text-link-visited,#3b5998);text-decoration:none}.formPane a:hover{color:var(--color-text-link-hover,#3b5998);font-weight:700}.formPane a:active{color:var(--color-text-link-active,#888);text-decoration:none}.formPane__message,.formPaneMessage{color:#666;margin:var(--spacing-xs,.5em) 0;padding:var(--spacing-xs,.35em) var(--spacing-xs,.5em)}.formPane__message--info{background-color:var(--color-main-block-bg,#eee)}.formPane__message--error{background-color:var(--color-log-error-bg,#fee)}.formPane__editButton{padding:var(--spacing-xs,.5rem);float:none;border:.5rem solid #fff;align-self:center;margin-left:auto;font-size:100%}.formPane .formPane__mobileTextareaValue>div{min-width:0;display:block;position:relative}.formPane .formPane__mobileTextareaValue>div>textarea{box-sizing:border-box;width:100%;min-width:0;max-width:100%}.formPane .formPane__mobileTextareaValue>div>button[type=button]{position:absolute;top:0;right:0;float:none!important}.formPane[data-layout=mobile] .formPane__mobileTextareaRow{align-items:stretch;flex-direction:column!important}.formPane[data-layout=mobile] .formPane__mobileTextareaLabel{padding-bottom:0;width:auto!important}.formPane[data-layout=mobile] .formPane__mobileTextareaValue{box-sizing:border-box;min-width:0;padding-right:var(--spacing-sm,.75rem);width:100%}.formPane[data-layout=mobile] .formPane__mobileTextareaValue textarea{box-sizing:border-box;width:100%;max-width:100%;margin-left:0!important;margin-right:0!important}@media (width<=960px){.formPane .formPane__mobileTextareaRow{align-items:stretch;flex-direction:column!important}.formPane .formPane__mobileTextareaLabel{padding-bottom:0;width:auto!important}.formPane .formPane__mobileTextareaValue{box-sizing:border-box;min-width:0;padding-right:var(--spacing-sm,.75rem);width:100%}.formPane .formPane__mobileTextareaValue textarea{box-sizing:border-box;width:100%;max-width:100%;margin-left:0!important;margin-right:0!important}}`)),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("solid-logic"),r=require("rdflib");r=e.__toESM(r);var i=t.ns;function a(e){return e?.termType===`NamedNode`}function o(e,t){let n=t.doc?t.doc():void 0,r=e.each(t,i.rdf(`type`),void 0,n).filter(a),s=r.some(e=>e.sameTerm(i.ui(`Group`))),c=r.some(e=>!e.sameTerm(i.ui(`Group`))&&!e.sameTerm(i.ui(`Form`))),l=!!e.any(t,i.ui(`property`),void 0,n),u=e.any(t,i.ui(`parts`),void 0,n),d=!!u?.elements?.length||e.each(t,i.ui(`part`),void 0,n).length>0;s&&c&&l&&!d&&e.removeMany(t,i.rdf(`type`),i.ui(`Group`),n);let f=u?.elements??[];for(let t of f)a(t)&&o(e,t);let p=e.each(t,i.ui(`part`),void 0,n);for(let t of p)a(t)&&o(e,t)}function s(e){let t=Array.from(e.querySelectorAll(`textarea`));for(let e of t){let t=e.parentElement;for(;t;){let e=t.firstElementChild;if(e&&(e.classList.contains(`formFieldName`)||e.querySelector(`a`)!==null)&&t.children.length>=2){t.classList.add(`formPane__mobileTextareaRow`),e.classList.add(`formPane__mobileTextareaLabel`),t.children[1].classList.add(`formPane__mobileTextareaValue`);break}t=t.parentElement}}}var c={icon:t.icons.iconBase+`noun_122196.svg`,name:`form`,audience:[i.solid(`PowerUser`)],label:function(e,n){let r=t.widgets.formsFor(e).length;return t.log.debug(`Form pane: forms for `+e+`: `+r),r?``+r+` forms`:null},render:function(e,c){let l=c.session.store,u=c.dom,d=u.createElement(`div`);d.setAttribute(`class`,`formPane`);function f(e){let t=c.environment??{};e.dataset.layout=t.layout??`desktop`}f(d);let p=function(e,t=`info`){let n=u.createElement(`p`);return n.className=`formPane__message formPane__message--${t}`,d.appendChild(n).textContent=e,n},m=function(e){return p(e,`error`)},h=function(e,t){e||m(`Sorry, failed to save your change:
|
|
2
2
|
`+t)},g=n.authn.currentUser();g?l.each(g,i.ui(`workspace`)).length===0&&p(`You don't seem to have any workspaces defined. A workspace is a place on the web (http://..) or in the file system (file:///) to store application data.
|
|
3
|
-
`):p(`You are not logged in. If you log in and have workspaces then you would be able to select workspace in which to put this new information`);let _=function(e,n){l.fetcher.nowOrWhenFetched(e.uri,n,function(i,a){if(!i)return m(`Cannot load store `+e.uri+`: `+a);let c=t.widgets.formsFor(n);for(let i of c){o(l,i);let a=u.createElement(`h4`);if(a.classList.add(`formPane__heading`),d.appendChild(a),i.uri){let e=r.Util.uri.document(i.uri);e.uri!==i.uri&&d.appendChild(t.widgets.editFormButton(u,d,i,e,h)).classList.add(`formPane__editButton`)}let c=u.createElement(`a`);c.classList.add(`formPane__headingLink`),c.setAttribute(`href`,i.uri),a.insertBefore(c,a.firstChild),c.textContent=t.utils.label(i,!0),t.widgets.appendForm(u,d,{},n,i,e,h),s(d)}})},v=null,y=r.Util.uri.docpart(e.uri);l.updater.editable(y,l)&&(v=e.doc());let b=l.any(l.sym(y),i.link(`annotationStore`));if(!v&&a(b)&&(v=b),!v){let t=new Map;l.statementsMatching(e).forEach(function(e){e.why.value&&t.set(e.why.value,1)}),l.statementsMatching(void 0,void 0,e).forEach(function(e){e.why.value&&t.set(e.why.value,2)});let n=Array.from(t.entries()).sort(function([e,t],[n,r]){return t-r||e.localeCompare(n)});for(let[e]of n)if(e&&l.updater.editable(e,l)){v=l.sym(e);break}}let x=`2014`;if(v)_(v,e);else{m(`No suitable store is known, to edit <`+e.uri+`>.`);let n=t.login.selectWorkspace(u,{noun:`form`,appPathSegment:`form`},function(t){let n=t?l.sym(t):null;if(!n){m(`Workspace selection was cancelled.`);return}p(`Workspace selected OK: `+n.uri);let r=l.each(void 0,i.space(`workspace`),n).filter(a);for(let t=0;t<r.length;t++){let n=r[t],o=l.any(n,i.space(`store`)),s=l.any(n,i.cal(`dtstart`))?.value,c=l.any(n,i.cal(`dtend`))?.value;if(a(o)&&s&&c&&s<=x&&c>x){_(o,e);break}
|
|
3
|
+
`):p(`You are not logged in. If you log in and have workspaces then you would be able to select workspace in which to put this new information`);let _=function(e,n){l.fetcher.nowOrWhenFetched(e.uri,n,function(i,a){if(!i)return m(`Cannot load store `+e.uri+`: `+a);let c=t.widgets.formsFor(n);for(let i of c){o(l,i);let a=u.createElement(`h4`);if(a.classList.add(`formPane__heading`),d.appendChild(a),i.uri){let e=r.Util.uri.document(i.uri);e.uri!==i.uri&&d.appendChild(t.widgets.editFormButton(u,d,i,e,h)).classList.add(`formPane__editButton`)}let c=u.createElement(`a`);c.classList.add(`formPane__headingLink`),c.setAttribute(`href`,i.uri),a.insertBefore(c,a.firstChild),c.textContent=t.utils.label(i,!0),t.widgets.appendForm(u,d,{},n,i,e,h),s(d)}})},v=null,y=r.Util.uri.docpart(e.uri);l.updater.editable(y,l)&&(v=e.doc());let b=l.any(l.sym(y),i.link(`annotationStore`));if(!v&&a(b)&&(v=b),!v){let t=new Map;l.statementsMatching(e).forEach(function(e){e.why.value&&t.set(e.why.value,1)}),l.statementsMatching(void 0,void 0,e).forEach(function(e){e.why.value&&t.set(e.why.value,2)});let n=Array.from(t.entries()).sort(function([e,t],[n,r]){return t-r||e.localeCompare(n)});for(let[e]of n)if(e&&l.updater.editable(e,l)){v=l.sym(e);break}}let x=`2014`;if(v)_(v,e);else{m(`No suitable store is known, to edit <`+e.uri+`>.`);let n=t.login.selectWorkspace(u,{noun:`form`,appPathSegment:`form`},function(t){let n=t?l.sym(t):null;if(!n){m(`Workspace selection was cancelled.`);return}p(`Workspace selected OK: `+n.uri);let r=l.each(void 0,i.space(`workspace`),n).filter(a);for(let t=0;t<r.length;t++){let n=r[t],o=l.any(n,i.space(`store`)),s=l.any(n,i.cal(`dtstart`))?.value,c=l.any(n,i.cal(`dtend`))?.value;if(a(o)&&s&&c&&s<=x&&c>x){_(o,e);break}m(`Note no suitable annotation store in activity: `+n)}});d.appendChild(n)}return d}};exports.formPane=c;
|
|
4
4
|
//# sourceMappingURL=pane.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pane.cjs.js","names":[],"sources":["../../src/form/pane.ts"],"sourcesContent":["/*\n ** Pane for running existing forms for any object\n **\n */\n\nimport * as UI from 'solid-ui'\nimport { authn } from 'solid-logic'\nimport * as $rdf from 'rdflib'\nimport type { DataBrowserContext, PaneDefinition } from 'pane-registry'\nimport type { RenderEnvironment } from 'pane-registry'\nimport type { NamedNode, Statement } from 'rdflib'\nimport './formPane.css'\nconst ns = UI.ns\n\ntype WorkspaceSelectionDetails = {\n noun: string\n appPathSegment: string\n}\n\nfunction isNamedNode (term: { termType?: string } | null | undefined): term is NamedNode {\n return term?.termType === 'NamedNode'\n}\n\n/* The following helper was generated by AI GPT-5.4 Model */\n/* Prompt: Add a compatibility shim in the form pane for mixed `ui:Group` plus field typing. */\nfunction normalizeAmbiguousFieldTypes (store: typeof $rdf.graph extends () => infer T ? T : never, form: NamedNode): void {\n const formDoc = form.doc ? form.doc() : undefined\n const types = store.each(form, ns.rdf('type'), undefined, formDoc).filter(isNamedNode)\n const hasGroupType = types.some(type => type.sameTerm(ns.ui('Group')))\n const hasOtherFieldType = types.some(type => !type.sameTerm(ns.ui('Group')) && !type.sameTerm(ns.ui('Form')))\n const hasProperty = !!store.any(form, ns.ui('property'), undefined, formDoc)\n const partsList = store.any(form, ns.ui('parts'), undefined, formDoc) as { elements?: unknown[] } | null\n const hasParts = !!partsList?.elements?.length || store.each(form, ns.ui('part'), undefined, formDoc).length > 0\n\n // Some legacy forms mark a leaf field as both ui:Group and a concrete input type.\n // solid-ui may then choose the Group renderer and produce an empty nested box.\n if (hasGroupType && hasOtherFieldType && hasProperty && !hasParts) {\n store.removeMany(form, ns.rdf('type'), ns.ui('Group'), formDoc)\n }\n\n const listParts = partsList?.elements ?? []\n for (const part of listParts) {\n if (isNamedNode(part as { termType?: string })) {\n normalizeAmbiguousFieldTypes(store, part as NamedNode)\n }\n }\n\n const unorderedParts = store.each(form, ns.ui('part'), undefined, formDoc)\n for (const part of unorderedParts) {\n if (isNamedNode(part)) {\n normalizeAmbiguousFieldTypes(store, part)\n }\n }\n}\n\nfunction tagMobileTextareaRows (renderedForm: HTMLElement): void {\n const textareas = Array.from(renderedForm.querySelectorAll('textarea'))\n\n for (const textarea of textareas) {\n let row: HTMLDivElement | null = textarea.parentElement as HTMLDivElement | null\n\n while (row) {\n const firstChild = row.firstElementChild as HTMLElement | null\n const hasLabelColumn = !!firstChild && (\n firstChild.classList.contains('formFieldName') ||\n firstChild.querySelector('a') !== null\n )\n\n if (hasLabelColumn && row.children.length >= 2) {\n row.classList.add('formPane__mobileTextareaRow')\n firstChild.classList.add('formPane__mobileTextareaLabel')\n const valueColumn = row.children[1] as HTMLElement\n valueColumn.classList.add('formPane__mobileTextareaValue')\n break\n }\n\n row = row.parentElement as HTMLDivElement | null\n }\n }\n}\n\nexport const formPane: PaneDefinition = {\n icon: UI.icons.iconBase + 'noun_122196.svg',\n\n name: 'form',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve this pane?\n label: function (subject: NamedNode, _context: DataBrowserContext): string | null {\n const n = UI.widgets.formsFor(subject).length\n UI.log.debug('Form pane: forms for ' + subject + ': ' + n)\n if (!n) return null\n return '' + n + ' forms'\n },\n\n render: function (subject: NamedNode, context: DataBrowserContext): HTMLDivElement {\n const kb = context.session.store\n const dom = context.dom\n const box = dom.createElement('div')\n box.setAttribute('class', 'formPane')\n\n function applyEnvironmentAttributes (element: HTMLDivElement): void {\n const environment = (context.environment ?? {}) as Partial<RenderEnvironment>\n element.dataset.layout = environment.layout ?? 'desktop'\n }\n\n applyEnvironmentAttributes(box)\n\n const mention = function (\n message: string,\n modifier: 'info' | 'error' = 'info'\n ): HTMLParagraphElement {\n const pre = dom.createElement('p')\n pre.className = `formPane__message formPane__message--${modifier}`\n box.appendChild(pre).textContent = message\n return pre\n }\n\n const complain = function (message: string): HTMLParagraphElement {\n return mention(message, 'error')\n }\n\n const complainIfBad = function (ok: boolean, body: string): void {\n if (ok) {\n // setModifiedDate(store, kb, store);\n // rerender(box); // Deleted forms at the moment\n } else complain('Sorry, failed to save your change:\\n' + body)\n }\n\n // The question of where to store this data about subject\n // This in general needs a whole lot more thought\n // and it connects to the discoverbility through links\n\n // const t = kb.findTypeURIs(subject)\n\n const me = authn.currentUser()\n\n if (!me) {\n mention(\n 'You are not logged in. If you log in and have ' +\n 'workspaces then you would be able to select workspace in which ' +\n 'to put this new information'\n )\n } else {\n const ws = kb.each(me, ns.ui('workspace'))\n if (ws.length === 0) {\n mention(\n 'You don\\'t seem to have any workspaces defined. ' +\n 'A workspace is a place on the web (http://..) or in ' +\n 'the file system (file:///) to store application data.\\n'\n )\n } else {\n // @@\n }\n }\n\n // Render forms using a given store\n\n const renderFormsFor = function (storeNode: NamedNode, targetSubject: NamedNode): void {\n kb.fetcher.nowOrWhenFetched(\n storeNode.uri,\n targetSubject as unknown as Parameters<typeof kb.fetcher.nowOrWhenFetched>[1],\n function (ok, body) {\n if (!ok) return complain('Cannot load store ' + storeNode.uri + ': ' + body)\n\n // Render the forms\n\n const forms = UI.widgets.formsFor(targetSubject) as NamedNode[]\n\n // complain('Form for editing this form:');\n for (const form of forms) {\n normalizeAmbiguousFieldTypes(kb as never, form)\n\n const heading = dom.createElement('h4')\n heading.classList.add('formPane__heading')\n box.appendChild(heading)\n /* The edit Form is not working in the local environment. it does not find\n the ui FormForm ontology. Need to research further and check in production. */\n if (form.uri) {\n const formStore = $rdf.Util.uri.document(form.uri)\n if (formStore.uri !== form.uri) {\n const editButton = box.appendChild(\n UI.widgets.editFormButton(\n dom,\n box,\n form,\n formStore,\n complainIfBad\n )\n )\n editButton.classList.add('formPane__editButton')\n }\n }\n\n const anchor = dom.createElement('a')\n anchor.classList.add('formPane__headingLink')\n anchor.setAttribute('href', form.uri)\n heading.insertBefore(anchor, heading.firstChild)\n anchor.textContent = UI.utils.label(form, true)\n\n /* Keep tis as a reminder to let a New one have its URI given by user\n mention(\"Where will this information be stored?\")\n const ele = dom.createElement('input');\n box.appendChild(ele);\n ele.setAttribute('type', 'text');\n ele.setAttribute('size', '72');\n ele.setAttribute('maxlength', '1024');\n ele.setAttribute('style', 'font-size: 80%; color:#222;');\n ele.value = store.uri\n */\n\n UI.widgets.appendForm(\n dom,\n box,\n {},\n targetSubject,\n form,\n storeNode,\n complainIfBad\n )\n tagMobileTextareaRows(box)\n }\n }\n ) // end: when store loded\n } // renderFormsFor\n\n // Figure out what store\n\n // Which places are editable and have stuff about the subject?\n\n let targetStore: NamedNode | null = null\n\n // 1. The document URI of the subject itself\n const docuri = $rdf.Util.uri.docpart(subject.uri)\n if (kb.updater.editable(docuri, kb)) {\n targetStore = subject.doc()\n } // an editable data file with hash\n\n const annotationStore = kb.any(kb.sym(docuri), ns.link('annotationStore'))\n if (!targetStore && isNamedNode(annotationStore)) {\n targetStore = annotationStore\n }\n\n // 2. where stuff is already stored\n if (!targetStore) {\n const docs = new Map<string, number>()\n kb.statementsMatching(subject).forEach(function (st: Statement) {\n if (st.why.value) {\n docs.set(st.why.value, 1)\n }\n })\n kb\n .statementsMatching(undefined, undefined, subject)\n .forEach(function (st: Statement) {\n if (st.why.value) {\n docs.set(st.why.value, 2)\n }\n })\n const docList = Array.from(docs.entries()).sort(function ([uriA, scoreA], [uriB, scoreB]) {\n return scoreA - scoreB || uriA.localeCompare(uriB)\n })\n for (const [uri] of docList) {\n if (uri && kb.updater.editable(uri, kb)) {\n targetStore = kb.sym(uri)\n break\n }\n }\n }\n\n // 3. In a workspace store\n const date = '2014' // @@@@@@@@@@@@ pass as parameter\n\n if (targetStore) {\n // mention(\"@@ Ok, we have a store <\" + store.uri + \">.\");\n renderFormsFor(targetStore, subject)\n } else {\n complain('No suitable store is known, to edit <' + subject.uri + '>.')\n const workspaceDetails: WorkspaceSelectionDetails = {\n noun: 'form',\n appPathSegment: 'form'\n }\n const foobarbaz = UI.login.selectWorkspace(dom, workspaceDetails, function (workspaceUri: string | null) {\n const workspace = workspaceUri ? kb.sym(workspaceUri) : null\n if (!workspace) {\n complain('Workspace selection was cancelled.')\n return\n }\n mention('Workspace selected OK: ' + workspace.uri)\n\n const activities = kb.each(undefined, ns.space('workspace'), workspace).filter(isNamedNode)\n for (let j = 0; j < activities.length; j++) {\n const act = activities[j]\n\n const subjectDoc2 = kb.any(act, ns.space('store'))\n const start = kb.any(act, ns.cal('dtstart'))?.value\n const end = kb.any(act, ns.cal('dtend'))?.value\n if (isNamedNode(subjectDoc2) && start && end && start <= date && end > date) {\n renderFormsFor(subjectDoc2, subject)\n break\n } else {\n complain('Note no suitable annotation store in activity: ' + act)\n }\n }\n })\n box.appendChild(foobarbaz)\n }\n\n return box\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pane.cjs.js","names":[],"sources":["../../src/form/pane.ts"],"sourcesContent":["/*\n ** Pane for running existing forms for any object\n **\n */\n\nimport * as UI from 'solid-ui'\nimport { authn } from 'solid-logic'\nimport * as $rdf from 'rdflib'\nimport type { DataBrowserContext, PaneDefinition } from 'pane-registry'\nimport type { RenderEnvironment } from 'pane-registry'\nimport type { NamedNode, Statement } from 'rdflib'\nimport './formPane.css'\nconst ns = UI.ns\n\ntype WorkspaceSelectionDetails = {\n noun: string\n appPathSegment: string\n}\n\nfunction isNamedNode (term: { termType?: string } | null | undefined): term is NamedNode {\n return term?.termType === 'NamedNode'\n}\n\n/* The following helper was generated by AI GPT-5.4 Model */\n/* Prompt: Add a compatibility shim in the form pane for mixed `ui:Group` plus field typing. */\nfunction normalizeAmbiguousFieldTypes (store: typeof $rdf.graph extends () => infer T ? T : never, form: NamedNode): void {\n const formDoc = form.doc ? form.doc() : undefined\n const types = store.each(form, ns.rdf('type'), undefined, formDoc).filter(isNamedNode)\n const hasGroupType = types.some(type => type.sameTerm(ns.ui('Group')))\n const hasOtherFieldType = types.some(type => !type.sameTerm(ns.ui('Group')) && !type.sameTerm(ns.ui('Form')))\n const hasProperty = !!store.any(form, ns.ui('property'), undefined, formDoc)\n const partsList = store.any(form, ns.ui('parts'), undefined, formDoc) as { elements?: unknown[] } | null\n const hasParts = !!partsList?.elements?.length || store.each(form, ns.ui('part'), undefined, formDoc).length > 0\n\n // Some legacy forms mark a leaf field as both ui:Group and a concrete input type.\n // solid-ui may then choose the Group renderer and produce an empty nested box.\n if (hasGroupType && hasOtherFieldType && hasProperty && !hasParts) {\n store.removeMany(form, ns.rdf('type'), ns.ui('Group'), formDoc)\n }\n\n const listParts = partsList?.elements ?? []\n for (const part of listParts) {\n if (isNamedNode(part as { termType?: string })) {\n normalizeAmbiguousFieldTypes(store, part as NamedNode)\n }\n }\n\n const unorderedParts = store.each(form, ns.ui('part'), undefined, formDoc)\n for (const part of unorderedParts) {\n if (isNamedNode(part)) {\n normalizeAmbiguousFieldTypes(store, part)\n }\n }\n}\n\nfunction tagMobileTextareaRows (renderedForm: HTMLElement): void {\n const textareas = Array.from(renderedForm.querySelectorAll('textarea'))\n\n for (const textarea of textareas) {\n let row: HTMLDivElement | null = textarea.parentElement as HTMLDivElement | null\n\n while (row) {\n const firstChild = row.firstElementChild as HTMLElement | null\n const hasLabelColumn = !!firstChild && (\n firstChild.classList.contains('formFieldName') ||\n firstChild.querySelector('a') !== null\n )\n\n if (hasLabelColumn && row.children.length >= 2) {\n row.classList.add('formPane__mobileTextareaRow')\n firstChild.classList.add('formPane__mobileTextareaLabel')\n const valueColumn = row.children[1] as HTMLElement\n valueColumn.classList.add('formPane__mobileTextareaValue')\n break\n }\n\n row = row.parentElement as HTMLDivElement | null\n }\n }\n}\n\nexport const formPane: PaneDefinition = {\n icon: UI.icons.iconBase + 'noun_122196.svg',\n\n name: 'form',\n\n audience: [ns.solid('PowerUser')],\n\n // Does the subject deserve this pane?\n label: function (subject: NamedNode, _context: DataBrowserContext): string | null {\n const n = UI.widgets.formsFor(subject).length\n UI.log.debug('Form pane: forms for ' + subject + ': ' + n)\n if (!n) return null\n return '' + n + ' forms'\n },\n\n render: function (subject: NamedNode, context: DataBrowserContext): HTMLDivElement {\n const kb = context.session.store\n const dom = context.dom\n const box = dom.createElement('div')\n box.setAttribute('class', 'formPane')\n\n function applyEnvironmentAttributes (element: HTMLDivElement): void {\n const environment = (context.environment ?? {}) as Partial<RenderEnvironment>\n element.dataset.layout = environment.layout ?? 'desktop'\n }\n\n applyEnvironmentAttributes(box)\n\n const mention = function (\n message: string,\n modifier: 'info' | 'error' = 'info'\n ): HTMLParagraphElement {\n const pre = dom.createElement('p')\n pre.className = `formPane__message formPane__message--${modifier}`\n box.appendChild(pre).textContent = message\n return pre\n }\n\n const complain = function (message: string): HTMLParagraphElement {\n return mention(message, 'error')\n }\n\n const complainIfBad = function (ok: boolean, body: string): void {\n if (ok) {\n // setModifiedDate(store, kb, store);\n // rerender(box); // Deleted forms at the moment\n } else complain('Sorry, failed to save your change:\\n' + body)\n }\n\n // The question of where to store this data about subject\n // This in general needs a whole lot more thought\n // and it connects to the discoverbility through links\n\n // const t = kb.findTypeURIs(subject)\n\n const me = authn.currentUser()\n\n if (!me) {\n mention(\n 'You are not logged in. If you log in and have ' +\n 'workspaces then you would be able to select workspace in which ' +\n 'to put this new information'\n )\n } else {\n const ws = kb.each(me, ns.ui('workspace'))\n if (ws.length === 0) {\n mention(\n 'You don\\'t seem to have any workspaces defined. ' +\n 'A workspace is a place on the web (http://..) or in ' +\n 'the file system (file:///) to store application data.\\n'\n )\n } else {\n // @@\n }\n }\n\n // Render forms using a given store\n\n const renderFormsFor = function (storeNode: NamedNode, targetSubject: NamedNode): void {\n kb.fetcher.nowOrWhenFetched(\n storeNode.uri,\n targetSubject as unknown as Parameters<typeof kb.fetcher.nowOrWhenFetched>[1],\n function (ok, body) {\n if (!ok) return complain('Cannot load store ' + storeNode.uri + ': ' + body)\n\n // Render the forms\n\n const forms = UI.widgets.formsFor(targetSubject) as NamedNode[]\n\n // complain('Form for editing this form:');\n for (const form of forms) {\n normalizeAmbiguousFieldTypes(kb as never, form)\n\n const heading = dom.createElement('h4')\n heading.classList.add('formPane__heading')\n box.appendChild(heading)\n /* The edit Form is not working in the local environment. it does not find\n the ui FormForm ontology. Need to research further and check in production. */\n if (form.uri) {\n const formStore = $rdf.Util.uri.document(form.uri)\n if (formStore.uri !== form.uri) {\n const editButton = box.appendChild(\n UI.widgets.editFormButton(\n dom,\n box,\n form,\n formStore,\n complainIfBad\n )\n )\n editButton.classList.add('formPane__editButton')\n }\n }\n\n const anchor = dom.createElement('a')\n anchor.classList.add('formPane__headingLink')\n anchor.setAttribute('href', form.uri)\n heading.insertBefore(anchor, heading.firstChild)\n anchor.textContent = UI.utils.label(form, true)\n\n /* Keep tis as a reminder to let a New one have its URI given by user\n mention(\"Where will this information be stored?\")\n const ele = dom.createElement('input');\n box.appendChild(ele);\n ele.setAttribute('type', 'text');\n ele.setAttribute('size', '72');\n ele.setAttribute('maxlength', '1024');\n ele.setAttribute('style', 'font-size: 80%; color:#222;');\n ele.value = store.uri\n */\n\n UI.widgets.appendForm(\n dom,\n box,\n {},\n targetSubject,\n form,\n storeNode,\n complainIfBad\n )\n tagMobileTextareaRows(box)\n }\n }\n ) // end: when store loded\n } // renderFormsFor\n\n // Figure out what store\n\n // Which places are editable and have stuff about the subject?\n\n let targetStore: NamedNode | null = null\n\n // 1. The document URI of the subject itself\n const docuri = $rdf.Util.uri.docpart(subject.uri)\n if (kb.updater.editable(docuri, kb)) {\n targetStore = subject.doc()\n } // an editable data file with hash\n\n const annotationStore = kb.any(kb.sym(docuri), ns.link('annotationStore'))\n if (!targetStore && isNamedNode(annotationStore)) {\n targetStore = annotationStore\n }\n\n // 2. where stuff is already stored\n if (!targetStore) {\n const docs = new Map<string, number>()\n kb.statementsMatching(subject).forEach(function (st: Statement) {\n if (st.why.value) {\n docs.set(st.why.value, 1)\n }\n })\n kb\n .statementsMatching(undefined, undefined, subject)\n .forEach(function (st: Statement) {\n if (st.why.value) {\n docs.set(st.why.value, 2)\n }\n })\n const docList = Array.from(docs.entries()).sort(function ([uriA, scoreA], [uriB, scoreB]) {\n return scoreA - scoreB || uriA.localeCompare(uriB)\n })\n for (const [uri] of docList) {\n if (uri && kb.updater.editable(uri, kb)) {\n targetStore = kb.sym(uri)\n break\n }\n }\n }\n\n // 3. In a workspace store\n const date = '2014' // @@@@@@@@@@@@ pass as parameter\n\n if (targetStore) {\n // mention(\"@@ Ok, we have a store <\" + store.uri + \">.\");\n renderFormsFor(targetStore, subject)\n } else {\n complain('No suitable store is known, to edit <' + subject.uri + '>.')\n const workspaceDetails: WorkspaceSelectionDetails = {\n noun: 'form',\n appPathSegment: 'form'\n }\n const foobarbaz = UI.login.selectWorkspace(dom, workspaceDetails, function (workspaceUri: string | null) {\n const workspace = workspaceUri ? kb.sym(workspaceUri) : null\n if (!workspace) {\n complain('Workspace selection was cancelled.')\n return\n }\n mention('Workspace selected OK: ' + workspace.uri)\n\n const activities = kb.each(undefined, ns.space('workspace'), workspace).filter(isNamedNode)\n for (let j = 0; j < activities.length; j++) {\n const act = activities[j]\n\n const subjectDoc2 = kb.any(act, ns.space('store'))\n const start = kb.any(act, ns.cal('dtstart'))?.value\n const end = kb.any(act, ns.cal('dtend'))?.value\n if (isNamedNode(subjectDoc2) && start && end && start <= date && end > date) {\n renderFormsFor(subjectDoc2, subject)\n break\n } else {\n complain('Note no suitable annotation store in activity: ' + act)\n }\n }\n })\n box.appendChild(foobarbaz)\n }\n\n return box\n }\n}\n"],"mappings":"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"}
|
package/dist/form/pane.esm.js
CHANGED
|
@@ -107,7 +107,8 @@ var s = {
|
|
|
107
107
|
if (i(a) && o && c && o <= x && c > x) {
|
|
108
108
|
_(a, s);
|
|
109
109
|
break;
|
|
110
|
-
}
|
|
110
|
+
}
|
|
111
|
+
m("Note no suitable annotation store in activity: " + t);
|
|
111
112
|
}
|
|
112
113
|
});
|
|
113
114
|
d.appendChild(t);
|