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
@@ -1 +1 @@
1
- {"version":3,"file":"internalPane2.cjs.js","names":[],"sources":["../../src/internal/internalPane.ts"],"sourcesContent":["/* Internal Pane\n **\n ** This outline pane contains the properties which are\n ** internal to the user's interaction with the web, and are not normally displayed\n */\n/* global alert confirm */\n\nimport { icons, ns, widgets } from 'solid-ui'\nimport { BlankNode, IndexedFormula, literal, NamedNode, st, sym, Variable, Store } from 'rdflib'\nimport { PaneDefinition } from 'pane-registry'\nimport './internalPane.css'\n\nconst pane: PaneDefinition = {\n icon: icons.originalIconBase + 'tango/22-emblem-system.png',\n\n name: 'internal',\n\n label: function () {\n return 'under the hood' // There is often a URI even of no statements\n },\n\n render: function (subject, context) {\n const dom = context.dom\n // @ts-ignore\n const store = context.session.store as Store\n const canonizedSubject = store.canon(subject) as BlankNode | NamedNode | Variable\n const types = store.findTypeURIs(canonizedSubject)\n\n function filter (pred: NamedNode) {\n if (types['http://www.w3.org/2007/ont/link#ProtocolEvent']) return true // display everything for them\n const view = context.session.paneRegistry.byName('internal')\n return (\n view &&\n view.predicates &&\n !!(typeof view.predicates[pred.uri] !== 'undefined')\n )\n }\n\n const div = dom.createElement('div')\n div.classList.add('internalPane', 'internalPaneContent')\n\n function deleteRecursive (kb: IndexedFormula, folder: NamedNode) {\n const fetcher = (kb as any).fetcher\n if (!fetcher) {\n console.error('No fetcher available')\n return\n }\n return new Promise(function (resolve, reject) {\n fetcher.load(folder).then(function () {\n const promises = kb.each(folder, ns.ldp('contains')).map(file => {\n if (kb.holds(file, ns.rdf('type'), ns.ldp('BasicContainer'))) {\n return deleteRecursive(kb, file as NamedNode)\n } else {\n console.log('deleteRecursive leaf file: ' + file)\n return fetcher.webOperation('DELETE', (file as NamedNode).uri)\n }\n })\n Promise.all(promises).then(\n () => {\n console.log('deleteRecursive empty folder: ' + folder)\n fetcher\n .webOperation('DELETE', folder.uri)\n .then(() => {\n console.log('Deleted Ok: ' + folder)\n resolve(undefined)\n })\n .catch((err: string) => {\n const str = 'Unable to delete ' + folder + ': ' + err\n console.log(str)\n reject(new Error(str))\n })\n resolve(undefined)\n },\n err => {\n alert(err)\n reject(err)\n }\n )\n })\n })\n }\n\n const isDocument = subject.uri && !subject.uri.includes('#')\n if (isDocument) {\n const controls = div.appendChild(dom.createElement('table'))\n controls.classList.add('internalPaneControls')\n const controlRow = controls.appendChild(dom.createElement('tr'))\n\n const deleteCell = controlRow.appendChild(dom.createElement('td'))\n const isFolder =\n (subject.uri && subject.uri.endsWith('/')) ||\n store.holds(subject, ns.rdf('type'), ns.ldp('Container'))\n const noun = isFolder ? 'folder' : 'file'\n if (!isProtectedUri(subject)) {\n console.log(subject)\n const deleteButton = widgets.deleteButtonWithCheck(\n dom,\n deleteCell,\n noun,\n function () {\n if (\n !confirm(\n `Are you sure you want to delete ${subject}? This cannot be undone.`\n )\n ) {\n return\n }\n // @@ TODO Remove casing of store.fetcher\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n const promise = isFolder\n ? (deleteRecursive(store, subject) || Promise.resolve())\n : store.fetcher.webOperation('DELETE', subject.uri) || Promise.resolve()\n promise\n .then(() => {\n const str = 'Deleted: ' + subject\n console.log(str)\n })\n .catch((err: any) => {\n const str = 'Unable to delete ' + subject + ': ' + err\n console.log(str)\n alert(str)\n })\n }\n )\n\n deleteButton.removeAttribute('class') // Remove hover hide\n deleteButton.classList.add('internalPaneDeleteButton')\n deleteCell.appendChild(deleteButton)\n }\n\n const refreshCell = controlRow.appendChild(dom.createElement('td'))\n const refreshButton = widgets.button(\n dom,\n icons.iconBase + 'noun_479395.svg',\n 'refresh'\n )\n refreshCell.appendChild(refreshButton)\n refreshButton.addEventListener('click', () => {\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n store.fetcher.refresh(subject, function (\n ok,\n errm\n ) {\n let str\n if (ok) {\n str = 'Refreshed OK: ' + subject\n } else {\n str = 'Error refreshing: ' + subject + ': ' + errm\n }\n console.log(str)\n alert(str)\n })\n })\n }\n\n let plist = store.statementsMatching(subject)\n let docURI = ''\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n\n if (subject.uri) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#uri'),\n subject.uri as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n if (subject.uri.indexOf('#') >= 0) {\n docURI = subject.uri.split('#')[0]\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#documentURI'),\n subject.uri.split('#')[0] as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#document'),\n sym(subject.uri.split('#')[0]),\n store.fetcher.appNode\n )\n )\n } else {\n docURI = subject.uri\n }\n }\n if (docURI) {\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n\n const ed = store.updater.editable(docURI)\n if (ed) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/ns/rww#editable'),\n literal(ed.toString()),\n store.fetcher.appNode\n )\n )\n }\n }\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(dom)\n outliner.appendPropertyTRs(div, plist, false, filter)\n plist = store.statementsMatching(undefined, undefined, subject)\n outliner.appendPropertyTRs(div, plist, true, filter)\n return div\n },\n\n predicates: {\n // Predicates used for inner workings. Under the hood\n 'http://www.w3.org/2007/ont/link#request': 1,\n 'http://www.w3.org/2007/ont/link#requestedBy': 1,\n 'http://www.w3.org/2007/ont/link#source': 1,\n 'http://www.w3.org/2007/ont/link#session': 2, // 2= test neg but display\n 'http://www.w3.org/2007/ont/link#uri': 1,\n 'http://www.w3.org/2007/ont/link#documentURI': 1,\n 'http://www.w3.org/2007/ont/link#document': 1,\n 'http://www.w3.org/2007/ont/link#all': 1, // From userinput.js\n 'http://www.w3.org/2007/ont/link#Document': 1,\n 'http://www.w3.org/ns/rww#editable': 1,\n 'http://www.w3.org/2000/01/rdf-schema#seeAlso': 1,\n 'http://www.w3.org/2002/07/owl#': 1\n },\n\n classes: {\n // Things which are inherently already undercover\n 'http://www.w3.org/2007/ont/link#ProtocolEvent': 1\n }\n}\n\nfunction isProtectedUri (subject: NamedNode): boolean {\n // TODO: Could make the code below smarter by removing some of the redundancy by creating a recursive function, but did not bother now\n const siteUri = subject.site().uri\n return (\n subject.uri === siteUri ||\n subject.uri === siteUri + 'profile/' ||\n subject.uri === siteUri + 'profile/card' ||\n subject.uri === siteUri + 'settings/' ||\n subject.uri === siteUri + 'settings/prefs.ttl' ||\n subject.uri === siteUri + 'settings/privateTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/publicTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/serverSide.ttl'\n )\n}\n\nexport default pane\n\n// ends\n"],"mappings":"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"}
1
+ {"version":3,"file":"internalPane2.cjs.js","names":[],"sources":["../../src/internal/internalPane.ts"],"sourcesContent":["/* Internal Pane\n **\n ** This outline pane contains the properties which are\n ** internal to the user's interaction with the web, and are not normally displayed\n */\n/* global alert confirm */\n\nimport { icons, ns, widgets } from 'solid-ui'\nimport { BlankNode, IndexedFormula, literal, NamedNode, st, sym, Variable, Store } from 'rdflib'\nimport { PaneDefinition } from 'pane-registry'\nimport './internalPane.css'\n\nconst pane: PaneDefinition = {\n icon: icons.originalIconBase + 'tango/22-emblem-system.png',\n\n name: 'internal',\n\n label: function () {\n return 'under the hood' // There is often a URI even of no statements\n },\n\n render: function (subject, context) {\n const dom = context.dom\n // @ts-ignore\n const store = context.session.store as Store\n const canonizedSubject = store.canon(subject) as BlankNode | NamedNode | Variable\n const types = store.findTypeURIs(canonizedSubject)\n\n function filter (pred: NamedNode) {\n if (types['http://www.w3.org/2007/ont/link#ProtocolEvent']) return true // display everything for them\n const view = context.session.paneRegistry.byName('internal')\n return (\n view &&\n view.predicates &&\n !!(typeof view.predicates[pred.uri] !== 'undefined')\n )\n }\n\n const div = dom.createElement('div')\n div.classList.add('internalPane', 'internalPaneContent')\n\n function deleteRecursive (kb: IndexedFormula, folder: NamedNode) {\n const fetcher = (kb as any).fetcher\n if (!fetcher) {\n console.error('No fetcher available')\n return\n }\n return new Promise(function (resolve, reject) {\n fetcher.load(folder).then(function () {\n const promises = kb.each(folder, ns.ldp('contains')).map(file => {\n if (kb.holds(file, ns.rdf('type'), ns.ldp('BasicContainer'))) {\n return deleteRecursive(kb, file as NamedNode)\n } else {\n console.log('deleteRecursive leaf file: ' + file)\n return fetcher.webOperation('DELETE', (file as NamedNode).uri)\n }\n })\n Promise.all(promises).then(\n () => {\n console.log('deleteRecursive empty folder: ' + folder)\n fetcher\n .webOperation('DELETE', folder.uri)\n .then(() => {\n console.log('Deleted Ok: ' + folder)\n resolve(undefined)\n })\n .catch((err: string) => {\n const str = 'Unable to delete ' + folder + ': ' + err\n console.log(str)\n reject(new Error(str))\n })\n resolve(undefined)\n },\n err => {\n alert(err)\n reject(err)\n }\n )\n })\n })\n }\n\n const isDocument = subject.uri && !subject.uri.includes('#')\n if (isDocument) {\n const controls = div.appendChild(dom.createElement('table'))\n controls.classList.add('internalPaneControls')\n const controlRow = controls.appendChild(dom.createElement('tr'))\n\n const deleteCell = controlRow.appendChild(dom.createElement('td'))\n const isFolder =\n (subject.uri && subject.uri.endsWith('/')) ||\n store.holds(subject, ns.rdf('type'), ns.ldp('Container'))\n const noun = isFolder ? 'folder' : 'file'\n if (!isProtectedUri(subject)) {\n console.log(subject)\n const deleteButton = widgets.deleteButtonWithCheck(\n dom,\n deleteCell,\n noun,\n function () {\n if (\n !confirm(\n `Are you sure you want to delete ${subject}? This cannot be undone.`\n )\n ) {\n return\n }\n // @@ TODO Remove casing of store.fetcher\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n const promise = isFolder\n ? (deleteRecursive(store, subject) || Promise.resolve())\n : store.fetcher.webOperation('DELETE', subject.uri) || Promise.resolve()\n promise\n .then(() => {\n const str = 'Deleted: ' + subject\n console.log(str)\n })\n .catch((err: any) => {\n const str = 'Unable to delete ' + subject + ': ' + err\n console.log(str)\n alert(str)\n })\n }\n )\n\n deleteButton.removeAttribute('class') // Remove hover hide\n deleteButton.classList.add('internalPaneDeleteButton')\n deleteCell.appendChild(deleteButton)\n }\n\n const refreshCell = controlRow.appendChild(dom.createElement('td'))\n const refreshButton = widgets.button(\n dom,\n icons.iconBase + 'noun_479395.svg',\n 'refresh'\n )\n refreshCell.appendChild(refreshButton)\n refreshButton.addEventListener('click', () => {\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n store.fetcher.refresh(subject, function (\n ok,\n errm\n ) {\n let str\n if (ok) {\n str = 'Refreshed OK: ' + subject\n } else {\n str = 'Error refreshing: ' + subject + ': ' + errm\n }\n console.log(str)\n alert(str)\n })\n })\n }\n\n let plist = store.statementsMatching(subject)\n let docURI = ''\n if (!store.fetcher) {\n throw new Error('Store has no fetcher')\n }\n\n if (subject.uri) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#uri'),\n subject.uri as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n if (subject.uri.indexOf('#') >= 0) {\n docURI = subject.uri.split('#')[0]\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#documentURI'),\n subject.uri.split('#')[0] as any, // @@ TODO Remove casting\n store.fetcher.appNode\n )\n )\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/2007/ont/link#document'),\n sym(subject.uri.split('#')[0]),\n store.fetcher.appNode\n )\n )\n } else {\n docURI = subject.uri\n }\n }\n if (docURI) {\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n\n const ed = store.updater.editable(docURI)\n if (ed) {\n plist.push(\n st(\n subject,\n sym('http://www.w3.org/ns/rww#editable'),\n literal(ed.toString()),\n store.fetcher.appNode\n )\n )\n }\n }\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(dom)\n outliner.appendPropertyTRs(div, plist, false, filter)\n plist = store.statementsMatching(undefined, undefined, subject)\n outliner.appendPropertyTRs(div, plist, true, filter)\n return div\n },\n\n predicates: {\n // Predicates used for inner workings. Under the hood\n 'http://www.w3.org/2007/ont/link#request': 1,\n 'http://www.w3.org/2007/ont/link#requestedBy': 1,\n 'http://www.w3.org/2007/ont/link#source': 1,\n 'http://www.w3.org/2007/ont/link#session': 2, // 2= test neg but display\n 'http://www.w3.org/2007/ont/link#uri': 1,\n 'http://www.w3.org/2007/ont/link#documentURI': 1,\n 'http://www.w3.org/2007/ont/link#document': 1,\n 'http://www.w3.org/2007/ont/link#all': 1, // From userinput.js\n 'http://www.w3.org/2007/ont/link#Document': 1,\n 'http://www.w3.org/ns/rww#editable': 1,\n 'http://www.w3.org/2000/01/rdf-schema#seeAlso': 1,\n 'http://www.w3.org/2002/07/owl#': 1\n },\n\n classes: {\n // Things which are inherently already undercover\n 'http://www.w3.org/2007/ont/link#ProtocolEvent': 1\n }\n}\n\nfunction isProtectedUri (subject: NamedNode): boolean {\n // TODO: Could make the code below smarter by removing some of the redundancy by creating a recursive function, but did not bother now\n const siteUri = subject.site().uri\n return (\n subject.uri === siteUri ||\n subject.uri === siteUri + 'profile/' ||\n subject.uri === siteUri + 'profile/card' ||\n subject.uri === siteUri + 'settings/' ||\n subject.uri === siteUri + 'settings/prefs.ttl' ||\n subject.uri === siteUri + 'settings/privateTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/publicTypeIndex.ttl' ||\n subject.uri === siteUri + 'settings/serverSide.ttl'\n )\n}\n\nexport default pane\n\n// ends\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("./menu2.cjs.js");require("../_virtual/~icons/lucide/user.cjs.js"),require("../components/header/index.cjs.js");let t=require("solid-logic"),n=require("lit-html");async function r(r){let i=document.querySelector(`solid-panes-header`);if(i)return i;let a=document.getElementById(`MainContent`),o=document.createElement(`div`);(0,n.render)(n.html`<solid-panes-header .menuItems=${[{label:n.html`<icon-lucide-user slot="left-icon"></icon-lucide-user> Profile`,onSelected(){let n=t.authn.currentUser();n&&(r.showDashboard(n,{pane:`profile`}),e.setActiveMenuPane(`profile`))}}]}></solid-panes-header>`,o);let s=o.firstElementChild;if(!s)throw Error(`Failed to create header`);return a&&a.parentNode?a.parentNode.insertBefore(s,a):document.body.prepend(s),s}exports.createHeader=r;
1
+ require("../_virtual/_rolldown/runtime.cjs.js"),require("../_virtual/~icons/lucide/user.cjs.js"),require("../_virtual/~icons/lucide/users.cjs.js"),require("../_virtual/~icons/lucide/folder-open.cjs.js"),require("../_virtual/~icons/lucide/layout-dashboard.cjs.js"),require("../_virtual/~icons/lucide/settings-2.cjs.js"),require("../components/header/index.cjs.js");const e=require("../utils/paneUtils.cjs.js");let t=require("solid-logic"),n=require("rdflib"),r=require("lit-html");async function i(i){let a=document.querySelector(`solid-panes-header`);if(a)return a;let o=t.authn.currentUser(),s=document.getElementById(`MainContent`),c=document.getElementById(`OutlineView`),l=document.createElement(`div`);function u(){let e=document.querySelector(`solid-panes-navbar`);e&&e.classList.add(`navbar--hidden`)}let d=(o?await e.getFolderPanesFromURI(o):[]).map(e=>({label:r.html`<icon-lucide-folder-open slot="left-icon"></icon-lucide-folder-open> ${e.label()}`,async onSelected(){u(),o&&i.GotoSubject((0,n.sym)(window.location.href),!0,e,!0,void 0,c,!1)}})),f=[{label:r.html`<icon-lucide-user slot="left-icon"></icon-lucide-user> Profile`,async onSelected(){if(u(),o){let t=await e.getProfilePaneFromURI(o);i.GotoSubject((0,n.sym)(window.location.href),!0,t,!0,void 0,c,!1)}}},{label:r.html`<icon-lucide-users slot="left-icon"></icon-lucide-users> Friends`,async onSelected(){if(u(),o){let t=await e.getSocialPaneFromURI(o);i.GotoSubject((0,n.sym)(window.location.href),!0,t,!0,void 0,c,!1)}}},...d,{label:r.html`<icon-lucide-layout-dashboard slot="left-icon"></icon-lucide-layout-dashboard> Dashboard`,onSelected(){if(u(),o){let e=i.context.session.paneRegistry.byName(`home`);e&&i.GotoSubject((0,n.sym)(window.location.href),!0,e,!0,void 0,c,!1)}}},{label:r.html`<icon-lucide-settings-2 slot="left-icon"></icon-lucide-settings-2> Preferences`,onSelected(){if(u(),o){let e=i.context.session.paneRegistry.byName(`basicPreferences`);e&&i.GotoSubject((0,n.sym)(window.location.href),!0,e,!0,void 0,c,!1)}}}];(0,r.render)(r.html`<solid-panes-header .menuItems=${f}></solid-panes-header>`,l);let p=l.firstElementChild;if(!p)throw Error(`Failed to create header`);return s&&s.parentNode?s.parentNode.insertBefore(p,s):document.body.prepend(p),p}exports.createHeader=i;
2
2
  //# sourceMappingURL=header.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.cjs.js","names":[],"sources":["../../src/mainPage/header.ts"],"sourcesContent":["import { authn } from 'solid-logic'\nimport { html, render } from 'lit-html'\nimport type { AccountMenuItem } from 'solid-ui/components/account'\n\nimport { setActiveMenuPane } from './menu'\nimport type { OutlineManager } from '../outline/manager'\n\nimport '~icons/lucide/user'\nimport '../components/header'\n\nexport async function createHeader (outliner: OutlineManager) {\n const existingHeader = document.querySelector('solid-panes-header')\n\n if (existingHeader) {\n return existingHeader\n }\n\n const main = document.getElementById('MainContent')\n const tmpContainer = document.createElement('div')\n const menuItems: AccountMenuItem[] = [\n {\n label: html`<icon-lucide-user slot=\"left-icon\"></icon-lucide-user> Profile`,\n onSelected () {\n const currentUser = authn.currentUser()\n\n if (currentUser) {\n outliner.showDashboard(currentUser, { pane: 'profile' })\n setActiveMenuPane('profile')\n }\n }\n }\n ]\n\n render(\n html`<solid-panes-header .menuItems=${menuItems}></solid-panes-header>`,\n tmpContainer\n )\n\n const header = tmpContainer.firstElementChild\n\n if (!header) {\n throw new Error('Failed to create header')\n }\n\n // ensure it is in DOM (before MainContent for consistency)\n if (main && main.parentNode) {\n main.parentNode.insertBefore(header, main)\n } else {\n document.body.prepend(header)\n }\n\n return header\n}\n"],"mappings":"mLAUA,eAAsB,EAAc,EAA0B,CAC5D,IAAM,EAAiB,SAAS,cAAc,oBAAoB,EAElE,GAAI,EACF,OAAO,EAGT,IAAM,EAAO,SAAS,eAAe,aAAa,EAC5C,EAAe,SAAS,cAAc,KAAK,GAejD,EAAA,EAAA,OAAA,CACE,EAAA,IAAI,kCAAkC,CAdtC,CACE,MAAO,EAAA,IAAI,iEACX,YAAc,CACZ,IAAM,EAAc,EAAA,MAAM,YAAY,EAElC,IACF,EAAS,cAAc,EAAa,CAAE,KAAM,SAAU,CAAC,EACvD,EAAA,kBAAkB,SAAS,EAE/B,CACF,CAIsC,EAAU,wBAChD,CACF,EAEA,IAAM,EAAS,EAAa,kBAE5B,GAAI,CAAC,EACH,MAAU,MAAM,yBAAyB,EAU3C,OANI,GAAQ,EAAK,WACf,EAAK,WAAW,aAAa,EAAQ,CAAI,EAEzC,SAAS,KAAK,QAAQ,CAAM,EAGvB,CACT"}
1
+ {"version":3,"file":"header.cjs.js","names":[],"sources":["../../src/mainPage/header.ts"],"sourcesContent":["import { authn } from 'solid-logic'\nimport { html, render } from 'lit-html'\nimport type { AccountMenuItem } from 'solid-ui/components/account'\nimport type { OutlineManager } from '../outline/manager'\n\nimport '~icons/lucide/user'\nimport '~icons/lucide/users'\nimport '~icons/lucide/folder-open'\nimport '~icons/lucide/layout-dashboard'\nimport '~icons/lucide/settings-2'\nimport '../components/header'\nimport { getProfilePaneFromURI, getSocialPaneFromURI, getFolderPanesFromURI } from '../utils/paneUtils'\nimport { sym } from 'rdflib'\n\nexport async function createHeader (outliner: OutlineManager) {\n const existingHeader = document.querySelector('solid-panes-header')\n\n if (existingHeader) {\n return existingHeader\n }\n\n const me = authn.currentUser()\n\n const main = document.getElementById('MainContent')\n const outlineView = document.getElementById('OutlineView')\n const tmpContainer = document.createElement('div')\n\n function hideNavbar () {\n const navbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n if (navbar) {\n navbar.classList.add('navbar--hidden')\n }\n }\n\n const storagePanes = me ? await getFolderPanesFromURI(me) : []\n const storageMenuItems: AccountMenuItem[] = storagePanes.map(pane => ({\n label: html`<icon-lucide-folder-open slot=\"left-icon\"></icon-lucide-folder-open> ${pane.label()}`,\n async onSelected () {\n hideNavbar()\n if (me) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }))\n const menuItems: AccountMenuItem[] = [\n {\n label: html`<icon-lucide-user slot=\"left-icon\"></icon-lucide-user> Profile`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const profilePane = await getProfilePaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, profilePane, true, undefined, outlineView, false)\n }\n }\n },\n {\n label: html`<icon-lucide-users slot=\"left-icon\"></icon-lucide-users> Friends`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const socialPane = await getSocialPaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, socialPane, true, undefined, outlineView, false)\n }\n }\n },\n ...storageMenuItems,\n {\n label: html`<icon-lucide-layout-dashboard slot=\"left-icon\"></icon-lucide-layout-dashboard> Dashboard`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('home')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n {\n label: html`<icon-lucide-settings-2 slot=\"left-icon\"></icon-lucide-settings-2> Preferences`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('basicPreferences')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n ]\n\n render(\n html`<solid-panes-header .menuItems=${menuItems}></solid-panes-header>`,\n tmpContainer\n )\n\n const header = tmpContainer.firstElementChild\n\n if (!header) {\n throw new Error('Failed to create header')\n }\n\n // ensure it is in DOM (before MainContent for consistency)\n if (main && main.parentNode) {\n main.parentNode.insertBefore(header, main)\n } else {\n document.body.prepend(header)\n }\n\n return header\n}\n"],"mappings":"geAcA,eAAsB,EAAc,EAA0B,CAC5D,IAAM,EAAiB,SAAS,cAAc,oBAAoB,EAElE,GAAI,EACF,OAAO,EAGT,IAAM,EAAK,EAAA,MAAM,YAAY,EAEvB,EAAO,SAAS,eAAe,aAAa,EAC5C,EAAc,SAAS,eAAe,aAAa,EACnD,EAAe,SAAS,cAAc,KAAK,EAEjD,SAAS,GAAc,CACrB,IAAM,EAAS,SAAS,cAA2B,oBAAoB,EACnE,GACF,EAAO,UAAU,IAAI,gBAAgB,CAEzC,CAGA,IAAM,GADe,EAAK,MAAM,EAAA,sBAAsB,CAAE,EAAI,CAAC,EAAA,CACJ,IAAI,IAAS,CACpE,MAAO,EAAA,IAAI,wEAAwE,EAAK,MAAM,IAC9F,MAAM,YAAc,CAClB,EAAW,EACP,GACF,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAM,GAAM,IAAA,GAAW,EAAa,EAAK,CAEnG,CACF,EAAE,EACI,EAA+B,CACnC,CACE,MAAO,EAAA,IAAI,iEACX,MAAM,YAAc,CAElB,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAc,MAAM,EAAA,sBAAsB,CAAE,EAClD,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAa,GAAM,IAAA,GAAW,EAAa,EAAK,CACxG,CACF,CACF,EACA,CACE,MAAO,EAAA,IAAI,mEACX,MAAM,YAAc,CAElB,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAa,MAAM,EAAA,qBAAqB,CAAE,EAChD,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAY,GAAM,IAAA,GAAW,EAAa,EAAK,CACvG,CACF,CACF,EACA,GAAG,EACH,CACE,MAAO,EAAA,IAAI,2FACX,YAAc,CAEZ,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAO,EAAS,QAAQ,QAAQ,aAAa,OAAO,MAAM,EAC5D,GACF,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAM,GAAM,IAAA,GAAW,EAAa,EAAK,CAEnG,CACF,CACF,EACA,CACE,MAAO,EAAA,IAAI,iFACX,YAAc,CAEZ,GADA,EAAW,EACP,EAAI,CACN,IAAM,EAAO,EAAS,QAAQ,QAAQ,aAAa,OAAO,kBAAkB,EACxE,GACF,EAAS,aAAA,EAAY,EAAA,IAAA,CAAI,OAAO,SAAS,IAAI,EAAG,GAAM,EAAM,GAAM,IAAA,GAAW,EAAa,EAAK,CAEnG,CACF,CACF,CACF,GAEA,EAAA,EAAA,OAAA,CACE,EAAA,IAAI,kCAAkC,EAAU,wBAChD,CACF,EAEA,IAAM,EAAS,EAAa,kBAE5B,GAAI,CAAC,EACH,MAAU,MAAM,yBAAyB,EAU3C,OANI,GAAQ,EAAK,WACf,EAAK,WAAW,aAAa,EAAQ,CAAI,EAEzC,SAAS,KAAK,QAAQ,CAAM,EAGvB,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/mainPage/header.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,oBAAoB,CAAA;AAC3B,OAAO,sBAAsB,CAAA;AAE7B,wBAAsB,YAAY,CAAE,QAAQ,EAAE,cAAc,oBA0C3D"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/mainPage/header.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,oBAAoB,CAAA;AAC3B,OAAO,qBAAqB,CAAA;AAC5B,OAAO,2BAA2B,CAAA;AAClC,OAAO,gCAAgC,CAAA;AACvC,OAAO,0BAA0B,CAAA;AACjC,OAAO,sBAAsB,CAAA;AAI7B,wBAAsB,YAAY,CAAE,QAAQ,EAAE,cAAc,oBAiG3D"}
@@ -1,25 +1,72 @@
1
- import { setActiveMenuPane as e } from "./menu2.esm.js";
2
1
  import "../_virtual/~icons/lucide/user.esm.js";
2
+ import "../_virtual/~icons/lucide/users.esm.js";
3
+ import "../_virtual/~icons/lucide/folder-open.esm.js";
4
+ import "../_virtual/~icons/lucide/layout-dashboard.esm.js";
5
+ import "../_virtual/~icons/lucide/settings-2.esm.js";
3
6
  import "../components/header/index.esm.js";
4
- import { authn as t } from "solid-logic";
5
- import { html as n, render as r } from "lit-html";
7
+ import { getFolderPanesFromURI as e, getProfilePaneFromURI as t, getSocialPaneFromURI as n } from "../utils/paneUtils.esm.js";
8
+ import { authn as r } from "solid-logic";
9
+ import { sym as i } from "rdflib";
10
+ import { html as a, render as o } from "lit-html";
6
11
  //#region src/mainPage/header.ts
7
- async function i(i) {
8
- let a = document.querySelector("solid-panes-header");
9
- if (a) return a;
10
- let o = document.getElementById("MainContent"), s = document.createElement("div");
11
- r(n`<solid-panes-header .menuItems=${[{
12
- label: n`<icon-lucide-user slot="left-icon"></icon-lucide-user> Profile`,
13
- onSelected() {
14
- let n = t.currentUser();
15
- n && (i.showDashboard(n, { pane: "profile" }), e("profile"));
12
+ async function s(s) {
13
+ let c = document.querySelector("solid-panes-header");
14
+ if (c) return c;
15
+ let l = r.currentUser(), u = document.getElementById("MainContent"), d = document.getElementById("OutlineView"), f = document.createElement("div");
16
+ function p() {
17
+ let e = document.querySelector("solid-panes-navbar");
18
+ e && e.classList.add("navbar--hidden");
19
+ }
20
+ let m = (l ? await e(l) : []).map((e) => ({
21
+ label: a`<icon-lucide-folder-open slot="left-icon"></icon-lucide-folder-open> ${e.label()}`,
22
+ async onSelected() {
23
+ p(), l && s.GotoSubject(i(window.location.href), !0, e, !0, void 0, d, !1);
16
24
  }
17
- }]}></solid-panes-header>`, s);
18
- let c = s.firstElementChild;
19
- if (!c) throw Error("Failed to create header");
20
- return o && o.parentNode ? o.parentNode.insertBefore(c, o) : document.body.prepend(c), c;
25
+ })), h = [
26
+ {
27
+ label: a`<icon-lucide-user slot="left-icon"></icon-lucide-user> Profile`,
28
+ async onSelected() {
29
+ if (p(), l) {
30
+ let e = await t(l);
31
+ s.GotoSubject(i(window.location.href), !0, e, !0, void 0, d, !1);
32
+ }
33
+ }
34
+ },
35
+ {
36
+ label: a`<icon-lucide-users slot="left-icon"></icon-lucide-users> Friends`,
37
+ async onSelected() {
38
+ if (p(), l) {
39
+ let e = await n(l);
40
+ s.GotoSubject(i(window.location.href), !0, e, !0, void 0, d, !1);
41
+ }
42
+ }
43
+ },
44
+ ...m,
45
+ {
46
+ label: a`<icon-lucide-layout-dashboard slot="left-icon"></icon-lucide-layout-dashboard> Dashboard`,
47
+ onSelected() {
48
+ if (p(), l) {
49
+ let e = s.context.session.paneRegistry.byName("home");
50
+ e && s.GotoSubject(i(window.location.href), !0, e, !0, void 0, d, !1);
51
+ }
52
+ }
53
+ },
54
+ {
55
+ label: a`<icon-lucide-settings-2 slot="left-icon"></icon-lucide-settings-2> Preferences`,
56
+ onSelected() {
57
+ if (p(), l) {
58
+ let e = s.context.session.paneRegistry.byName("basicPreferences");
59
+ e && s.GotoSubject(i(window.location.href), !0, e, !0, void 0, d, !1);
60
+ }
61
+ }
62
+ }
63
+ ];
64
+ o(a`<solid-panes-header .menuItems=${h}></solid-panes-header>`, f);
65
+ let g = f.firstElementChild;
66
+ if (!g) throw Error("Failed to create header");
67
+ return u && u.parentNode ? u.parentNode.insertBefore(g, u) : document.body.prepend(g), g;
21
68
  }
