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
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.menu-content{flex-direction:column;gap:.5rem;min-height:0;display:flex;overflow-y:auto}.app-nav.mobile-hidden .menu-content,.app-nav.mobile-visible .menu-content{padding-top:.75rem}.menu-footer{border-top:1px solid var(--color-border,#d1d1d1);width:100%;color:var(--color-text-muted,#555);background:inherit;padding:1rem;font-size:.875rem;line-height:1.4}.app-nav.collapsed .menu-footer{text-align:center;padding:.75rem 0;display:none}.menu-item{align-items:center;gap:var(--spacing-2xs,.625rem);border-radius:var(--border-radius-sm,.2rem);padding:.5rem var(--spacing-xs,.75rem);color:var(--color-text-heading,#000);text-align:left;cursor:pointer;background:0 0;border:0;width:100%;text-decoration:none;display:flex}.menu-toggle-icon{width:30px;height:30px}.menu-item-icon{width:var(--icon-xxs,1rem);height:var(--icon-xxs,1rem);flex:0 0 var(--icon-xxs,1rem);object-fit:contain}.menu-item-label{min-width:0}.menu-item:hover,.menu-item:focus{background:var(--color-header-menu-item-hover,#e6dcff)}.menu-item-active,.menu-item-active:hover,.menu-item-active:focus{background:var(--color-header-menu-item-selected,#cbb9ff);color:var(--color-header-menu-item-text-selected,#7c4cff)}.menu-toggle{z-index:300;min-width:var(--icon-md,2.5rem);height:var(--icon-md,2.5rem);border:1px solid var(--color-border);background:var(--color-menu-bg,#fff);color:var(--color-text);border-radius:var(--border-radius-sm,.2rem);justify-content:center;align-items:center;gap:.375rem;margin:0;padding:0 .625rem;display:inline-flex;position:fixed;top:.5rem;left:1rem}.menu-toggle-label{white-space:nowrap;text-overflow:ellipsis;max-width:10rem;font-size:1.2rem;font-weight:600;overflow:hidden}.menu-overlay{z-index:100;background:#00000059;position:fixed;inset:0}.app-nav{background:var(--color-menu-bg,#fff);border-right:1px solid var(--color-border);z-index:10;grid-template-rows:1fr auto;width:min(18rem,320px);display:grid;position:fixed;top:0;bottom:0;left:0;overflow:hidden}.app-nav.mobile-hidden,.app-nav.mobile-visible{z-index:999;background:var(--color-menu-bg,#fff);width:min(80vw,320px);height:100vh;min-height:100vh;box-shadow:none;border-right:none;flex-direction:column;padding-top:3.75rem;transition:transform .25s ease-in-out;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden;transform:translate(-100%)}.app-nav.mobile-hidden .menu-content,.app-nav.mobile-visible .menu-content{flex:1;min-height:0}.app-nav.mobile-visible{visibility:visible;background:var(--color-menu-bg,#fff);transform:translate(0)}.menu-header{color:#fff;box-sizing:border-box;z-index:1000;width:100%;height:3.75rem;min-height:3.75rem;box-shadow:none;border-right:none;justify-content:flex-start;align-items:center;font-weight:600;display:none;position:absolute;top:0;left:0;right:0;background-color:#42345a!important}.app-nav.mobile-hidden .menu-header,.app-nav.mobile-visible .menu-header{display:flex}.menu-header-title{color:#fff;font-size:1.25rem}.menu-close{color:#fff;cursor:pointer;background:0 0;border:none;padding-left:1.25rem;font-size:1.25rem;line-height:1}.menu-close:hover,.menu-close:focus{opacity:.85}.app-nav.collapsed{width:4.5rem;min-width:4.5rem}.app-nav.collapsed .menu-content{align-items:center;gap:.25rem}.app-nav.collapsed .menu-item{justify-content:center;padding-left:.5rem;padding-right:.5rem}.app-nav.collapsed .menu-item-label{display:none}.menu-collapse{z-index:320;border:1px solid var(--color-border);width:1.25rem;height:1.25rem;color:var(--color-text);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;font-size:1.3rem;line-height:1;display:inline-flex;position:fixed;bottom:8rem;left:3rem;box-shadow:0 1px 4px #7c4dff1f}@media (width<=768px){.menu-collapse{display:none}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();import { loadProfileFromURI as e } from "../profileUtils/ownerProfile.esm.js";
|
|
2
|
-
|
|
3
|
-
import t from "../icons/menu.esm.js";
|
|
4
|
-
import { createUiIcon as n } from "../icons/iconHelper.esm.js";
|
|
5
|
-
import { authSession as r, authn as i } from "solid-logic";
|
|
6
|
-
import { sym as a } from "rdflib";
|
|
7
|
-
//#region src/mainPage/menu.ts
|
|
8
|
-
var o = n(t, "Menu Icon", "#ffffff"), s = "solid-panes-menu-collapsed", c = !1, l = () => {
|
|
9
|
-
try {
|
|
10
|
-
return localStorage.getItem(s) === "true";
|
|
11
|
-
} catch {
|
|
12
|
-
return !1;
|
|
13
|
-
}
|
|
14
|
-
}, u = (e) => {
|
|
15
|
-
try {
|
|
16
|
-
localStorage.setItem(s, String(e));
|
|
17
|
-
} catch {}
|
|
18
|
-
}, d = () => {
|
|
19
|
-
let e = document.getElementById("MenuCollapseBtn");
|
|
20
|
-
e && (e.textContent = c ? "›" : "‹", e.setAttribute("aria-label", c ? "Expand navigation menu" : "Collapse navigation menu"));
|
|
21
|
-
}, f = (e, t) => {
|
|
22
|
-
if (!e || !t) return;
|
|
23
|
-
let n = e.getBoundingClientRect(), r = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16, i = parseFloat(getComputedStyle(t).width) || 1.25 * r, a = (n.width - i / 2) / r;
|
|
24
|
-
t.style.setProperty("left", `${a.toFixed(3)}rem`, "important");
|
|
25
|
-
}, p = (e) => {
|
|
26
|
-
e && (e.classList.toggle("collapsed", c), d(), f(e, document.getElementById("MenuCollapseBtn")));
|
|
27
|
-
}, m = async () => {
|
|
28
|
-
try {
|
|
29
|
-
return !!(await i.checkUser() || i.currentUser());
|
|
30
|
-
} catch {
|
|
31
|
-
return !!i.currentUser();
|
|
32
|
-
}
|
|
33
|
-
}, h = () => !!i.currentUser(), g = (e) => {
|
|
34
|
-
let t = document.querySelector("solid-ui-footer");
|
|
35
|
-
t && (t.style.display = e ? "none" : "");
|
|
36
|
-
}, _ = (e) => {
|
|
37
|
-
let t = i.currentUser();
|
|
38
|
-
return !!(t && e && t.sameTerm(e));
|
|
39
|
-
}, v = () => {
|
|
40
|
-
c = l();
|
|
41
|
-
let e = document.querySelector("[role=\"main\"]") || document.body, t = document.getElementById("NavMenu");
|
|
42
|
-
if (!t) {
|
|
43
|
-
t = document.createElement("nav"), t.id = "NavMenu", t.className = "app-nav", t.setAttribute("aria-label", "App navigation"), t.hidden = !0;
|
|
44
|
-
let n = document.createElement("div");
|
|
45
|
-
n.className = "menu-header";
|
|
46
|
-
let r = document.createElement("button");
|
|
47
|
-
r.id = "MenuCloseBtn", r.className = "menu-close", r.type = "button", r.setAttribute("aria-label", "Close menu"), r.textContent = "✕", n.appendChild(r);
|
|
48
|
-
let i = document.createElement("span");
|
|
49
|
-
i.className = "menu-header-title", i.textContent = "Menu", n.appendChild(i), t.appendChild(n);
|
|
50
|
-
let a = document.createElement("div");
|
|
51
|
-
a.id = "AuthState", a.className = "menu-auth-state", t.appendChild(a);
|
|
52
|
-
let o = document.createElement("div");
|
|
53
|
-
o.id = "NavMenuContent", o.className = "menu-content", t.appendChild(o), e.insertBefore(t, e.firstChild);
|
|
54
|
-
} else if (!t.querySelector(".menu-header")) {
|
|
55
|
-
let e = document.createElement("div");
|
|
56
|
-
e.className = "menu-header";
|
|
57
|
-
let n = document.createElement("button");
|
|
58
|
-
n.id = "MenuCloseBtn", n.className = "menu-close", n.type = "button", n.setAttribute("aria-label", "Close menu"), n.textContent = "✕", e.appendChild(n);
|
|
59
|
-
let r = document.createElement("span");
|
|
60
|
-
r.className = "menu-header-title", r.textContent = "Menu", e.appendChild(r), t.insertBefore(e, t.firstChild);
|
|
61
|
-
}
|
|
62
|
-
let n = document.getElementById("MenuToggleBtn");
|
|
63
|
-
if (!n) {
|
|
64
|
-
n = document.createElement("button"), n.id = "MenuToggleBtn", n.className = "menu-toggle", n.type = "button", n.setAttribute("aria-label", "Toggle navigation menu"), n.hidden = !0;
|
|
65
|
-
let t = document.createElement("img");
|
|
66
|
-
t.src = o, t.alt = "", t.className = "menu-toggle-icon", t.setAttribute("aria-hidden", "true"), n.appendChild(t);
|
|
67
|
-
let r = document.createElement("span");
|
|
68
|
-
r.id = "MenuToggleLabel", r.className = "menu-toggle-label", n.appendChild(r), e.insertBefore(n, e.firstChild);
|
|
69
|
-
}
|
|
70
|
-
let r = document.getElementById("MenuOverlay");
|
|
71
|
-
r || (r = document.createElement("div"), r.id = "MenuOverlay", r.className = "menu-overlay", r.hidden = !0, document.body.appendChild(r));
|
|
72
|
-
let i = document.getElementById("MenuCollapseBtn");
|
|
73
|
-
i || (i = document.createElement("button"), i.id = "MenuCollapseBtn", i.className = "menu-collapse", i.type = "button", i.setAttribute("aria-label", "Collapse navigation menu"), i.textContent = "‹", i.hidden = !0, document.body.appendChild(i));
|
|
74
|
-
}, y = async (e, t) => {
|
|
75
|
-
try {
|
|
76
|
-
return (await t.getDashboardItems(e)).map((n) => {
|
|
77
|
-
let r = n.subject || i.currentUser() || e;
|
|
78
|
-
return {
|
|
79
|
-
icon: n.icon,
|
|
80
|
-
subject: r,
|
|
81
|
-
paneName: n.tabName || n.paneName,
|
|
82
|
-
label: n.label,
|
|
83
|
-
onclick: () => D(r, t, n.tabName || n.paneName)
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
} catch (e) {
|
|
87
|
-
return console.error("Unable to load navigation menu items", e), [];
|
|
88
|
-
}
|
|
89
|
-
}, b = (e) => {
|
|
90
|
-
let t = document.createElement("button");
|
|
91
|
-
if (t.className = "menu-item", t.type = "button", e.paneName && (t.dataset.paneName = e.paneName), e.icon) {
|
|
92
|
-
let n = document.createElement("img");
|
|
93
|
-
n.className = "menu-item-icon", n.src = e.icon, n.alt = "", n.setAttribute("aria-hidden", "true"), t.appendChild(n);
|
|
94
|
-
}
|
|
95
|
-
let n = document.createElement("span");
|
|
96
|
-
return n.className = "menu-item-label", n.textContent = e.label, t.appendChild(n), e.id && (t.id = e.id), t.addEventListener("click", async () => {
|
|
97
|
-
await e.onclick();
|
|
98
|
-
}), t;
|
|
99
|
-
}, x = (e, t) => {
|
|
100
|
-
let n = Array.from(e.querySelectorAll(".menu-item")), r;
|
|
101
|
-
n.forEach((e) => {
|
|
102
|
-
let n = !!t && e.dataset.paneName === t;
|
|
103
|
-
e.classList.toggle("menu-item-active", n), n ? (e.setAttribute("aria-current", "page"), r = e) : e.removeAttribute("aria-current");
|
|
104
|
-
}), t ? !r && n[0] ? e.dataset.activePaneName = "" : e.dataset.activePaneName = t : e.dataset.activePaneName = "", C(r);
|
|
105
|
-
}, S = (e) => {
|
|
106
|
-
let t = document.getElementById("NavMenuContent");
|
|
107
|
-
t && x(t, e);
|
|
108
|
-
}, C = (e) => {
|
|
109
|
-
let t = document.getElementById("MenuToggleLabel");
|
|
110
|
-
t && (t.textContent = e?.querySelector(".menu-item-label")?.textContent || "");
|
|
111
|
-
}, w = async (e, t, n) => {
|
|
112
|
-
let r = await y(e, t);
|
|
113
|
-
n.replaceChildren(...r.map(b)), x(n, _(e) ? "profile" : n.dataset.activePaneName);
|
|
114
|
-
}, T = (e) => {
|
|
115
|
-
let t = document.getElementById("NavMenu"), n = document.getElementById("MenuToggleBtn"), r = document.getElementById("MenuCollapseBtn"), i = document.getElementById("MenuOverlay");
|
|
116
|
-
if (!(!t || !n || !i || !r)) {
|
|
117
|
-
if (!h()) {
|
|
118
|
-
t.hidden = !0, t.style.display = "none", n.hidden = !0, n.style.display = "none", r.hidden = !0, r.style.display = "none", i.hidden = !0, i.style.display = "none", g(!1);
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
g(!0), e === "mobile" ? (t.classList.add("mobile-hidden"), t.classList.remove("mobile-visible"), n.hidden = !1, n.style.display = "", r.hidden = !0, r.style.display = "none", i.hidden = !0, i.style.display = "none", t.hidden = !1, t.style.display = "", t.classList.remove("collapsed"), n.setAttribute("aria-expanded", "false")) : (t.classList.remove("mobile-hidden", "mobile-visible"), n.hidden = !0, n.style.display = "none", r.hidden = !1, r.style.display = "", i.hidden = !0, i.style.display = "none", t.hidden = !1, t.style.display = "", p(t), f(t, r), n.setAttribute("aria-expanded", "false"));
|
|
122
|
-
}
|
|
123
|
-
}, E = async (e, t) => {
|
|
124
|
-
v();
|
|
125
|
-
let n = document.getElementById("NavMenu"), i = document.getElementById("MenuToggleBtn"), a = document.getElementById("MenuOverlay"), o = document.getElementById("NavMenuContent");
|
|
126
|
-
await m();
|
|
127
|
-
let s = () => {
|
|
128
|
-
!n || !i || !a || (n.classList.remove("mobile-visible"), n.classList.add("mobile-hidden"), n.style.display = "", i.setAttribute("aria-expanded", "false"), a.hidden = !0, a.style.display = "none");
|
|
129
|
-
}, l = () => {
|
|
130
|
-
!n || !i || !a || (n.classList.remove("mobile-hidden"), n.classList.add("mobile-visible"), n.style.display = "", i.setAttribute("aria-expanded", "true"), a.hidden = !1, a.style.display = "");
|
|
131
|
-
}, d = document.getElementById("MenuCollapseBtn"), f = () => {
|
|
132
|
-
!n || !d || c && (c = !1, u(c), p(n));
|
|
133
|
-
};
|
|
134
|
-
n && n.addEventListener("click", (e) => {
|
|
135
|
-
let n = t.context?.environment?.layout === "mobile", r = e.target.closest("#MenuCollapseBtn");
|
|
136
|
-
!n && c && !r && f();
|
|
137
|
-
}), i && i.addEventListener("click", () => {
|
|
138
|
-
n?.classList.contains("mobile-visible") ? s() : l();
|
|
139
|
-
}), d && d.addEventListener("click", () => {
|
|
140
|
-
c = !c, u(c), p(n);
|
|
141
|
-
});
|
|
142
|
-
let _ = () => {
|
|
143
|
-
let e = h();
|
|
144
|
-
n && (n.hidden = !e, n.style.display = e ? "" : "none"), i && (i.hidden = !e, i.style.display = e ? "" : "none"), d && (d.hidden = !e, d.style.display = e ? "" : "none"), a && (a.hidden = !e, a.style.display = e ? "" : "none"), g(e);
|
|
145
|
-
};
|
|
146
|
-
_(), a && a.addEventListener("click", s);
|
|
147
|
-
let y = document.getElementById("MenuCloseBtn");
|
|
148
|
-
if (y && y.addEventListener("click", s), o) {
|
|
149
|
-
if (_(), h() && await w(e, t, o), !o.dataset.authEventsBound) {
|
|
150
|
-
let n = async () => {
|
|
151
|
-
await w(e, t, o);
|
|
152
|
-
};
|
|
153
|
-
r.events.on("login", async () => {
|
|
154
|
-
await m(), _(), T(t.context?.environment?.layout === "mobile" ? "mobile" : "desktop"), await n();
|
|
155
|
-
}), r.events.on("logout", async () => {
|
|
156
|
-
await m(), _(), T(t.context?.environment?.layout === "mobile" ? "mobile" : "desktop"), await n();
|
|
157
|
-
}), r.events.on("sessionRestore", async () => {
|
|
158
|
-
await m(), _(), T(t.context?.environment?.layout === "mobile" ? "mobile" : "desktop"), await n();
|
|
159
|
-
}), o.dataset.authEventsBound = "true";
|
|
160
|
-
}
|
|
161
|
-
o.addEventListener("click", (e) => {
|
|
162
|
-
let n = e.target.closest(".menu-item");
|
|
163
|
-
n instanceof HTMLButtonElement && x(o, n.dataset.paneName);
|
|
164
|
-
let r = t.context?.environment?.layout === "mobile";
|
|
165
|
-
n && r && s();
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
T(t.context?.environment?.layout === "mobile" ? "mobile" : "desktop");
|
|
169
|
-
};
|
|
170
|
-
async function D(t, n, r) {
|
|
171
|
-
let o = i.currentUser();
|
|
172
|
-
if (!t) if (o) t = o;
|
|
173
|
-
else {
|
|
174
|
-
let r = n?.context?.store || n?.context?.session?.store || n?.kb, i = n?.context?.fetcher || r?.fetcher;
|
|
175
|
-
if (!r || !i) throw Error("Unable to load profile: missing RDF store or fetcher");
|
|
176
|
-
let o = a(window.location.href);
|
|
177
|
-
t = await e(t || o, r, i);
|
|
178
|
-
}
|
|
179
|
-
n.showDashboard(t, { pane: r });
|
|
180
|
-
}
|
|
181
|
-
//#endregion
|
|
182
|
-
export { E as createLeftSideMenu, T as refreshMenu, S as setActiveMenuPane };
|
|
183
|
-
|
|
184
|
-
//# sourceMappingURL=menu2.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu2.esm.js","names":[],"sources":["../../src/mainPage/menu.ts"],"sourcesContent":["import './menu.css'\nimport { OutlineManager } from '../outline/manager'\nimport { authSession, authn } from 'solid-logic'\nimport { NamedNode, sym } from 'rdflib'\nimport { loadProfileFromURI } from '../profileUtils/ownerProfile'\nimport menuIcon from '../icons/menu.svg?raw'\nimport { createUiIcon } from '../icons/iconHelper'\n\ntype MenuItem = {\n id?: string\n icon?: string\n paneName?: string\n subject?: NamedNode\n label: string\n onclick: () => void | Promise<void>\n}\n\nconst MENU_ICON = createUiIcon(menuIcon, 'Menu Icon', '#ffffff')\nconst MENU_COLLAPSED_KEY = 'solid-panes-menu-collapsed'\nlet menuCollapsed = false\n\nconst loadMenuCollapsedState = (): boolean => {\n try {\n return localStorage.getItem(MENU_COLLAPSED_KEY) === 'true'\n } catch (error) {\n return false\n }\n}\n\nconst saveMenuCollapsedState = (collapsed: boolean): void => {\n try {\n localStorage.setItem(MENU_COLLAPSED_KEY, String(collapsed))\n } catch (error) {\n // ignore storage errors\n }\n}\n\nconst updateMenuCollapseButton = (): void => {\n const collapseBtn = document.getElementById('MenuCollapseBtn') as HTMLButtonElement | null\n if (!collapseBtn) return\n collapseBtn.textContent = menuCollapsed ? '\\u203A' : '\\u2039'\n collapseBtn.setAttribute('aria-label', menuCollapsed ? 'Expand navigation menu' : 'Collapse navigation menu')\n}\n\nconst updateCollapseButtonPosition = (navMenu: HTMLElement | null, collapseBtn: HTMLButtonElement | null): void => {\n if (!navMenu || !collapseBtn) return\n const navRect = navMenu.getBoundingClientRect()\n const rootFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16\n const buttonWidth = parseFloat(getComputedStyle(collapseBtn).width) || 1.25 * rootFontSize\n const offsetRem = (navRect.width - buttonWidth / 2) / rootFontSize\n collapseBtn.style.setProperty('left', `${offsetRem.toFixed(3)}rem`, 'important')\n}\n\nconst applyMenuCollapsedState = (navMenu: HTMLElement | null): void => {\n if (!navMenu) return\n navMenu.classList.toggle('collapsed', menuCollapsed)\n updateMenuCollapseButton()\n const collapseBtn = document.getElementById('MenuCollapseBtn') as HTMLButtonElement | null\n updateCollapseButtonPosition(navMenu, collapseBtn)\n}\n\nconst refreshAuthStateFromSession = async (): Promise<boolean> => {\n try {\n const webId = await authn.checkUser()\n return Boolean(webId || authn.currentUser())\n } catch {\n // Keep the menu responsive even if auth refresh is transiently unavailable.\n return Boolean(authn.currentUser())\n }\n}\n\nconst isLoggedIn = (): boolean => Boolean(authn.currentUser())\n\nconst setFooterVisibility = (loggedIn: boolean): void => {\n const footer = document.querySelector('solid-ui-footer') as HTMLElement | null\n if (!footer) return\n footer.style.display = loggedIn ? 'none' : ''\n}\n\nconst isViewingOwnProfile = (subject: NamedNode): boolean => {\n const currentUser = authn.currentUser()\n return Boolean(currentUser && subject && currentUser.sameTerm(subject))\n}\n\nconst ensureMenuSkeleton = () => {\n menuCollapsed = loadMenuCollapsedState()\n const root = document.querySelector('[role=\"main\"]') || document.body\n\n let navMenu = document.getElementById('NavMenu') as HTMLElement | null\n if (!navMenu) {\n navMenu = document.createElement('nav')\n navMenu.id = 'NavMenu'\n navMenu.className = 'app-nav'\n navMenu.setAttribute('aria-label', 'App navigation')\n navMenu.hidden = true\n\n const headerEl = document.createElement('div')\n headerEl.className = 'menu-header'\n\n const closeBtn = document.createElement('button')\n closeBtn.id = 'MenuCloseBtn'\n closeBtn.className = 'menu-close'\n closeBtn.type = 'button'\n closeBtn.setAttribute('aria-label', 'Close menu')\n closeBtn.textContent = '✕'\n headerEl.appendChild(closeBtn)\n\n const title = document.createElement('span')\n title.className = 'menu-header-title'\n title.textContent = 'Menu'\n headerEl.appendChild(title)\n\n navMenu.appendChild(headerEl)\n\n const authStateEl = document.createElement('div')\n authStateEl.id = 'AuthState'\n authStateEl.className = 'menu-auth-state'\n navMenu.appendChild(authStateEl)\n\n const contentEl = document.createElement('div')\n contentEl.id = 'NavMenuContent'\n contentEl.className = 'menu-content'\n navMenu.appendChild(contentEl)\n\n root.insertBefore(navMenu, root.firstChild)\n } else if (!navMenu.querySelector('.menu-header')) {\n const headerEl = document.createElement('div')\n headerEl.className = 'menu-header'\n\n const closeBtn = document.createElement('button')\n closeBtn.id = 'MenuCloseBtn'\n closeBtn.className = 'menu-close'\n closeBtn.type = 'button'\n closeBtn.setAttribute('aria-label', 'Close menu')\n closeBtn.textContent = '✕'\n headerEl.appendChild(closeBtn)\n\n const title = document.createElement('span')\n title.className = 'menu-header-title'\n title.textContent = 'Menu'\n headerEl.appendChild(title)\n\n navMenu.insertBefore(headerEl, navMenu.firstChild)\n }\n\n let toggle = document.getElementById('MenuToggleBtn') as HTMLButtonElement | null\n if (!toggle) {\n toggle = document.createElement('button')\n toggle.id = 'MenuToggleBtn'\n toggle.className = 'menu-toggle'\n toggle.type = 'button'\n toggle.setAttribute('aria-label', 'Toggle navigation menu')\n toggle.hidden = true\n const toggleImg = document.createElement('img')\n toggleImg.src = MENU_ICON\n toggleImg.alt = ''\n toggleImg.className = 'menu-toggle-icon'\n toggleImg.setAttribute('aria-hidden', 'true')\n toggle.appendChild(toggleImg)\n const toggleLabel = document.createElement('span')\n toggleLabel.id = 'MenuToggleLabel'\n toggleLabel.className = 'menu-toggle-label'\n toggle.appendChild(toggleLabel)\n root.insertBefore(toggle, root.firstChild)\n }\n\n let overlay = document.getElementById('MenuOverlay') as HTMLElement | null\n if (!overlay) {\n overlay = document.createElement('div')\n overlay.id = 'MenuOverlay'\n overlay.className = 'menu-overlay'\n overlay.hidden = true\n document.body.appendChild(overlay)\n }\n\n let collapseBtn = document.getElementById('MenuCollapseBtn') as HTMLButtonElement | null\n if (!collapseBtn) {\n collapseBtn = document.createElement('button')\n collapseBtn.id = 'MenuCollapseBtn'\n collapseBtn.className = 'menu-collapse'\n collapseBtn.type = 'button'\n collapseBtn.setAttribute('aria-label', 'Collapse navigation menu')\n collapseBtn.textContent = '\\u2039'\n collapseBtn.hidden = true\n document.body.appendChild(collapseBtn)\n }\n}\n\nconst getMenuItems = async (subject: NamedNode, outliner: any): Promise<MenuItem[]> => {\n try {\n const items = await outliner.getDashboardItems(subject)\n return items.map((element) => {\n const targetSubject = element.subject || (authn.currentUser() || subject)\n return {\n icon: element.icon,\n subject: targetSubject,\n paneName: element.tabName || element.paneName,\n label: element.label,\n onclick: () => openDashboardPane(targetSubject, outliner, element.tabName || element.paneName)\n }\n })\n } catch (error) {\n console.error('Unable to load navigation menu items', error)\n return []\n }\n}\n\nconst createMenuButton = (item: MenuItem) => {\n const button = document.createElement('button')\n button.className = 'menu-item'\n button.type = 'button'\n if (item.paneName) {\n button.dataset.paneName = item.paneName\n }\n\n if (item.icon) {\n const icon = document.createElement('img')\n icon.className = 'menu-item-icon'\n icon.src = item.icon\n icon.alt = ''\n icon.setAttribute('aria-hidden', 'true')\n button.appendChild(icon)\n }\n\n const label = document.createElement('span')\n label.className = 'menu-item-label'\n label.textContent = item.label\n button.appendChild(label)\n\n if (item.id) {\n button.id = item.id\n }\n\n button.addEventListener('click', async () => {\n await item.onclick()\n })\n\n return button\n}\n\nconst setActiveMenuItem = (container: HTMLElement, paneName?: string) => {\n const menuItems = Array.from(container.querySelectorAll<HTMLButtonElement>('.menu-item'))\n let activeItem: HTMLButtonElement | undefined\n\n menuItems.forEach((item) => {\n const isActive = Boolean(paneName) && item.dataset.paneName === paneName\n item.classList.toggle('menu-item-active', isActive)\n if (isActive) {\n item.setAttribute('aria-current', 'page')\n activeItem = item\n } else {\n item.removeAttribute('aria-current')\n }\n })\n\n if (paneName) {\n if (!activeItem && menuItems[0]) {\n // If an explicit pane name is provided but does not match any menu\n // item, fall back to clearing selection rather than selecting the first item.\n container.dataset.activePaneName = ''\n } else {\n container.dataset.activePaneName = paneName\n }\n } else {\n // If there is no active pane, do not auto-select the first menu item.\n container.dataset.activePaneName = ''\n }\n\n updateToggleLabel(activeItem)\n}\n\nexport const setActiveMenuPane = (paneName?: string): void => {\n const navMenuContent = document.getElementById('NavMenuContent') as HTMLElement | null\n if (!navMenuContent) return\n setActiveMenuItem(navMenuContent, paneName)\n}\n\nconst updateToggleLabel = (activeItem?: HTMLButtonElement): void => {\n const toggleLabel = document.getElementById('MenuToggleLabel')\n if (!toggleLabel) return\n toggleLabel.textContent = activeItem?.querySelector('.menu-item-label')?.textContent || ''\n}\n\nconst renderMenuItems = async (subject: NamedNode, outliner: OutlineManager, container: HTMLElement) => {\n const menuItems = await getMenuItems(subject, outliner)\n\n container.replaceChildren(...menuItems.map(createMenuButton))\n // If the user is logged in and viewing their own profile, select \"Your profile\"\n // by default. This also surfaces \"Your profile\" at the top of the mobile view\n // via the menu toggle label, which mirrors the active menu item.\n const activePane = isViewingOwnProfile(subject)\n ? 'profile'\n : container.dataset.activePaneName\n setActiveMenuItem(container, activePane)\n}\n\nexport const refreshMenu = (layout: 'mobile' | 'desktop') => {\n const navMenu = document.getElementById('NavMenu') as HTMLElement | null\n const toggle = document.getElementById('MenuToggleBtn') as HTMLButtonElement | null\n const collapseBtn = document.getElementById('MenuCollapseBtn') as HTMLButtonElement | null\n const overlay = document.getElementById('MenuOverlay') as HTMLElement | null\n\n if (!navMenu || !toggle || !overlay || !collapseBtn) return\n\n const loggedIn = isLoggedIn()\n if (!loggedIn) {\n navMenu.hidden = true\n navMenu.style.display = 'none'\n toggle.hidden = true\n toggle.style.display = 'none'\n collapseBtn.hidden = true\n collapseBtn.style.display = 'none'\n overlay.hidden = true\n overlay.style.display = 'none'\n setFooterVisibility(false)\n return\n }\n\n setFooterVisibility(true)\n\n if (layout === 'mobile') {\n navMenu.classList.add('mobile-hidden')\n navMenu.classList.remove('mobile-visible')\n toggle.hidden = false\n toggle.style.display = ''\n collapseBtn.hidden = true\n collapseBtn.style.display = 'none'\n overlay.hidden = true\n overlay.style.display = 'none'\n navMenu.hidden = false\n navMenu.style.display = ''\n navMenu.classList.remove('collapsed')\n toggle.setAttribute('aria-expanded', 'false')\n } else {\n navMenu.classList.remove('mobile-hidden', 'mobile-visible')\n toggle.hidden = true\n toggle.style.display = 'none'\n collapseBtn.hidden = false\n collapseBtn.style.display = ''\n overlay.hidden = true\n overlay.style.display = 'none'\n navMenu.hidden = false\n navMenu.style.display = ''\n applyMenuCollapsedState(navMenu)\n updateCollapseButtonPosition(navMenu, collapseBtn)\n toggle.setAttribute('aria-expanded', 'false')\n }\n}\n\nexport const createLeftSideMenu = async (subject: NamedNode, outliner: OutlineManager) => {\n ensureMenuSkeleton()\n const navMenu = document.getElementById('NavMenu') as HTMLElement | null\n const menuToggle = document.getElementById('MenuToggleBtn') as HTMLElement | null\n const menuOverlay = document.getElementById('MenuOverlay') as HTMLElement | null\n const navMenuContent = document.getElementById('NavMenuContent') as HTMLElement | null\n await refreshAuthStateFromSession()\n\n const closeMobileMenu = () => {\n if (!navMenu || !menuToggle || !menuOverlay) return\n navMenu.classList.remove('mobile-visible')\n navMenu.classList.add('mobile-hidden')\n navMenu.style.display = ''\n menuToggle.setAttribute('aria-expanded', 'false')\n menuOverlay.hidden = true\n menuOverlay.style.display = 'none'\n }\n\n const openMobileMenu = () => {\n if (!navMenu || !menuToggle || !menuOverlay) return\n navMenu.classList.remove('mobile-hidden')\n navMenu.classList.add('mobile-visible')\n navMenu.style.display = ''\n menuToggle.setAttribute('aria-expanded', 'true')\n menuOverlay.hidden = false\n menuOverlay.style.display = ''\n }\n\n const collapseBtn = document.getElementById('MenuCollapseBtn') as HTMLButtonElement | null\n\n const expandDesktopMenu = () => {\n if (!navMenu || !collapseBtn) return\n if (!menuCollapsed) return\n menuCollapsed = false\n saveMenuCollapsedState(menuCollapsed)\n applyMenuCollapsedState(navMenu)\n }\n\n if (navMenu) {\n navMenu.addEventListener('click', (event) => {\n const isMobile = outliner.context?.environment?.layout === 'mobile'\n const clickedCollapseButton = (event.target as HTMLElement).closest('#MenuCollapseBtn')\n if (!isMobile && menuCollapsed && !clickedCollapseButton) {\n expandDesktopMenu()\n }\n })\n }\n\n if (menuToggle) {\n menuToggle.addEventListener('click', () => {\n if (navMenu?.classList.contains('mobile-visible')) {\n closeMobileMenu()\n } else {\n openMobileMenu()\n }\n })\n }\n if (collapseBtn) {\n collapseBtn.addEventListener('click', () => {\n menuCollapsed = !menuCollapsed\n saveMenuCollapsedState(menuCollapsed)\n applyMenuCollapsedState(navMenu)\n })\n }\n\n const updateMenuVisibility = () => {\n const loggedIn = isLoggedIn()\n if (navMenu) {\n navMenu.hidden = !loggedIn\n navMenu.style.display = loggedIn ? '' : 'none'\n }\n if (menuToggle) {\n menuToggle.hidden = !loggedIn\n menuToggle.style.display = loggedIn ? '' : 'none'\n }\n if (collapseBtn) {\n collapseBtn.hidden = !loggedIn\n collapseBtn.style.display = loggedIn ? '' : 'none'\n }\n if (menuOverlay) {\n menuOverlay.hidden = !loggedIn\n menuOverlay.style.display = loggedIn ? '' : 'none'\n }\n setFooterVisibility(loggedIn)\n }\n\n updateMenuVisibility()\n\n if (menuOverlay) {\n menuOverlay.addEventListener('click', closeMobileMenu)\n }\n\n const closeBtn = document.getElementById('MenuCloseBtn') as HTMLButtonElement | null\n if (closeBtn) {\n closeBtn.addEventListener('click', closeMobileMenu)\n }\n\n if (navMenuContent) {\n updateMenuVisibility()\n const loggedIn = isLoggedIn()\n if (loggedIn) {\n await renderMenuItems(subject, outliner, navMenuContent)\n }\n\n if (!navMenuContent.dataset.authEventsBound) {\n const refreshMenuItems = async () => {\n await renderMenuItems(subject, outliner, navMenuContent)\n }\n\n authSession.events.on('login', async () => {\n await refreshAuthStateFromSession()\n updateMenuVisibility()\n refreshMenu(outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop')\n await refreshMenuItems()\n })\n authSession.events.on('logout', async () => {\n await refreshAuthStateFromSession()\n updateMenuVisibility()\n refreshMenu(outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop')\n await refreshMenuItems()\n })\n authSession.events.on('sessionRestore', async () => {\n await refreshAuthStateFromSession()\n updateMenuVisibility()\n refreshMenu(outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop')\n await refreshMenuItems()\n })\n navMenuContent.dataset.authEventsBound = 'true'\n }\n\n navMenuContent.addEventListener('click', (event) => {\n const item = (event.target as HTMLElement).closest('.menu-item')\n if (item instanceof HTMLButtonElement) {\n setActiveMenuItem(navMenuContent, item.dataset.paneName)\n }\n const isMobile = outliner.context?.environment?.layout === 'mobile'\n if (item && isMobile) {\n closeMobileMenu()\n }\n })\n }\n\n refreshMenu(outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop')\n}\n\nasync function openDashboardPane (subject, outliner: any, pane: string): Promise<void> {\n const me = authn.currentUser()\n if (!subject) {\n if (me) {\n subject = me\n } else {\n const store = outliner?.context?.store || outliner?.context?.session?.store || outliner?.kb\n const fetcher = outliner?.context?.fetcher || store?.fetcher\n if (!store || !fetcher) {\n throw new Error('Unable to load profile: missing RDF store or fetcher')\n }\n const fallbackUri = sym(window.location.href)\n subject = await loadProfileFromURI(subject || fallbackUri, store, fetcher)\n }\n }\n outliner.showDashboard(subject, {\n pane\n })\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
let e=require("solid-ui"),t=require("rdflib");var n=`profile/card#me`;async function r(r,i,a){let o=r.site().uri,s=(0,t.sym)(`${o}${n}`);try{return await a.load(s),s}catch{}try{let e=new URL(r.uri),i=e.pathname.split(`/`).filter(Boolean);if(i.length>0){let r=(0,t.sym)(`${`${e.origin}/${i[0]}/`}${n}`);return await a.load(r),r}}catch{}try{await a.load(r)}catch{return r}let c=i.any(r,e.ns.foaf(`primaryTopic`),null,r.doc());if(c&&c.termType===`NamedNode`)try{return await a.load(c),c}catch{return r}return r}async function i(e,r,i){let o=(0,t.sym)(`${e.uri}${n}`);try{return await i.load(o),a(r,o)}catch{}try{let o=new URL(e.uri),s=o.pathname.split(`/`).filter(Boolean);if(s.length>0){let e=(0,t.sym)(`${`${o.origin}/${s[0]}/`}${n}`);return await i.load(e),a(r,e)}}catch{}return``}function a(t,n){return t.anyValue(n,e.ns.vcard(`fn`),null,n.doc())||t.anyValue(n,e.ns.foaf(`name`),null,n.doc())||new URL(n.uri).host.split(`.`)[0]}exports.getName=a,exports.getNameOfPodOwner=i,exports.loadProfileFromURI=r;
|
|
2
|
-
//# sourceMappingURL=ownerProfile.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ownerProfile.cjs.js","names":[],"sources":["../../src/profileUtils/ownerProfile.ts"],"sourcesContent":["/*\n* Utility functions to help load the profile\n* especially when I am not logged in\n*/\n\nimport { Fetcher, IndexedFormula, NamedNode, sym } from 'rdflib'\nimport { ns } from 'solid-ui'\n\nconst DEFAULT_PROFILE_PATH = 'profile/card#me'\n\nexport async function loadProfileFromURI (\n uri: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<NamedNode> {\n const pod = uri.site().uri\n // TODO: This is a hack - we cannot assume that the profile is at this document, but we will live with it for now\n const webId = sym(`${pod}${DEFAULT_PROFILE_PATH}`)\n try {\n await fetcher.load(webId)\n return webId\n } catch (err) {\n // continue\n }\n\n // we try a prefixed pod structure\n try {\n const uriUrl = new URL(uri.uri)\n const pathSegments = uriUrl.pathname.split('/').filter(Boolean)\n if (pathSegments.length > 0) {\n const derivedPod = `${uriUrl.origin}/${pathSegments[0]}/`\n const derivedWebId = sym(`${derivedPod}${DEFAULT_PROFILE_PATH}`)\n await fetcher.load(derivedWebId)\n return derivedWebId\n }\n } catch (err) {\n // continue\n }\n\n try {\n await fetcher.load(uri)\n } catch (err) {\n return uri\n }\n\n const primaryTopic = store.any(uri, ns.foaf('primaryTopic'), null, uri.doc())\n if (primaryTopic && primaryTopic.termType === 'NamedNode') {\n try {\n await fetcher.load(primaryTopic as NamedNode)\n return primaryTopic as NamedNode\n } catch (err) {\n return uri\n }\n }\n\n return uri\n}\n\nexport async function getNameOfPodOwner (\n pod: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<string> {\n // TODO: This is a hack - we cannot assume that the profile is at this document, but we will live with it for now\n const webId = sym(`${pod.uri}${DEFAULT_PROFILE_PATH}`)\n try {\n await fetcher.load(webId)\n return getName(store, webId)\n } catch (err) {\n // continue\n }\n\n // we try a prefixed pod structure\n try {\n const uriUrl = new URL(pod.uri)\n const pathSegments = uriUrl.pathname.split('/').filter(Boolean)\n if (pathSegments.length > 0) {\n const derivedPod = `${uriUrl.origin}/${pathSegments[0]}/`\n const derivedWebId = sym(`${derivedPod}${DEFAULT_PROFILE_PATH}`)\n await fetcher.load(derivedWebId)\n return getName(store, derivedWebId)\n }\n } catch (err) {\n // continue\n }\n\n return ''\n}\n\nexport function getName (store: IndexedFormula, ownersProfile: NamedNode): string {\n return (\n store.anyValue(ownersProfile, ns.vcard('fn'), null, ownersProfile.doc()) ||\n store.anyValue(ownersProfile, ns.foaf('name'), null, ownersProfile.doc()) ||\n new URL(ownersProfile.uri).host.split('.')[0]\n )\n}\n"],"mappings":"8CAQA,IAAM,EAAuB,kBAE7B,eAAsB,EACpB,EACA,EACA,EACoB,CACpB,IAAM,EAAM,EAAI,KAAK,CAAC,CAAC,IAEjB,GAAA,EAAA,EAAA,IAAA,CAAY,GAAG,IAAM,GAAsB,EACjD,GAAI,CAEF,OADA,MAAM,EAAQ,KAAK,CAAK,EACjB,CACT,MAAc,CAEd,CAGA,GAAI,CACF,IAAM,EAAS,IAAI,IAAI,EAAI,GAAG,EACxB,EAAe,EAAO,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,EAC9D,GAAI,EAAa,OAAS,EAAG,CAE3B,IAAM,GAAA,EAAA,EAAA,IAAA,CAAmB,GAAG,GADN,EAAO,OAAO,GAAG,EAAa,GAAG,KACd,GAAsB,EAE/D,OADA,MAAM,EAAQ,KAAK,CAAY,EACxB,CACT,CACF,MAAc,CAEd,CAEA,GAAI,CACF,MAAM,EAAQ,KAAK,CAAG,CACxB,MAAc,CACZ,OAAO,CACT,CAEA,IAAM,EAAe,EAAM,IAAI,EAAK,EAAA,GAAG,KAAK,cAAc,EAAG,KAAM,EAAI,IAAI,CAAC,EAC5E,GAAI,GAAgB,EAAa,WAAa,YAC5C,GAAI,CAEF,OADA,MAAM,EAAQ,KAAK,CAAyB,EACrC,CACT,MAAc,CACZ,OAAO,CACT,CAGF,OAAO,CACT,CAEA,eAAsB,EACpB,EACA,EACA,EACiB,CAEjB,IAAM,GAAA,EAAA,EAAA,IAAA,CAAY,GAAG,EAAI,MAAM,GAAsB,EACrD,GAAI,CAEF,OADA,MAAM,EAAQ,KAAK,CAAK,EACjB,EAAQ,EAAO,CAAK,CAC7B,MAAc,CAEd,CAGA,GAAI,CACF,IAAM,EAAS,IAAI,IAAI,EAAI,GAAG,EACxB,EAAe,EAAO,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,EAC9D,GAAI,EAAa,OAAS,EAAG,CAE3B,IAAM,GAAA,EAAA,EAAA,IAAA,CAAmB,GAAG,GADN,EAAO,OAAO,GAAG,EAAa,GAAG,KACd,GAAsB,EAE/D,OADA,MAAM,EAAQ,KAAK,CAAY,EACxB,EAAQ,EAAO,CAAY,CACpC,CACF,MAAc,CAEd,CAEA,MAAO,EACT,CAEA,SAAgB,EAAS,EAAuB,EAAkC,CAChF,OACE,EAAM,SAAS,EAAe,EAAA,GAAG,MAAM,IAAI,EAAG,KAAM,EAAc,IAAI,CAAC,GACvE,EAAM,SAAS,EAAe,EAAA,GAAG,KAAK,MAAM,EAAG,KAAM,EAAc,IAAI,CAAC,GACxE,IAAI,IAAI,EAAc,GAAG,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,EAE/C"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Fetcher, IndexedFormula, NamedNode } from '../../node_modules/rdflib';
|
|
2
|
-
export declare function loadProfileFromURI(uri: NamedNode, store: IndexedFormula, fetcher: Fetcher): Promise<NamedNode>;
|
|
3
|
-
export declare function getNameOfPodOwner(pod: NamedNode, store: IndexedFormula, fetcher: Fetcher): Promise<string>;
|
|
4
|
-
export declare function getName(store: IndexedFormula, ownersProfile: NamedNode): string;
|
|
5
|
-
//# sourceMappingURL=ownerProfile.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ownerProfile.d.ts","sourceRoot":"","sources":["../../src/profileUtils/ownerProfile.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAA;AAKhE,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,CAAC,CA0CpB;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED,wBAAgB,OAAO,CAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,GAAG,MAAM,CAMhF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { ns as e } from "solid-ui";
|
|
2
|
-
import { sym as t } from "rdflib";
|
|
3
|
-
//#region src/profileUtils/ownerProfile.ts
|
|
4
|
-
var n = "profile/card#me";
|
|
5
|
-
async function r(r, i, a) {
|
|
6
|
-
let o = r.site().uri, s = t(`${o}${n}`);
|
|
7
|
-
try {
|
|
8
|
-
return await a.load(s), s;
|
|
9
|
-
} catch {}
|
|
10
|
-
try {
|
|
11
|
-
let e = new URL(r.uri), i = e.pathname.split("/").filter(Boolean);
|
|
12
|
-
if (i.length > 0) {
|
|
13
|
-
let r = t(`${`${e.origin}/${i[0]}/`}${n}`);
|
|
14
|
-
return await a.load(r), r;
|
|
15
|
-
}
|
|
16
|
-
} catch {}
|
|
17
|
-
try {
|
|
18
|
-
await a.load(r);
|
|
19
|
-
} catch {
|
|
20
|
-
return r;
|
|
21
|
-
}
|
|
22
|
-
let c = i.any(r, e.foaf("primaryTopic"), null, r.doc());
|
|
23
|
-
if (c && c.termType === "NamedNode") try {
|
|
24
|
-
return await a.load(c), c;
|
|
25
|
-
} catch {
|
|
26
|
-
return r;
|
|
27
|
-
}
|
|
28
|
-
return r;
|
|
29
|
-
}
|
|
30
|
-
async function i(e, r, i) {
|
|
31
|
-
let o = t(`${e.uri}${n}`);
|
|
32
|
-
try {
|
|
33
|
-
return await i.load(o), a(r, o);
|
|
34
|
-
} catch {}
|
|
35
|
-
try {
|
|
36
|
-
let o = new URL(e.uri), s = o.pathname.split("/").filter(Boolean);
|
|
37
|
-
if (s.length > 0) {
|
|
38
|
-
let e = t(`${`${o.origin}/${s[0]}/`}${n}`);
|
|
39
|
-
return await i.load(e), a(r, e);
|
|
40
|
-
}
|
|
41
|
-
} catch {}
|
|
42
|
-
return "";
|
|
43
|
-
}
|
|
44
|
-
function a(t, n) {
|
|
45
|
-
return t.anyValue(n, e.vcard("fn"), null, n.doc()) || t.anyValue(n, e.foaf("name"), null, n.doc()) || new URL(n.uri).host.split(".")[0];
|
|
46
|
-
}
|
|
47
|
-
//#endregion
|
|
48
|
-
export { a as getName, i as getNameOfPodOwner, r as loadProfileFromURI };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=ownerProfile.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ownerProfile.esm.js","names":[],"sources":["../../src/profileUtils/ownerProfile.ts"],"sourcesContent":["/*\n* Utility functions to help load the profile\n* especially when I am not logged in\n*/\n\nimport { Fetcher, IndexedFormula, NamedNode, sym } from 'rdflib'\nimport { ns } from 'solid-ui'\n\nconst DEFAULT_PROFILE_PATH = 'profile/card#me'\n\nexport async function loadProfileFromURI (\n uri: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<NamedNode> {\n const pod = uri.site().uri\n // TODO: This is a hack - we cannot assume that the profile is at this document, but we will live with it for now\n const webId = sym(`${pod}${DEFAULT_PROFILE_PATH}`)\n try {\n await fetcher.load(webId)\n return webId\n } catch (err) {\n // continue\n }\n\n // we try a prefixed pod structure\n try {\n const uriUrl = new URL(uri.uri)\n const pathSegments = uriUrl.pathname.split('/').filter(Boolean)\n if (pathSegments.length > 0) {\n const derivedPod = `${uriUrl.origin}/${pathSegments[0]}/`\n const derivedWebId = sym(`${derivedPod}${DEFAULT_PROFILE_PATH}`)\n await fetcher.load(derivedWebId)\n return derivedWebId\n }\n } catch (err) {\n // continue\n }\n\n try {\n await fetcher.load(uri)\n } catch (err) {\n return uri\n }\n\n const primaryTopic = store.any(uri, ns.foaf('primaryTopic'), null, uri.doc())\n if (primaryTopic && primaryTopic.termType === 'NamedNode') {\n try {\n await fetcher.load(primaryTopic as NamedNode)\n return primaryTopic as NamedNode\n } catch (err) {\n return uri\n }\n }\n\n return uri\n}\n\nexport async function getNameOfPodOwner (\n pod: NamedNode,\n store: IndexedFormula,\n fetcher: Fetcher\n): Promise<string> {\n // TODO: This is a hack - we cannot assume that the profile is at this document, but we will live with it for now\n const webId = sym(`${pod.uri}${DEFAULT_PROFILE_PATH}`)\n try {\n await fetcher.load(webId)\n return getName(store, webId)\n } catch (err) {\n // continue\n }\n\n // we try a prefixed pod structure\n try {\n const uriUrl = new URL(pod.uri)\n const pathSegments = uriUrl.pathname.split('/').filter(Boolean)\n if (pathSegments.length > 0) {\n const derivedPod = `${uriUrl.origin}/${pathSegments[0]}/`\n const derivedWebId = sym(`${derivedPod}${DEFAULT_PROFILE_PATH}`)\n await fetcher.load(derivedWebId)\n return getName(store, derivedWebId)\n }\n } catch (err) {\n // continue\n }\n\n return ''\n}\n\nexport function getName (store: IndexedFormula, ownersProfile: NamedNode): string {\n return (\n store.anyValue(ownersProfile, ns.vcard('fn'), null, ownersProfile.doc()) ||\n store.anyValue(ownersProfile, ns.foaf('name'), null, ownersProfile.doc()) ||\n new URL(ownersProfile.uri).host.split('.')[0]\n )\n}\n"],"mappings":";;;AAQA,IAAM,IAAuB;AAE7B,eAAsB,EACpB,GACA,GACA,GACoB;CACpB,IAAM,IAAM,EAAI,KAAK,CAAC,CAAC,KAEjB,IAAQ,EAAI,GAAG,IAAM,GAAsB;CACjD,IAAI;EAEF,OADA,MAAM,EAAQ,KAAK,CAAK,GACjB;CACT,QAAc,CAEd;CAGA,IAAI;EACF,IAAM,IAAS,IAAI,IAAI,EAAI,GAAG,GACxB,IAAe,EAAO,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;EAC9D,IAAI,EAAa,SAAS,GAAG;GAE3B,IAAM,IAAe,EAAI,GAAG,GADN,EAAO,OAAO,GAAG,EAAa,GAAG,KACd,GAAsB;GAE/D,OADA,MAAM,EAAQ,KAAK,CAAY,GACxB;EACT;CACF,QAAc,CAEd;CAEA,IAAI;EACF,MAAM,EAAQ,KAAK,CAAG;CACxB,QAAc;EACZ,OAAO;CACT;CAEA,IAAM,IAAe,EAAM,IAAI,GAAK,EAAG,KAAK,cAAc,GAAG,MAAM,EAAI,IAAI,CAAC;CAC5E,IAAI,KAAgB,EAAa,aAAa,aAC5C,IAAI;EAEF,OADA,MAAM,EAAQ,KAAK,CAAyB,GACrC;CACT,QAAc;EACZ,OAAO;CACT;CAGF,OAAO;AACT;AAEA,eAAsB,EACpB,GACA,GACA,GACiB;CAEjB,IAAM,IAAQ,EAAI,GAAG,EAAI,MAAM,GAAsB;CACrD,IAAI;EAEF,OADA,MAAM,EAAQ,KAAK,CAAK,GACjB,EAAQ,GAAO,CAAK;CAC7B,QAAc,CAEd;CAGA,IAAI;EACF,IAAM,IAAS,IAAI,IAAI,EAAI,GAAG,GACxB,IAAe,EAAO,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;EAC9D,IAAI,EAAa,SAAS,GAAG;GAE3B,IAAM,IAAe,EAAI,GAAG,GADN,EAAO,OAAO,GAAG,EAAa,GAAG,KACd,GAAsB;GAE/D,OADA,MAAM,EAAQ,KAAK,CAAY,GACxB,EAAQ,GAAO,CAAY;EACpC;CACF,QAAc,CAEd;CAEA,OAAO;AACT;AAEA,SAAgB,EAAS,GAAuB,GAAkC;CAChF,OACE,EAAM,SAAS,GAAe,EAAG,MAAM,IAAI,GAAG,MAAM,EAAc,IAAI,CAAC,KACvE,EAAM,SAAS,GAAe,EAAG,KAAK,MAAM,GAAG,MAAM,EAAc,IAAI,CAAC,KACxE,IAAI,IAAI,EAAc,GAAG,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC;AAE/C"}
|