solid-panes 4.4.2-4 → 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 (170) 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/layout-dashboard.cjs.js +2 -0
  8. package/dist/_virtual/~icons/lucide/layout-dashboard.cjs.js.map +1 -0
  9. package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js +11 -0
  10. package/dist/_virtual/~icons/lucide/layout-dashboard.esm.js.map +1 -0
  11. package/dist/_virtual/~icons/lucide/settings-2.cjs.js +2 -0
  12. package/dist/_virtual/~icons/lucide/settings-2.cjs.js.map +1 -0
  13. package/dist/_virtual/~icons/lucide/settings-2.esm.js +11 -0
  14. package/dist/_virtual/~icons/lucide/settings-2.esm.js.map +1 -0
  15. package/dist/_virtual/~icons/lucide/users.cjs.js +2 -0
  16. package/dist/_virtual/~icons/lucide/users.cjs.js.map +1 -0
  17. package/dist/_virtual/~icons/lucide/users.esm.js +11 -0
  18. package/dist/_virtual/~icons/lucide/users.esm.js.map +1 -0
  19. package/dist/components/header/Header.cjs.js +1 -1
  20. package/dist/components/header/Header.cjs.js.map +1 -1
  21. package/dist/components/navbar/Navbar.cjs.js +15 -0
  22. package/dist/components/navbar/Navbar.cjs.js.map +1 -0
  23. package/dist/components/navbar/Navbar.d.ts +14 -0
  24. package/dist/components/navbar/Navbar.d.ts.map +1 -0
  25. package/dist/components/navbar/Navbar.esm.js +232 -0
  26. package/dist/components/navbar/Navbar.esm.js.map +1 -0
  27. package/dist/components/navbar/Navbar.styles.cjs.js +2 -0
  28. package/dist/components/navbar/Navbar.styles.cjs.js.map +1 -0
  29. package/dist/components/navbar/Navbar.styles.esm.js +7 -0
  30. package/dist/components/navbar/Navbar.styles.esm.js.map +1 -0
  31. package/dist/components/navbar/index.cjs.js +1 -0
  32. package/dist/components/navbar/index.d.ts +4 -0
  33. package/dist/components/navbar/index.d.ts.map +1 -0
  34. package/dist/components/navbar/index.esm.js +1 -0
  35. package/dist/dashboard/basicPreferences.cjs.js +1 -1
  36. package/dist/dashboard/basicPreferences.cjs.js.map +1 -1
  37. package/dist/dashboard/dashboardPane.cjs.js +1 -1
  38. package/dist/dashboard/dashboardPane.cjs.js.map +1 -1
  39. package/dist/dashboard/homepage.cjs.js +1 -1
  40. package/dist/dashboard/homepage.cjs.js.map +1 -1
  41. package/dist/dashboard/homepage.esm.js +2 -2
  42. package/dist/dashboard/homepage.esm.js.map +1 -1
  43. package/dist/form/pane.cjs.js +1 -1
  44. package/dist/form/pane.cjs.js.map +1 -1
  45. package/dist/form/pane.esm.js +2 -1
  46. package/dist/form/pane.esm.js.map +1 -1
  47. package/dist/home/homePane.cjs.js +1 -1
  48. package/dist/home/homePane.cjs.js.map +1 -1
  49. package/dist/humanReadablePane2.cjs.js.map +1 -1
  50. package/dist/humanReadablePane2.esm.js.map +1 -1
  51. package/dist/index.cjs.js +1 -1
  52. package/dist/index.cjs.js.map +1 -1
  53. package/dist/index.esm.js +12 -7
  54. package/dist/index.esm.js.map +1 -1
  55. package/dist/internal/internalPane2.cjs.js +1 -1
  56. package/dist/internal/internalPane2.cjs.js.map +1 -1
  57. package/dist/mainPage/header.cjs.js +1 -1
  58. package/dist/mainPage/header.cjs.js.map +1 -1
  59. package/dist/mainPage/header.d.ts.map +1 -1
  60. package/dist/mainPage/header.esm.js +64 -17
  61. package/dist/mainPage/header.esm.js.map +1 -1
  62. package/dist/mainPage/index.cjs.js +1 -1
  63. package/dist/mainPage/index.cjs.js.map +1 -1
  64. package/dist/mainPage/index.d.ts +1 -9
  65. package/dist/mainPage/index.d.ts.map +1 -1
  66. package/dist/mainPage/index.esm.js +19 -21
  67. package/dist/mainPage/index.esm.js.map +1 -1
  68. package/dist/mainPage/navbar.cjs.js +2 -0
  69. package/dist/mainPage/navbar.cjs.js.map +1 -0
  70. package/dist/mainPage/navbar.d.ts +3 -0
  71. package/dist/mainPage/navbar.d.ts.map +1 -0
  72. package/dist/mainPage/navbar.esm.js +66 -0
  73. package/dist/mainPage/navbar.esm.js.map +1 -0
  74. package/dist/outline/context.d.ts +1 -1
  75. package/dist/outline/manager2.cjs.js +2 -2
  76. package/dist/outline/manager2.cjs.js.map +1 -1
  77. package/dist/outline/manager2.esm.js +330 -453
  78. package/dist/outline/manager2.esm.js.map +1 -1
  79. package/dist/outline/propertyViews.cjs.js +1 -1
  80. package/dist/outline/propertyViews.cjs.js.map +1 -1
  81. package/dist/outline/queryByExample.esm.js +1 -0
  82. package/dist/outline/queryByExample.esm.js.map +1 -1
  83. package/dist/outline/userInput.cjs.js +3 -3
  84. package/dist/outline/userInput.cjs.js.map +1 -1
  85. package/dist/outline/userInput.esm.js +4 -6
  86. package/dist/outline/userInput.esm.js.map +1 -1
  87. package/dist/pad/padPane2.cjs.js +1 -1
  88. package/dist/pad/padPane2.cjs.js.map +1 -1
  89. package/dist/pad/padPane2.esm.js +2 -1
  90. package/dist/pad/padPane2.esm.js.map +1 -1
  91. package/dist/schedule/schedulePane2.cjs.js +1 -1
  92. package/dist/schedule/schedulePane2.cjs.js.map +1 -1
  93. package/dist/schedule/schedulePane2.esm.js +2 -1
  94. package/dist/schedule/schedulePane2.esm.js.map +1 -1
  95. package/dist/sharing/sharingPane.cjs.js +1 -1
  96. package/dist/sharing/sharingPane.cjs.js.map +1 -1
  97. package/dist/social/editProfileDetails.cjs.js +1 -1
  98. package/dist/social/editProfileDetails.cjs.js.map +1 -1
  99. package/dist/social/socialPane2.cjs.js +1 -1
  100. package/dist/social/socialPane2.cjs.js.map +1 -1
  101. package/dist/social/socialPane2.esm.js +1 -1
  102. package/dist/social/socialSections.cjs.js +1 -1
  103. package/dist/social/socialSections.cjs.js.map +1 -1
  104. package/dist/social/triage.cjs.js +1 -1
  105. package/dist/social/triage.cjs.js.map +1 -1
  106. package/dist/tabbed/tabbedPane.cjs.js +1 -1
  107. package/dist/tabbed/tabbedPane.cjs.js.map +1 -1
  108. package/dist/transaction/pane.cjs.js.map +1 -1
  109. package/dist/transaction/pane.esm.js.map +1 -1
  110. package/dist/transaction/period.cjs.js.map +1 -1
  111. package/dist/transaction/period.esm.js.map +1 -1
  112. package/dist/trustedApplications/trustedApplications.dom.cjs.js +1 -1
  113. package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +1 -1
  114. package/dist/trustedApplications/trustedApplications.utils.cjs.js +1 -1
  115. package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +1 -1
  116. package/dist/trustedApplications/trustedApplications.view.cjs.js +1 -1
  117. package/dist/trustedApplications/trustedApplications.view.cjs.js.map +1 -1
  118. package/dist/utils/paneUtils.cjs.js +2 -0
  119. package/dist/utils/paneUtils.cjs.js.map +1 -0
  120. package/dist/utils/paneUtils.d.ts +19 -0
  121. package/dist/utils/paneUtils.d.ts.map +1 -0
  122. package/dist/utils/paneUtils.esm.js +52 -0
  123. package/dist/utils/paneUtils.esm.js.map +1 -0
  124. package/dist/utils/podUtils.cjs.js +2 -0
  125. package/dist/utils/podUtils.cjs.js.map +1 -0
  126. package/dist/utils/podUtils.d.ts +4 -0
  127. package/dist/utils/podUtils.d.ts.map +1 -0
  128. package/dist/utils/podUtils.esm.js +46 -0
  129. package/dist/utils/podUtils.esm.js.map +1 -0
  130. package/dist/utils/webIdUtils.cjs.js +2 -0
  131. package/dist/utils/webIdUtils.cjs.js.map +1 -0
  132. package/dist/utils/webIdUtils.d.ts +6 -0
  133. package/dist/utils/webIdUtils.d.ts.map +1 -0
  134. package/dist/utils/webIdUtils.esm.js +48 -0
  135. package/dist/utils/webIdUtils.esm.js.map +1 -0
  136. package/dist/versionInfo.cjs.js +1 -1
  137. package/dist/versionInfo.cjs.js.map +1 -1
  138. package/dist/versionInfo.esm.js +3 -3
  139. package/dist/versionInfo.esm.js.map +1 -1
  140. package/package.json +10 -13
  141. package/dist/icons/dashboard.cjs.js +0 -2
  142. package/dist/icons/dashboard.cjs.js.map +0 -1
  143. package/dist/icons/dashboard.esm.js +0 -6
  144. package/dist/icons/dashboard.esm.js.map +0 -1
  145. package/dist/icons/iconHelper.cjs.js +0 -2
  146. package/dist/icons/iconHelper.cjs.js.map +0 -1
  147. package/dist/icons/iconHelper.esm.js +0 -17
  148. package/dist/icons/iconHelper.esm.js.map +0 -1
  149. package/dist/icons/menu.cjs.js +0 -9
  150. package/dist/icons/menu.cjs.js.map +0 -1
  151. package/dist/icons/menu.esm.js +0 -6
  152. package/dist/icons/menu.esm.js.map +0 -1
  153. package/dist/mainPage/footer.cjs.js +0 -2
  154. package/dist/mainPage/footer.cjs.js.map +0 -1
  155. package/dist/mainPage/footer.d.ts +0 -13
  156. package/dist/mainPage/footer.d.ts.map +0 -1
  157. package/dist/mainPage/footer.esm.js +0 -18
  158. package/dist/mainPage/footer.esm.js.map +0 -1
  159. package/dist/mainPage/menu.d.ts +0 -6
  160. package/dist/mainPage/menu.d.ts.map +0 -1
  161. package/dist/mainPage/menu2.cjs.js +0 -2
  162. package/dist/mainPage/menu2.cjs.js.map +0 -1
  163. package/dist/mainPage/menu2.esm.js +0 -184
  164. package/dist/mainPage/menu2.esm.js.map +0 -1
  165. package/dist/profileUtils/ownerProfile.cjs.js +0 -2
  166. package/dist/profileUtils/ownerProfile.cjs.js.map +0 -1
  167. package/dist/profileUtils/ownerProfile.d.ts +0 -5
  168. package/dist/profileUtils/ownerProfile.d.ts.map +0 -1
  169. package/dist/profileUtils/ownerProfile.esm.js +0 -50
  170. package/dist/profileUtils/ownerProfile.esm.js.map +0 -1