22
69
  //#endregion
23
- export { i as createHeader };
70
+ export { s as createHeader };
24
71
 
25
72
  //# sourceMappingURL=header.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.esm.js","names":[],"sources":["../../src/mainPage/header.ts"],"sourcesContent":["import { authn } from 'solid-logic'\nimport { html, render } from 'lit-html'\nimport type { AccountMenuItem } from 'solid-ui/components/account'\n\nimport { setActiveMenuPane } from './menu'\nimport type { OutlineManager } from '../outline/manager'\n\nimport '~icons/lucide/user'\nimport '../components/header'\n\nexport async function createHeader (outliner: OutlineManager) {\n const existingHeader = document.querySelector('solid-panes-header')\n\n if (existingHeader) {\n return existingHeader\n }\n\n const main = document.getElementById('MainContent')\n const tmpContainer = document.createElement('div')\n const menuItems: AccountMenuItem[] = [\n {\n label: html`<icon-lucide-user slot=\"left-icon\"></icon-lucide-user> Profile`,\n onSelected () {\n const currentUser = authn.currentUser()\n\n if (currentUser) {\n outliner.showDashboard(currentUser, { pane: 'profile' })\n setActiveMenuPane('profile')\n }\n }\n }\n ]\n\n render(\n html`<solid-panes-header .menuItems=${menuItems}></solid-panes-header>`,\n tmpContainer\n )\n\n const header = tmpContainer.firstElementChild\n\n if (!header) {\n throw new Error('Failed to create header')\n }\n\n // ensure it is in DOM (before MainContent for consistency)\n if (main && main.parentNode) {\n main.parentNode.insertBefore(header, main)\n } else {\n document.body.prepend(header)\n }\n\n return header\n}\n"],"mappings":";;;;;;AAUA,eAAsB,EAAc,GAA0B;CAC5D,IAAM,IAAiB,SAAS,cAAc,oBAAoB;CAElE,IAAI,GACF,OAAO;CAGT,IAAM,IAAO,SAAS,eAAe,aAAa,GAC5C,IAAe,SAAS,cAAc,KAAK;CAejD,EACE,CAAI,kCAAkC,CAdtC;EACE,OAAO,CAAI;EACX,aAAc;GACZ,IAAM,IAAc,EAAM,YAAY;GAEtC,AAAI,MACF,EAAS,cAAc,GAAa,EAAE,MAAM,UAAU,CAAC,GACvD,EAAkB,SAAS;EAE/B;CACF,CAIsC,EAAU,yBAChD,CACF;CAEA,IAAM,IAAS,EAAa;CAE5B,IAAI,CAAC,GACH,MAAU,MAAM,yBAAyB;CAU3C,OANI,KAAQ,EAAK,aACf,EAAK,WAAW,aAAa,GAAQ,CAAI,IAEzC,SAAS,KAAK,QAAQ,CAAM,GAGvB;AACT"}
