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.
Files changed (192) hide show
  1. package/README.md +0 -30
  2. package/dist/_virtual/_rolldown/runtime.cjs.js +1 -1
  3. package/dist/_virtual/~icons/lucide/folder-open.cjs.js +2 -0
  4. package/dist/_virtual/~icons/lucide/folder-open.cjs.js.map +1 -0
  5. package/dist/_virtual/~icons/lucide/folder-open.esm.js +11 -0
  6. package/dist/_virtual/~icons/lucide/folder-open.esm.js.map +1 -0
  7. package/dist/_virtual/~icons/lucide/help-circle.cjs.js +2 -0
  8. package/dist/_virtual/~icons/lucide/help-circle.cjs.js.map +1 -0
  9. package/dist/_virtual/~icons/lucide/help-circle.esm.js +11 -0
  10. package/dist/_virtual/~icons/lucide/help-circle.esm.js.map +1 -0
  11. package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js +2 -0
  12. package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js.map +1 -0
  13. package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js +11 -0
  14. package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js.map +1 -0
  15. package/dist/_virtual/~icons/lucide/settings-2.cjs.js +2 -0
  16. package/dist/_virtual/~icons/lucide/settings-2.cjs.js.map +1 -0
  17. package/dist/_virtual/~icons/lucide/settings-2.esm.js +11 -0
  18. package/dist/_virtual/~icons/lucide/settings-2.esm.js.map +1 -0
  19. package/dist/_virtual/~icons/lucide/users.cjs.js +2 -0
  20. package/dist/_virtual/~icons/lucide/users.cjs.js.map +1 -0
  21. package/dist/_virtual/~icons/lucide/users.esm.js +11 -0
  22. package/dist/_virtual/~icons/lucide/users.esm.js.map +1 -0
  23. package/dist/components/header/Header.cjs.js +19 -0
  24. package/dist/components/header/Header.cjs.js.map +1 -0
  25. package/dist/components/header/Header.esm.js +228 -0
  26. package/dist/components/header/Header.esm.js.map +1 -0
  27. package/dist/components/header/Header.styles.cjs.js +2 -0
  28. package/dist/components/header/Header.styles.cjs.js.map +1 -0
  29. package/dist/components/header/Header.styles.esm.js +7 -0
  30. package/dist/components/header/Header.styles.esm.js.map +1 -0
  31. package/dist/components/header/index.cjs.js +1 -0
  32. package/dist/components/header/index.esm.js +1 -0
  33. package/dist/components/navbar/Navbar.cjs.js +15 -0
  34. package/dist/components/navbar/Navbar.cjs.js.map +1 -0
  35. package/dist/components/navbar/Navbar.d.ts +14 -0
  36. package/dist/components/navbar/Navbar.d.ts.map +1 -0
  37. package/dist/components/navbar/Navbar.esm.js +232 -0
  38. package/dist/components/navbar/Navbar.esm.js.map +1 -0
  39. package/dist/components/navbar/Navbar.styles.cjs.js +2 -0
  40. package/dist/components/navbar/Navbar.styles.cjs.js.map +1 -0
  41. package/dist/components/navbar/Navbar.styles.esm.js +7 -0
  42. package/dist/components/navbar/Navbar.styles.esm.js.map +1 -0
  43. package/dist/components/navbar/index.cjs.js +1 -0
  44. package/dist/components/navbar/index.d.ts +4 -0
  45. package/dist/components/navbar/index.d.ts.map +1 -0
  46. package/dist/components/navbar/index.esm.js +1 -0
  47. package/dist/dashboard/basicPreferences.cjs.js +1 -1
  48. package/dist/dashboard/basicPreferences.cjs.js.map +1 -1
  49. package/dist/dashboard/dashboardPane.cjs.js +2 -0
  50. package/dist/dashboard/dashboardPane.cjs.js.map +1 -0
  51. package/dist/dashboard/dashboardPane.esm.js +7 -0
  52. package/dist/dashboard/dashboardPane.esm.js.map +1 -0
  53. package/dist/dashboard/homepage.cjs.js +2 -0
  54. package/dist/dashboard/homepage.cjs.js.map +1 -0
  55. package/dist/dashboard/homepage.esm.js +26 -0
  56. package/dist/dashboard/homepage.esm.js.map +1 -0
  57. package/dist/form/pane.cjs.js +1 -1
  58. package/dist/form/pane.cjs.js.map +1 -1
  59. package/dist/form/pane.esm.js +2 -1
  60. package/dist/form/pane.esm.js.map +1 -1
  61. package/dist/home/homePane.cjs.js +1 -1
  62. package/dist/home/homePane.cjs.js.map +1 -1
  63. package/dist/humanReadablePane2.cjs.js.map +1 -1
  64. package/dist/humanReadablePane2.esm.js.map +1 -1
  65. package/dist/index.cjs.js +1 -1
  66. package/dist/index.cjs.js.map +1 -1
  67. package/dist/index.esm.js +12 -7
  68. package/dist/index.esm.js.map +1 -1
  69. package/dist/internal/internalPane2.cjs.js +1 -1
  70. package/dist/internal/internalPane2.cjs.js.map +1 -1
  71. package/dist/mainPage/header.cjs.js +1 -1
  72. package/dist/mainPage/header.cjs.js.map +1 -1
  73. package/dist/mainPage/header.d.ts.map +1 -1
  74. package/dist/mainPage/header.esm.js +65 -17
  75. package/dist/mainPage/header.esm.js.map +1 -1
  76. package/dist/mainPage/index.cjs.js +1 -1
  77. package/dist/mainPage/index.cjs.js.map +1 -1
  78. package/dist/mainPage/index.d.ts +1 -9
  79. package/dist/mainPage/index.d.ts.map +1 -1
  80. package/dist/mainPage/index.esm.js +19 -21
  81. package/dist/mainPage/index.esm.js.map +1 -1
  82. package/dist/mainPage/navbar.cjs.js +2 -0
  83. package/dist/mainPage/navbar.cjs.js.map +1 -0
  84. package/dist/mainPage/navbar.d.ts +3 -0
  85. package/dist/mainPage/navbar.d.ts.map +1 -0
  86. package/dist/mainPage/navbar.esm.js +66 -0
  87. package/dist/mainPage/navbar.esm.js.map +1 -0
  88. package/dist/outline/context.d.ts +1 -1
  89. package/dist/outline/manager2.cjs.js +2 -2
  90. package/dist/outline/manager2.cjs.js.map +1 -1
  91. package/dist/outline/manager2.esm.js +330 -453
  92. package/dist/outline/manager2.esm.js.map +1 -1
  93. package/dist/outline/propertyViews.cjs.js +1 -1
  94. package/dist/outline/propertyViews.cjs.js.map +1 -1
  95. package/dist/outline/queryByExample.esm.js +1 -0
  96. package/dist/outline/queryByExample.esm.js.map +1 -1
  97. package/dist/outline/userInput.cjs.js +3 -3
  98. package/dist/outline/userInput.cjs.js.map +1 -1
  99. package/dist/outline/userInput.esm.js +4 -6
  100. package/dist/outline/userInput.esm.js.map +1 -1
  101. package/dist/pad/padPane2.cjs.js +1 -1
  102. package/dist/pad/padPane2.cjs.js.map +1 -1
  103. package/dist/pad/padPane2.esm.js +2 -1
  104. package/dist/pad/padPane2.esm.js.map +1 -1
  105. package/dist/registerPanes.cjs.js +1 -1
  106. package/dist/registerPanes.cjs.js.map +1 -1
  107. package/dist/registerPanes.esm.js +1 -0
  108. package/dist/registerPanes.esm.js.map +1 -1
  109. package/dist/schedule/schedulePane2.cjs.js +1 -1
  110. package/dist/schedule/schedulePane2.cjs.js.map +1 -1
  111. package/dist/schedule/schedulePane2.esm.js +2 -1
  112. package/dist/schedule/schedulePane2.esm.js.map +1 -1
  113. package/dist/sharing/sharingPane.cjs.js +1 -1
  114. package/dist/sharing/sharingPane.cjs.js.map +1 -1
  115. package/dist/social/editProfileDetails.cjs.js +1 -1
  116. package/dist/social/editProfileDetails.cjs.js.map +1 -1
  117. package/dist/social/editProfileDetails.esm.js +2 -0
  118. package/dist/social/editProfileDetails.esm.js.map +1 -1
  119. package/dist/social/socialPane2.cjs.js +1 -1
  120. package/dist/social/socialPane2.cjs.js.map +1 -1
  121. package/dist/social/socialPane2.esm.js +1 -1
  122. package/dist/social/socialSections.cjs.js +1 -1
  123. package/dist/social/socialSections.cjs.js.map +1 -1
  124. package/dist/social/spinner.cjs.js +1 -0
  125. package/dist/social/spinner.esm.js +1 -0
  126. package/dist/social/triage.cjs.js +1 -1
  127. package/dist/social/triage.cjs.js.map +1 -1
  128. package/dist/tabbed/tabbedPane.cjs.js +1 -1
  129. package/dist/tabbed/tabbedPane.cjs.js.map +1 -1
  130. package/dist/transaction/pane.cjs.js.map +1 -1
  131. package/dist/transaction/pane.esm.js.map +1 -1
  132. package/dist/transaction/period.cjs.js.map +1 -1
  133. package/dist/transaction/period.esm.js.map +1 -1
  134. package/dist/trustedApplications/trustedApplications.dom.cjs.js +1 -1
  135. package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +1 -1
  136. package/dist/trustedApplications/trustedApplications.utils.cjs.js +1 -1
  137. package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +1 -1
  138. package/dist/trustedApplications/trustedApplications.view.cjs.js +1 -1
  139. package/dist/trustedApplications/trustedApplications.view.cjs.js.map +1 -1
  140. package/dist/utils/paneUtils.cjs.js +2 -0
  141. package/dist/utils/paneUtils.cjs.js.map +1 -0
  142. package/dist/utils/paneUtils.d.ts +19 -0
  143. package/dist/utils/paneUtils.d.ts.map +1 -0
  144. package/dist/utils/paneUtils.esm.js +52 -0
  145. package/dist/utils/paneUtils.esm.js.map +1 -0
  146. package/dist/utils/podUtils.cjs.js +2 -0
  147. package/dist/utils/podUtils.cjs.js.map +1 -0
  148. package/dist/utils/podUtils.d.ts +4 -0
  149. package/dist/utils/podUtils.d.ts.map +1 -0
  150. package/dist/utils/podUtils.esm.js +46 -0
  151. package/dist/utils/podUtils.esm.js.map +1 -0
  152. package/dist/utils/webIdUtils.cjs.js +2 -0
  153. package/dist/utils/webIdUtils.cjs.js.map +1 -0
  154. package/dist/utils/webIdUtils.d.ts +6 -0
  155. package/dist/utils/webIdUtils.d.ts.map +1 -0
  156. package/dist/utils/webIdUtils.esm.js +48 -0
  157. package/dist/utils/webIdUtils.esm.js.map +1 -0
  158. package/dist/versionInfo.cjs.js +1 -1
  159. package/dist/versionInfo.cjs.js.map +1 -1
  160. package/dist/versionInfo.esm.js +3 -3
  161. package/dist/versionInfo.esm.js.map +1 -1
  162. package/package.json +10 -16
  163. package/dist/icons/dashboard.cjs.js +0 -2
  164. package/dist/icons/dashboard.cjs.js.map +0 -1
  165. package/dist/icons/dashboard.esm.js +0 -6
  166. package/dist/icons/dashboard.esm.js.map +0 -1
  167. package/dist/icons/iconHelper.cjs.js +0 -2
  168. package/dist/icons/iconHelper.cjs.js.map +0 -1
  169. package/dist/icons/iconHelper.esm.js +0 -17
  170. package/dist/icons/iconHelper.esm.js.map +0 -1
  171. package/dist/icons/menu.cjs.js +0 -9
  172. package/dist/icons/menu.cjs.js.map +0 -1
  173. package/dist/icons/menu.esm.js +0 -6
  174. package/dist/icons/menu.esm.js.map +0 -1
  175. package/dist/mainPage/footer.cjs.js +0 -2
  176. package/dist/mainPage/footer.cjs.js.map +0 -1
  177. package/dist/mainPage/footer.d.ts +0 -13
  178. package/dist/mainPage/footer.d.ts.map +0 -1
  179. package/dist/mainPage/footer.esm.js +0 -18
  180. package/dist/mainPage/footer.esm.js.map +0 -1
  181. package/dist/mainPage/menu.d.ts +0 -6
  182. package/dist/mainPage/menu.d.ts.map +0 -1
  183. package/dist/mainPage/menu2.cjs.js +0 -2
  184. package/dist/mainPage/menu2.cjs.js.map +0 -1
  185. package/dist/mainPage/menu2.esm.js +0 -184
  186. package/dist/mainPage/menu2.esm.js.map +0 -1
  187. package/dist/profileUtils/ownerProfile.cjs.js +0 -2
  188. package/dist/profileUtils/ownerProfile.cjs.js.map +0 -1
  189. package/dist/profileUtils/ownerProfile.d.ts +0 -5
  190. package/dist/profileUtils/ownerProfile.d.ts.map +0 -1
  191. package/dist/profileUtils/ownerProfile.esm.js +0 -50
  192. 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"}