@@ -0,0 +1,48 @@
1
+ import { ns as e } from "solid-ui";
2
+ import { store as t } from "solid-logic";
3
+ import { sym as n } from "rdflib";
4
+ //#region src/utils/webIdUtils.ts
5
+ var r = "profile/card#me";
6
+ async function i(i) {
7
+ try {
8
+ let a = i.site().uri, o = n(`${a}${r}`);
9
+ try {
10
+ return await t.fetcher.load(o), o;
11
+ } catch {}
12
+ try {
13
+ let e = new URL(i.uri), a = e.pathname.split("/").filter(Boolean);
14
+ if (a.length > 0) {
15
+ let i = `${e.origin}/${a[0]}/`, o = n(`${i}${r}`);
16
+ return await t.fetcher.load(o), o;
17
+ }
18
+ } catch {}
19
+ try {
20
+ await t.fetcher.load(i);
21
+ } catch {
22
+ return i;
23
+ }
24
+ let s = t.any(i, e.foaf("primaryTopic"), null, i.doc());
25
+ if (s && s.termType === "NamedNode") try {
26
+ return await t.fetcher.load(s), s;
27
+ } catch {
28
+ return i;
29
+ }
30
+ return i;
31
+ } catch {
32
+ return i;
33
+ }
34
+ }
35
+ function a(e) {
36
+ try {
37
+ return new URL(e.uri).hash === "#me";
38
+ } catch {
39
+ return !1;
40
+ }
41
+ }
42
+ function o(t, n) {
43
+ 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];
44
+ }
45
+ //#endregion
46
+ export { o as getName, a as isWebIdUri, i as loadProfileFromURI };
47
+
48
+ //# sourceMappingURL=webIdUtils.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webIdUtils.esm.js","names":[],"sources":["../../src/utils/webIdUtils.ts"],"sourcesContent":["/*\n* Utility functions to help load the profile\n* especially when I am not logged in\n*/\n\nimport { IndexedFormula, NamedNode, sym } from 'rdflib'\nimport { ns } from 'solid-ui'\nimport { store } from 'solid-logic'\n\nconst DEFAULT_PROFILE_PATH = 'profile/card#me'\n\nexport async function loadProfileFromURI (\n uri: NamedNode\n): Promise<NamedNode> {\n try {\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 store.fetcher.load(webId)\n return webId\n } catch (err) {\n // ignore any failure and continue fallback lookup\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 store.fetcher.load(derivedWebId)\n return derivedWebId\n }\n } catch (err) {\n // ignore any failure and continue fallback lookup\n }\n\n try {\n await store.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 store.fetcher.load(primaryTopic as NamedNode)\n return primaryTopic as NamedNode\n } catch (err) {\n return uri\n }\n }\n\n return uri\n } catch (err) {\n return uri\n }\n}\n\nexport function isWebIdUri (uri: NamedNode): boolean {\n try {\n const parsedURL = new URL(uri.uri)\n return parsedURL.hash === '#me'\n } catch (err) {\n return false\n }\n}\n\nexport async function getNameOfPodOwner (\n pod: NamedNode\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 store.fetcher.load(webId)\n return getName(store, webId)\n } catch (err) {\n if (!isFetchErrorStatus(err, 403)) {\n console.error('getNameOfPodOwner failed on default profile:', err)\n }\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 store.fetcher.load(derivedWebId)\n return getName(store, derivedWebId)\n }\n } catch (err) {\n if (!isFetchErrorStatus(err, 403)) {\n console.error('getNameOfPodOwner failed on derived profile:', err)\n }\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\nfunction isFetchErrorStatus (err: unknown, status: number): boolean {\n if (!err || typeof err !== 'object') return false\n const statusCode = (err as any)?.response?.status ?? (err as any)?.status\n const parsedStatus = Number(statusCode)\n return Number.isFinite(parsedStatus) && parsedStatus === status\n}\n"],"mappings":";;;;AASA,IAAM,IAAuB;AAE7B,eAAsB,EACpB,GACoB;CACpB,IAAI;EACF,IAAM,IAAM,EAAI,KAAK,CAAC,CAAC,KAEjB,IAAQ,EAAI,GAAG,IAAM,GAAsB;EACjD,IAAI;GAEF,OADA,MAAM,EAAM,QAAQ,KAAK,CAAK,GACvB;EACT,QAAc,CAEd;EAGA,IAAI;GACF,IAAM,IAAS,IAAI,IAAI,EAAI,GAAG,GACxB,IAAe,EAAO,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;GAC9D,IAAI,EAAa,SAAS,GAAG;IAC3B,IAAM,IAAa,GAAG,EAAO,OAAO,GAAG,EAAa,GAAG,IACjD,IAAe,EAAI,GAAG,IAAa,GAAsB;IAE/D,OADA,MAAM,EAAM,QAAQ,KAAK,CAAY,GAC9B;GACT;EACF,QAAc,CAEd;EAEA,IAAI;GACF,MAAM,EAAM,QAAQ,KAAK,CAAG;EAC9B,QAAc;GACZ,OAAO;EACT;EAEA,IAAM,IAAe,EAAM,IAAI,GAAK,EAAG,KAAK,cAAc,GAAG,MAAM,EAAI,IAAI,CAAC;EAC5E,IAAI,KAAgB,EAAa,aAAa,aAC5C,IAAI;GAEF,OADA,MAAM,EAAM,QAAQ,KAAK,CAAyB,GAC3C;EACT,QAAc;GACZ,OAAO;EACT;EAGF,OAAO;CACT,QAAc;EACZ,OAAO;CACT;AACF;AAEA,SAAgB,EAAY,GAAyB;CACnD,IAAI;EAEF,OAAO,IADe,IAAI,EAAI,GACvB,CAAA,CAAU,SAAS;CAC5B,QAAc;EACZ,OAAO;CACT;AACF;AAmCA,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"}
@@ -1,2 +1,2 @@
1
- var e={buildTime:`2026-07-03T07:32:22Z`,commit:`63bd00c600f13799946b4062fb58a7c8fa888b51`,npmInfo:{"solid-panes":`4.4.2-4`,npm:`10.9.8`,node:`22.23.1`,acorn:`8.16.0`,ada:`2.9.2`,amaro:`1.1.8`,ares:`1.34.6`,brotli:`1.1.0`,cjs_module_lexer:`2.2.0`,cldr:`48.0`,icu:`78.2`,llhttp:`9.4.2`,modules:`127`,napi:`10`,nbytes:`0.1.3`,ncrypto:`0.0.1`,nghttp2:`1.69.0`,openssl:`3.5.7`,simdjson:`4.5.0`,simdutf:`6.4.2`,sqlite:`3.51.3`,tz:`2026a`,undici:`6.27.0`,unicode:`17.0`,uv:`1.51.0`,uvwasi:`0.0.23`,v8:`12.4.254.21-node.56`,zlib:`1.3.1-e00f703`,zstd:`1.5.7`}};exports.default=e;
1
+ var e={buildTime:`2026-07-31T12:13:06Z`,commit:`eae5096a208b86ef00319cde552306906cbf28b0`,npmInfo:{"solid-panes":`4.4.2-5`,npm:`10.9.8`,node:`22.23.1`,acorn:`8.16.0`,ada:`2.9.2`,amaro:`1.1.8`,ares:`1.34.6`,brotli:`1.1.0`,cjs_module_lexer:`2.2.0`,cldr:`48.0`,icu:`78.2`,llhttp:`9.4.2`,modules:`127`,napi:`10`,nbytes:`0.1.3`,ncrypto:`0.0.1`,nghttp2:`1.69.0`,openssl:`3.5.7`,simdjson:`4.5.0`,simdutf:`6.4.2`,sqlite:`3.51.3`,tz:`2026a`,undici:`6.27.0`,unicode:`17.0`,uv:`1.51.0`,uvwasi:`0.0.23`,v8:`12.4.254.21-node.56`,zlib:`1.3.1-e00f703`,zstd:`1.5.7`}};exports.default=e;
2
2
  //# sourceMappingURL=versionInfo.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"versionInfo.cjs.js","names":[],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\n buildTime: '2026-07-03T07:32:22Z',\n commit: '63bd00c600f13799946b4062fb58a7c8fa888b51',\n npmInfo: {\n 'solid-panes': '4.4.2-4',\n npm: '10.9.8',\n node: '22.23.1',\n acorn: '8.16.0',\n ada: '2.9.2',\n amaro: '1.1.8',\n ares: '1.34.6',\n brotli: '1.1.0',\n cjs_module_lexer: '2.2.0',\n cldr: '48.0',\n icu: '78.2',\n llhttp: '9.4.2',\n modules: '127',\n napi: '10',\n nbytes: '0.1.3',\n ncrypto: '0.0.1',\n nghttp2: '1.69.0',\n openssl: '3.5.7',\n simdjson: '4.5.0',\n simdutf: '6.4.2',\n sqlite: '3.51.3',\n tz: '2026a',\n undici: '6.27.0',\n unicode: '17.0',\n uv: '1.51.0',\n uvwasi: '0.0.23',\n v8: '12.4.254.21-node.56',\n zlib: '1.3.1-e00f703',\n zstd: '1.5.7',\n }\n}\n"],"mappings":"AAAA,IAAA,EAAe,CACb,UAAW,uBACX,OAAQ,2CACR,QAAS,CACP,cAAe,UACf,IAAK,SACL,KAAM,UACN,MAAO,SACP,IAAK,QACL,MAAO,QACP,KAAM,SACN,OAAQ,QACR,iBAAkB,QAClB,KAAM,OACN,IAAK,OACL,OAAQ,QACR,QAAS,MACT,KAAM,KACN,OAAQ,QACR,QAAS,QACT,QAAS,SACT,QAAS,QACT,SAAU,QACV,QAAS,QACT,OAAQ,SACR,GAAI,QACJ,OAAQ,SACR,QAAS,OACT,GAAI,SACJ,OAAQ,SACR,GAAI,sBACJ,KAAM,gBACN,KAAM,OACR,CACF"}