1
+ {"version":3,"file":"header.esm.js","names":[],"sources":["../../src/mainPage/header.ts"],"sourcesContent":["import { authn } from 'solid-logic'\nimport { html, render } from 'lit-html'\nimport type { AccountMenuItem } from 'solid-ui/components/account'\nimport type { OutlineManager } from '../outline/manager'\n\nimport '~icons/lucide/user'\nimport '~icons/lucide/users'\nimport '~icons/lucide/folder-open'\nimport '~icons/lucide/layout-dashboard'\nimport '~icons/lucide/settings-2'\nimport '../components/header'\nimport { getProfilePaneFromURI, getSocialPaneFromURI, getFolderPanesFromURI } from '../utils/paneUtils'\nimport { sym } from 'rdflib'\n\nexport async function createHeader (outliner: OutlineManager) {\n const existingHeader = document.querySelector('solid-panes-header')\n\n if (existingHeader) {\n return existingHeader\n }\n\n const me = authn.currentUser()\n\n const main = document.getElementById('MainContent')\n const outlineView = document.getElementById('OutlineView')\n const tmpContainer = document.createElement('div')\n\n function hideNavbar () {\n const navbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n if (navbar) {\n navbar.classList.add('navbar--hidden')\n }\n }\n\n const storagePanes = me ? await getFolderPanesFromURI(me) : []\n const storageMenuItems: AccountMenuItem[] = storagePanes.map(pane => ({\n label: html`<icon-lucide-folder-open slot=\"left-icon\"></icon-lucide-folder-open> ${pane.label()}`,\n async onSelected () {\n hideNavbar()\n if (me) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }))\n const menuItems: AccountMenuItem[] = [\n {\n label: html`<icon-lucide-user slot=\"left-icon\"></icon-lucide-user> Profile`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const profilePane = await getProfilePaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, profilePane, true, undefined, outlineView, false)\n }\n }\n },\n {\n label: html`<icon-lucide-users slot=\"left-icon\"></icon-lucide-users> Friends`,\n async onSelected () {\n hideNavbar()\n if (me) {\n const socialPane = await getSocialPaneFromURI(me)\n outliner.GotoSubject(sym(window.location.href), true, socialPane, true, undefined, outlineView, false)\n }\n }\n },\n ...storageMenuItems,\n {\n label: html`<icon-lucide-layout-dashboard slot=\"left-icon\"></icon-lucide-layout-dashboard> Dashboard`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('home')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n {\n label: html`<icon-lucide-settings-2 slot=\"left-icon\"></icon-lucide-settings-2> Preferences`,\n onSelected () {\n hideNavbar()\n if (me) {\n const pane = outliner.context.session.paneRegistry.byName('basicPreferences')\n if (pane) {\n outliner.GotoSubject(sym(window.location.href), true, pane, true, undefined, outlineView, false)\n }\n }\n }\n },\n ]\n\n render(\n html`<solid-panes-header .menuItems=${menuItems}></solid-panes-header>`,\n tmpContainer\n )\n\n const header = tmpContainer.firstElementChild\n\n if (!header) {\n throw new Error('Failed to create header')\n }\n\n // ensure it is in DOM (before MainContent for consistency)\n if (main && main.parentNode) {\n main.parentNode.insertBefore(header, main)\n } else {\n document.body.prepend(header)\n }\n\n return header\n}\n"],"mappings":";;;;;;;;;;;AAcA,eAAsB,EAAc,GAA0B;CAC5D,IAAM,IAAiB,SAAS,cAAc,oBAAoB;CAElE,IAAI,GACF,OAAO;CAGT,IAAM,IAAK,EAAM,YAAY,GAEvB,IAAO,SAAS,eAAe,aAAa,GAC5C,IAAc,SAAS,eAAe,aAAa,GACnD,IAAe,SAAS,cAAc,KAAK;CAEjD,SAAS,IAAc;EACrB,IAAM,IAAS,SAAS,cAA2B,oBAAoB;EACvE,AAAI,KACF,EAAO,UAAU,IAAI,gBAAgB;CAEzC;CAGA,IAAM,KADe,IAAK,MAAM,EAAsB,CAAE,IAAI,CAAC,EAAA,CACJ,KAAI,OAAS;EACpE,OAAO,CAAI,wEAAwE,EAAK,MAAM;EAC9F,MAAM,aAAc;GAElB,AADA,EAAW,GACP,KACF,EAAS,YAAY,EAAI,OAAO,SAAS,IAAI,GAAG,IAAM,GAAM,IAAM,KAAA,GAAW,GAAa,EAAK;EAEnG;CACF,EAAE,GACI,IAA+B;EACnC;GACE,OAAO,CAAI;GACX,MAAM,aAAc;IAElB,IADA,EAAW,GACP,GAAI;KACN,IAAM,IAAc,MAAM,EAAsB,CAAE;KAClD,EAAS,YAAY,EAAI,OAAO,SAAS,IAAI,GAAG,IAAM,GAAa,IAAM,KAAA,GAAW,GAAa,EAAK;IACxG;GACF;EACF;EACA;GACE,OAAO,CAAI;GACX,MAAM,aAAc;IAElB,IADA,EAAW,GACP,GAAI;KACN,IAAM,IAAa,MAAM,EAAqB,CAAE;KAChD,EAAS,YAAY,EAAI,OAAO,SAAS,IAAI,GAAG,IAAM,GAAY,IAAM,KAAA,GAAW,GAAa,EAAK;IACvG;GACF;EACF;EACA,GAAG;EACH;GACE,OAAO,CAAI;GACX,aAAc;IAEZ,IADA,EAAW,GACP,GAAI;KACN,IAAM,IAAO,EAAS,QAAQ,QAAQ,aAAa,OAAO,MAAM;KAChE,AAAI,KACF,EAAS,YAAY,EAAI,OAAO,SAAS,IAAI,GAAG,IAAM,GAAM,IAAM,KAAA,GAAW,GAAa,EAAK;IAEnG;GACF;EACF;EACA;GACE,OAAO,CAAI;GACX,aAAc;IAEZ,IADA,EAAW,GACP,GAAI;KACN,IAAM,IAAO,EAAS,QAAQ,QAAQ,aAAa,OAAO,kBAAkB;KAC5E,AAAI,KACF,EAAS,YAAY,EAAI,OAAO,SAAS,IAAI,GAAG,IAAM,GAAM,IAAM,KAAA,GAAW,GAAa,EAAK;IAEnG;GACF;EACF;CACF;CAEA,EACE,CAAI,kCAAkC,EAAU,yBAChD,CACF;CAEA,IAAM,IAAS,EAAa;CAE5B,IAAI,CAAC,GACH,MAAU,MAAM,yBAAyB;CAU3C,OANI,KAAQ,EAAK,aACf,EAAK,WAAW,aAAa,GAAQ,CAAI,IAEzC,SAAS,KAAK,QAAQ,CAAM,GAGvB;AACT"}
@@ -1,2 +1,2 @@
1
- const e=require("./menu2.cjs.js"),t=require("./header.cjs.js"),n=require("./footer.cjs.js"),r=require("../index.cjs.js");var i=`__lastRenderEnvSignature`;function a(e){return e?[e.layout,e.theme,e.inputMode].join(`|`):``}function o(){let e=document.getElementById(`MainContent`);return e||(e=document.createElement(`main`),e.id=`MainContent`,e.setAttribute(`role`,`main`),e.setAttribute(`tabindex`,`-1`),e.setAttribute(`aria-live`,`polite`),document.body.appendChild(e)),e}async function s(s,c,l){o();let u=r.getOutliner(document,l);u[i]=a(l),c||=window.location.href;let d=typeof c==`string`?s.sym(c):c;u.GotoSubject(d,!0,void 0,!0,void 0);let f=await t.createHeader(u),p=e.createLeftSideMenu(d,u),m=p.then(()=>n.createFooter(s));return Promise.all([f,p,m])}async function c(t){let n=t?.context?.session?.store,r=t?.context?.session?.paneRegistry,o=window.document.location.href,s=window.history.state?.paneName,c=s?r?.byName?.(s):void 0,l=a(t?.context?.environment);l!==(t?.[i]??``)&&n&&typeof t?.GotoSubject==`function`&&(t.GotoSubject(n.sym(o),!0,c,!0,void 0),t[i]=l),e.refreshMenu(t.context.environment?.layout===`mobile`?`mobile`:`desktop`)}exports.initMainPage=s,exports.refreshUI=c;
1
+ const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../utils/webIdUtils.cjs.js"),n=require("../utils/paneUtils.cjs.js"),r=require("./header.cjs.js"),i=require("./navbar.cjs.js"),a=require("../index.cjs.js");let o=require("pane-registry");o=e.__toESM(o);var s=`__lastRenderEnvSignature`;function c(e){return e?[e.layout,e.theme,e.inputMode].join(`|`):``}function l(){let e=document.getElementById(`MainContent`);return e||(e=document.createElement(`main`),e.id=`MainContent`,e.setAttribute(`role`,`main`),e.setAttribute(`tabindex`,`-1`),e.setAttribute(`aria-live`,`polite`),document.body.appendChild(e)),e}async function u(e,u,d){l();let f=a.getOutliner(document,d);f[s]=c(d),u||=window.location.href;let p=typeof u==`string`?e.sym(u):u,m=window.history.state?.paneName,h=(m?o.byName(m):void 0)??(!m&&t.isWebIdUri(p)?await n.getProfilePaneFromURI(p):void 0);f.GotoSubject(p,!0,h,!0,void 0,void 0,!0,!1);let g=await r.createHeader(f),_=await i.createNavbar(f);return Promise.all([g,_])}async function d(e){let t=e?.context?.session?.store,n=e?.context?.session?.paneRegistry,r=window.document.location.href,i=window.history.state?.paneName,a=i?n?.byName?.(i):void 0,o=c(e?.context?.environment);o!==(e?.[s]??``)&&t&&typeof e?.GotoSubject==`function`&&(e.GotoSubject(t.sym(r),!0,a,!0,void 0,void 0,!0,!1),e[s]=o)}exports.initMainPage=u,exports.refreshUI=d;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":[],"sources":["../../src/mainPage/index.ts"],"sourcesContent":["/* Main Page\n **\n ** This code is called in mashlib and renders the header and footer of the Databrowser.\n */\n\nimport { LiveStore, NamedNode } from 'rdflib'\nimport type { RenderEnvironment } from 'pane-registry'\nimport { getOutliner, OutlineManager } from '../index'\nimport { createHeader } from './header'\nimport { createFooter } from './footer'\nimport { createLeftSideMenu, refreshMenu } from './menu'\n\n// Symbol used to stash the last render-relevant env snapshot on the outliner\n// so refreshUI can skip a full GotoSubject re-render when nothing changed.\nconst LAST_RENDER_ENV_KEY = '__lastRenderEnvSignature'\n\nfunction renderEnvSignature (env?: RenderEnvironment): string {\n if (!env) return ''\n return [env.layout, env.theme, env.inputMode].join('|')\n}\n\nexport { refreshMenu as updateMenuLayout } from './menu'\n\nfunction ensureMainContent () {\n let main = document.getElementById('MainContent') as HTMLElement | null\n if (!main) {\n main = document.createElement('main')\n main.id = 'MainContent'\n main.setAttribute('role', 'main')\n main.setAttribute('tabindex', '-1')\n main.setAttribute('aria-live', 'polite')\n document.body.appendChild(main)\n }\n return main\n}\n\nexport async function initMainPage (\n store: LiveStore,\n uri?: string | NamedNode | null,\n environment?: RenderEnvironment\n) {\n ensureMainContent()\n const outliner = getOutliner(document, environment)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = renderEnvSignature(environment)\n uri = uri || window.location.href\n const subject: NamedNode = typeof uri === 'string' ? store.sym(uri) : uri\n outliner.GotoSubject(subject, true, undefined, true, undefined)\n\n const header = await createHeader(outliner)\n const menu = createLeftSideMenu(subject, outliner)\n const footer = menu.then(() => createFooter(store))\n return Promise.all([header, menu, footer])\n}\n\nexport async function refreshUI (outliner: OutlineManager) {\n const store = outliner?.context?.session?.store\n const paneRegistry = outliner?.context?.session?.paneRegistry\n const subjectUri = window.document.location.href\n const paneName = window.history.state?.paneName\n const pane = paneName ? paneRegistry?.byName?.(paneName) : undefined\n\n // Only re-run GotoSubject (full pane re-render) when render-relevant\n // environment fields actually changed since the last render.\n const currentSignature = renderEnvSignature(outliner?.context?.environment)\n const previousSignature = (outliner as any)?.[LAST_RENDER_ENV_KEY] ?? ''\n const envChanged = currentSignature !== previousSignature\n\n if (envChanged && store && typeof outliner?.GotoSubject === 'function') {\n outliner.GotoSubject(store.sym(subjectUri), true, pane, true, undefined)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = currentSignature\n }\n\n refreshMenu(outliner.context.environment?.layout === 'mobile' ? 'mobile' : 'desktop')\n}\n"],"mappings":"yHAcA,IAAM,EAAsB,2BAE5B,SAAS,EAAoB,EAAiC,CAE5D,OADK,EACE,CAAC,EAAI,OAAQ,EAAI,MAAO,EAAI,SAAS,CAAC,CAAC,KAAK,GAAG,EADrC,EAEnB,CAIA,SAAS,GAAqB,CAC5B,IAAI,EAAO,SAAS,eAAe,aAAa,EAShD,OARK,IACH,EAAO,SAAS,cAAc,MAAM,EACpC,EAAK,GAAK,cACV,EAAK,aAAa,OAAQ,MAAM,EAChC,EAAK,aAAa,WAAY,IAAI,EAClC,EAAK,aAAa,YAAa,QAAQ,EACvC,SAAS,KAAK,YAAY,CAAI,GAEzB,CACT,CAEA,eAAsB,EACpB,EACA,EACA,EACA,CACA,EAAkB,EAClB,IAAM,EAAW,EAAA,YAAY,SAAU,CAAW,EACjD,EAAkB,GAAuB,EAAmB,CAAW,EACxE,IAAa,OAAO,SAAS,KAC7B,IAAM,EAAqB,OAAO,GAAQ,SAAW,EAAM,IAAI,CAAG,EAAI,EACtE,EAAS,YAAY,EAAS,GAAM,IAAA,GAAW,GAAM,IAAA,EAAS,EAE9D,IAAM,EAAS,MAAM,EAAA,aAAa,CAAQ,EACpC,EAAO,EAAA,mBAAmB,EAAS,CAAQ,EAC3C,EAAS,EAAK,SAAW,EAAA,aAAa,CAAK,CAAC,EAClD,OAAO,QAAQ,IAAI,CAAC,EAAQ,EAAM,CAAM,CAAC,CAC3C,CAEA,eAAsB,EAAW,EAA0B,CACzD,IAAM,EAAQ,GAAU,SAAS,SAAS,MACpC,EAAe,GAAU,SAAS,SAAS,aAC3C,EAAa,OAAO,SAAS,SAAS,KACtC,EAAW,OAAO,QAAQ,OAAO,SACjC,EAAO,EAAW,GAAc,SAAS,CAAQ,EAAI,IAAA,GAIrD,EAAmB,EAAmB,GAAU,SAAS,WAAW,EAEvD,KADQ,IAAmB,IAAwB,KAGpD,GAAS,OAAO,GAAU,aAAgB,aAC1D,EAAS,YAAY,EAAM,IAAI,CAAU,EAAG,GAAM,EAAM,GAAM,IAAA,EAAS,EACtE,EAAkB,GAAuB,GAG5C,EAAA,YAAY,EAAS,QAAQ,aAAa,SAAW,SAAW,SAAW,SAAS,CACtF"}
1
+ {"version":3,"file":"index.cjs.js","names":[],"sources":["../../src/mainPage/index.ts"],"sourcesContent":["/* Main Page\n **\n ** This code is called in mashlib and renders the header and left side menu of the Databrowser.\n */\n\nimport { LiveStore, NamedNode } from 'rdflib'\nimport type { RenderEnvironment } from 'pane-registry'\nimport * as paneRegistry from 'pane-registry'\nimport { getOutliner, OutlineManager } from '../index'\nimport { createHeader } from './header'\nimport { createNavbar } from './navbar'\nimport { getProfilePaneFromURI } from '../utils/paneUtils'\nimport { isWebIdUri } from '../utils/webIdUtils'\n\n// Symbol used to stash the last render-relevant env snapshot on the outliner\n// so refreshUI can skip a full GotoSubject re-render when nothing changed.\nconst LAST_RENDER_ENV_KEY = '__lastRenderEnvSignature'\n\nfunction renderEnvSignature (env?: RenderEnvironment): string {\n if (!env) return ''\n return [env.layout, env.theme, env.inputMode].join('|')\n}\n\nfunction ensureMainContent () {\n let main = document.getElementById('MainContent') as HTMLElement | null\n if (!main) {\n main = document.createElement('main')\n main.id = 'MainContent'\n main.setAttribute('role', 'main')\n main.setAttribute('tabindex', '-1')\n main.setAttribute('aria-live', 'polite')\n document.body.appendChild(main)\n }\n return main\n}\n\nexport async function initMainPage (\n store: LiveStore,\n uri?: string | NamedNode | null,\n environment?: RenderEnvironment\n) {\n ensureMainContent()\n const outliner = getOutliner(document, environment)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = renderEnvSignature(environment)\n uri = uri || window.location.href\n const subject: NamedNode = typeof uri === 'string' ? store.sym(uri) : uri\n const historyPaneName = window.history.state?.paneName\n const historyPane = historyPaneName\n ? paneRegistry.byName(historyPaneName)\n : undefined\n const initialPane = historyPane ??\n (!historyPaneName && isWebIdUri(subject)\n ? await getProfilePaneFromURI(subject)\n : undefined)\n\n outliner.GotoSubject(subject, true, initialPane, true, undefined, undefined, true, false)\n\n const header = await createHeader(outliner)\n const navbar = await createNavbar(outliner)\n return Promise.all([header, navbar])\n}\n\nexport async function refreshUI (outliner: OutlineManager) {\n const store = outliner?.context?.session?.store\n const paneRegistry = outliner?.context?.session?.paneRegistry\n const subjectUri = window.document.location.href\n const paneName = window.history.state?.paneName\n const pane = paneName ? paneRegistry?.byName?.(paneName) : undefined\n\n // Only re-run GotoSubject (full pane re-render) when render-relevant\n // environment fields actually changed since the last render.\n const currentSignature = renderEnvSignature(outliner?.context?.environment)\n const previousSignature = (outliner as any)?.[LAST_RENDER_ENV_KEY] ?? ''\n const envChanged = currentSignature !== previousSignature\n\n if (envChanged && store && typeof outliner?.GotoSubject === 'function') {\n outliner.GotoSubject(store.sym(subjectUri), true, pane, true, undefined, undefined, true, false)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = currentSignature\n }\n}\n"],"mappings":"4QAgBA,IAAM,EAAsB,2BAE5B,SAAS,EAAoB,EAAiC,CAE5D,OADK,EACE,CAAC,EAAI,OAAQ,EAAI,MAAO,EAAI,SAAS,CAAC,CAAC,KAAK,GAAG,EADrC,EAEnB,CAEA,SAAS,GAAqB,CAC5B,IAAI,EAAO,SAAS,eAAe,aAAa,EAShD,OARK,IACH,EAAO,SAAS,cAAc,MAAM,EACpC,EAAK,GAAK,cACV,EAAK,aAAa,OAAQ,MAAM,EAChC,EAAK,aAAa,WAAY,IAAI,EAClC,EAAK,aAAa,YAAa,QAAQ,EACvC,SAAS,KAAK,YAAY,CAAI,GAEzB,CACT,CAEA,eAAsB,EACpB,EACA,EACA,EACA,CACA,EAAkB,EAClB,IAAM,EAAW,EAAA,YAAY,SAAU,CAAW,EACjD,EAAkB,GAAuB,EAAmB,CAAW,EACxE,IAAa,OAAO,SAAS,KAC7B,IAAM,EAAqB,OAAO,GAAQ,SAAW,EAAM,IAAI,CAAG,EAAI,EAChE,EAAkB,OAAO,QAAQ,OAAO,SAIxC,GAHc,EAChB,EAAa,OAAO,CAAe,EACnC,IAAA,MAED,CAAC,GAAmB,EAAA,WAAW,CAAO,EACnC,MAAM,EAAA,sBAAsB,CAAO,EACnC,IAAA,IAEN,EAAS,YAAY,EAAS,GAAM,EAAa,GAAM,IAAA,GAAW,IAAA,GAAW,GAAM,EAAK,EAExF,IAAM,EAAS,MAAM,EAAA,aAAa,CAAQ,EACpC,EAAS,MAAM,EAAA,aAAa,CAAQ,EAC1C,OAAO,QAAQ,IAAI,CAAC,EAAQ,CAAM,CAAC,CACrC,CAEA,eAAsB,EAAW,EAA0B,CACzD,IAAM,EAAQ,GAAU,SAAS,SAAS,MACpC,EAAe,GAAU,SAAS,SAAS,aAC3C,EAAa,OAAO,SAAS,SAAS,KACtC,EAAW,OAAO,QAAQ,OAAO,SACjC,EAAO,EAAW,GAAc,SAAS,CAAQ,EAAI,IAAA,GAIrD,EAAmB,EAAmB,GAAU,SAAS,WAAW,EAEvD,KADQ,IAAmB,IAAwB,KAGpD,GAAS,OAAO,GAAU,aAAgB,aAC1D,EAAS,YAAY,EAAM,IAAI,CAAU,EAAG,GAAM,EAAM,GAAM,IAAA,GAAW,IAAA,GAAW,GAAM,EAAK,EAC9F,EAAkB,GAAuB,EAE9C"}
@@ -1,14 +1,6 @@
1
1
  import { LiveStore, NamedNode } from '../../node_modules/rdflib';
2
2
  import { RenderEnvironment } from '../../node_modules/pane-registry';
3
3
  import { OutlineManager } from '../index';
4
- export { refreshMenu as updateMenuLayout } from './menu';
5
- export declare function initMainPage(store: LiveStore, uri?: string | NamedNode | null, environment?: RenderEnvironment): Promise<[Element, void, HTMLElement & {
6
- store?: LiveStore | null;
7
- position?: "static" | "absolute" | "relative" | "fixed" | "sticky";
8
- top?: string;
9
- right?: string;
10
- bottom?: string;
11
- left?: string;
12
- }]>;
4
+ export declare function initMainPage(store: LiveStore, uri?: string | NamedNode | null, environment?: RenderEnvironment): Promise<[Element, HTMLElement]>;
13
5
  export declare function refreshUI(outliner: OutlineManager): Promise<void>;
14
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mainPage/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAe,cAAc,EAAE,MAAM,UAAU,CAAA;AActD,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAexD,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC/B,WAAW,CAAC,EAAE,iBAAiB;;;;;;;IAahC;AAED,wBAAsB,SAAS,CAAE,QAAQ,EAAE,cAAc,iBAmBxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mainPage/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAe,cAAc,EAAE,MAAM,UAAU,CAAA;AA4BtD,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC/B,WAAW,CAAC,EAAE,iBAAiB,mCAqBhC;AAED,wBAAsB,SAAS,CAAE,QAAQ,EAAE,cAAc,iBAiBxD"}
@@ -1,38 +1,36 @@
1
- import { createLeftSideMenu as e, refreshMenu as t } from "./menu2.esm.js";
1
+ import { isWebIdUri as e } from "../utils/webIdUtils.esm.js";
2
+ import { getProfilePaneFromURI as t } from "../utils/paneUtils.esm.js";
2
3
  import { createHeader as n } from "./header.esm.js";