1
+ {"version":3,"file":"versionInfo.cjs.js","names":[],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\n buildTime: '2026-07-31T12:13:06Z',\n commit: 'eae5096a208b86ef00319cde552306906cbf28b0',\n npmInfo: {\n 'solid-panes': '4.4.2-5',\n npm: '10.9.8',\n node: '22.23.1',\n acorn: '8.16.0',\n ada: '2.9.2',\n amaro: '1.1.8',\n ares: '1.34.6',\n brotli: '1.1.0',\n cjs_module_lexer: '2.2.0',\n cldr: '48.0',\n icu: '78.2',\n llhttp: '9.4.2',\n modules: '127',\n napi: '10',\n nbytes: '0.1.3',\n ncrypto: '0.0.1',\n nghttp2: '1.69.0',\n openssl: '3.5.7',\n simdjson: '4.5.0',\n simdutf: '6.4.2',\n sqlite: '3.51.3',\n tz: '2026a',\n undici: '6.27.0',\n unicode: '17.0',\n uv: '1.51.0',\n uvwasi: '0.0.23',\n v8: '12.4.254.21-node.56',\n zlib: '1.3.1-e00f703',\n zstd: '1.5.7',\n }\n}\n"],"mappings":"AAAA,IAAA,EAAe,CACb,UAAW,uBACX,OAAQ,2CACR,QAAS,CACP,cAAe,UACf,IAAK,SACL,KAAM,UACN,MAAO,SACP,IAAK,QACL,MAAO,QACP,KAAM,SACN,OAAQ,QACR,iBAAkB,QAClB,KAAM,OACN,IAAK,OACL,OAAQ,QACR,QAAS,MACT,KAAM,KACN,OAAQ,QACR,QAAS,QACT,QAAS,SACT,QAAS,QACT,SAAU,QACV,QAAS,QACT,OAAQ,SACR,GAAI,QACJ,OAAQ,SACR,QAAS,OACT,GAAI,SACJ,OAAQ,SACR,GAAI,sBACJ,KAAM,gBACN,KAAM,OACR,CACF"}
@@ -1,9 +1,9 @@
1
1
  //#region src/versionInfo.ts