3
- import { createFooter as r } from "./footer.esm.js";
4
+ import { createNavbar as r } from "./navbar.esm.js";
4
5
  import { getOutliner as i } from "../index.esm.js";
6
+ import * as a from "pane-registry";
5
7
  //#region src/mainPage/index.ts
6
- var a = "__lastRenderEnvSignature";
7
- function o(e) {
8
+ var o = "__lastRenderEnvSignature";
9
+ function s(e) {
8
10
  return e ? [
9
11
  e.layout,
10
12
  e.theme,
11
13
  e.inputMode
12
14
  ].join("|") : "";
13
15
  }
14
- function s() {
16
+ function c() {
15
17
  let e = document.getElementById("MainContent");
16
18
  return e || (e = document.createElement("main"), e.id = "MainContent", e.setAttribute("role", "main"), e.setAttribute("tabindex", "-1"), e.setAttribute("aria-live", "polite"), document.body.appendChild(e)), e;
17
19
  }
18
- async function c(t, c, l) {
19
- s();
20
- let u = i(document, l);
21
- u[a] = o(l), c ||= window.location.href;
22
- let d = typeof c == "string" ? t.sym(c) : c;
23
- u.GotoSubject(d, !0, void 0, !0, void 0);
24
- let f = await n(u), p = e(d, u), m = p.then(() => r(t));
25
- return Promise.all([
26
- f,
27
- p,
28
- m
29
- ]);
20
+ async function l(l, u, d) {
21
+ c();
22
+ let f = i(document, d);
23
+ f[o] = s(d), u ||= window.location.href;
24
+ let p = typeof u == "string" ? l.sym(u) : u, m = window.history.state?.paneName, h = (m ? a.byName(m) : void 0) ?? (!m && e(p) ? await t(p) : void 0);
25
+ f.GotoSubject(p, !0, h, !0, void 0, void 0, !0, !1);
26
+ let g = await n(f), _ = await r(f);
27
+ return Promise.all([g, _]);
30
28
  }
31
- async function l(e) {
32
- let n = e?.context?.session?.store, r = e?.context?.session?.paneRegistry, i = window.document.location.href, s = window.history.state?.paneName, c = s ? r?.byName?.(s) : void 0, l = o(e?.context?.environment);
33
- l !== (e?.[a] ?? "") && n && typeof e?.GotoSubject == "function" && (e.GotoSubject(n.sym(i), !0, c, !0, void 0), e[a] = l), t(e.context.environment?.layout === "mobile" ? "mobile" : "desktop");
29
+ async function u(e) {
30
+ let t = e?.context?.session?.store, n = e?.context?.session?.paneRegistry, r = window.document.location.href, i = window.history.state?.paneName, a = i ? n?.byName?.(i) : void 0, c = s(e?.context?.environment);
31
+ c !== (e?.[o] ?? "") && t && typeof e?.GotoSubject == "function" && (e.GotoSubject(t.sym(r), !0, a, !0, void 0, void 0, !0, !1), e[o] = c);
34
32
  }
35
33
  //#endregion
36
- export { c as initMainPage, l as refreshUI };
34
+ export { l as initMainPage, u as refreshUI };
37
35
 
38
36
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","names":[],"sources":["../../src/mainPage/index.ts"],"sourcesContent":["/* Main Page\n **\n ** This code is called in mashlib and renders the header and footer of the Databrowser.\n */\n\nimport { LiveStore, NamedNode } from 'rdflib'\nimport type { RenderEnvironment } from 'pane-registry'\nimport { getOutliner, OutlineManager } from '../index'\nimport { createHeader } from './header'\nimport { createFooter } from './footer'\nimport { createLeftSideMenu, refreshMenu } from './menu'\n\n// Symbol used to stash the last render-relevant env snapshot on the outliner\n// so refreshUI can skip a full GotoSubject re-render when nothing changed.\nconst LAST_RENDER_ENV_KEY = '__lastRenderEnvSignature'\n\nfunction renderEnvSignature (env?: RenderEnvironment): string {\n if (!env) return ''\n return [env.layout, env.theme, env.inputMode].join('|')\n}\n\nexport { refreshMenu as updateMenuLayout } from './menu'\n\nfunction ensureMainContent () {\n let main = document.getElementById('MainContent') as HTMLElement | null\n if (!main) {\n main = document.createElement('main')\n main.id = 'MainContent'\n main.setAttribute('role', 'main')\n main.setAttribute('tabindex', '-1')\n main.setAttribute('aria-live', 'polite')\n document.body.appendChild(main)\n }\n return main\n}\n\nexport async function initMainPage (\n store: LiveStore,\n uri?: string | NamedNode | null,\n environment?: RenderEnvironment\n) {\n ensureMainContent()\n const outliner = getOutliner(document, environment)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = renderEnvSignature(environment)\n uri = uri || window.location.href\n const subject: NamedNode = typeof uri === 'string' ? store.sym(uri) : uri\n outliner.GotoSubject(subject, true, undefined, true, undefined)\n\n const header = await createHeader(outliner)\n const menu = createLeftSideMenu(subject, outliner)\n const footer = menu.then(() => createFooter(store))\n return Promise.all([header, menu, footer])\n}\n\nexport async function refreshUI (outliner: OutlineManager) {\n const store = outliner?.context?.session?.store\n const paneRegistry = outliner?.context?.session?.paneRegistry\n const subjectUri = window.document.location.href\n const paneName = window.history.state?.paneName\n const pane = paneName ? paneRegistry?.byName?.(paneName) : undefined\n\n // Only re-run GotoSubject (full pane re-render) when render-relevant\n // environment fields actually changed since the last render.\n const currentSignature = renderEnvSignature(outliner?.context?.environment)\n const previousSignature = (outliner as any)?.[LAST_RENDER_ENV_KEY] ?? ''\n const envChanged = currentSignature !== previousSignature\n\n if (envChanged && store && typeof outliner?.GotoSubject === 'function') {\n outliner.GotoSubject(store.sym(subjectUri), true, pane, true, undefined)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = currentSignature\n }\n\n refreshMenu(outliner.context.environment?.layout === 'mobile' ? 'mobile' : 'desktop')\n}\n"],"mappings":";;;;;AAcA,IAAM,IAAsB;AAE5B,SAAS,EAAoB,GAAiC;CAE5D,OADK,IACE;EAAC,EAAI;EAAQ,EAAI;EAAO,EAAI;CAAS,CAAC,CAAC,KAAK,GAAG,IADrC;AAEnB;AAIA,SAAS,IAAqB;CAC5B,IAAI,IAAO,SAAS,eAAe,aAAa;CAShD,OARK,MACH,IAAO,SAAS,cAAc,MAAM,GACpC,EAAK,KAAK,eACV,EAAK,aAAa,QAAQ,MAAM,GAChC,EAAK,aAAa,YAAY,IAAI,GAClC,EAAK,aAAa,aAAa,QAAQ,GACvC,SAAS,KAAK,YAAY,CAAI,IAEzB;AACT;AAEA,eAAsB,EACpB,GACA,GACA,GACA;CACA,EAAkB;CAClB,IAAM,IAAW,EAAY,UAAU,CAAW;CAElD,AADC,EAAkB,KAAuB,EAAmB,CAAW,GACxE,MAAa,OAAO,SAAS;CAC7B,IAAM,IAAqB,OAAO,KAAQ,WAAW,EAAM,IAAI,CAAG,IAAI;CACtE,EAAS,YAAY,GAAS,IAAM,KAAA,GAAW,IAAM,KAAA,CAAS;CAE9D,IAAM,IAAS,MAAM,EAAa,CAAQ,GACpC,IAAO,EAAmB,GAAS,CAAQ,GAC3C,IAAS,EAAK,WAAW,EAAa,CAAK,CAAC;CAClD,OAAO,QAAQ,IAAI;EAAC;EAAQ;EAAM;CAAM,CAAC;AAC3C;AAEA,eAAsB,EAAW,GAA0B;CACzD,IAAM,IAAQ,GAAU,SAAS,SAAS,OACpC,IAAe,GAAU,SAAS,SAAS,cAC3C,IAAa,OAAO,SAAS,SAAS,MACtC,IAAW,OAAO,QAAQ,OAAO,UACjC,IAAO,IAAW,GAAc,SAAS,CAAQ,IAAI,KAAA,GAIrD,IAAmB,EAAmB,GAAU,SAAS,WAAW;CAS1E,AAPmB,OADQ,IAAmB,MAAwB,OAGpD,KAAS,OAAO,GAAU,eAAgB,eAC1D,EAAS,YAAY,EAAM,IAAI,CAAU,GAAG,IAAM,GAAM,IAAM,KAAA,CAAS,GACtE,EAAkB,KAAuB,IAG5C,EAAY,EAAS,QAAQ,aAAa,WAAW,WAAW,WAAW,SAAS;AACtF"}
1
+ {"version":3,"file":"index.esm.js","names":[],"sources":["../../src/mainPage/index.ts"],"sourcesContent":["/* Main Page\n **\n ** This code is called in mashlib and renders the header and left side menu of the Databrowser.\n */\n\nimport { LiveStore, NamedNode } from 'rdflib'\nimport type { RenderEnvironment } from 'pane-registry'\nimport * as paneRegistry from 'pane-registry'\nimport { getOutliner, OutlineManager } from '../index'\nimport { createHeader } from './header'\nimport { createNavbar } from './navbar'\nimport { getProfilePaneFromURI } from '../utils/paneUtils'\nimport { isWebIdUri } from '../utils/webIdUtils'\n\n// Symbol used to stash the last render-relevant env snapshot on the outliner\n// so refreshUI can skip a full GotoSubject re-render when nothing changed.\nconst LAST_RENDER_ENV_KEY = '__lastRenderEnvSignature'\n\nfunction renderEnvSignature (env?: RenderEnvironment): string {\n if (!env) return ''\n return [env.layout, env.theme, env.inputMode].join('|')\n}\n\nfunction ensureMainContent () {\n let main = document.getElementById('MainContent') as HTMLElement | null\n if (!main) {\n main = document.createElement('main')\n main.id = 'MainContent'\n main.setAttribute('role', 'main')\n main.setAttribute('tabindex', '-1')\n main.setAttribute('aria-live', 'polite')\n document.body.appendChild(main)\n }\n return main\n}\n\nexport async function initMainPage (\n store: LiveStore,\n uri?: string | NamedNode | null,\n environment?: RenderEnvironment\n) {\n ensureMainContent()\n const outliner = getOutliner(document, environment)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = renderEnvSignature(environment)\n uri = uri || window.location.href\n const subject: NamedNode = typeof uri === 'string' ? store.sym(uri) : uri\n const historyPaneName = window.history.state?.paneName\n const historyPane = historyPaneName\n ? paneRegistry.byName(historyPaneName)\n : undefined\n const initialPane = historyPane ??\n (!historyPaneName && isWebIdUri(subject)\n ? await getProfilePaneFromURI(subject)\n : undefined)\n\n outliner.GotoSubject(subject, true, initialPane, true, undefined, undefined, true, false)\n\n const header = await createHeader(outliner)\n const navbar = await createNavbar(outliner)\n return Promise.all([header, navbar])\n}\n\nexport async function refreshUI (outliner: OutlineManager) {\n const store = outliner?.context?.session?.store\n const paneRegistry = outliner?.context?.session?.paneRegistry\n const subjectUri = window.document.location.href\n const paneName = window.history.state?.paneName\n const pane = paneName ? paneRegistry?.byName?.(paneName) : undefined\n\n // Only re-run GotoSubject (full pane re-render) when render-relevant\n // environment fields actually changed since the last render.\n const currentSignature = renderEnvSignature(outliner?.context?.environment)\n const previousSignature = (outliner as any)?.[LAST_RENDER_ENV_KEY] ?? ''\n const envChanged = currentSignature !== previousSignature\n\n if (envChanged && store && typeof outliner?.GotoSubject === 'function') {\n outliner.GotoSubject(store.sym(subjectUri), true, pane, true, undefined, undefined, true, false)\n ;(outliner as any)[LAST_RENDER_ENV_KEY] = currentSignature\n }\n}\n"],"mappings":";;;;;;;AAgBA,IAAM,IAAsB;AAE5B,SAAS,EAAoB,GAAiC;CAE5D,OADK,IACE;EAAC,EAAI;EAAQ,EAAI;EAAO,EAAI;CAAS,CAAC,CAAC,KAAK,GAAG,IADrC;AAEnB;AAEA,SAAS,IAAqB;CAC5B,IAAI,IAAO,SAAS,eAAe,aAAa;CAShD,OARK,MACH,IAAO,SAAS,cAAc,MAAM,GACpC,EAAK,KAAK,eACV,EAAK,aAAa,QAAQ,MAAM,GAChC,EAAK,aAAa,YAAY,IAAI,GAClC,EAAK,aAAa,aAAa,QAAQ,GACvC,SAAS,KAAK,YAAY,CAAI,IAEzB;AACT;AAEA,eAAsB,EACpB,GACA,GACA,GACA;CACA,EAAkB;CAClB,IAAM,IAAW,EAAY,UAAU,CAAW;CAElD,AADC,EAAkB,KAAuB,EAAmB,CAAW,GACxE,MAAa,OAAO,SAAS;CAC7B,IAAM,IAAqB,OAAO,KAAQ,WAAW,EAAM,IAAI,CAAG,IAAI,GAChE,IAAkB,OAAO,QAAQ,OAAO,UAIxC,KAHc,IAChB,EAAa,OAAO,CAAe,IACnC,KAAA,OAED,CAAC,KAAmB,EAAW,CAAO,IACnC,MAAM,EAAsB,CAAO,IACnC,KAAA;CAEN,EAAS,YAAY,GAAS,IAAM,GAAa,IAAM,KAAA,GAAW,KAAA,GAAW,IAAM,EAAK;CAExF,IAAM,IAAS,MAAM,EAAa,CAAQ,GACpC,IAAS,MAAM,EAAa,CAAQ;CAC1C,OAAO,QAAQ,IAAI,CAAC,GAAQ,CAAM,CAAC;AACrC;AAEA,eAAsB,EAAW,GAA0B;CACzD,IAAM,IAAQ,GAAU,SAAS,SAAS,OACpC,IAAe,GAAU,SAAS,SAAS,cAC3C,IAAa,OAAO,SAAS,SAAS,MACtC,IAAW,OAAO,QAAQ,OAAO,UACjC,IAAO,IAAW,GAAc,SAAS,CAAQ,IAAI,KAAA,GAIrD,IAAmB,EAAmB,GAAU,SAAS,WAAW;CAI1E,AAFmB,OADQ,IAAmB,MAAwB,OAGpD,KAAS,OAAO,GAAU,eAAgB,eAC1D,EAAS,YAAY,EAAM,IAAI,CAAU,GAAG,IAAM,GAAM,IAAM,KAAA,GAAW,KAAA,GAAW,IAAM,EAAK,GAC9F,EAAkB,KAAuB;AAE9C"}
@@ -0,0 +1,2 @@
1
+ const e=require("../utils/webIdUtils.cjs.js");require("../_virtual/~icons/lucide/user.cjs.js"),require("../_virtual/~icons/lucide/users.cjs.js"),require("../_virtual/~icons/lucide/folder-open.cjs.js");const t=require("../utils/paneUtils.cjs.js");require("../components/navbar/index.cjs.js");let n=require("solid-logic"),r=require("lit-html");function i(){let e=document.querySelector(`solid-panes-navbar`);e&&e.classList.remove(`navbar--hidden`)}function a(e,t,n=!1){return{label:e,onSelected(){return i(),t()},selected:n}}async function o(n,r,i,o,s){let c=await e.loadProfileFromURI(r),l=o||(e.isWebIdUri(r)?`profile`:void 0),u=[];c&&u.push(a(`Profile`,async()=>{let e=await t.getProfilePaneFromURI(c);n.GotoSubject(r,!0,e,!0,void 0,i)},l===`profile`),a(`Friends`,async()=>{let e=await t.getSocialPaneFromURI(c);n.GotoSubject(r,!0,e,!0,void 0,i)},l===`social`));let d=await t.getFolderPanesFromURI(r);return d.forEach(e=>{u.push(a(e.label(),async()=>{n.GotoSubject(r,!0,e,!0,void 0,i)},l===e.paneName&&(s?s===e.subject.value:d.length===1)))}),u}async function s(e){let t=document.querySelector(`solid-panes-navbar`);if(t)return t.classList.remove(`navbar--hidden`),t;let i=document.getElementById(`OutlineView`),a=document.getElementById(`MainContent`),s=document.createElement(`div`),c=window.location.href,l=typeof c==`string`?n.store.sym(c):c,u=window.history.state?.paneName,d=window.history.state?.paneUri,f=await o(e,l,i,u,d).catch(e=>(console.error(`Failed to build navbar menu items:`,e),[]));function p(e){f=f.map(t=>({...t,selected:t===e}))}function m(e){let{detail:t}=e;p(t),Promise.resolve(t.onSelected?.()).catch(e=>{console.error(`Navbar menu item selection failed:`,e)}),h()}function h(){(0,r.render)(r.html`<solid-panes-navbar .navbarItems=${f} @solid-ui-select=${m}></solid-panes-navbar>`,s)}h();let g=s.firstElementChild;if(!g)throw Error(`Failed to create nav bar`);return a?a.insertBefore(g,a.firstChild):document.body.prepend(g),g}exports.createNavbar=s;
2
+ //# sourceMappingURL=navbar.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbar.cjs.js","names":[],"sources":["../../src/mainPage/navbar.ts"],"sourcesContent":["import { store } from 'solid-logic'\nimport { NamedNode } from 'rdflib'\nimport { getSocialPaneFromURI, getProfilePaneFromURI, getFolderPanesFromURI } from '../utils/paneUtils'\nimport { html, render } from 'lit-html'\nimport type { OutlineManager } from '../outline/manager'\nimport { isWebIdUri, loadProfileFromURI } from '../utils/webIdUtils'\n\nimport '~icons/lucide/user'\nimport '~icons/lucide/users'\nimport '~icons/lucide/folder-open'\nimport '../components/navbar'\n\nimport type { NavbarMenuItem } from '../components/navbar/Navbar'\n\nfunction showNavbar () {\n const navbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n if (navbar) {\n navbar.classList.remove('navbar--hidden')\n }\n}\n\nfunction createNavItem (\n label: string,\n onSelected: () => void,\n selected = false\n): NavbarMenuItem {\n return {\n label,\n onSelected () {\n showNavbar()\n return onSelected()\n },\n selected\n }\n}\n\nasync function createNavbarMenuItems (\n outliner: OutlineManager,\n subject: NamedNode,\n outlineView: HTMLElement | null,\n selectedPaneName?: string,\n selectedPaneUri?: string\n): Promise<NavbarMenuItem[]> {\n const webId = await loadProfileFromURI(subject)\n const selectedPane = selectedPaneName || (isWebIdUri(subject) ? 'profile' : undefined)\n\n const menuItems: NavbarMenuItem[] = []\n\n if (webId) {\n menuItems.push(\n createNavItem('Profile', async () => {\n const profilePane = await getProfilePaneFromURI(webId)\n outliner.GotoSubject(subject, true, profilePane, true, undefined, outlineView)\n }, selectedPane === 'profile'),\n createNavItem('Friends', async () => {\n const socialPane = await getSocialPaneFromURI(webId)\n outliner.GotoSubject(subject, true, socialPane, true, undefined, outlineView)\n }, selectedPane === 'social')\n )\n }\n\n const storagePanes = await getFolderPanesFromURI(subject)\n storagePanes.forEach(pane => {\n menuItems.push(\n createNavItem(\n pane.label(),\n async () => {\n outliner.GotoSubject(subject, true, pane, true, undefined, outlineView)\n },\n selectedPane === pane.paneName &&\n (selectedPaneUri ? selectedPaneUri === pane.subject.value : storagePanes.length === 1)\n )\n )\n })\n\n return menuItems\n}\n\nexport async function createNavbar (outliner: OutlineManager) {\n const existingNavbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n\n if (existingNavbar) {\n existingNavbar.classList.remove('navbar--hidden')\n return existingNavbar\n }\n\n const OutlineView = document.getElementById('OutlineView')\n const mainContent = document.getElementById('MainContent')\n const tmpContainer = document.createElement('div')\n const uri = window.location.href\n const subject: NamedNode = typeof uri === 'string' ? store.sym(uri) : uri\n const selectedPaneName = window.history.state?.paneName\n const selectedPaneUri = window.history.state?.paneUri\n let menuItems = await createNavbarMenuItems(outliner, subject, OutlineView, selectedPaneName, selectedPaneUri).catch((err) => {\n console.error('Failed to build navbar menu items:', err)\n return []\n })\n\n function setSelectedItem (selectedItem: NavbarMenuItem) {\n menuItems = menuItems.map((menuItem) => ({\n ...menuItem,\n selected: menuItem === selectedItem\n }))\n }\n\n function handleSelectionChanged (event: Event) {\n const { detail: selectedItem } = event as CustomEvent<NavbarMenuItem>\n setSelectedItem(selectedItem)\n\n Promise.resolve(selectedItem.onSelected?.()).catch((error) => {\n console.error('Navbar menu item selection failed:', error)\n })\n\n renderNavbar()\n }\n\n function renderNavbar () {\n render(\n html`<solid-panes-navbar .navbarItems=${menuItems} @solid-ui-select=${handleSelectionChanged}></solid-panes-navbar>`,\n tmpContainer\n )\n }\n\n renderNavbar()\n\n const navbar = tmpContainer.firstElementChild as HTMLElement | null\n\n if (!navbar) {\n throw new Error('Failed to create nav bar')\n }\n\n if (mainContent) {\n mainContent.insertBefore(navbar, mainContent.firstChild)\n } else {\n document.body.prepend(navbar)\n }\n\n return navbar\n}\n"],"mappings":"sVAcA,SAAS,GAAc,CACrB,IAAM,EAAS,SAAS,cAA2B,oBAAoB,EACnE,GACF,EAAO,UAAU,OAAO,gBAAgB,CAE5C,CAEA,SAAS,EACP,EACA,EACA,EAAW,GACK,CAChB,MAAO,CACL,QACA,YAAc,CAEZ,OADA,EAAW,EACJ,EAAW,CACpB,EACA,UACF,CACF,CAEA,eAAe,EACb,EACA,EACA,EACA,EACA,EAC2B,CAC3B,IAAM,EAAQ,MAAM,EAAA,mBAAmB,CAAO,EACxC,EAAe,IAAqB,EAAA,WAAW,CAAO,EAAI,UAAY,IAAA,IAEtE,EAA8B,CAAC,EAEjC,GACF,EAAU,KACR,EAAc,UAAW,SAAY,CACnC,IAAM,EAAc,MAAM,EAAA,sBAAsB,CAAK,EACrD,EAAS,YAAY,EAAS,GAAM,EAAa,GAAM,IAAA,GAAW,CAAW,CAC/E,EAAG,IAAiB,SAAS,EAC7B,EAAc,UAAW,SAAY,CACnC,IAAM,EAAa,MAAM,EAAA,qBAAqB,CAAK,EACnD,EAAS,YAAY,EAAS,GAAM,EAAY,GAAM,IAAA,GAAW,CAAW,CAC9E,EAAG,IAAiB,QAAQ,CAC9B,EAGF,IAAM,EAAe,MAAM,EAAA,sBAAsB,CAAO,EAcxD,OAbA,EAAa,QAAQ,GAAQ,CAC3B,EAAU,KACR,EACE,EAAK,MAAM,EACX,SAAY,CACV,EAAS,YAAY,EAAS,GAAM,EAAM,GAAM,IAAA,GAAW,CAAW,CACxE,EACA,IAAiB,EAAK,WACnB,EAAkB,IAAoB,EAAK,QAAQ,MAAQ,EAAa,SAAW,EACxF,CACF,CACF,CAAC,EAEM,CACT,CAEA,eAAsB,EAAc,EAA0B,CAC5D,IAAM,EAAiB,SAAS,cAA2B,oBAAoB,EAE/E,GAAI,EAEF,OADA,EAAe,UAAU,OAAO,gBAAgB,EACzC,EAGT,IAAM,EAAc,SAAS,eAAe,aAAa,EACnD,EAAc,SAAS,eAAe,aAAa,EACnD,EAAe,SAAS,cAAc,KAAK,EAC3C,EAAM,OAAO,SAAS,KACtB,EAAqB,OAAO,GAAQ,SAAW,EAAA,MAAM,IAAI,CAAG,EAAI,EAChE,EAAmB,OAAO,QAAQ,OAAO,SACzC,EAAkB,OAAO,QAAQ,OAAO,QAC1C,EAAY,MAAM,EAAsB,EAAU,EAAS,EAAa,EAAkB,CAAe,CAAC,CAAC,MAAO,IACpH,QAAQ,MAAM,qCAAsC,CAAG,EAChD,CAAC,EACT,EAED,SAAS,EAAiB,EAA8B,CACtD,EAAY,EAAU,IAAK,IAAc,CACvC,GAAG,EACH,SAAU,IAAa,CACzB,EAAE,CACJ,CAEA,SAAS,EAAwB,EAAc,CAC7C,GAAM,CAAE,OAAQ,GAAiB,EACjC,EAAgB,CAAY,EAE5B,QAAQ,QAAQ,EAAa,aAAa,CAAC,CAAC,CAAC,MAAO,GAAU,CAC5D,QAAQ,MAAM,qCAAsC,CAAK,CAC3D,CAAC,EAED,EAAa,CACf,CAEA,SAAS,GAAgB,EACvB,EAAA,EAAA,OAAA,CACE,EAAA,IAAI,oCAAoC,EAAU,oBAAoB,EAAuB,wBAC7F,CACF,CACF,CAEA,EAAa,EAEb,IAAM,EAAS,EAAa,kBAE5B,GAAI,CAAC,EACH,MAAU,MAAM,0BAA0B,EAS5C,OANI,EACF,EAAY,aAAa,EAAQ,EAAY,UAAU,EAEvD,SAAS,KAAK,QAAQ,CAAM,EAGvB,CACT"}
@@ -0,0 +1,3 @@
1
+ import { OutlineManager } from '../outline/manager';
2
+ export declare function createNavbar(outliner: OutlineManager): Promise<HTMLElement>;
3
+ //# sourceMappingURL=navbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../src/mainPage/navbar.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGxD,OAAO,oBAAoB,CAAA;AAC3B,OAAO,qBAAqB,CAAA;AAC5B,OAAO,2BAA2B,CAAA;AAClC,OAAO,sBAAsB,CAAA;AAoE7B,wBAAsB,YAAY,CAAE,QAAQ,EAAE,cAAc,wBA4D3D"}
@@ -0,0 +1,66 @@
1
+ import { isWebIdUri as e, loadProfileFromURI as t } from "../utils/webIdUtils.esm.js";
2
+ import "../_virtual/~icons/lucide/user.esm.js";
3
+ import "../_virtual/~icons/lucide/users.esm.js";
4
+ import "../_virtual/~icons/lucide/folder-open.esm.js";
5
+ import { getFolderPanesFromURI as n, getProfilePaneFromURI as r, getSocialPaneFromURI as i } from "../utils/paneUtils.esm.js";
6
+ import "../components/navbar/index.esm.js";
7
+ import { store as a } from "solid-logic";
8
+ import { html as o, render as s } from "lit-html";
9
+ //#region src/mainPage/navbar.ts
10
+ function c() {
11
+ let e = document.querySelector("solid-panes-navbar");
12
+ e && e.classList.remove("navbar--hidden");
13
+ }
14
+ function l(e, t, n = !1) {
15
+ return {
16
+ label: e,
17
+ onSelected() {
18
+ return c(), t();
19
+ },
20
+ selected: n
21
+ };
22
+ }
23
+ async function u(a, o, s, c, u) {
24
+ let d = await t(o), f = c || (e(o) ? "profile" : void 0), p = [];
25
+ d && p.push(l("Profile", async () => {
26
+ let e = await r(d);
27
+ a.GotoSubject(o, !0, e, !0, void 0, s);
28
+ }, f === "profile"), l("Friends", async () => {
29
+ let e = await i(d);
30
+ a.GotoSubject(o, !0, e, !0, void 0, s);
31
+ }, f === "social"));
32
+ let m = await n(o);
33
+ return m.forEach((e) => {
34
+ p.push(l(e.label(), async () => {
35
+ a.GotoSubject(o, !0, e, !0, void 0, s);
36
+ }, f === e.paneName && (u ? u === e.subject.value : m.length === 1)));
37
+ }), p;
38
+ }
39
+ async function d(e) {
40
+ let t = document.querySelector("solid-panes-navbar");
41
+ if (t) return t.classList.remove("navbar--hidden"), t;
42
+ let n = document.getElementById("OutlineView"), r = document.getElementById("MainContent"), i = document.createElement("div"), c = window.location.href, l = typeof c == "string" ? a.sym(c) : c, d = window.history.state?.paneName, f = window.history.state?.paneUri, p = await u(e, l, n, d, f).catch((e) => (console.error("Failed to build navbar menu items:", e), []));
43
+ function m(e) {
44
+ p = p.map((t) => ({
45
+ ...t,
46
+ selected: t === e
47
+ }));
48
+ }
49
+ function h(e) {
50
+ let { detail: t } = e;
51
+ m(t), Promise.resolve(t.onSelected?.()).catch((e) => {
52
+ console.error("Navbar menu item selection failed:", e);
53
+ }), g();
54
+ }
55
+ function g() {
56
+ s(o`<solid-panes-navbar .navbarItems=${p} @solid-ui-select=${h}></solid-panes-navbar>`, i);
57
+ }
58
+ g();
59
+ let _ = i.firstElementChild;
60
+ if (!_) throw Error("Failed to create nav bar");
61
+ return r ? r.insertBefore(_, r.firstChild) : document.body.prepend(_), _;
62
+ }
63
+ //#endregion
64
+ export { d as createNavbar };
65
+
66
+ //# sourceMappingURL=navbar.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbar.esm.js","names":[],"sources":["../../src/mainPage/navbar.ts"],"sourcesContent":["import { store } from 'solid-logic'\nimport { NamedNode } from 'rdflib'\nimport { getSocialPaneFromURI, getProfilePaneFromURI, getFolderPanesFromURI } from '../utils/paneUtils'\nimport { html, render } from 'lit-html'\nimport type { OutlineManager } from '../outline/manager'\nimport { isWebIdUri, loadProfileFromURI } from '../utils/webIdUtils'\n\nimport '~icons/lucide/user'\nimport '~icons/lucide/users'\nimport '~icons/lucide/folder-open'\nimport '../components/navbar'\n\nimport type { NavbarMenuItem } from '../components/navbar/Navbar'\n\nfunction showNavbar () {\n const navbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n if (navbar) {\n navbar.classList.remove('navbar--hidden')\n }\n}\n\nfunction createNavItem (\n label: string,\n onSelected: () => void,\n selected = false\n): NavbarMenuItem {\n return {\n label,\n onSelected () {\n showNavbar()\n return onSelected()\n },\n selected\n }\n}\n\nasync function createNavbarMenuItems (\n outliner: OutlineManager,\n subject: NamedNode,\n outlineView: HTMLElement | null,\n selectedPaneName?: string,\n selectedPaneUri?: string\n): Promise<NavbarMenuItem[]> {\n const webId = await loadProfileFromURI(subject)\n const selectedPane = selectedPaneName || (isWebIdUri(subject) ? 'profile' : undefined)\n\n const menuItems: NavbarMenuItem[] = []\n\n if (webId) {\n menuItems.push(\n createNavItem('Profile', async () => {\n const profilePane = await getProfilePaneFromURI(webId)\n outliner.GotoSubject(subject, true, profilePane, true, undefined, outlineView)\n }, selectedPane === 'profile'),\n createNavItem('Friends', async () => {\n const socialPane = await getSocialPaneFromURI(webId)\n outliner.GotoSubject(subject, true, socialPane, true, undefined, outlineView)\n }, selectedPane === 'social')\n )\n }\n\n const storagePanes = await getFolderPanesFromURI(subject)\n storagePanes.forEach(pane => {\n menuItems.push(\n createNavItem(\n pane.label(),\n async () => {\n outliner.GotoSubject(subject, true, pane, true, undefined, outlineView)\n },\n selectedPane === pane.paneName &&\n (selectedPaneUri ? selectedPaneUri === pane.subject.value : storagePanes.length === 1)\n )\n )\n })\n\n return menuItems\n}\n\nexport async function createNavbar (outliner: OutlineManager) {\n const existingNavbar = document.querySelector<HTMLElement>('solid-panes-navbar')\n\n if (existingNavbar) {\n existingNavbar.classList.remove('navbar--hidden')\n return existingNavbar\n }\n\n const OutlineView = document.getElementById('OutlineView')\n const mainContent = document.getElementById('MainContent')\n const tmpContainer = document.createElement('div')\n const uri = window.location.href\n const subject: NamedNode = typeof uri === 'string' ? store.sym(uri) : uri\n const selectedPaneName = window.history.state?.paneName\n const selectedPaneUri = window.history.state?.paneUri\n let menuItems = await createNavbarMenuItems(outliner, subject, OutlineView, selectedPaneName, selectedPaneUri).catch((err) => {\n console.error('Failed to build navbar menu items:', err)\n return []\n })\n\n function setSelectedItem (selectedItem: NavbarMenuItem) {\n menuItems = menuItems.map((menuItem) => ({\n ...menuItem,\n selected: menuItem === selectedItem\n }))\n }\n\n function handleSelectionChanged (event: Event) {\n const { detail: selectedItem } = event as CustomEvent<NavbarMenuItem>\n setSelectedItem(selectedItem)\n\n Promise.resolve(selectedItem.onSelected?.()).catch((error) => {\n console.error('Navbar menu item selection failed:', error)\n })\n\n renderNavbar()\n }\n\n function renderNavbar () {\n render(\n html`<solid-panes-navbar .navbarItems=${menuItems} @solid-ui-select=${handleSelectionChanged}></solid-panes-navbar>`,\n tmpContainer\n )\n }\n\n renderNavbar()\n\n const navbar = tmpContainer.firstElementChild as HTMLElement | null\n\n if (!navbar) {\n throw new Error('Failed to create nav bar')\n }\n\n if (mainContent) {\n mainContent.insertBefore(navbar, mainContent.firstChild)\n } else {\n document.body.prepend(navbar)\n }\n\n return navbar\n}\n"],"mappings":";;;;;;;;;AAcA,SAAS,IAAc;CACrB,IAAM,IAAS,SAAS,cAA2B,oBAAoB;CACvE,AAAI,KACF,EAAO,UAAU,OAAO,gBAAgB;AAE5C;AAEA,SAAS,EACP,GACA,GACA,IAAW,IACK;CAChB,OAAO;EACL;EACA,aAAc;GAEZ,OADA,EAAW,GACJ,EAAW;EACpB;EACA;CACF;AACF;AAEA,eAAe,EACb,GACA,GACA,GACA,GACA,GAC2B;CAC3B,IAAM,IAAQ,MAAM,EAAmB,CAAO,GACxC,IAAe,MAAqB,EAAW,CAAO,IAAI,YAAY,KAAA,IAEtE,IAA8B,CAAC;CAErC,AAAI,KACF,EAAU,KACR,EAAc,WAAW,YAAY;EACnC,IAAM,IAAc,MAAM,EAAsB,CAAK;EACrD,EAAS,YAAY,GAAS,IAAM,GAAa,IAAM,KAAA,GAAW,CAAW;CAC/E,GAAG,MAAiB,SAAS,GAC7B,EAAc,WAAW,YAAY;EACnC,IAAM,IAAa,MAAM,EAAqB,CAAK;EACnD,EAAS,YAAY,GAAS,IAAM,GAAY,IAAM,KAAA,GAAW,CAAW;CAC9E,GAAG,MAAiB,QAAQ,CAC9B;CAGF,IAAM,IAAe,MAAM,EAAsB,CAAO;CAcxD,OAbA,EAAa,SAAQ,MAAQ;EAC3B,EAAU,KACR,EACE,EAAK,MAAM,GACX,YAAY;GACV,EAAS,YAAY,GAAS,IAAM,GAAM,IAAM,KAAA,GAAW,CAAW;EACxE,GACA,MAAiB,EAAK,aACnB,IAAkB,MAAoB,EAAK,QAAQ,QAAQ,EAAa,WAAW,EACxF,CACF;CACF,CAAC,GAEM;AACT;AAEA,eAAsB,EAAc,GAA0B;CAC5D,IAAM,IAAiB,SAAS,cAA2B,oBAAoB;CAE/E,IAAI,GAEF,OADA,EAAe,UAAU,OAAO,gBAAgB,GACzC;CAGT,IAAM,IAAc,SAAS,eAAe,aAAa,GACnD,IAAc,SAAS,eAAe,aAAa,GACnD,IAAe,SAAS,cAAc,KAAK,GAC3C,IAAM,OAAO,SAAS,MACtB,IAAqB,OAAO,KAAQ,WAAW,EAAM,IAAI,CAAG,IAAI,GAChE,IAAmB,OAAO,QAAQ,OAAO,UACzC,IAAkB,OAAO,QAAQ,OAAO,SAC1C,IAAY,MAAM,EAAsB,GAAU,GAAS,GAAa,GAAkB,CAAe,CAAC,CAAC,OAAO,OACpH,QAAQ,MAAM,sCAAsC,CAAG,GAChD,CAAC,EACT;CAED,SAAS,EAAiB,GAA8B;EACtD,IAAY,EAAU,KAAK,OAAc;GACvC,GAAG;GACH,UAAU,MAAa;EACzB,EAAE;CACJ;CAEA,SAAS,EAAwB,GAAc;EAC7C,IAAM,EAAE,QAAQ,MAAiB;EAOjC,AANA,EAAgB,CAAY,GAE5B,QAAQ,QAAQ,EAAa,aAAa,CAAC,CAAC,CAAC,OAAO,MAAU;GAC5D,QAAQ,MAAM,sCAAsC,CAAK;EAC3D,CAAC,GAED,EAAa;CACf;CAEA,SAAS,IAAgB;EACvB,EACE,CAAI,oCAAoC,EAAU,oBAAoB,EAAuB,yBAC7F,CACF;CACF;CAEA,EAAa;CAEb,IAAM,IAAS,EAAa;CAE5B,IAAI,CAAC,GACH,MAAU,MAAM,0BAA0B;CAS5C,OANI,IACF,EAAY,aAAa,GAAQ,EAAY,UAAU,IAEvD,SAAS,KAAK,QAAQ,CAAM,GAGvB;AACT"}
@@ -1,5 +1,5 @@
1
1
  import { DataBrowserContext, PaneRegistry, RenderEnvironment } from '../../node_modules/pane-registry';
2
- import { SolidLogic } from '../../node_modules/solid-logic/dist/solid-logic.esm.js';
2
+ import { SolidLogic } from '../../node_modules/solid-logic/dist/index.esm.js';
3
3
  import { LiveStore } from '../../node_modules/rdflib';
4
4
  export declare function createContext(dom: HTMLDocument, paneRegistry: PaneRegistry, store: LiveStore, logic: SolidLogic, environment?: RenderEnvironment): DataBrowserContext;
5
5
  //# sourceMappingURL=context.d.ts.map