2
2
  var e = {
3
- buildTime: "2026-07-03T07:32:22Z",
4
- commit: "63bd00c600f13799946b4062fb58a7c8fa888b51",
3
+ buildTime: "2026-07-31T12:13:06Z",
4
+ commit: "eae5096a208b86ef00319cde552306906cbf28b0",
5
5
  npmInfo: {
6
- "solid-panes": "4.4.2-4",
6
+ "solid-panes": "4.4.2-5",
7
7
  npm: "10.9.8",
8
8
  node: "22.23.1",
9
9
  acorn: "8.16.0",
@@ -1 +1 @@
1
- {"version":3,"file":"versionInfo.esm.js","names":[],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\n buildTime: '2026-07-03T07:32:22Z',\n commit: '63bd00c600f13799946b4062fb58a7c8fa888b51',\n npmInfo: {\n 'solid-panes': '4.4.2-4',\n npm: '10.9.8',\n node: '22.23.1',\n acorn: '8.16.0',\n ada: '2.9.2',\n amaro: '1.1.8',\n ares: '1.34.6',\n brotli: '1.1.0',\n cjs_module_lexer: '2.2.0',\n cldr: '48.0',\n icu: '78.2',\n llhttp: '9.4.2',\n modules: '127',\n napi: '10',\n nbytes: '0.1.3',\n ncrypto: '0.0.1',\n nghttp2: '1.69.0',\n openssl: '3.5.7',\n simdjson: '4.5.0',\n simdutf: '6.4.2',\n sqlite: '3.51.3',\n tz: '2026a',\n undici: '6.27.0',\n unicode: '17.0',\n uv: '1.51.0',\n uvwasi: '0.0.23',\n v8: '12.4.254.21-node.56',\n zlib: '1.3.1-e00f703',\n zstd: '1.5.7',\n }\n}\n"],"mappings":";AAAA,IAAA,IAAe;CACb,WAAW;CACX,QAAQ;CACR,SAAS;EACP,eAAe;EACf,KAAK;EACL,MAAM;EACN,OAAO;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;EAClB,MAAM;EACN,KAAK;EACL,QAAQ;EACR,SAAS;EACT,MAAM;EACN,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,IAAI;EACJ,QAAQ;EACR,SAAS;EACT,IAAI;EACJ,QAAQ;EACR,IAAI;EACJ,MAAM;EACN,MAAM;CACR;AACF"}
1
+ {"version":3,"file":"versionInfo.esm.js","names":[],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\n buildTime: '2026-07-31T12:13:06Z',\n commit: 'eae5096a208b86ef00319cde552306906cbf28b0',\n npmInfo: {\n 'solid-panes': '4.4.2-5',\n npm: '10.9.8',\n node: '22.23.1',\n acorn: '8.16.0',\n ada: '2.9.2',\n amaro: '1.1.8',\n ares: '1.34.6',\n brotli: '1.1.0',\n cjs_module_lexer: '2.2.0',\n cldr: '48.0',\n icu: '78.2',\n llhttp: '9.4.2',\n modules: '127',\n napi: '10',\n nbytes: '0.1.3',\n ncrypto: '0.0.1',\n nghttp2: '1.69.0',\n openssl: '3.5.7',\n simdjson: '4.5.0',\n simdutf: '6.4.2',\n sqlite: '3.51.3',\n tz: '2026a',\n undici: '6.27.0',\n unicode: '17.0',\n uv: '1.51.0',\n uvwasi: '0.0.23',\n v8: '12.4.254.21-node.56',\n zlib: '1.3.1-e00f703',\n zstd: '1.5.7',\n }\n}\n"],"mappings":";AAAA,IAAA,IAAe;CACb,WAAW;CACX,QAAQ;CACR,SAAS;EACP,eAAe;EACf,KAAK;EACL,MAAM;EACN,OAAO;EACP,KAAK;EACL,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;EAClB,MAAM;EACN,KAAK;EACL,QAAQ;EACR,SAAS;EACT,MAAM;EACN,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,UAAU;EACV,SAAS;EACT,QAAQ;EACR,IAAI;EACJ,QAAQ;EACR,SAAS;EACT,IAAI;EACJ,QAAQ;EACR,IAAI;EACJ,MAAM;EACN,MAAM;CACR;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-panes",
3
- "version": "4.4.2-4",
3
+ "version": "4.4.2-5",
4
4
  "description": "Solid-compatible Panes: applets and views for the mashlib and databrowser",
5
5
  "main": "dist/index.cjs.js",
6
6
  "types": "dist/index.d.ts",
@@ -57,29 +57,26 @@
57
57
  "homepage": "https://github.com/SolidOS/solid-panes",
58
58
  "dependencies": {
59
59
  "@solid/better-simple-slideshow": "^0.1.0",
60
- "activitystreams-pane": "1.0.3-3",
61
- "chat-pane": "3.0.4-1",
60
+ "activitystreams-pane": "1.0.3-4",
61
+ "chat-pane": "3.0.4-3",
62
62
  "contacts-pane": "3.2.1-5",
63
63
  "dompurify": "^3.4.4",
64
- "folder-pane": "3.1.1-1",
64
+ "folder-pane": "3.1.1-2",
65
65
  "issue-pane": "3.0.3-1",
66
66
  "lit-html": "^3.3.2",
67
67
  "marked": "^18.0.3",
68
68
  "meeting-pane": "3.0.3-1",
69
69
  "mime-types": "^3.0.2",
70
- "pane-registry": "3.1.2-1",
71
- "profile-pane": "3.2.3-1",
70
+ "pane-registry": "3.1.2-2",
71
+ "profile-pane": "3.2.3-4",
72
72
  "rdflib": "2.4.0",
73
- "solid-logic": "4.0.8-1",
73
+ "solid-logic": "4.0.8-2",
74
74
  "solid-namespace": "^0.5.4",
75
- "solid-ui": "3.1.3-9",
76
- "source-pane": "3.1.1-1"
75
+ "solid-ui": "3.1.3-13",
76
+ "source-pane": "3.1.1-5"
77
77
  },
78
78
  "overrides": {
79
- "rdflib": "$rdflib",
80
- "solid-logic": "$solid-logic",
81
- "solid-ui": "$solid-ui",
82
- "pane-registry": "$pane-registry"
79
+ "rdflib": "$rdflib"
83
80
  },
84
81
  "devDependencies": {
85
82
  "@iconify/json": "2.2.494",
@@ -1,2 +0,0 @@
1
- var e=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='none'%20%3e%3cpath%20d='M7.5%202.5H3.33333C2.8731%202.5%202.5%202.8731%202.5%203.33333V9.16667C2.5%209.6269%202.8731%2010%203.33333%2010H7.5C7.96024%2010%208.33333%209.6269%208.33333%209.16667V3.33333C8.33333%202.8731%207.96024%202.5%207.5%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%202.5H12.4993C12.0391%202.5%2011.666%202.8731%2011.666%203.33333V5.83333C11.666%206.29357%2012.0391%206.66667%2012.4993%206.66667H16.666C17.1263%206.66667%2017.4993%206.29357%2017.4993%205.83333V3.33333C17.4993%202.8731%2017.1263%202.5%2016.666%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%2010H12.4993C12.0391%2010%2011.666%2010.3731%2011.666%2010.8333V16.6667C11.666%2017.1269%2012.0391%2017.5%2012.4993%2017.5H16.666C17.1263%2017.5%2017.4993%2017.1269%2017.4993%2016.6667V10.8333C17.4993%2010.3731%2017.1263%2010%2016.666%2010Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.5%2013.3333H3.33333C2.8731%2013.3333%202.5%2013.7063%202.5%2014.1666V16.6666C2.5%2017.1268%202.8731%2017.4999%203.33333%2017.4999H7.5C7.96024%2017.4999%208.33333%2017.1268%208.33333%2016.6666V14.1666C8.33333%2013.7063%207.96024%2013.3333%207.5%2013.3333Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`;exports.default=e;
2
- //# sourceMappingURL=dashboard.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.cjs.js","names":[],"sources":["../../src/icons/dashboard.svg"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='none'%20%3e%3cpath%20d='M7.5%202.5H3.33333C2.8731%202.5%202.5%202.8731%202.5%203.33333V9.16667C2.5%209.6269%202.8731%2010%203.33333%2010H7.5C7.96024%2010%208.33333%209.6269%208.33333%209.16667V3.33333C8.33333%202.8731%207.96024%202.5%207.5%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%202.5H12.4993C12.0391%202.5%2011.666%202.8731%2011.666%203.33333V5.83333C11.666%206.29357%2012.0391%206.66667%2012.4993%206.66667H16.666C17.1263%206.66667%2017.4993%206.29357%2017.4993%205.83333V3.33333C17.4993%202.8731%2017.1263%202.5%2016.666%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%2010H12.4993C12.0391%2010%2011.666%2010.3731%2011.666%2010.8333V16.6667C11.666%2017.1269%2012.0391%2017.5%2012.4993%2017.5H16.666C17.1263%2017.5%2017.4993%2017.1269%2017.4993%2016.6667V10.8333C17.4993%2010.3731%2017.1263%2010%2016.666%2010Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.5%2013.3333H3.33333C2.8731%2013.3333%202.5%2013.7063%202.5%2014.1666V16.6666C2.5%2017.1268%202.8731%2017.4999%203.33333%2017.4999H7.5C7.96024%2017.4999%208.33333%2017.1268%208.33333%2016.6666V14.1666C8.33333%2013.7063%207.96024%2013.3333%207.5%2013.3333Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"mappings":"AAAA,IAAA,EAAe"}
@@ -1,6 +0,0 @@
1
- //#region src/icons/dashboard.svg
2
- var e = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='none'%20%3e%3cpath%20d='M7.5%202.5H3.33333C2.8731%202.5%202.5%202.8731%202.5%203.33333V9.16667C2.5%209.6269%202.8731%2010%203.33333%2010H7.5C7.96024%2010%208.33333%209.6269%208.33333%209.16667V3.33333C8.33333%202.8731%207.96024%202.5%207.5%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%202.5H12.4993C12.0391%202.5%2011.666%202.8731%2011.666%203.33333V5.83333C11.666%206.29357%2012.0391%206.66667%2012.4993%206.66667H16.666C17.1263%206.66667%2017.4993%206.29357%2017.4993%205.83333V3.33333C17.4993%202.8731%2017.1263%202.5%2016.666%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%2010H12.4993C12.0391%2010%2011.666%2010.3731%2011.666%2010.8333V16.6667C11.666%2017.1269%2012.0391%2017.5%2012.4993%2017.5H16.666C17.1263%2017.5%2017.4993%2017.1269%2017.4993%2016.6667V10.8333C17.4993%2010.3731%2017.1263%2010%2016.666%2010Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.5%2013.3333H3.33333C2.8731%2013.3333%202.5%2013.7063%202.5%2014.1666V16.6666C2.5%2017.1268%202.8731%2017.4999%203.33333%2017.4999H7.5C7.96024%2017.4999%208.33333%2017.1268%208.33333%2016.6666V14.1666C8.33333%2013.7063%207.96024%2013.3333%207.5%2013.3333Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e";
3
- //#endregion
4
- export { e as default };
5
-
6
- //# sourceMappingURL=dashboard.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.esm.js","names":[],"sources":["../../src/icons/dashboard.svg"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20fill='none'%20%3e%3cpath%20d='M7.5%202.5H3.33333C2.8731%202.5%202.5%202.8731%202.5%203.33333V9.16667C2.5%209.6269%202.8731%2010%203.33333%2010H7.5C7.96024%2010%208.33333%209.6269%208.33333%209.16667V3.33333C8.33333%202.8731%207.96024%202.5%207.5%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%202.5H12.4993C12.0391%202.5%2011.666%202.8731%2011.666%203.33333V5.83333C11.666%206.29357%2012.0391%206.66667%2012.4993%206.66667H16.666C17.1263%206.66667%2017.4993%206.29357%2017.4993%205.83333V3.33333C17.4993%202.8731%2017.1263%202.5%2016.666%202.5Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%2010H12.4993C12.0391%2010%2011.666%2010.3731%2011.666%2010.8333V16.6667C11.666%2017.1269%2012.0391%2017.5%2012.4993%2017.5H16.666C17.1263%2017.5%2017.4993%2017.1269%2017.4993%2016.6667V10.8333C17.4993%2010.3731%2017.1263%2010%2016.666%2010Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.5%2013.3333H3.33333C2.8731%2013.3333%202.5%2013.7063%202.5%2014.1666V16.6666C2.5%2017.1268%202.8731%2017.4999%203.33333%2017.4999H7.5C7.96024%2017.4999%208.33333%2017.1268%208.33333%2016.6666V14.1666C8.33333%2013.7063%207.96024%2013.3333%207.5%2013.3333Z'%20stroke='currentColor'%20stroke-width='1.66667'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"mappings":";AAAA,IAAA,IAAe"}
@@ -1,2 +0,0 @@
1
- function e(e,t=`icon`,n=`currentColor`){let r=[`role="img"`,`aria-label="${t}"`,`focusable="false"`,`aria-hidden="true"`,`width="100%"`,`height="100%"`,`style="${[`display:block`].join(`; `)}"`].join(` `),i=e.replace(/^\uFEFF/,``).trim();return i.startsWith(`data:image/svg+xml;base64,`)?i=decodeURIComponent(escape(atob(i.slice(26)))):i.startsWith(`data:image/svg+xml,`)&&(i=decodeURIComponent(i.slice(19))),n&&(i=i.replace(/\bcurrentColor\b/gi,n)),i=i.replace(/^(<svg\b)/i,`$1 ${r}`),`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(i)))}`}exports.createUiIcon=e;
2
- //# sourceMappingURL=iconHelper.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iconHelper.cjs.js","names":[],"sources":["../../src/icons/iconHelper.ts"],"sourcesContent":["export function createUiIcon (\n icon: string,\n label = 'icon',\n color: string = 'currentColor'\n): string {\n const styleBlocks = ['display:block']\n\n const extraAttrs = [\n 'role=\"img\"',\n `aria-label=\"${label}\"`,\n 'focusable=\"false\"',\n 'aria-hidden=\"true\"',\n 'width=\"100%\"',\n 'height=\"100%\"',\n `style=\"${styleBlocks.join('; ')}\"`,\n ].join(' ')\n\n let svg = icon.replace(/^\\uFEFF/, '').trim()\n\n // If webpack gave us a data URL instead of raw SVG, decode it first\n if (svg.startsWith('data:image/svg+xml;base64,')) {\n svg = decodeURIComponent(escape(atob(svg.slice('data:image/svg+xml;base64,'.length))))\n } else if (svg.startsWith('data:image/svg+xml,')) {\n svg = decodeURIComponent(svg.slice('data:image/svg+xml,'.length))\n }\n\n if (color) {\n svg = svg.replace(/\\bcurrentColor\\b/gi, color)\n }\n\n svg = svg.replace(/^(<svg\\b)/i, `$1 ${extraAttrs}`)\n\n return `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(svg)))}`\n}\n"],"mappings":"AAAA,SAAgB,EACd,EACA,EAAQ,OACR,EAAgB,eACR,CAGR,IAAM,EAAa,CACjB,aACA,eAAe,EAAM,GACrB,oBACA,qBACA,eACA,gBACA,UAAU,CATS,eAST,CAAA,CAAY,KAAK,IAAI,EAAE,EACnC,CAAC,CAAC,KAAK,GAAG,EAEN,EAAM,EAAK,QAAQ,UAAW,EAAE,CAAC,CAAC,KAAK,EAe3C,OAZI,EAAI,WAAW,4BAA4B,EAC7C,EAAM,mBAAmB,OAAO,KAAK,EAAI,MAAM,EAAmC,CAAC,CAAC,CAAC,EAC5E,EAAI,WAAW,qBAAqB,IAC7C,EAAM,mBAAmB,EAAI,MAAM,EAA4B,CAAC,GAG9D,IACF,EAAM,EAAI,QAAQ,qBAAsB,CAAK,GAG/C,EAAM,EAAI,QAAQ,aAAc,MAAM,GAAY,EAE3C,6BAA6B,KAAK,SAAS,mBAAmB,CAAG,CAAC,CAAC,GAC5E"}
@@ -1,17 +0,0 @@
1
- //#region src/icons/iconHelper.ts
2
- function e(e, t = "icon", n = "currentColor") {
3
- let r = [
4
- "role=\"img\"",
5
- `aria-label="${t}"`,
6
- "focusable=\"false\"",
7
- "aria-hidden=\"true\"",
8
- "width=\"100%\"",
9
- "height=\"100%\"",
10
- `style="${["display:block"].join("; ")}"`
11
- ].join(" "), i = e.replace(/^\uFEFF/, "").trim();
12
- return i.startsWith("data:image/svg+xml;base64,") ? i = decodeURIComponent(escape(atob(i.slice(26)))) : i.startsWith("data:image/svg+xml,") && (i = decodeURIComponent(i.slice(19))), n && (i = i.replace(/\bcurrentColor\b/gi, n)), i = i.replace(/^(<svg\b)/i, `$1 ${r}`), `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(i)))}`;
13
- }
14
- //#endregion
15
- export { e as createUiIcon };
16
-
17
- //# sourceMappingURL=iconHelper.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iconHelper.esm.js","names":[],"sources":["../../src/icons/iconHelper.ts"],"sourcesContent":["export function createUiIcon (\n icon: string,\n label = 'icon',\n color: string = 'currentColor'\n): string {\n const styleBlocks = ['display:block']\n\n const extraAttrs = [\n 'role=\"img\"',\n `aria-label=\"${label}\"`,\n 'focusable=\"false\"',\n 'aria-hidden=\"true\"',\n 'width=\"100%\"',\n 'height=\"100%\"',\n `style=\"${styleBlocks.join('; ')}\"`,\n ].join(' ')\n\n let svg = icon.replace(/^\\uFEFF/, '').trim()\n\n // If webpack gave us a data URL instead of raw SVG, decode it first\n if (svg.startsWith('data:image/svg+xml;base64,')) {\n svg = decodeURIComponent(escape(atob(svg.slice('data:image/svg+xml;base64,'.length))))\n } else if (svg.startsWith('data:image/svg+xml,')) {\n svg = decodeURIComponent(svg.slice('data:image/svg+xml,'.length))\n }\n\n if (color) {\n svg = svg.replace(/\\bcurrentColor\\b/gi, color)\n }\n\n svg = svg.replace(/^(<svg\\b)/i, `$1 ${extraAttrs}`)\n\n return `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(svg)))}`\n}\n"],"mappings":";AAAA,SAAgB,EACd,GACA,IAAQ,QACR,IAAgB,gBACR;CAGR,IAAM,IAAa;EACjB;EACA,eAAe,EAAM;EACrB;EACA;EACA;EACA;EACA,UAAU,CATS,eAST,CAAA,CAAY,KAAK,IAAI,EAAE;CACnC,CAAC,CAAC,KAAK,GAAG,GAEN,IAAM,EAAK,QAAQ,WAAW,EAAE,CAAC,CAAC,KAAK;CAe3C,OAZI,EAAI,WAAW,4BAA4B,IAC7C,IAAM,mBAAmB,OAAO,KAAK,EAAI,MAAM,EAAmC,CAAC,CAAC,CAAC,IAC5E,EAAI,WAAW,qBAAqB,MAC7C,IAAM,mBAAmB,EAAI,MAAM,EAA4B,CAAC,IAG9D,MACF,IAAM,EAAI,QAAQ,sBAAsB,CAAK,IAG/C,IAAM,EAAI,QAAQ,cAAc,MAAM,GAAY,GAE3C,6BAA6B,KAAK,SAAS,mBAAmB,CAAG,CAAC,CAAC;AAC5E"}
@@ -1,9 +0,0 @@
1
- var e=`<svg xmlns="http://www.w3.org/2000/svg"
2
- viewBox="0 0 24 24"
3
- fill="none"
4
- >
5
- <path d="M3 6H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
6
- <path d="M3 12H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
7
- <path d="M3 18H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
8
- </svg>`;exports.default=e;
9
- //# sourceMappingURL=menu.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu.cjs.js","names":[],"sources":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- //#region src/icons/menu.svg?raw
2
- var e = "<svg xmlns=\"http://www.w3.org/2000/svg\" \n viewBox=\"0 0 24 24\" \n fill=\"none\"\n>\n <path d=\"M3 6H21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M3 12H21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M3 18H21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>";
3
- //#endregion
4
- export { e as default };
5
-
6
- //# sourceMappingURL=menu.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu.esm.js","names":[],"sources":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- require("solid-ui/components/footer");function e(e){let t=document.querySelector(`solid-ui-footer`);if(t){let e=document.getElementById(`NavMenu`);e&&t.parentElement!==e&&e.appendChild(t)}else{t=document.createElement(`solid-ui-footer`),t.className=`menu-footer`,t.style.position=`static`,t.style.width=`100%`;let e=document.getElementById(`NavMenu`);e?e.appendChild(t):document.body.appendChild(t)}return t.store=e,t}exports.createFooter=e;
2
- //# sourceMappingURL=footer.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"footer.cjs.js","names":[],"sources":["../../src/mainPage/footer.ts"],"sourcesContent":["import 'solid-ui/components/footer'\nimport type { LiveStore } from 'rdflib'\n\ndeclare module 'solid-ui/components/footer'\nimport 'solid-ui/components/footer'\n\ntype FooterElement = HTMLElement & {\n store?: LiveStore | null\n position?: 'static' | 'absolute' | 'relative' | 'fixed' | 'sticky'\n top?: string\n right?: string\n bottom?: string\n left?: string\n}\n\nexport function createFooter (store: LiveStore) {\n let footer = document.querySelector('solid-ui-footer') as FooterElement | null\n\n if (!footer) {\n footer = document.createElement('solid-ui-footer') as FooterElement\n footer.className = 'menu-footer'\n footer.style.position = 'static'\n footer.style.width = '100%'\n const navMenu = document.getElementById('NavMenu')\n if (navMenu) {\n navMenu.appendChild(footer)\n } else {\n document.body.appendChild(footer)\n }\n } else {\n const navMenu = document.getElementById('NavMenu')\n if (navMenu && footer.parentElement !== navMenu) {\n navMenu.appendChild(footer)\n }\n }\n\n footer.store = store\n return footer\n}\n"],"mappings":"sCAeA,SAAgB,EAAc,EAAkB,CAC9C,IAAI,EAAS,SAAS,cAAc,iBAAiB,EAErD,GAAK,EAWE,CACL,IAAM,EAAU,SAAS,eAAe,SAAS,EAC7C,GAAW,EAAO,gBAAkB,GACtC,EAAQ,YAAY,CAAM,CAE9B,KAhBa,CACX,EAAS,SAAS,cAAc,iBAAiB,EACjD,EAAO,UAAY,cACnB,EAAO,MAAM,SAAW,SACxB,EAAO,MAAM,MAAQ,OACrB,IAAM,EAAU,SAAS,eAAe,SAAS,EAC7C,EACF,EAAQ,YAAY,CAAM,EAE1B,SAAS,KAAK,YAAY,CAAM,CAEpC,CAQA,MADA,GAAO,MAAQ,EACR,CACT"}
@@ -1,13 +0,0 @@
1
- import { LiveStore } from '../../node_modules/rdflib';
2
- declare module 'solid-ui/components/footer';
3
- type FooterElement = HTMLElement & {
4
- store?: LiveStore | null;
5
- position?: 'static' | 'absolute' | 'relative' | 'fixed' | 'sticky';
6
- top?: string;
7
- right?: string;
8
- bottom?: string;
9
- left?: string;
10
- };
11
- export declare function createFooter(store: LiveStore): FooterElement;
12
- export {};
13
- //# sourceMappingURL=footer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/mainPage/footer.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEvC,OAAO,QAAQ,4BAA4B,CAAA;AAC3C,OAAO,4BAA4B,CAAA;AAEnC,KAAK,aAAa,GAAG,WAAW,GAAG;IACjC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;IAClE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,YAAY,CAAE,KAAK,EAAE,SAAS,iBAuB7C"}
@@ -1,18 +0,0 @@
1
- import "solid-ui/components/footer";
2
- //#region src/mainPage/footer.ts
3
- function e(e) {
4
- let t = document.querySelector("solid-ui-footer");
5
- if (t) {
6
- let e = document.getElementById("NavMenu");
7
- e && t.parentElement !== e && e.appendChild(t);
8
- } else {
9
- t = document.createElement("solid-ui-footer"), t.className = "menu-footer", t.style.position = "static", t.style.width = "100%";
10
- let e = document.getElementById("NavMenu");
11
- e ? e.appendChild(t) : document.body.appendChild(t);
12
- }
13
- return t.store = e, t;
14
- }
15
- //#endregion
16
- export { e as createFooter };
17
-
18
- //# sourceMappingURL=footer.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"footer.esm.js","names":[],"sources":["../../src/mainPage/footer.ts"],"sourcesContent":["import 'solid-ui/components/footer'\nimport type { LiveStore } from 'rdflib'\n\ndeclare module 'solid-ui/components/footer'\nimport 'solid-ui/components/footer'\n\ntype FooterElement = HTMLElement & {\n store?: LiveStore | null\n position?: 'static' | 'absolute' | 'relative' | 'fixed' | 'sticky'\n top?: string\n right?: string\n bottom?: string\n left?: string\n}\n\nexport function createFooter (store: LiveStore) {\n let footer = document.querySelector('solid-ui-footer') as FooterElement | null\n\n if (!footer) {\n footer = document.createElement('solid-ui-footer') as FooterElement\n footer.className = 'menu-footer'\n footer.style.position = 'static'\n footer.style.width = '100%'\n const navMenu = document.getElementById('NavMenu')\n if (navMenu) {\n navMenu.appendChild(footer)\n } else {\n document.body.appendChild(footer)\n }\n } else {\n const navMenu = document.getElementById('NavMenu')\n if (navMenu && footer.parentElement !== navMenu) {\n navMenu.appendChild(footer)\n }\n }\n\n footer.store = store\n return footer\n}\n"],"mappings":";;AAeA,SAAgB,EAAc,GAAkB;CAC9C,IAAI,IAAS,SAAS,cAAc,iBAAiB;CAErD,IAAK,GAWE;EACL,IAAM,IAAU,SAAS,eAAe,SAAS;EACjD,AAAI,KAAW,EAAO,kBAAkB,KACtC,EAAQ,YAAY,CAAM;CAE9B,OAhBa;EAIX,AAHA,IAAS,SAAS,cAAc,iBAAiB,GACjD,EAAO,YAAY,eACnB,EAAO,MAAM,WAAW,UACxB,EAAO,MAAM,QAAQ;EACrB,IAAM,IAAU,SAAS,eAAe,SAAS;EACjD,AAAI,IACF,EAAQ,YAAY,CAAM,IAE1B,SAAS,KAAK,YAAY,CAAM;CAEpC;CAQA,OADA,EAAO,QAAQ,GACR;AACT"}
@@ -1,6 +0,0 @@
1
- import { OutlineManager } from '../outline/manager';
2
- import { NamedNode } from '../../node_modules/rdflib';
3
- export declare const setActiveMenuPane: (paneName?: string) => void;
4
- export declare const refreshMenu: (layout: "mobile" | "desktop") => void;
5
- export declare const createLeftSideMenu: (subject: NamedNode, outliner: OutlineManager) => Promise<void>;
6
- //# sourceMappingURL=menu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/mainPage/menu.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAO,MAAM,QAAQ,CAAA;AA4QvC,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,KAAG,IAIrD,CAAA;AAqBD,eAAO,MAAM,WAAW,GAAI,QAAQ,QAAQ,GAAG,SAAS,SAmDvD,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,SAAS,EAAE,UAAU,cAAc,kBA+IpF,CAAA"}
@@ -1,2 +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)}})();const e=require("../profileUtils/ownerProfile.cjs.js");;const t=n=require("../icons/iconHelper.cjs.js");let r=require("solid-logic"),i=require("rdflib");var a=n.createUiIcon(t.default,`Menu Icon`,`#ffffff`),o=`solid-panes-menu-collapsed`,s=!1,c=()=>{try{return localStorage.getItem(o)===`true`}catch{return!1}},l=e=>{try{localStorage.setItem(o,String(e))}catch{}},u=()=>{let e=document.getElementById(`MenuCollapseBtn`);e&&(e.textContent=s?`›`:`‹`,e.setAttribute(`aria-label`,s?`Expand navigation menu`:`Collapse navigation menu`))},d=(e,t)=>{if(!e||!t)return;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;t.style.setProperty(`left`,`${a.toFixed(3)}rem`,`important`)},f=e=>{e&&(e.classList.toggle(`collapsed`,s),u(),d(e,document.getElementById(`MenuCollapseBtn`)))},p=async()=>{try{return!!(await r.authn.checkUser()||r.authn.currentUser())}catch{return!!r.authn.currentUser()}},m=()=>!!r.authn.currentUser(),h=e=>{let t=document.querySelector(`solid-ui-footer`);t&&(t.style.display=e?`none`:``)},g=e=>{let t=r.authn.currentUser();return!!(t&&e&&t.sameTerm(e))},_=()=>{s=c();let e=document.querySelector(`[role="main"]`)||document.body,t=document.getElementById(`NavMenu`);if(!t){t=document.createElement(`nav`),t.id=`NavMenu`,t.className=`app-nav`,t.setAttribute(`aria-label`,`App navigation`),t.hidden=!0;let n=document.createElement(`div`);n.className=`menu-header`;let r=document.createElement(`button`);r.id=`MenuCloseBtn`,r.className=`menu-close`,r.type=`button`,r.setAttribute(`aria-label`,`Close menu`),r.textContent=`✕`,n.appendChild(r);let i=document.createElement(`span`);i.className=`menu-header-title`,i.textContent=`Menu`,n.appendChild(i),t.appendChild(n);let a=document.createElement(`div`);a.id=`AuthState`,a.className=`menu-auth-state`,t.appendChild(a);let o=document.createElement(`div`);o.id=`NavMenuContent`,o.className=`menu-content`,t.appendChild(o),e.insertBefore(t,e.firstChild)}else if(!t.querySelector(`.menu-header`)){let e=document.createElement(`div`);e.className=`menu-header`;let n=document.createElement(`button`);n.id=`MenuCloseBtn`,n.className=`menu-close`,n.type=`button`,n.setAttribute(`aria-label`,`Close menu`),n.textContent=`✕`,e.appendChild(n);let r=document.createElement(`span`);r.className=`menu-header-title`,r.textContent=`Menu`,e.appendChild(r),t.insertBefore(e,t.firstChild)}let n=document.getElementById(`MenuToggleBtn`);if(!n){n=document.createElement(`button`),n.id=`MenuToggleBtn`,n.className=`menu-toggle`,n.type=`button`,n.setAttribute(`aria-label`,`Toggle navigation menu`),n.hidden=!0;let t=document.createElement(`img`);t.src=a,t.alt=``,t.className=`menu-toggle-icon`,t.setAttribute(`aria-hidden`,`true`),n.appendChild(t);let r=document.createElement(`span`);r.id=`MenuToggleLabel`,r.className=`menu-toggle-label`,n.appendChild(r),e.insertBefore(n,e.firstChild)}let r=document.getElementById(`MenuOverlay`);r||(r=document.createElement(`div`),r.id=`MenuOverlay`,r.className=`menu-overlay`,r.hidden=!0,document.body.appendChild(r));let i=document.getElementById(`MenuCollapseBtn`);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))},v=async(e,t)=>{try{return(await t.getDashboardItems(e)).map(n=>{let i=n.subject||r.authn.currentUser()||e;return{icon:n.icon,subject:i,paneName:n.tabName||n.paneName,label:n.label,onclick:()=>E(i,t,n.tabName||n.paneName)}})}catch(e){return console.error(`Unable to load navigation menu items`,e),[]}},y=e=>{let t=document.createElement(`button`);if(t.className=`menu-item`,t.type=`button`,e.paneName&&(t.dataset.paneName=e.paneName),e.icon){let n=document.createElement(`img`);n.className=`menu-item-icon`,n.src=e.icon,n.alt=``,n.setAttribute(`aria-hidden`,`true`),t.appendChild(n)}let n=document.createElement(`span`);return n.className=`menu-item-label`,n.textContent=e.label,t.appendChild(n),e.id&&(t.id=e.id),t.addEventListener(`click`,async()=>{await e.onclick()}),t},b=(e,t)=>{let n=Array.from(e.querySelectorAll(`.menu-item`)),r;n.forEach(e=>{let n=!!t&&e.dataset.paneName===t;e.classList.toggle(`menu-item-active`,n),n?(e.setAttribute(`aria-current`,`page`),r=e):e.removeAttribute(`aria-current`)}),t?!r&&n[0]?e.dataset.activePaneName=``:e.dataset.activePaneName=t:e.dataset.activePaneName=``,S(r)},x=e=>{let t=document.getElementById(`NavMenuContent`);t&&b(t,e)},S=e=>{let t=document.getElementById(`MenuToggleLabel`);t&&(t.textContent=e?.querySelector(`.menu-item-label`)?.textContent||``)},C=async(e,t,n)=>{let r=await v(e,t);n.replaceChildren(...r.map(y)),b(n,g(e)?`profile`:n.dataset.activePaneName)},w=e=>{let t=document.getElementById(`NavMenu`),n=document.getElementById(`MenuToggleBtn`),r=document.getElementById(`MenuCollapseBtn`),i=document.getElementById(`MenuOverlay`);if(!(!t||!n||!i||!r)){if(!m()){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`,h(!1);return}h(!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=``,f(t),d(t,r),n.setAttribute(`aria-expanded`,`false`))}},T=async(e,t)=>{_();let n=document.getElementById(`NavMenu`),i=document.getElementById(`MenuToggleBtn`),a=document.getElementById(`MenuOverlay`),o=document.getElementById(`NavMenuContent`);await p();let c=()=>{!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`)},u=()=>{!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=``)},d=document.getElementById(`MenuCollapseBtn`),g=()=>{!n||!d||s&&(s=!1,l(s),f(n))};n&&n.addEventListener(`click`,e=>{let n=t.context?.environment?.layout===`mobile`,r=e.target.closest(`#MenuCollapseBtn`);!n&&s&&!r&&g()}),i&&i.addEventListener(`click`,()=>{n?.classList.contains(`mobile-visible`)?c():u()}),d&&d.addEventListener(`click`,()=>{s=!s,l(s),f(n)});let v=()=>{let e=m();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`),h(e)};v(),a&&a.addEventListener(`click`,c);let y=document.getElementById(`MenuCloseBtn`);if(y&&y.addEventListener(`click`,c),o){if(v(),m()&&await C(e,t,o),!o.dataset.authEventsBound){let n=async()=>{await C(e,t,o)};r.authSession.events.on(`login`,async()=>{await p(),v(),w(t.context?.environment?.layout===`mobile`?`mobile`:`desktop`),await n()}),r.authSession.events.on(`logout`,async()=>{await p(),v(),w(t.context?.environment?.layout===`mobile`?`mobile`:`desktop`),await n()}),r.authSession.events.on(`sessionRestore`,async()=>{await p(),v(),w(t.context?.environment?.layout===`mobile`?`mobile`:`desktop`),await n()}),o.dataset.authEventsBound=`true`}o.addEventListener(`click`,e=>{let n=e.target.closest(`.menu-item`);n instanceof HTMLButtonElement&&b(o,n.dataset.paneName);let r=t.context?.environment?.layout===`mobile`;n&&r&&c()})}w(t.context?.environment?.layout===`mobile`?`mobile`:`desktop`)};async function E(t,n,a){let o=r.authn.currentUser();if(!t)if(o)t=o;else{let r=n?.context?.store||n?.context?.session?.store||n?.kb,a=n?.context?.fetcher||r?.fetcher;if(!r||!a)throw Error(`Unable to load profile: missing RDF store or fetcher`);let o=(0,i.sym)(window.location.href);t=await e.loadProfileFromURI(t||o,r,a)}n.showDashboard(t,{pane:a})}exports.createLeftSideMenu=T,exports.refreshMenu=w,exports.setActiveMenuPane=x;
2
- //# sourceMappingURL=menu2.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu2.cjs.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,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