solid-panes 4.4.2-2 → 4.4.2-4

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 (410) hide show
  1. package/README.md +10 -10
  2. package/dist/RDFXMLPane.d.ts +2 -3
  3. package/dist/RDFXMLPane2.cjs.js +3 -0
  4. package/dist/RDFXMLPane2.cjs.js.map +1 -0
  5. package/dist/RDFXMLPane2.esm.js +55 -0
  6. package/dist/RDFXMLPane2.esm.js.map +1 -0
  7. package/dist/_virtual/_rolldown/runtime.cjs.js +1 -0
  8. package/dist/_virtual/~icons/lucide/help-circle.cjs.js +2 -0
  9. package/dist/_virtual/~icons/lucide/help-circle.cjs.js.map +1 -0
  10. package/dist/_virtual/~icons/lucide/help-circle.esm.js +11 -0
  11. package/dist/_virtual/~icons/lucide/help-circle.esm.js.map +1 -0
  12. package/dist/_virtual/~icons/lucide/user.cjs.js +2 -0
  13. package/dist/_virtual/~icons/lucide/user.cjs.js.map +1 -0
  14. package/dist/_virtual/~icons/lucide/user.esm.js +11 -0
  15. package/dist/_virtual/~icons/lucide/user.esm.js.map +1 -0
  16. package/dist/audio/audioPane.cjs.js +2 -0
  17. package/dist/audio/audioPane.cjs.js.map +1 -0
  18. package/dist/audio/audioPane.esm.js +96 -0
  19. package/dist/audio/audioPane.esm.js.map +1 -0
  20. package/dist/classInstancePane.cjs.js +2 -0
  21. package/dist/classInstancePane.cjs.js.map +1 -0
  22. package/dist/classInstancePane.esm.js +50 -0
  23. package/dist/classInstancePane.esm.js.map +1 -0
  24. package/dist/components/header/Header.cjs.js +19 -0
  25. package/dist/components/header/Header.cjs.js.map +1 -0
  26. package/dist/components/header/Header.d.ts +8 -0
  27. package/dist/components/header/Header.d.ts.map +1 -0
  28. package/dist/components/header/Header.esm.js +228 -0
  29. package/dist/components/header/Header.esm.js.map +1 -0
  30. package/dist/components/header/Header.styles.cjs.js +2 -0
  31. package/dist/components/header/Header.styles.cjs.js.map +1 -0
  32. package/dist/components/header/Header.styles.esm.js +7 -0
  33. package/dist/components/header/Header.styles.esm.js.map +1 -0
  34. package/dist/components/header/index.cjs.js +1 -0
  35. package/dist/components/header/index.d.ts +4 -0
  36. package/dist/components/header/index.d.ts.map +1 -0
  37. package/dist/components/header/index.esm.js +1 -0
  38. package/dist/dashboard/basicPreferences.cjs.js +2 -0
  39. package/dist/dashboard/basicPreferences.cjs.js.map +1 -0
  40. package/dist/dashboard/basicPreferences.d.ts +1 -1
  41. package/dist/dashboard/basicPreferences.esm.js +70 -0
  42. package/dist/dashboard/basicPreferences.esm.js.map +1 -0
  43. package/dist/dashboard/dashboardPane.cjs.js +2 -0
  44. package/dist/dashboard/dashboardPane.cjs.js.map +1 -0
  45. package/dist/dashboard/dashboardPane.d.ts +1 -1
  46. package/dist/dashboard/dashboardPane.esm.js +7 -0
  47. package/dist/dashboard/dashboardPane.esm.js.map +1 -0
  48. package/dist/dashboard/homepage.cjs.js +2 -0
  49. package/dist/dashboard/homepage.cjs.js.map +1 -0
  50. package/dist/dashboard/homepage.d.ts +1 -1
  51. package/dist/dashboard/homepage.esm.js +26 -0
  52. package/dist/dashboard/homepage.esm.js.map +1 -0
  53. package/dist/dashboard/ontologyData.cjs.js +37 -0
  54. package/dist/dashboard/ontologyData.cjs.js.map +1 -0
  55. package/dist/dashboard/ontologyData.esm.js +6 -0
  56. package/dist/dashboard/ontologyData.esm.js.map +1 -0
  57. package/dist/dashboard/preferencesFormText.cjs.js +20 -0
  58. package/dist/dashboard/preferencesFormText.cjs.js.map +1 -0
  59. package/dist/dashboard/preferencesFormText.esm.js +6 -0
  60. package/dist/dashboard/preferencesFormText.esm.js.map +1 -0
  61. package/dist/dataContentPane.d.ts +2 -3
  62. package/dist/dataContentPane2.cjs.js +2 -0
  63. package/dist/dataContentPane2.cjs.js.map +1 -0
  64. package/dist/dataContentPane2.esm.js +109 -0
  65. package/dist/dataContentPane2.esm.js.map +1 -0
  66. package/dist/defaultPane.d.ts +2 -3
  67. package/dist/defaultPane2.cjs.js +2 -0
  68. package/dist/defaultPane2.cjs.js.map +1 -0
  69. package/dist/defaultPane2.esm.js +41 -0
  70. package/dist/defaultPane2.esm.js.map +1 -0
  71. package/dist/dev.d.ts +10 -0
  72. package/dist/dev.d.ts.map +1 -0
  73. package/dist/dokieli/dokieliPane.cjs.js +2 -0
  74. package/dist/dokieli/dokieliPane.cjs.js.map +1 -0
  75. package/dist/dokieli/dokieliPane.esm.js +39 -0
  76. package/dist/dokieli/dokieliPane.esm.js.map +1 -0
  77. package/dist/dokieli/{new.js → new.cjs.js} +4 -10
  78. package/dist/dokieli/new.cjs.js.map +1 -0
  79. package/dist/dokieli/new.esm.js +6 -0
  80. package/dist/dokieli/new.esm.js.map +1 -0
  81. package/dist/form/pane.cjs.js +4 -0
  82. package/dist/form/pane.cjs.js.map +1 -0
  83. package/dist/form/pane.d.ts +1 -2
  84. package/dist/form/pane.esm.js +121 -0
  85. package/dist/form/pane.esm.js.map +1 -0
  86. package/dist/home/homePane.cjs.js +2 -0
  87. package/dist/home/homePane.cjs.js.map +1 -0
  88. package/dist/home/homePane.d.ts +1 -1
  89. package/dist/home/homePane.esm.js +35 -0
  90. package/dist/home/homePane.esm.js.map +1 -0
  91. package/dist/humanReadablePane.d.ts +2 -3
  92. package/dist/humanReadablePane2.cjs.js +2 -0
  93. package/dist/humanReadablePane2.cjs.js.map +1 -0
  94. package/dist/humanReadablePane2.esm.js +123 -0
  95. package/dist/humanReadablePane2.esm.js.map +1 -0
  96. package/dist/icons/dashboard.cjs.js +2 -0
  97. package/dist/icons/dashboard.cjs.js.map +1 -0
  98. package/dist/icons/dashboard.esm.js +6 -0
  99. package/dist/icons/dashboard.esm.js.map +1 -0
  100. package/dist/icons/folder.cjs.js +2 -0
  101. package/dist/icons/folder.cjs.js.map +1 -0
  102. package/dist/icons/folder.esm.js +6 -0
  103. package/dist/icons/folder.esm.js.map +1 -0
  104. package/dist/icons/friends.cjs.js +2 -0
  105. package/dist/icons/friends.cjs.js.map +1 -0
  106. package/dist/icons/friends.esm.js +6 -0
  107. package/dist/icons/friends.esm.js.map +1 -0
  108. package/dist/icons/iconHelper.cjs.js +2 -0
  109. package/dist/icons/iconHelper.cjs.js.map +1 -0
  110. package/dist/icons/iconHelper.esm.js +17 -0
  111. package/dist/icons/iconHelper.esm.js.map +1 -0
  112. package/dist/icons/{menu.svg → menu.cjs.js} +3 -2
  113. package/dist/icons/menu.cjs.js.map +1 -0
  114. package/dist/icons/menu.esm.js +6 -0
  115. package/dist/icons/menu.esm.js.map +1 -0
  116. package/dist/icons/person.cjs.js +2 -0
  117. package/dist/icons/person.cjs.js.map +1 -0
  118. package/dist/icons/person.esm.js +6 -0
  119. package/dist/icons/person.esm.js.map +1 -0
  120. package/dist/imagePane.d.ts +2 -3
  121. package/dist/imagePane2.cjs.js +2 -0
  122. package/dist/imagePane2.cjs.js.map +1 -0
  123. package/dist/imagePane2.esm.js +32 -0
  124. package/dist/imagePane2.esm.js.map +1 -0
  125. package/dist/index.cjs.js +2 -0
  126. package/dist/index.cjs.js.map +1 -0
  127. package/dist/index.d.ts +4 -4
  128. package/dist/index.esm.js +26 -0
  129. package/dist/index.esm.js.map +1 -0
  130. package/dist/internal/internalPane.d.ts +1 -2
  131. package/dist/internal/internalPane2.cjs.js +2 -0
  132. package/dist/internal/internalPane2.cjs.js.map +1 -0
  133. package/dist/internal/internalPane2.esm.js +104 -0
  134. package/dist/internal/internalPane2.esm.js.map +1 -0
  135. package/dist/mainPage/footer.cjs.js +2 -0
  136. package/dist/mainPage/footer.cjs.js.map +1 -0
  137. package/dist/mainPage/footer.d.ts +1 -3
  138. package/dist/mainPage/footer.esm.js +18 -0
  139. package/dist/mainPage/footer.esm.js.map +1 -0
  140. package/dist/mainPage/header.cjs.js +2 -0
  141. package/dist/mainPage/header.cjs.js.map +1 -0
  142. package/dist/mainPage/header.d.ts +1 -15
  143. package/dist/mainPage/header.d.ts.map +1 -1
  144. package/dist/mainPage/header.esm.js +25 -0
  145. package/dist/mainPage/header.esm.js.map +1 -0
  146. package/dist/mainPage/index.cjs.js +2 -0
  147. package/dist/mainPage/index.cjs.js.map +1 -0
  148. package/dist/mainPage/index.d.ts +3 -7
  149. package/dist/mainPage/index.d.ts.map +1 -1
  150. package/dist/mainPage/index.esm.js +38 -0
  151. package/dist/mainPage/index.esm.js.map +1 -0
  152. package/dist/mainPage/menu.d.ts +1 -2
  153. package/dist/mainPage/menu2.cjs.js +2 -0
  154. package/dist/mainPage/menu2.cjs.js.map +1 -0
  155. package/dist/mainPage/menu2.esm.js +184 -0
  156. package/dist/mainPage/menu2.esm.js.map +1 -0
  157. package/dist/n3Pane.d.ts +2 -3
  158. package/dist/n3Pane2.cjs.js +3 -0
  159. package/dist/n3Pane2.cjs.js.map +1 -0
  160. package/dist/n3Pane2.esm.js +52 -0
  161. package/dist/n3Pane2.esm.js.map +1 -0
  162. package/dist/outline/context.cjs.js +2 -0
  163. package/dist/outline/context.cjs.js.map +1 -0
  164. package/dist/outline/context.d.ts +3 -3
  165. package/dist/outline/context.esm.js +18 -0
  166. package/dist/outline/context.esm.js.map +1 -0
  167. package/dist/outline/manager2.cjs.js +3 -0
  168. package/dist/outline/manager2.cjs.js.map +1 -0
  169. package/dist/outline/manager2.esm.js +875 -0
  170. package/dist/outline/manager2.esm.js.map +1 -0
  171. package/dist/outline/outlineIcons.cjs.js +2 -0
  172. package/dist/outline/outlineIcons.cjs.js.map +1 -0
  173. package/dist/outline/outlineIcons.esm.js +10 -0
  174. package/dist/outline/outlineIcons.esm.js.map +1 -0
  175. package/dist/outline/propertyViews.cjs.js +2 -0
  176. package/dist/outline/propertyViews.cjs.js.map +1 -0
  177. package/dist/outline/propertyViews.esm.js +19 -0
  178. package/dist/outline/propertyViews.esm.js.map +1 -0
  179. package/dist/outline/queryByExample.cjs.js +2 -0
  180. package/dist/outline/queryByExample.cjs.js.map +1 -0
  181. package/dist/outline/queryByExample.esm.js +25 -0
  182. package/dist/outline/queryByExample.esm.js.map +1 -0
  183. package/dist/outline/userInput.cjs.js +61 -0
  184. package/dist/outline/userInput.cjs.js.map +1 -0
  185. package/dist/outline/userInput.esm.js +784 -0
  186. package/dist/outline/userInput.esm.js.map +1 -0
  187. package/dist/outline/viewAsImage.cjs.js +2 -0
  188. package/dist/outline/viewAsImage.cjs.js.map +1 -0
  189. package/dist/outline/viewAsImage.esm.js +10 -0
  190. package/dist/outline/viewAsImage.esm.js.map +1 -0
  191. package/dist/outline/viewAsMbox.cjs.js +2 -0
  192. package/dist/outline/viewAsMbox.cjs.js.map +1 -0
  193. package/dist/outline/viewAsMbox.esm.js +9 -0
  194. package/dist/outline/viewAsMbox.esm.js.map +1 -0
  195. package/dist/pad/padPane.d.ts +1 -2
  196. package/dist/pad/padPane2.cjs.js +2 -0
  197. package/dist/pad/padPane2.cjs.js.map +1 -0
  198. package/dist/pad/padPane2.esm.js +172 -0
  199. package/dist/pad/padPane2.esm.js.map +1 -0
  200. package/dist/playlist/playlistPane.cjs.js +2 -0
  201. package/dist/playlist/playlistPane.cjs.js.map +1 -0
  202. package/dist/playlist/playlistPane.esm.js +49 -0
  203. package/dist/playlist/playlistPane.esm.js.map +1 -0
  204. package/dist/profileUtils/ownerProfile.cjs.js +2 -0
  205. package/dist/profileUtils/ownerProfile.cjs.js.map +1 -0
  206. package/dist/profileUtils/ownerProfile.d.ts +1 -1
  207. package/dist/profileUtils/ownerProfile.esm.js +50 -0
  208. package/dist/profileUtils/ownerProfile.esm.js.map +1 -0
  209. package/dist/registerPanes.cjs.js +2 -0
  210. package/dist/registerPanes.cjs.js.map +1 -0
  211. package/dist/registerPanes.esm.js +46 -0
  212. package/dist/registerPanes.esm.js.map +1 -0
  213. package/dist/schedule/formsForSchedule.cjs.js +117 -0
  214. package/dist/schedule/formsForSchedule.cjs.js.map +1 -0
  215. package/dist/schedule/formsForSchedule.esm.js +6 -0
  216. package/dist/schedule/formsForSchedule.esm.js.map +1 -0
  217. package/dist/schedule/schedulePane.d.ts +2 -4
  218. package/dist/schedule/schedulePane2.cjs.js +8 -0
  219. package/dist/schedule/schedulePane2.cjs.js.map +1 -0
  220. package/dist/schedule/schedulePane2.esm.js +384 -0
  221. package/dist/schedule/schedulePane2.esm.js.map +1 -0
  222. package/dist/sharing/sharingPane.cjs.js +2 -0
  223. package/dist/sharing/sharingPane.cjs.js.map +1 -0
  224. package/dist/sharing/sharingPane.esm.js +22 -0
  225. package/dist/sharing/sharingPane.esm.js.map +1 -0
  226. package/dist/slideshow/slideshowPane.cjs.js +2 -0
  227. package/dist/slideshow/slideshowPane.cjs.js.map +1 -0
  228. package/dist/slideshow/slideshowPane.esm.js +46 -0
  229. package/dist/slideshow/slideshowPane.esm.js.map +1 -0
  230. package/dist/social/editProfileDetails.cjs.js +2 -0
  231. package/dist/social/editProfileDetails.cjs.js.map +1 -0
  232. package/dist/social/editProfileDetails.d.ts +1 -2
  233. package/dist/social/editProfileDetails.esm.js +12 -0
  234. package/dist/social/editProfileDetails.esm.js.map +1 -0
  235. package/dist/social/icons.cjs.js +82 -0
  236. package/dist/social/icons.cjs.js.map +1 -0
  237. package/dist/social/{icons.js → icons.esm.js} +12 -18
  238. package/dist/social/icons.esm.js.map +1 -0
  239. package/dist/social/socialPane.d.ts +2 -3
  240. package/dist/social/socialPane2.cjs.js +6 -0
  241. package/dist/social/socialPane2.cjs.js.map +1 -0
  242. package/dist/social/socialPane2.esm.js +326 -0
  243. package/dist/social/socialPane2.esm.js.map +1 -0
  244. package/dist/social/socialSections.cjs.js +2 -0
  245. package/dist/social/socialSections.cjs.js.map +1 -0
  246. package/dist/social/socialSections.d.ts +2 -2
  247. package/dist/social/socialSections.esm.js +221 -0
  248. package/dist/social/socialSections.esm.js.map +1 -0
  249. package/dist/social/spinner.cjs.js +1 -0
  250. package/dist/social/spinner.esm.js +1 -0
  251. package/dist/social/triage.cjs.js +2 -0
  252. package/dist/social/triage.cjs.js.map +1 -0
  253. package/dist/social/triage.d.ts +2 -2
  254. package/dist/social/triage.esm.js +44 -0
  255. package/dist/social/triage.esm.js.map +1 -0
  256. package/dist/tabbed/tabbedPane.cjs.js +2 -0
  257. package/dist/tabbed/tabbedPane.cjs.js.map +1 -0
  258. package/dist/tabbed/tabbedPane.d.ts +1 -1
  259. package/dist/tabbed/tabbedPane.esm.js +38 -0
  260. package/dist/tabbed/tabbedPane.esm.js.map +1 -0
  261. package/dist/tableViewPane.cjs.js +2 -0
  262. package/dist/tableViewPane.cjs.js.map +1 -0
  263. package/dist/tableViewPane.esm.js +20 -0
  264. package/dist/tableViewPane.esm.js.map +1 -0
  265. package/dist/transaction/pane.cjs.js +8 -0
  266. package/dist/transaction/pane.cjs.js.map +1 -0
  267. package/dist/transaction/pane.esm.js +212 -0
  268. package/dist/transaction/pane.esm.js.map +1 -0
  269. package/dist/transaction/period.cjs.js +4 -0
  270. package/dist/transaction/period.cjs.js.map +1 -0
  271. package/dist/transaction/period.esm.js +126 -0
  272. package/dist/transaction/period.esm.js.map +1 -0
  273. package/dist/trip/tripPane.cjs.js +2 -0
  274. package/dist/trip/tripPane.cjs.js.map +1 -0
  275. package/dist/trip/tripPane.esm.js +85 -0
  276. package/dist/trip/tripPane.esm.js.map +1 -0
  277. package/dist/trustedApplications/trustedApplications.dom.cjs.js +2 -0
  278. package/dist/trustedApplications/trustedApplications.dom.cjs.js.map +1 -0
  279. package/dist/trustedApplications/trustedApplications.dom.d.ts +1 -1
  280. package/dist/trustedApplications/trustedApplications.dom.esm.js +108 -0
  281. package/dist/trustedApplications/trustedApplications.dom.esm.js.map +1 -0
  282. package/dist/trustedApplications/trustedApplications.utils.cjs.js +2 -0
  283. package/dist/trustedApplications/trustedApplications.utils.cjs.js.map +1 -0
  284. package/dist/trustedApplications/trustedApplications.utils.d.ts +1 -1
  285. package/dist/trustedApplications/trustedApplications.utils.esm.js +20 -0
  286. package/dist/trustedApplications/trustedApplications.utils.esm.js.map +1 -0
  287. package/dist/trustedApplications/trustedApplications.view.cjs.js +2 -0
  288. package/dist/trustedApplications/trustedApplications.view.cjs.js.map +1 -0
  289. package/dist/trustedApplications/trustedApplications.view.d.ts +1 -1
  290. package/dist/trustedApplications/trustedApplications.view.esm.js +41 -0
  291. package/dist/trustedApplications/trustedApplications.view.esm.js.map +1 -0
  292. package/dist/ui/pane.cjs.js +4 -0
  293. package/dist/ui/pane.cjs.js.map +1 -0
  294. package/dist/ui/pane.esm.js +56 -0
  295. package/dist/ui/pane.esm.js.map +1 -0
  296. package/dist/versionInfo.cjs.js +2 -0
  297. package/dist/versionInfo.cjs.js.map +1 -0
  298. package/dist/versionInfo.esm.js +40 -0
  299. package/dist/versionInfo.esm.js.map +1 -0
  300. package/dist/video/videoPane.cjs.js +2 -0
  301. package/dist/video/videoPane.cjs.js.map +1 -0
  302. package/dist/video/videoPane.esm.js +25 -0
  303. package/dist/video/videoPane.esm.js.map +1 -0
  304. package/package.json +35 -62
  305. package/dist/0314353e28ce6e5539af.svg +0 -9
  306. package/dist/04567ff683933c35c465.png +0 -0
  307. package/dist/10163fd9b5a0e00d63a0.png +0 -0
  308. package/dist/1234dcb2eec2e45f252b.png +0 -0
  309. package/dist/20899934157df4db56cb.png +0 -0
  310. package/dist/33760bf79f097f449da5.png +0 -0
  311. package/dist/4cceba29ab33b1ddd9bb.svg +0 -6
  312. package/dist/578d2b6ed32e7624164e.png +0 -0
  313. package/dist/5f62a5b2b7e99b9640c7.png +0 -0
  314. package/dist/6525766ecd288ec60129.png +0 -0
  315. package/dist/7800be6f6c4b5b0f4f20.png +0 -0
  316. package/dist/7b7538c6f6b317968009.svg +0 -9
  317. package/dist/92d03142abe6efc0b42d.svg +0 -6
  318. package/dist/976473cf5fe24d657d4b.png +0 -0
  319. package/dist/RDFXMLPane.css +0 -70
  320. package/dist/RDFXMLPane.js +0 -100
  321. package/dist/argument/argumentPane.js +0 -60
  322. package/dist/attach/attachPane.js +0 -393
  323. package/dist/audio/audioPane.js +0 -181
  324. package/dist/bda84f59e7216675a208.png +0 -0
  325. package/dist/cd68e8f3990ba8b2139e.png +0 -0
  326. package/dist/classInstancePane.js +0 -91
  327. package/dist/dashboard/basicPreferences.js +0 -147
  328. package/dist/dashboard/dashboardPane.js +0 -73
  329. package/dist/dashboard/homepage.js +0 -42
  330. package/dist/dataContentPane.css +0 -271
  331. package/dist/dataContentPane.js +0 -226
  332. package/dist/defaultPane.css +0 -97
  333. package/dist/defaultPane.js +0 -81
  334. package/dist/dokieli/dokieliPane.js +0 -74
  335. package/dist/e7074a7e2cb69e51cfd3.png +0 -0
  336. package/dist/f3772696fb7ee53c23d8.png +0 -0
  337. package/dist/form/formPane.css +0 -120
  338. package/dist/form/pane.js +0 -250
  339. package/dist/home/homePane.js +0 -74
  340. package/dist/humanReadablePane.css +0 -129
  341. package/dist/humanReadablePane.js +0 -243
  342. package/dist/icons/clock.svg +0 -7
  343. package/dist/icons/comment.svg +0 -6
  344. package/dist/icons/dashboard.svg +0 -9
  345. package/dist/icons/downArrow.svg +0 -6
  346. package/dist/icons/folder.svg +0 -6
  347. package/dist/icons/friends.svg +0 -9
  348. package/dist/icons/help.svg +0 -8
  349. package/dist/icons/iconHelper.js +0 -23
  350. package/dist/icons/person.svg +0 -6
  351. package/dist/icons/personInCircle.svg +0 -8
  352. package/dist/icons/sharing.svg +0 -10
  353. package/dist/icons/signOut.svg +0 -8
  354. package/dist/icons/signUp.svg +0 -9
  355. package/dist/icons/star.svg +0 -3
  356. package/dist/imagePane.css +0 -4
  357. package/dist/imagePane.js +0 -67
  358. package/dist/index.js +0 -123
  359. package/dist/internal/internalPane.css +0 -14
  360. package/dist/internal/internalPane.js +0 -183
  361. package/dist/mainPage/footer.js +0 -29
  362. package/dist/mainPage/header.js +0 -203
  363. package/dist/mainPage/index.js +0 -78
  364. package/dist/mainPage/menu.css +0 -243
  365. package/dist/mainPage/menu.js +0 -449
  366. package/dist/microblogPane/mbStyle.css +0 -267
  367. package/dist/microblogPane/microblogPane.js +0 -1031
  368. package/dist/n3Pane.css +0 -49
  369. package/dist/n3Pane.js +0 -88
  370. package/dist/outline/context.js +0 -21
  371. package/dist/outline/manager.css +0 -78
  372. package/dist/outline/manager.js +0 -2115
  373. package/dist/outline/outlineIcons.js +0 -126
  374. package/dist/outline/propertyViews.js +0 -43
  375. package/dist/outline/queryByExample.js +0 -285
  376. package/dist/outline/userInput.js +0 -1821
  377. package/dist/outline/viewAsImage.js +0 -14
  378. package/dist/outline/viewAsMbox.js +0 -21
  379. package/dist/pad/padPane.css +0 -40
  380. package/dist/pad/padPane.js +0 -421
  381. package/dist/playlist/playlistPane.js +0 -119
  382. package/dist/profileUtils/ownerProfile.js +0 -84
  383. package/dist/registerPanes.js +0 -145
  384. package/dist/schedule/schedulePane.css +0 -294
  385. package/dist/schedule/schedulePane.js +0 -1022
  386. package/dist/sharing/sharingPane.js +0 -48
  387. package/dist/slideshow/slideshowPane.js +0 -79
  388. package/dist/social/editProfileDetails.js +0 -362
  389. package/dist/social/socialPane.css +0 -1464
  390. package/dist/social/socialPane.js +0 -651
  391. package/dist/social/socialSections.js +0 -393
  392. package/dist/social/spinner.js +0 -13
  393. package/dist/social/triage.js +0 -79
  394. package/dist/solid-panes.js +0 -87502
  395. package/dist/solid-panes.js.map +0 -1
  396. package/dist/solid-panes.min.js +0 -3811
  397. package/dist/solid-panes.min.js.map +0 -1
  398. package/dist/styles/tabbedtab.css +0 -1066
  399. package/dist/styles/utilities.css +0 -5
  400. package/dist/tabbed/tabbedPane.js +0 -59
  401. package/dist/tableViewPane.js +0 -56
  402. package/dist/transaction/pane.js +0 -477
  403. package/dist/transaction/period.js +0 -323
  404. package/dist/trip/tripPane.js +0 -174
  405. package/dist/trustedApplications/trustedApplications.dom.js +0 -145
  406. package/dist/trustedApplications/trustedApplications.utils.js +0 -23
  407. package/dist/trustedApplications/trustedApplications.view.js +0 -55
  408. package/dist/ui/pane.js +0 -146
  409. package/dist/versionInfo.js +0 -41
  410. package/dist/video/videoPane.js +0 -42
package/README.md CHANGED
@@ -50,19 +50,20 @@ Volunteers are always welcome!
50
50
  - [Conventions](./Documentation/conventions.md)
51
51
 
52
52
  ## Development
53
- To get started, make sure you have Node.js installed (for instance
54
- through https://github.com/nvm-sh/nvm), and:
55
- 1. run
53
+
54
+ To get started, make sure you have Node.js installed (for instance through [nvm](https://github.com/nvm-sh/nvm)), then:
55
+
56
+ 1. Clone, install, and start the dev server:
57
+
56
58
  ```sh
57
59
  git clone https://github.com/solidos/solid-panes
58
60
  cd solid-panes
59
61
  npm install
60
- npm run start
62
+ npm start
61
63
  ```
62
- 2. a browser window should automatically open at http://localhost:9000, if for some reason it doesn't go ahead and manually navigate there.
63
- 3. Once you arrive at the Solid Pane Tester page, the `profile-pane` will be loaded by default. Proceed to edit `solid-panes/dev/loader.ts` and, at line 5, you should see `import Pane from 'profile-pane'`. Simply change `'profile-pane'` to your preferred pane/directory containing the pane of choice; for example, you could choose `'source-pane'` and bam, it will load that pane. For those who are new, you can go to the `solid-panes/src` directory and manually navigate through each individual folder. In most folders, you simply look for any file that has `pane` in the title. Copy and paste the `pane.js` file of your choice into the `solid-panes/dev/pane` folder, or you can import directly from the `src` directory. For example, importing from `'../src/dokieli/dokieliPane'` will work just fine. Each time you save `solid-panes/dev/loader.ts` while importing a different pane, your browser at `http://localhost:9000/` should automatically refresh. It's a good idea to keep the developer console open in your web browser to ensure panes are loading and rendering properly.
64
+ 2. Open http://localhost:5173 in your browser. You should see the pane development sandbox.
64
65
 
65
- 4. Another tip: to ensure you arrive at the proper destination, look at lines 48–53 in `solid-panes/dev/loader.ts`. You should see an event listener that is ready for a string. `renderPane('https://solidos.solidcommunity.net/Team/SolidOs%20team%20chat/index.ttl#this')` will be the default. Depending on the `pane.js` that you chose in the earlier import statements, the `renderPane` function determines the way you will see DOMContent inside of that particular pane. If you have created an `index.html` in your provider pod storage area, you could use `'https://yoursolidname.solidcommunity.net/profile/index.html'` inside of the `renderPane()` function parameters. You can edit the string manually in `solid-panes/dev/loader.ts`, or you can go to your developer console and type `renderPane('https://yoursolidname.solidcommunity.net/profile/index.html')` — just point to a part of your account that is congruent to the pane that you wish to import! :)
66
+ 3. You can change the `subject` in the sandbox to determine which pane gets rendered. For example, the default subject loads the `profile-pane`.
66
67
 
67
68
  ## Contributing panes
68
69
  When you created a pane, you can either add it as an npm dependency
@@ -80,8 +81,8 @@ pane. Any other pane which wants to deal with contacts can just use the pane wit
80
81
 
81
82
 
82
83
  ## Generative AI usage
83
- The SolidOS team is using GitHub Copilot integrated in Visual Studio Code.
84
- We have added comments in the code to make it explicit which parts are 100% written by AI.
84
+ The SolidOS team is using GitHub Copilot integrated in Visual Studio Code.
85
+ We have added comments in the code to make it explicit which parts are 100% written by AI.
85
86
 
86
87
  ### Prompt usage hitory:
87
88
  * Model Claude Opus 4.6: Initially solid-panes is loaded into an HTML shell form mashlib that looks like ... Also, an iFrame is rendered inside the `<div class="TabulatorOutline" id="DummyUUID">` for “isolated pane rendering”. Analyze the solid-panes code for what it uses from this HTML and suggest a new HTML structure which is mobile and accessibility friendly. Let's go ahead and make changes in this code as suggested to accommodate the new databrowser HTML.
@@ -121,4 +122,3 @@ I want the menu to have a tiny button on the bottom margin left with an arrow to
121
122
  * Raptor mini: Please always keep the footer at the bottom of the menu
122
123
 
123
124
  * GPT-5.4 Model: Add a compatibility shim in the form pane for mixed `ui:Group` plus field typing.
124
-
@@ -1,6 +1,5 @@
1
- import type { DataBrowserContext } from 'pane-registry';
2
- import type { NamedNode } from 'rdflib';
3
- import './RDFXMLPane.css';
1
+ import { DataBrowserContext } from '../node_modules/pane-registry';
2
+ import { NamedNode } from '../node_modules/rdflib';
4
3
  type RDFXMLPaneDefinition = {
5
4
  icon: string;
6
5
  name: string;
@@ -0,0 +1,3 @@
1
+ (function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.rdfxml-pane{border-top:solid 2px var(--color-data-pane-border-top,black);border-left:solid 2px var(--color-data-pane-border-top,black);border-bottom:solid 2px var(--color-data-pane-border-side,#777);border-right:solid 2px var(--color-data-pane-border-side,#777);color:var(--color-text-brown,#440);box-sizing:border-box;padding:1rem}.rdfxml-pane__source{box-sizing:border-box;white-space:pre;max-width:100%;margin:0;font-family:monospace;font-size:120%;overflow-x:auto}.rdfxml-pane__line{grid-template-columns:var(--rdfxml-indent,0) minmax(max-content, auto);align-items:start;display:grid}.rdfxml-pane__line-indent{width:var(--rdfxml-indent,0);display:block}.rdfxml-pane__line-content{white-space:pre}.rdfxml-pane[data-layout=mobile] .rdfxml-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.rdfxml-pane[data-layout=mobile] .rdfxml-pane__line{grid-template-columns:var(--rdfxml-indent,0) minmax(0, 1fr)}.rdfxml-pane[data-layout=mobile] .rdfxml-pane__line-content{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;min-width:0}@media (width<=576px){.rdfxml-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.rdfxml-pane__line{grid-template-columns:var(--rdfxml-indent,0) minmax(0, 1fr)}.rdfxml-pane__line-content{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;min-width:0}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();const e=require("./_virtual/_rolldown/runtime.cjs.js");;let t=require("solid-ui");t=e.__toESM(t);let n=require("rdflib");n=e.__toESM(n);var r=t.ns;function i(e){if(e.trim().length===0)return 0;let t=0;for(let n of e){if(n===` `){t+=1;continue}if(n===` `){t+=2;continue}break}return Math.max(t,2)}function a(e){return e.replace(/^[ \t]+/,``)}var o={icon:t.icons.originalIconBase+`22-text-xml4.png`,name:`RDFXML`,audience:[r.solid(`Developer`)],label:function(e,t){let n=t.session.store;if(`http://www.w3.org/2007/ont/link#ProtocolEvent`in n.findTypeURIs(e))return null;let r=n.statementsMatching(void 0,void 0,void 0,e).length;return r===0?null:`As RDF/XML (`+r+`)`},render:function(e,t){let r=t.dom,o=t.session.store;function s(e){let n=t.environment??{};e.dataset.layout=n.layout??`desktop`}let c=r.createElement(`div`);c.setAttribute(`class`,`rdfxml-pane`),s(c);let l=o.statementsMatching(void 0,void 0,void 0,e),u=n.Serializer(o);u.suggestNamespaces(o.namespaces),u.setBase(e.uri);let d=u.statementsToXML(l),f=r.createElement(`div`);return f.classList.add(`rdfxml-pane__source`),d.split(`
2
+ `).forEach(e=>{let t=r.createElement(`div`),n=r.createElement(`span`),o=r.createElement(`span`),s=i(e);t.classList.add(`rdfxml-pane__line`),t.style.setProperty(`--rdfxml-indent`,`${s}ch`),n.classList.add(`rdfxml-pane__line-indent`),n.setAttribute(`aria-hidden`,`true`),o.classList.add(`rdfxml-pane__line-content`),o.textContent=e.length>0?a(e):` `,t.appendChild(n),t.appendChild(o),f.appendChild(t)}),c.appendChild(f),c}};exports.RDFXMLPane=o;
3
+ //# sourceMappingURL=RDFXMLPane2.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RDFXMLPane2.cjs.js","names":[],"sources":["../src/RDFXMLPane.ts"],"sourcesContent":["/* RDF/XML content Pane\n **\n ** This pane shows the content of a particular RDF resource\n ** or at least the RDF semantics we attribute to that resource,\n ** in generated N3 syntax.\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nimport type { DataBrowserContext, RenderEnvironment } from 'pane-registry'\nimport type { NamedNode, Statement } from 'rdflib'\nimport './RDFXMLPane.css'\n\nconst ns = UI.ns\n\ntype RDFXMLPaneDefinition = {\n icon: string\n name: string\n audience: NamedNode[]\n label: (subject: NamedNode, context: DataBrowserContext) => string | null\n render: (subject: NamedNode, context: DataBrowserContext) => HTMLDivElement\n}\n\nfunction leadingIndentWidth (line: string): number {\n if (line.trim().length === 0) {\n return 0\n }\n\n let width = 0\n for (const character of line) {\n if (character === ' ') {\n width += 1\n continue\n }\n if (character === '\\t') {\n width += 2\n continue\n }\n break\n }\n return Math.max(width, 2)\n}\n\nfunction trimLeadingIndent (line: string): string {\n return line.replace(/^[ \\t]+/, '')\n}\n\nexport const RDFXMLPane: RDFXMLPaneDefinition = {\n icon: UI.icons.originalIconBase + '22-text-xml4.png',\n\n name: 'RDFXML',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject: NamedNode, context: DataBrowserContext): string | null {\n const store = context.session.store\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n store.findTypeURIs(subject)\n ) {\n return null\n }\n\n const n = store.statementsMatching(undefined, undefined, undefined, subject)\n .length\n if (n === 0) return null\n return 'As RDF/XML (' + n + ')'\n },\n\n render: function (\n subject: NamedNode,\n context: DataBrowserContext\n ): HTMLDivElement {\n const myDocument = context.dom\n const kb = context.session.store\n\n function applyEnvironmentAttributes (element: HTMLDivElement): void {\n const environment = (context.environment ?? {}) as Partial<RenderEnvironment>\n element.dataset.layout = environment.layout ?? 'desktop'\n }\n\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'rdfxml-pane')\n applyEnvironmentAttributes(div)\n // Because of smushing etc, this will not be a copy of the original source\n // We could instead either fetch and re-parse the source,\n // or we could keep all the pre-smushed triples.\n const sts = kb.statementsMatching(\n undefined,\n undefined,\n undefined,\n subject\n ) as Statement[] // @@ slow with current store!\n /*\n var kludge = kb.formula([]) // No features\n for (var i=0; i< sts.length; i++) {\n s = sts[i]\n kludge.add(s.subject, s.predicate, s.object)\n }\n */\n const sz = $rdf.Serializer(kb)\n sz.suggestNamespaces(kb.namespaces)\n sz.setBase(subject.uri)\n const str = sz.statementsToXML(sts)\n const source = myDocument.createElement('div')\n source.classList.add('rdfxml-pane__source')\n\n str.split('\\n').forEach(line => {\n const lineElement = myDocument.createElement('div')\n const indentElement = myDocument.createElement('span')\n const contentElement = myDocument.createElement('span')\n const indentWidth = leadingIndentWidth(line)\n\n lineElement.classList.add('rdfxml-pane__line')\n lineElement.style.setProperty('--rdfxml-indent', `${indentWidth}ch`)\n\n indentElement.classList.add('rdfxml-pane__line-indent')\n indentElement.setAttribute('aria-hidden', 'true')\n\n contentElement.classList.add('rdfxml-pane__line-content')\n contentElement.textContent = line.length > 0 ? trimLeadingIndent(line) : ' '\n\n lineElement.appendChild(indentElement)\n lineElement.appendChild(contentElement)\n source.appendChild(lineElement)\n })\n\n div.appendChild(source)\n return div\n }\n}\n\n// ends\n"],"mappings":"sKAaA,IAAM,EAAK,EAAG,GAUd,SAAS,EAAoB,EAAsB,CACjD,GAAI,EAAK,KAAK,CAAC,CAAC,SAAW,EACzB,MAAO,GAGT,IAAI,EAAQ,EACZ,IAAK,IAAM,KAAa,EAAM,CAC5B,GAAI,IAAc,IAAK,CACrB,GAAS,EACT,QACF,CACA,GAAI,IAAc,IAAM,CACtB,GAAS,EACT,QACF,CACA,KACF,CACA,OAAO,KAAK,IAAI,EAAO,CAAC,CAC1B,CAEA,SAAS,EAAmB,EAAsB,CAChD,OAAO,EAAK,QAAQ,UAAW,EAAE,CACnC,CAEA,IAAa,EAAmC,CAC9C,KAAM,EAAG,MAAM,iBAAmB,mBAElC,KAAM,SAEN,SAAU,CAAC,EAAG,MAAM,WAAW,CAAC,EAEhC,MAAO,SAAU,EAAoB,EAA4C,CAC/E,IAAM,EAAQ,EAAQ,QAAQ,MAC9B,GACE,kDACA,EAAM,aAAa,CAAO,EAE1B,OAAO,KAGT,IAAM,EAAI,EAAM,mBAAmB,IAAA,GAAW,IAAA,GAAW,IAAA,GAAW,CAAO,CAAC,CACzE,OAEH,OADI,IAAM,EAAU,KACb,eAAiB,EAAI,GAC9B,EAEA,OAAQ,SACN,EACA,EACgB,CAChB,IAAM,EAAa,EAAQ,IACrB,EAAK,EAAQ,QAAQ,MAE3B,SAAS,EAA4B,EAA+B,CAClE,IAAM,EAAe,EAAQ,aAAe,CAAC,EAC7C,EAAQ,QAAQ,OAAS,EAAY,QAAU,SACjD,CAEA,IAAM,EAAM,EAAW,cAAc,KAAK,EAC1C,EAAI,aAAa,QAAS,aAAa,EACvC,EAA2B,CAAG,EAI9B,IAAM,EAAM,EAAG,mBACb,IAAA,GACA,IAAA,GACA,IAAA,GACA,CACF,EAQM,EAAK,EAAK,WAAW,CAAE,EAC7B,EAAG,kBAAkB,EAAG,UAAU,EAClC,EAAG,QAAQ,EAAQ,GAAG,EACtB,IAAM,EAAM,EAAG,gBAAgB,CAAG,EAC5B,EAAS,EAAW,cAAc,KAAK,EAwB7C,OAvBA,EAAO,UAAU,IAAI,qBAAqB,EAE1C,EAAI,MAAM;CAAI,CAAC,CAAC,QAAQ,GAAQ,CAC9B,IAAM,EAAc,EAAW,cAAc,KAAK,EAC5C,EAAgB,EAAW,cAAc,MAAM,EAC/C,EAAiB,EAAW,cAAc,MAAM,EAChD,EAAc,EAAmB,CAAI,EAE3C,EAAY,UAAU,IAAI,mBAAmB,EAC7C,EAAY,MAAM,YAAY,kBAAmB,GAAG,EAAY,GAAG,EAEnE,EAAc,UAAU,IAAI,0BAA0B,EACtD,EAAc,aAAa,cAAe,MAAM,EAEhD,EAAe,UAAU,IAAI,2BAA2B,EACxD,EAAe,YAAc,EAAK,OAAS,EAAI,EAAkB,CAAI,EAAI,IAEzE,EAAY,YAAY,CAAa,EACrC,EAAY,YAAY,CAAc,EACtC,EAAO,YAAY,CAAW,CAChC,CAAC,EAED,EAAI,YAAY,CAAM,EACf,CACT,CACF"}
@@ -0,0 +1,55 @@
1
+ (function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.rdfxml-pane{border-top:solid 2px var(--color-data-pane-border-top,black);border-left:solid 2px var(--color-data-pane-border-top,black);border-bottom:solid 2px var(--color-data-pane-border-side,#777);border-right:solid 2px var(--color-data-pane-border-side,#777);color:var(--color-text-brown,#440);box-sizing:border-box;padding:1rem}.rdfxml-pane__source{box-sizing:border-box;white-space:pre;max-width:100%;margin:0;font-family:monospace;font-size:120%;overflow-x:auto}.rdfxml-pane__line{grid-template-columns:var(--rdfxml-indent,0) minmax(max-content, auto);align-items:start;display:grid}.rdfxml-pane__line-indent{width:var(--rdfxml-indent,0);display:block}.rdfxml-pane__line-content{white-space:pre}.rdfxml-pane[data-layout=mobile] .rdfxml-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.rdfxml-pane[data-layout=mobile] .rdfxml-pane__line{grid-template-columns:var(--rdfxml-indent,0) minmax(0, 1fr)}.rdfxml-pane[data-layout=mobile] .rdfxml-pane__line-content{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;min-width:0}@media (width<=576px){.rdfxml-pane__source{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.rdfxml-pane__line{grid-template-columns:var(--rdfxml-indent,0) minmax(0, 1fr)}.rdfxml-pane__line-content{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;min-width:0}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();
2
+ import * as e from "solid-ui";
3
+ import * as t from "rdflib";
4
+ //#region src/RDFXMLPane.ts
5
+ var n = e.ns;
6
+ function r(e) {
7
+ if (e.trim().length === 0) return 0;
8
+ let t = 0;
9
+ for (let n of e) {
10
+ if (n === " ") {
11
+ t += 1;
12
+ continue;
13
+ }
14
+ if (n === " ") {
15
+ t += 2;
16
+ continue;
17
+ }
18
+ break;
19
+ }
20
+ return Math.max(t, 2);
21
+ }
22
+ function i(e) {
23
+ return e.replace(/^[ \t]+/, "");
24
+ }
25
+ var a = {
26
+ icon: e.icons.originalIconBase + "22-text-xml4.png",
27
+ name: "RDFXML",
28
+ audience: [n.solid("Developer")],
29
+ label: function(e, t) {
30
+ let n = t.session.store;
31
+ if ("http://www.w3.org/2007/ont/link#ProtocolEvent" in n.findTypeURIs(e)) return null;
32
+ let r = n.statementsMatching(void 0, void 0, void 0, e).length;
33
+ return r === 0 ? null : "As RDF/XML (" + r + ")";
34
+ },
35
+ render: function(e, n) {
36
+ let a = n.dom, o = n.session.store;
37
+ function s(e) {
38
+ let t = n.environment ?? {};
39
+ e.dataset.layout = t.layout ?? "desktop";
40
+ }
41
+ let c = a.createElement("div");
42
+ c.setAttribute("class", "rdfxml-pane"), s(c);
43
+ let l = o.statementsMatching(void 0, void 0, void 0, e), u = t.Serializer(o);
44
+ u.suggestNamespaces(o.namespaces), u.setBase(e.uri);
45
+ let d = u.statementsToXML(l), f = a.createElement("div");
46
+ return f.classList.add("rdfxml-pane__source"), d.split("\n").forEach((e) => {
47
+ let t = a.createElement("div"), n = a.createElement("span"), o = a.createElement("span"), s = r(e);
48
+ t.classList.add("rdfxml-pane__line"), t.style.setProperty("--rdfxml-indent", `${s}ch`), n.classList.add("rdfxml-pane__line-indent"), n.setAttribute("aria-hidden", "true"), o.classList.add("rdfxml-pane__line-content"), o.textContent = e.length > 0 ? i(e) : " ", t.appendChild(n), t.appendChild(o), f.appendChild(t);
49
+ }), c.appendChild(f), c;
50
+ }
51
+ };
52
+ //#endregion
53
+ export { a as RDFXMLPane };
54
+
55
+ //# sourceMappingURL=RDFXMLPane2.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RDFXMLPane2.esm.js","names":[],"sources":["../src/RDFXMLPane.ts"],"sourcesContent":["/* RDF/XML content Pane\n **\n ** This pane shows the content of a particular RDF resource\n ** or at least the RDF semantics we attribute to that resource,\n ** in generated N3 syntax.\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nimport type { DataBrowserContext, RenderEnvironment } from 'pane-registry'\nimport type { NamedNode, Statement } from 'rdflib'\nimport './RDFXMLPane.css'\n\nconst ns = UI.ns\n\ntype RDFXMLPaneDefinition = {\n icon: string\n name: string\n audience: NamedNode[]\n label: (subject: NamedNode, context: DataBrowserContext) => string | null\n render: (subject: NamedNode, context: DataBrowserContext) => HTMLDivElement\n}\n\nfunction leadingIndentWidth (line: string): number {\n if (line.trim().length === 0) {\n return 0\n }\n\n let width = 0\n for (const character of line) {\n if (character === ' ') {\n width += 1\n continue\n }\n if (character === '\\t') {\n width += 2\n continue\n }\n break\n }\n return Math.max(width, 2)\n}\n\nfunction trimLeadingIndent (line: string): string {\n return line.replace(/^[ \\t]+/, '')\n}\n\nexport const RDFXMLPane: RDFXMLPaneDefinition = {\n icon: UI.icons.originalIconBase + '22-text-xml4.png',\n\n name: 'RDFXML',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject: NamedNode, context: DataBrowserContext): string | null {\n const store = context.session.store\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n store.findTypeURIs(subject)\n ) {\n return null\n }\n\n const n = store.statementsMatching(undefined, undefined, undefined, subject)\n .length\n if (n === 0) return null\n return 'As RDF/XML (' + n + ')'\n },\n\n render: function (\n subject: NamedNode,\n context: DataBrowserContext\n ): HTMLDivElement {\n const myDocument = context.dom\n const kb = context.session.store\n\n function applyEnvironmentAttributes (element: HTMLDivElement): void {\n const environment = (context.environment ?? {}) as Partial<RenderEnvironment>\n element.dataset.layout = environment.layout ?? 'desktop'\n }\n\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'rdfxml-pane')\n applyEnvironmentAttributes(div)\n // Because of smushing etc, this will not be a copy of the original source\n // We could instead either fetch and re-parse the source,\n // or we could keep all the pre-smushed triples.\n const sts = kb.statementsMatching(\n undefined,\n undefined,\n undefined,\n subject\n ) as Statement[] // @@ slow with current store!\n /*\n var kludge = kb.formula([]) // No features\n for (var i=0; i< sts.length; i++) {\n s = sts[i]\n kludge.add(s.subject, s.predicate, s.object)\n }\n */\n const sz = $rdf.Serializer(kb)\n sz.suggestNamespaces(kb.namespaces)\n sz.setBase(subject.uri)\n const str = sz.statementsToXML(sts)\n const source = myDocument.createElement('div')\n source.classList.add('rdfxml-pane__source')\n\n str.split('\\n').forEach(line => {\n const lineElement = myDocument.createElement('div')\n const indentElement = myDocument.createElement('span')\n const contentElement = myDocument.createElement('span')\n const indentWidth = leadingIndentWidth(line)\n\n lineElement.classList.add('rdfxml-pane__line')\n lineElement.style.setProperty('--rdfxml-indent', `${indentWidth}ch`)\n\n indentElement.classList.add('rdfxml-pane__line-indent')\n indentElement.setAttribute('aria-hidden', 'true')\n\n contentElement.classList.add('rdfxml-pane__line-content')\n contentElement.textContent = line.length > 0 ? trimLeadingIndent(line) : ' '\n\n lineElement.appendChild(indentElement)\n lineElement.appendChild(contentElement)\n source.appendChild(lineElement)\n })\n\n div.appendChild(source)\n return div\n }\n}\n\n// ends\n"],"mappings":";;;;AAaA,IAAM,IAAK,EAAG;AAUd,SAAS,EAAoB,GAAsB;CACjD,IAAI,EAAK,KAAK,CAAC,CAAC,WAAW,GACzB,OAAO;CAGT,IAAI,IAAQ;CACZ,KAAK,IAAM,KAAa,GAAM;EAC5B,IAAI,MAAc,KAAK;GACrB,KAAS;GACT;EACF;EACA,IAAI,MAAc,KAAM;GACtB,KAAS;GACT;EACF;EACA;CACF;CACA,OAAO,KAAK,IAAI,GAAO,CAAC;AAC1B;AAEA,SAAS,EAAmB,GAAsB;CAChD,OAAO,EAAK,QAAQ,WAAW,EAAE;AACnC;AAEA,IAAa,IAAmC;CAC9C,MAAM,EAAG,MAAM,mBAAmB;CAElC,MAAM;CAEN,UAAU,CAAC,EAAG,MAAM,WAAW,CAAC;CAEhC,OAAO,SAAU,GAAoB,GAA4C;EAC/E,IAAM,IAAQ,EAAQ,QAAQ;EAC9B,IACE,mDACA,EAAM,aAAa,CAAO,GAE1B,OAAO;EAGT,IAAM,IAAI,EAAM,mBAAmB,KAAA,GAAW,KAAA,GAAW,KAAA,GAAW,CAAO,CAAC,CACzE;EAEH,OADI,MAAM,IAAU,OACb,iBAAiB,IAAI;CAC9B;CAEA,QAAQ,SACN,GACA,GACgB;EAChB,IAAM,IAAa,EAAQ,KACrB,IAAK,EAAQ,QAAQ;EAE3B,SAAS,EAA4B,GAA+B;GAClE,IAAM,IAAe,EAAQ,eAAe,CAAC;GAC7C,EAAQ,QAAQ,SAAS,EAAY,UAAU;EACjD;EAEA,IAAM,IAAM,EAAW,cAAc,KAAK;EAE1C,AADA,EAAI,aAAa,SAAS,aAAa,GACvC,EAA2B,CAAG;EAI9B,IAAM,IAAM,EAAG,mBACb,KAAA,GACA,KAAA,GACA,KAAA,GACA,CACF,GAQM,IAAK,EAAK,WAAW,CAAE;EAE7B,AADA,EAAG,kBAAkB,EAAG,UAAU,GAClC,EAAG,QAAQ,EAAQ,GAAG;EACtB,IAAM,IAAM,EAAG,gBAAgB,CAAG,GAC5B,IAAS,EAAW,cAAc,KAAK;EAwB7C,OAvBA,EAAO,UAAU,IAAI,qBAAqB,GAE1C,EAAI,MAAM,IAAI,CAAC,CAAC,SAAQ,MAAQ;GAC9B,IAAM,IAAc,EAAW,cAAc,KAAK,GAC5C,IAAgB,EAAW,cAAc,MAAM,GAC/C,IAAiB,EAAW,cAAc,MAAM,GAChD,IAAc,EAAmB,CAAI;GAa3C,AAXA,EAAY,UAAU,IAAI,mBAAmB,GAC7C,EAAY,MAAM,YAAY,mBAAmB,GAAG,EAAY,GAAG,GAEnE,EAAc,UAAU,IAAI,0BAA0B,GACtD,EAAc,aAAa,eAAe,MAAM,GAEhD,EAAe,UAAU,IAAI,2BAA2B,GACxD,EAAe,cAAc,EAAK,SAAS,IAAI,EAAkB,CAAI,IAAI,KAEzE,EAAY,YAAY,CAAa,GACrC,EAAY,YAAY,CAAc,GACtC,EAAO,YAAY,CAAW;EAChC,CAAC,GAED,EAAI,YAAY,CAAM,GACf;CACT;AACF"}
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
@@ -0,0 +1,2 @@
1
+ var e=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:`open`}).innerHTML=`<style>:host { display: inline-flex; }</style><svg viewBox="0 0 24 24" width="100%" height="100%" ><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3m.08 4h.01"/></g></svg>`}};customElements.get(`icon-lucide-help-circle`)||customElements.define(`icon-lucide-help-circle`,e),exports.default=e;
2
+ //# sourceMappingURL=help-circle.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-circle.cjs.js","names":[],"sources":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ //#region ~icons/lucide/help-circle
2
+ var e = class extends HTMLElement {
3
+ constructor() {
4
+ super(), this.attachShadow({ mode: "open" }).innerHTML = "<style>:host { display: inline-flex; }</style><svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" ><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3m.08 4h.01\"/></g></svg>";
5
+ }
6
+ };
7
+ customElements.get("icon-lucide-help-circle") || customElements.define("icon-lucide-help-circle", e);
8
+ //#endregion
9
+ export { e as default };
10
+
11
+ //# sourceMappingURL=help-circle.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-circle.esm.js","names":[],"sources":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ var e=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:`open`}).innerHTML=`<style>:host { display: inline-flex; }</style><svg viewBox="0 0 24 24" width="100%" height="100%" ><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></g></svg>`}};customElements.get(`icon-lucide-user`)||customElements.define(`icon-lucide-user`,e),exports.default=e;
2
+ //# sourceMappingURL=user.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.cjs.js","names":[],"sources":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ //#region ~icons/lucide/user
2
+ var e = class extends HTMLElement {
3
+ constructor() {
4
+ super(), this.attachShadow({ mode: "open" }).innerHTML = "<style>:host { display: inline-flex; }</style><svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" ><g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></g></svg>";
5
+ }
6
+ };
7
+ customElements.get("icon-lucide-user") || customElements.define("icon-lucide-user", e);
8
+ //#endregion
9
+ export { e as default };
10
+
11
+ //# sourceMappingURL=user.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.esm.js","names":[],"sources":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ const e=require("../_virtual/_rolldown/runtime.cjs.js");let t=require("solid-ui");t=e.__toESM(t);let n=require("rdflib");n=e.__toESM(n);var r=t.ns,i={icon:t.icons.iconBase+`noun_534313.svg`,name:`audio`,label:function(e,t){let r=t.session.store.findTypeURIs(e),i=n.Util.mediaTypeClass(`audio/*`).uri.split(`*`)[0];for(let e in r)if(e.startsWith(i))return`Play audio`;return null},render:function(e,t){let n=t.session.store,i=t.dom,a={autoplay:!1,chain:!0,chainAlbums:!0,loop:!1},o=function(e){let t=e.lastIndexOf(`.`);return t<0||t<e.lastIndexOf(`/`)?e:e.slice(0,t)},s=function(e){let t=n.any(void 0,r.ldp(`contains`),e);if(!t)return!1;let i=n.each(t,r.ldp(`contains`));if(i.length<2)return!1;let a=e.uri;for(let e=0;e<i.length;e++){let t=i[e].uri;if(a.length>t.length&&a.startsWith(o(t))||a.endsWith(`.m4a`)&&t.endsWith(`.mp3`)&&o(a)===o(t))return!0}return!1},c=function(e){let t=e.uri.split(`/`).slice(-3),n=function(e){try{return decodeURIComponent(e)}catch{return e}};h.textContent=n(t[0]),g.textContent=n(t[1]),_.textContent=n(o(t[2]))},l=function(e,t){return new Promise(function(i){if(t||=0,!a.chain)return i(null);let o=n.any(void 0,r.ldp(`contains`),e)||e.dir();if(!o)return i(null);n.fetcher.load(o).then(function(s){let c=n.each(o,r.ldp(`contains`)),u;c.sort();for(let s=0;s<c.length;s++)if(e.uri===c[s].uri)if(u=(s+1)%c.length,u===0)if(a.chainAlbums){if(t===1||!a.chainAlbums)return i(null);l(o,t+1).then(function(e){e&&n.fetcher.load(e).then(function(t){let a=n.each(e,r.ldp(`contains`));return a.length===0?i(null):(a.sort(),console.log(`New Album: `+e),i(a[0]))})})}else return a.loop?i(c[u]):i(null);else return i(c[u])})})},u=function(e){let t=n.sym(e.target.getAttribute(`src`));if(!a.chain)return;let r=function(t){let n=t;l(n).then(function(t){if(!t){console.log(`No successor to `+n);return}s(t)?(console.log(`Ignoring redundant `+t),r(t)):(console.log(`Moving on to `+t),c(t),v.appendChild(d(t,!0)),v.removeChild(e.target))})};r(t)},d=function(e,t){let r=i.createElement(`audio`);return r.setAttribute(`controls`,`yes`),n.fetcher._fetch(e.uri).then(function(e){return e.blob()}).then(function(e){let t=URL.createObjectURL(e);r.setAttribute(`src`,t)}),t&&r.setAttribute(`autoplay`,`autoplay`),r.addEventListener(`ended`,u,!1),r},f=i.createElement(`div`),p=f.appendChild(i.createElement(`table`)),m=`padding: 0.3em; color:white; background-color: black;`,h=p.appendChild(i.createElement(`tr`));h.style.cssText=m;let g=p.appendChild(i.createElement(`tr`));g.style.cssText=m;let _=p.appendChild(i.createElement(`tr`));_.style.cssText=m;let v=p.appendChild(i.createElement(`tr`));return c(e),v.appendChild(d(e,a.autoplay)),!n.holds(void 0,r.ldp(`contains`),e)&&e.dir()&&n.fetcher.load(e.dir()),f}};exports.default=i;
2
+ //# sourceMappingURL=audioPane.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audioPane.cjs.js","names":["UI","$rdf"],"sources":["../../src/audio/audioPane.js"],"sourcesContent":["/* Single audio play Pane\n **\n */\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nconst ns = UI.ns\n\nexport default {\n icon: UI.icons.iconBase + 'noun_534313.svg',\n\n name: 'audio',\n\n // Does the subject deserve an audio play pane?\n label: function (subject, context) {\n const kb = context.session.store\n const typeURIs = kb.findTypeURIs(subject)\n\n const prefix = $rdf.Util.mediaTypeClass('audio/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return 'Play audio'\n }\n return null\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n const options = {\n autoplay: false,\n chain: true,\n chainAlbums: true,\n loop: false\n }\n\n const removeExtension = function (str) {\n const dot = str.lastIndexOf('.')\n if (dot < 0) return str // if any\n const slash = str.lastIndexOf('/')\n if (dot < slash) return str\n return str.slice(0, dot)\n }\n\n // True if there is another file like song.mp3 when this is \"song 1.mp3\"\n // or this is song.m4a\n //\n const looksRedundant = function (x) {\n const folder = kb.any(undefined, ns.ldp('contains'), x)\n if (!folder) return false\n const contents = kb.each(folder, ns.ldp('contains'))\n if (contents.length < 2) return false\n const thisName = x.uri\n for (let k = 0; k < contents.length; k++) {\n const otherName = contents[k].uri\n if (\n thisName.length > otherName.length &&\n thisName.startsWith(removeExtension(otherName))\n ) {\n return true\n }\n if (\n thisName.endsWith('.m4a') &&\n otherName.endsWith('.mp3') &&\n removeExtension(thisName) === removeExtension(otherName)\n ) {\n return true\n }\n }\n return false\n }\n\n // Alternative methods could include:\n // Accesing metadata in the audio contol, or paring the audio file\n const guessNames = function (x) {\n const a = x.uri.split('/').slice(-3) // Hope artist, album, track\n const decode = function (str) {\n try {\n return decodeURIComponent(str)\n } catch (e) {\n return str\n }\n }\n artistRow.textContent = decode(a[0])\n albumRow.textContent = decode(a[1])\n trackRow.textContent = decode(removeExtension(a[2]))\n }\n\n const moveOn = function (current, level) {\n return new Promise(function (resolve) {\n level = level || 0\n if (!options.chain) return resolve(null)\n // Ideally navigate graph else cheat with URI munging:\n const folder =\n kb.any(undefined, ns.ldp('contains'), current) || current.dir()\n if (!folder) return resolve(null)\n kb.fetcher.load(folder).then(function (_xhr) {\n const contents = kb.each(folder, ns.ldp('contains')) // @@ load if not loaded\n // if (contents.length < 2) return resolve(null) NO might move on from 1-track album\n let j\n contents.sort() // sort by URI which hopefully will get tracks in order\n for (let i = 0; i < contents.length; i++) {\n if (current.uri === contents[i].uri) {\n j = (i + 1) % contents.length\n if (j === 0) {\n if (!options.chainAlbums) {\n if (options.loop) {\n return resolve(contents[j])\n }\n return resolve(null) // No more music needed\n } else {\n // chain albums\n if (level === 1 || !options.chainAlbums) return resolve(null) // limit of navigating treee\n moveOn(folder, level + 1).then(function (folder2) {\n if (folder2) {\n kb.fetcher.load(folder2).then(function (_xhr) {\n const contents = kb.each(folder2, ns.ldp('contains'))\n if (contents.length === 0) return resolve(null)\n contents.sort()\n console.log('New Album: ' + folder2)\n return resolve(contents[0]) // Start off new album\n })\n }\n })\n }\n } else {\n return resolve(contents[j])\n }\n }\n } // for\n })\n })\n }\n const endedListener = function (event) {\n const current = kb.sym(event.target.getAttribute('src'))\n if (!options.chain) return\n const tryNext = function (cur) {\n const current = cur\n moveOn(current).then(function (next) {\n if (!next) {\n console.log('No successor to ' + current)\n return\n }\n if (!looksRedundant(next)) {\n console.log('Moving on to ' + next)\n guessNames(next)\n controlRow.appendChild(audioControl(next, true)) // Force autoplay\n controlRow.removeChild(event.target)\n } else {\n console.log('Ignoring redundant ' + next)\n tryNext(next)\n }\n })\n }\n tryNext(current)\n }\n\n const audioControl = function (song, autoplay) {\n const audio = dom.createElement('audio')\n audio.setAttribute('controls', 'yes')\n // get audio with authenticated fetch\n kb.fetcher._fetch(song.uri)\n .then(function (response) {\n return response.blob()\n })\n .then(function (myBlob) {\n const objectURL = URL.createObjectURL(myBlob)\n audio.setAttribute('src', objectURL) // w640 h480 //\n })\n\n if (autoplay) {\n audio.setAttribute('autoplay', 'autoplay') // Make this a personal preference\n }\n audio.addEventListener('ended', endedListener, false)\n return audio\n }\n\n const div = dom.createElement('div')\n const table = div.appendChild(dom.createElement('table'))\n const labelStyle = 'padding: 0.3em; color:white; background-color: black;'\n const artistRow = table.appendChild(dom.createElement('tr'))\n artistRow.style.cssText = labelStyle\n const albumRow = table.appendChild(dom.createElement('tr'))\n albumRow.style.cssText = labelStyle\n const trackRow = table.appendChild(dom.createElement('tr'))\n trackRow.style.cssText = labelStyle\n const controlRow = table.appendChild(dom.createElement('tr'))\n guessNames(subject)\n controlRow.appendChild(audioControl(subject, options.autoplay))\n\n if (!kb.holds(undefined, ns.ldp('contains'), subject) && subject.dir()) {\n kb.fetcher.load(subject.dir()) // Prefetch enclosing @@ or playlist\n }\n\n return div\n }\n}\n\n// ends\n"],"mappings":"wIAKA,IAAM,EAAKA,EAAG,GAEd,EAAe,CACb,KAAMA,EAAG,MAAM,SAAW,kBAE1B,KAAM,QAGN,MAAO,SAAU,EAAS,EAAS,CAEjC,IAAM,EADK,EAAQ,QAAQ,MACP,aAAa,CAAO,EAElC,EAASC,EAAK,KAAK,eAAe,SAAS,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,GAClE,IAAK,IAAM,KAAK,EACd,GAAI,EAAE,WAAW,CAAM,EAAG,MAAO,aAEnC,OAAO,IACT,EAEA,OAAQ,SAAU,EAAS,EAAS,CAClC,IAAM,EAAK,EAAQ,QAAQ,MACrB,EAAM,EAAQ,IACd,EAAU,CACd,SAAU,GACV,MAAO,GACP,YAAa,GACb,KAAM,EACR,EAEM,EAAkB,SAAU,EAAK,CACrC,IAAM,EAAM,EAAI,YAAY,GAAG,EAI/B,OAHI,EAAM,GAEN,EADU,EAAI,YAAY,GAChB,EAAU,EACjB,EAAI,MAAM,EAAG,CAAG,CACzB,EAKM,EAAiB,SAAU,EAAG,CAClC,IAAM,EAAS,EAAG,IAAI,IAAA,GAAW,EAAG,IAAI,UAAU,EAAG,CAAC,EACtD,GAAI,CAAC,EAAQ,MAAO,GACpB,IAAM,EAAW,EAAG,KAAK,EAAQ,EAAG,IAAI,UAAU,CAAC,EACnD,GAAI,EAAS,OAAS,EAAG,MAAO,GAChC,IAAM,EAAW,EAAE,IACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACxC,IAAM,EAAY,EAAS,EAAE,CAAC,IAO9B,GALE,EAAS,OAAS,EAAU,QAC5B,EAAS,WAAW,EAAgB,CAAS,CAAC,GAK9C,EAAS,SAAS,MAAM,GACxB,EAAU,SAAS,MAAM,GACzB,EAAgB,CAAQ,IAAM,EAAgB,CAAS,EAEvD,MAAO,EAEX,CACA,MAAO,EACT,EAIM,EAAa,SAAU,EAAG,CAC9B,IAAM,EAAI,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,EAC7B,EAAS,SAAU,EAAK,CAC5B,GAAI,CACF,OAAO,mBAAmB,CAAG,CAC/B,MAAY,CACV,OAAO,CACT,CACF,EACA,EAAU,YAAc,EAAO,EAAE,EAAE,EACnC,EAAS,YAAc,EAAO,EAAE,EAAE,EAClC,EAAS,YAAc,EAAO,EAAgB,EAAE,EAAE,CAAC,CACrD,EAEM,EAAS,SAAU,EAAS,EAAO,CACvC,OAAO,IAAI,QAAQ,SAAU,EAAS,CAEpC,GADA,IAAiB,EACb,CAAC,EAAQ,MAAO,OAAO,EAAQ,IAAI,EAEvC,IAAM,EACJ,EAAG,IAAI,IAAA,GAAW,EAAG,IAAI,UAAU,EAAG,CAAO,GAAK,EAAQ,IAAI,EAChE,GAAI,CAAC,EAAQ,OAAO,EAAQ,IAAI,EAChC,EAAG,QAAQ,KAAK,CAAM,CAAC,CAAC,KAAK,SAAU,EAAM,CAC3C,IAAM,EAAW,EAAG,KAAK,EAAQ,EAAG,IAAI,UAAU,CAAC,EAE/C,EACJ,EAAS,KAAK,EACd,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,GAAI,EAAQ,MAAQ,EAAS,EAAE,CAAC,IAE9B,GADA,GAAK,EAAI,GAAK,EAAS,OACnB,IAAM,EACR,GAAK,EAAQ,YAKN,CAEL,GAAI,IAAU,GAAK,CAAC,EAAQ,YAAa,OAAO,EAAQ,IAAI,EAC5D,EAAO,EAAQ,EAAQ,CAAC,CAAC,CAAC,KAAK,SAAU,EAAS,CAC5C,GACF,EAAG,QAAQ,KAAK,CAAO,CAAC,CAAC,KAAK,SAAU,EAAM,CAC5C,IAAM,EAAW,EAAG,KAAK,EAAS,EAAG,IAAI,UAAU,CAAC,EAIpD,OAHI,EAAS,SAAW,EAAU,EAAQ,IAAI,GAC9C,EAAS,KAAK,EACd,QAAQ,IAAI,cAAgB,CAAO,EAC5B,EAAQ,EAAS,EAAE,EAC5B,CAAC,CAEL,CAAC,CACH,MAfE,OAHI,EAAQ,KACH,EAAQ,EAAS,EAAE,EAErB,EAAQ,IAAI,OAiBrB,OAAO,EAAQ,EAAS,EAAE,CAIlC,CAAC,CACH,CAAC,CACH,EACM,EAAgB,SAAU,EAAO,CACrC,IAAM,EAAU,EAAG,IAAI,EAAM,OAAO,aAAa,KAAK,CAAC,EACvD,GAAI,CAAC,EAAQ,MAAO,OACpB,IAAM,EAAU,SAAU,EAAK,CAC7B,IAAM,EAAU,EAChB,EAAO,CAAO,CAAC,CAAC,KAAK,SAAU,EAAM,CACnC,GAAI,CAAC,EAAM,CACT,QAAQ,IAAI,mBAAqB,CAAO,EACxC,MACF,CACK,EAAe,CAAI,GAMtB,QAAQ,IAAI,sBAAwB,CAAI,EACxC,EAAQ,CAAI,IANZ,QAAQ,IAAI,gBAAkB,CAAI,EAClC,EAAW,CAAI,EACf,EAAW,YAAY,EAAa,EAAM,EAAI,CAAC,EAC/C,EAAW,YAAY,EAAM,MAAM,EAKvC,CAAC,CACH,EACA,EAAQ,CAAO,CACjB,EAEM,EAAe,SAAU,EAAM,EAAU,CAC7C,IAAM,EAAQ,EAAI,cAAc,OAAO,EAgBvC,OAfA,EAAM,aAAa,WAAY,KAAK,EAEpC,EAAG,QAAQ,OAAO,EAAK,GAAG,CAAC,CACxB,KAAK,SAAU,EAAU,CACxB,OAAO,EAAS,KAAK,CACvB,CAAC,CAAC,CACD,KAAK,SAAU,EAAQ,CACtB,IAAM,EAAY,IAAI,gBAAgB,CAAM,EAC5C,EAAM,aAAa,MAAO,CAAS,CACrC,CAAC,EAEC,GACF,EAAM,aAAa,WAAY,UAAU,EAE3C,EAAM,iBAAiB,QAAS,EAAe,EAAK,EAC7C,CACT,EAEM,EAAM,EAAI,cAAc,KAAK,EAC7B,EAAQ,EAAI,YAAY,EAAI,cAAc,OAAO,CAAC,EAClD,EAAa,wDACb,EAAY,EAAM,YAAY,EAAI,cAAc,IAAI,CAAC,EAC3D,EAAU,MAAM,QAAU,EAC1B,IAAM,EAAW,EAAM,YAAY,EAAI,cAAc,IAAI,CAAC,EAC1D,EAAS,MAAM,QAAU,EACzB,IAAM,EAAW,EAAM,YAAY,EAAI,cAAc,IAAI,CAAC,EAC1D,EAAS,MAAM,QAAU,EACzB,IAAM,EAAa,EAAM,YAAY,EAAI,cAAc,IAAI,CAAC,EAQ5D,OAPA,EAAW,CAAO,EAClB,EAAW,YAAY,EAAa,EAAS,EAAQ,QAAQ,CAAC,EAE1D,CAAC,EAAG,MAAM,IAAA,GAAW,EAAG,IAAI,UAAU,EAAG,CAAO,GAAK,EAAQ,IAAI,GACnE,EAAG,QAAQ,KAAK,EAAQ,IAAI,CAAC,EAGxB,CACT,CACF"}
@@ -0,0 +1,96 @@
1
+ import * as e from "solid-ui";
2
+ import * as t from "rdflib";
3
+ //#region src/audio/audioPane.js
4
+ var n = e.ns, r = {
5
+ icon: e.icons.iconBase + "noun_534313.svg",
6
+ name: "audio",
7
+ label: function(e, n) {
8
+ let r = n.session.store.findTypeURIs(e), i = t.Util.mediaTypeClass("audio/*").uri.split("*")[0];
9
+ for (let e in r) if (e.startsWith(i)) return "Play audio";
10
+ return null;
11
+ },
12
+ render: function(e, t) {
13
+ let r = t.session.store, i = t.dom, a = {
14
+ autoplay: !1,
15
+ chain: !0,
16
+ chainAlbums: !0,
17
+ loop: !1
18
+ }, o = function(e) {
19
+ let t = e.lastIndexOf(".");
20
+ return t < 0 || t < e.lastIndexOf("/") ? e : e.slice(0, t);
21
+ }, s = function(e) {
22
+ let t = r.any(void 0, n.ldp("contains"), e);
23
+ if (!t) return !1;
24
+ let i = r.each(t, n.ldp("contains"));
25
+ if (i.length < 2) return !1;
26
+ let a = e.uri;
27
+ for (let e = 0; e < i.length; e++) {
28
+ let t = i[e].uri;
29
+ if (a.length > t.length && a.startsWith(o(t)) || a.endsWith(".m4a") && t.endsWith(".mp3") && o(a) === o(t)) return !0;
30
+ }
31
+ return !1;
32
+ }, c = function(e) {
33
+ let t = e.uri.split("/").slice(-3), n = function(e) {
34
+ try {
35
+ return decodeURIComponent(e);
36
+ } catch {
37
+ return e;
38
+ }
39
+ };
40
+ h.textContent = n(t[0]), g.textContent = n(t[1]), _.textContent = n(o(t[2]));
41
+ }, l = function(e, t) {
42
+ return new Promise(function(i) {
43
+ if (t ||= 0, !a.chain) return i(null);
44
+ let o = r.any(void 0, n.ldp("contains"), e) || e.dir();
45
+ if (!o) return i(null);
46
+ r.fetcher.load(o).then(function(s) {
47
+ let c = r.each(o, n.ldp("contains")), u;
48
+ c.sort();
49
+ for (let s = 0; s < c.length; s++) if (e.uri === c[s].uri) if (u = (s + 1) % c.length, u === 0) if (a.chainAlbums) {
50
+ if (t === 1 || !a.chainAlbums) return i(null);
51
+ l(o, t + 1).then(function(e) {
52
+ e && r.fetcher.load(e).then(function(t) {
53
+ let a = r.each(e, n.ldp("contains"));
54
+ return a.length === 0 ? i(null) : (a.sort(), console.log("New Album: " + e), i(a[0]));
55
+ });
56
+ });
57
+ } else return a.loop ? i(c[u]) : i(null);
58
+ else return i(c[u]);
59
+ });
60
+ });
61
+ }, u = function(e) {
62
+ let t = r.sym(e.target.getAttribute("src"));
63
+ if (!a.chain) return;
64
+ let n = function(t) {
65
+ let r = t;
66
+ l(r).then(function(t) {
67
+ if (!t) {
68
+ console.log("No successor to " + r);
69
+ return;
70
+ }
71
+ s(t) ? (console.log("Ignoring redundant " + t), n(t)) : (console.log("Moving on to " + t), c(t), v.appendChild(d(t, !0)), v.removeChild(e.target));
72
+ });
73
+ };
74
+ n(t);
75
+ }, d = function(e, t) {
76
+ let n = i.createElement("audio");
77
+ return n.setAttribute("controls", "yes"), r.fetcher._fetch(e.uri).then(function(e) {
78
+ return e.blob();
79
+ }).then(function(e) {
80
+ let t = URL.createObjectURL(e);
81
+ n.setAttribute("src", t);
82
+ }), t && n.setAttribute("autoplay", "autoplay"), n.addEventListener("ended", u, !1), n;
83
+ }, f = i.createElement("div"), p = f.appendChild(i.createElement("table")), m = "padding: 0.3em; color:white; background-color: black;", h = p.appendChild(i.createElement("tr"));
84
+ h.style.cssText = m;
85
+ let g = p.appendChild(i.createElement("tr"));
86
+ g.style.cssText = m;
87
+ let _ = p.appendChild(i.createElement("tr"));
88
+ _.style.cssText = m;
89
+ let v = p.appendChild(i.createElement("tr"));
90
+ return c(e), v.appendChild(d(e, a.autoplay)), !r.holds(void 0, n.ldp("contains"), e) && e.dir() && r.fetcher.load(e.dir()), f;
91
+ }
92
+ };
93
+ //#endregion
94
+ export { r as default };
95
+
96
+ //# sourceMappingURL=audioPane.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audioPane.esm.js","names":["ns"],"sources":["../../src/audio/audioPane.js"],"sourcesContent":["/* Single audio play Pane\n **\n */\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\nconst ns = UI.ns\n\nexport default {\n icon: UI.icons.iconBase + 'noun_534313.svg',\n\n name: 'audio',\n\n // Does the subject deserve an audio play pane?\n label: function (subject, context) {\n const kb = context.session.store\n const typeURIs = kb.findTypeURIs(subject)\n\n const prefix = $rdf.Util.mediaTypeClass('audio/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return 'Play audio'\n }\n return null\n },\n\n render: function (subject, context) {\n const kb = context.session.store\n const dom = context.dom\n const options = {\n autoplay: false,\n chain: true,\n chainAlbums: true,\n loop: false\n }\n\n const removeExtension = function (str) {\n const dot = str.lastIndexOf('.')\n if (dot < 0) return str // if any\n const slash = str.lastIndexOf('/')\n if (dot < slash) return str\n return str.slice(0, dot)\n }\n\n // True if there is another file like song.mp3 when this is \"song 1.mp3\"\n // or this is song.m4a\n //\n const looksRedundant = function (x) {\n const folder = kb.any(undefined, ns.ldp('contains'), x)\n if (!folder) return false\n const contents = kb.each(folder, ns.ldp('contains'))\n if (contents.length < 2) return false\n const thisName = x.uri\n for (let k = 0; k < contents.length; k++) {\n const otherName = contents[k].uri\n if (\n thisName.length > otherName.length &&\n thisName.startsWith(removeExtension(otherName))\n ) {\n return true\n }\n if (\n thisName.endsWith('.m4a') &&\n otherName.endsWith('.mp3') &&\n removeExtension(thisName) === removeExtension(otherName)\n ) {\n return true\n }\n }\n return false\n }\n\n // Alternative methods could include:\n // Accesing metadata in the audio contol, or paring the audio file\n const guessNames = function (x) {\n const a = x.uri.split('/').slice(-3) // Hope artist, album, track\n const decode = function (str) {\n try {\n return decodeURIComponent(str)\n } catch (e) {\n return str\n }\n }\n artistRow.textContent = decode(a[0])\n albumRow.textContent = decode(a[1])\n trackRow.textContent = decode(removeExtension(a[2]))\n }\n\n const moveOn = function (current, level) {\n return new Promise(function (resolve) {\n level = level || 0\n if (!options.chain) return resolve(null)\n // Ideally navigate graph else cheat with URI munging:\n const folder =\n kb.any(undefined, ns.ldp('contains'), current) || current.dir()\n if (!folder) return resolve(null)\n kb.fetcher.load(folder).then(function (_xhr) {\n const contents = kb.each(folder, ns.ldp('contains')) // @@ load if not loaded\n // if (contents.length < 2) return resolve(null) NO might move on from 1-track album\n let j\n contents.sort() // sort by URI which hopefully will get tracks in order\n for (let i = 0; i < contents.length; i++) {\n if (current.uri === contents[i].uri) {\n j = (i + 1) % contents.length\n if (j === 0) {\n if (!options.chainAlbums) {\n if (options.loop) {\n return resolve(contents[j])\n }\n return resolve(null) // No more music needed\n } else {\n // chain albums\n if (level === 1 || !options.chainAlbums) return resolve(null) // limit of navigating treee\n moveOn(folder, level + 1).then(function (folder2) {\n if (folder2) {\n kb.fetcher.load(folder2).then(function (_xhr) {\n const contents = kb.each(folder2, ns.ldp('contains'))\n if (contents.length === 0) return resolve(null)\n contents.sort()\n console.log('New Album: ' + folder2)\n return resolve(contents[0]) // Start off new album\n })\n }\n })\n }\n } else {\n return resolve(contents[j])\n }\n }\n } // for\n })\n })\n }\n const endedListener = function (event) {\n const current = kb.sym(event.target.getAttribute('src'))\n if (!options.chain) return\n const tryNext = function (cur) {\n const current = cur\n moveOn(current).then(function (next) {\n if (!next) {\n console.log('No successor to ' + current)\n return\n }\n if (!looksRedundant(next)) {\n console.log('Moving on to ' + next)\n guessNames(next)\n controlRow.appendChild(audioControl(next, true)) // Force autoplay\n controlRow.removeChild(event.target)\n } else {\n console.log('Ignoring redundant ' + next)\n tryNext(next)\n }\n })\n }\n tryNext(current)\n }\n\n const audioControl = function (song, autoplay) {\n const audio = dom.createElement('audio')\n audio.setAttribute('controls', 'yes')\n // get audio with authenticated fetch\n kb.fetcher._fetch(song.uri)\n .then(function (response) {\n return response.blob()\n })\n .then(function (myBlob) {\n const objectURL = URL.createObjectURL(myBlob)\n audio.setAttribute('src', objectURL) // w640 h480 //\n })\n\n if (autoplay) {\n audio.setAttribute('autoplay', 'autoplay') // Make this a personal preference\n }\n audio.addEventListener('ended', endedListener, false)\n return audio\n }\n\n const div = dom.createElement('div')\n const table = div.appendChild(dom.createElement('table'))\n const labelStyle = 'padding: 0.3em; color:white; background-color: black;'\n const artistRow = table.appendChild(dom.createElement('tr'))\n artistRow.style.cssText = labelStyle\n const albumRow = table.appendChild(dom.createElement('tr'))\n albumRow.style.cssText = labelStyle\n const trackRow = table.appendChild(dom.createElement('tr'))\n trackRow.style.cssText = labelStyle\n const controlRow = table.appendChild(dom.createElement('tr'))\n guessNames(subject)\n controlRow.appendChild(audioControl(subject, options.autoplay))\n\n if (!kb.holds(undefined, ns.ldp('contains'), subject) && subject.dir()) {\n kb.fetcher.load(subject.dir()) // Prefetch enclosing @@ or playlist\n }\n\n return div\n }\n}\n\n// ends\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./_virtual/_rolldown/runtime.cjs.js");let t=require("solid-ui");t=e.__toESM(t);let n=require("rdflib");n=e.__toESM(n);var r=t.ns,i={icon:t.icons.originalIconBase+`tango/22-folder-open.png`,name:`classInstance`,audience:[r.solid(`PowerUser`)],label:function(e,t){let n=t.session.store.each(void 0,r.rdf(`type`),e).length;return n>0?`List (`+n+`)`:null},render:function(e,i){let a=i.dom,o=i.getOutliner(a),s=i.session.store,c=function(e,t){let n=a.createElement(`pre`);n.setAttribute(`style`,`background-color: `+t||`#eed;`),l.appendChild(n),n.appendChild(a.createTextNode(e))},l=a.createElement(`div`);l.setAttribute(`class`,`instancePane`),l.setAttribute(`style`,` border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em `);let u=s.statementsMatching(void 0,r.rdf(`type`),e);if(u.length>0){let i={},d=[];u.forEach(e=>{i[e.subject.toNT()]=e});for(let t in s.findMembersNT(e))i[t]||d.push(n.st(s.fromNT(t),r.rdf(`type`),e));if(d.length&&c(`There are `+u.length+` explicit and `+d.length+` implicit members of `+t.utils.label(e)),!e.sameTerm(r.rdf(`Property`))&&e.sameTerm(r.rdfs(`Class`))){let e=s.statementsMatching(void 0,r.rdf(`type`),void 0),t={};e.forEach(function(e){t[e.object]=e});let i=[];for(let e in t)i.push(n.st(n.sym(e),r.rdf(`type`),r.rdfs(`Class`)));c(`Total of `+e.length+` type statements and `+i.length+` unique types.`)}if(u.length>10){let e=a.createElement(`TR`);e.appendChild(a.createTextNode(``+u.length)),l.appendChild(e)}o.appendPropertyTRs(l,u,!0,function(e){return!0}),d.length&&(c(`Implicit:`),o.appendPropertyTRs(l,d,!0,function(e){return!0}))}return l}};exports.classInstancePane=i;
2
+ //# sourceMappingURL=classInstancePane.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classInstancePane.cjs.js","names":["UI","$rdf"],"sources":["../src/classInstancePane.js"],"sourcesContent":["/* Class member Pane\n **\n ** This outline pane lists the members of a class\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\n\nconst ns = UI.ns\n\nexport const classInstancePane = {\n icon: UI.icons.originalIconBase + 'tango/22-folder-open.png',\n\n name: 'classInstance',\n\n // Create a new folder in a Solid system,\n\n audience: [ns.solid('PowerUser')],\n\n label: function (subject, context) {\n const kb = context.session.store\n const n = kb.each(undefined, ns.rdf('type'), subject).length\n if (n > 0) return 'List (' + n + ')' // Show how many in hover text\n return null // Suppress pane otherwise\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const outliner = context.getOutliner(dom)\n const kb = context.session.store\n const complain = function complain (message, color) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n const div = dom.createElement('div')\n div.setAttribute('class', 'instancePane')\n div.setAttribute(\n 'style',\n ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em '\n )\n\n // If this is a class, look for all both explicit and implicit\n const sts = kb.statementsMatching(undefined, ns.rdf('type'), subject)\n if (sts.length > 0) {\n const already = {}\n const more = []\n sts.forEach(st => {\n already[st.subject.toNT()] = st\n })\n for (const nt in kb.findMembersNT(subject)) {\n if (!already[nt]) {\n more.push($rdf.st(kb.fromNT(nt), ns.rdf('type'), subject)) // @@ no provenance\n }\n }\n if (more.length) {\n complain(\n 'There are ' +\n sts.length +\n ' explicit and ' +\n more.length +\n ' implicit members of ' +\n UI.utils.label(subject)\n )\n }\n if (subject.sameTerm(ns.rdf('Property'))) {\n // / Do not find all properties used as properties .. unless look at kb index\n } else if (subject.sameTerm(ns.rdfs('Class'))) {\n const uses = kb.statementsMatching(undefined, ns.rdf('type'), undefined)\n const usedTypes = {}\n uses.forEach(function (st) {\n usedTypes[st.object] = st\n }) // Get unique\n const used = []\n for (const i in usedTypes) {\n used.push($rdf.st($rdf.sym(i), ns.rdf('type'), ns.rdfs('Class')))\n }\n complain(\n 'Total of ' +\n uses.length +\n ' type statements and ' +\n used.length +\n ' unique types.'\n )\n }\n\n if (sts.length > 10) {\n const tr = dom.createElement('TR')\n tr.appendChild(dom.createTextNode('' + sts.length))\n // tr.AJAR_statement=sts[i]\n div.appendChild(tr)\n }\n\n outliner.appendPropertyTRs(div, sts, true, function (_pred) {\n return true\n })\n\n if (more.length) {\n complain('Implicit:')\n outliner.appendPropertyTRs(div, more, true, function (_pred) {\n return true\n })\n }\n }\n\n return div\n }\n}\n// ends\n"],"mappings":"uIAQA,IAAM,EAAKA,EAAG,GAED,EAAoB,CAC/B,KAAMA,EAAG,MAAM,iBAAmB,2BAElC,KAAM,gBAIN,SAAU,CAAC,EAAG,MAAM,WAAW,CAAC,EAEhC,MAAO,SAAU,EAAS,EAAS,CAEjC,IAAM,EADK,EAAQ,QAAQ,MACd,KAAK,IAAA,GAAW,EAAG,IAAI,MAAM,EAAG,CAAO,CAAC,CAAC,OAEtD,OADI,EAAI,EAAU,SAAW,EAAI,IAC1B,IACT,EAEA,OAAQ,SAAU,EAAS,EAAS,CAClC,IAAM,EAAM,EAAQ,IACd,EAAW,EAAQ,YAAY,CAAG,EAClC,EAAK,EAAQ,QAAQ,MACrB,EAAW,SAAmB,EAAS,EAAO,CAClD,IAAM,EAAM,EAAI,cAAc,KAAK,EACnC,EAAI,aAAa,QAAS,qBAAuB,GAAS,OAAY,EACtE,EAAI,YAAY,CAAG,EACnB,EAAI,YAAY,EAAI,eAAe,CAAO,CAAC,CAC7C,EACM,EAAM,EAAI,cAAc,KAAK,EACnC,EAAI,aAAa,QAAS,cAAc,EACxC,EAAI,aACF,QACA,uGACF,EAGA,IAAM,EAAM,EAAG,mBAAmB,IAAA,GAAW,EAAG,IAAI,MAAM,EAAG,CAAO,EACpE,GAAI,EAAI,OAAS,EAAG,CAClB,IAAM,EAAU,CAAC,EACX,EAAO,CAAC,EACd,EAAI,QAAQ,GAAM,CAChB,EAAQ,EAAG,QAAQ,KAAK,GAAK,CAC/B,CAAC,EACD,IAAK,IAAM,KAAM,EAAG,cAAc,CAAO,EAClC,EAAQ,IACX,EAAK,KAAKC,EAAK,GAAG,EAAG,OAAO,CAAE,EAAG,EAAG,IAAI,MAAM,EAAG,CAAO,CAAC,EAa7D,GAVI,EAAK,QACP,EACE,aACE,EAAI,OACJ,iBACA,EAAK,OACL,wBACAD,EAAG,MAAM,MAAM,CAAO,CAC1B,EAEE,GAAQ,SAAS,EAAG,IAAI,UAAU,CAAC,GAE5B,EAAQ,SAAS,EAAG,KAAK,OAAO,CAAC,EAAG,CAC7C,IAAM,EAAO,EAAG,mBAAmB,IAAA,GAAW,EAAG,IAAI,MAAM,EAAG,IAAA,EAAS,EACjE,EAAY,CAAC,EACnB,EAAK,QAAQ,SAAU,EAAI,CACzB,EAAU,EAAG,QAAU,CACzB,CAAC,EACD,IAAM,EAAO,CAAC,EACd,IAAK,IAAM,KAAK,EACd,EAAK,KAAKC,EAAK,GAAGA,EAAK,IAAI,CAAC,EAAG,EAAG,IAAI,MAAM,EAAG,EAAG,KAAK,OAAO,CAAC,CAAC,EAElE,EACE,YACE,EAAK,OACL,wBACA,EAAK,OACL,gBACJ,CACF,CAEA,GAAI,EAAI,OAAS,GAAI,CACnB,IAAM,EAAK,EAAI,cAAc,IAAI,EACjC,EAAG,YAAY,EAAI,eAAe,GAAK,EAAI,MAAM,CAAC,EAElD,EAAI,YAAY,CAAE,CACpB,CAEA,EAAS,kBAAkB,EAAK,EAAK,GAAM,SAAU,EAAO,CAC1D,MAAO,EACT,CAAC,EAEG,EAAK,SACP,EAAS,WAAW,EACpB,EAAS,kBAAkB,EAAK,EAAM,GAAM,SAAU,EAAO,CAC3D,MAAO,EACT,CAAC,EAEL,CAEA,OAAO,CACT,CACF"}
@@ -0,0 +1,50 @@
1
+ import * as e from "solid-ui";
2
+ import * as t from "rdflib";
3
+ //#region src/classInstancePane.js
4
+ var n = e.ns, r = {
5
+ icon: e.icons.originalIconBase + "tango/22-folder-open.png",
6
+ name: "classInstance",
7
+ audience: [n.solid("PowerUser")],
8
+ label: function(e, t) {
9
+ let r = t.session.store.each(void 0, n.rdf("type"), e).length;
10
+ return r > 0 ? "List (" + r + ")" : null;
11
+ },
12
+ render: function(r, i) {
13
+ let a = i.dom, o = i.getOutliner(a), s = i.session.store, c = function(e, t) {
14
+ let n = a.createElement("pre");
15
+ n.setAttribute("style", "background-color: " + t || "#eed;"), l.appendChild(n), n.appendChild(a.createTextNode(e));
16
+ }, l = a.createElement("div");
17
+ l.setAttribute("class", "instancePane"), l.setAttribute("style", " border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em ");
18
+ let u = s.statementsMatching(void 0, n.rdf("type"), r);
19
+ if (u.length > 0) {
20
+ let i = {}, d = [];
21
+ u.forEach((e) => {
22
+ i[e.subject.toNT()] = e;
23
+ });
24
+ for (let e in s.findMembersNT(r)) i[e] || d.push(t.st(s.fromNT(e), n.rdf("type"), r));
25
+ if (d.length && c("There are " + u.length + " explicit and " + d.length + " implicit members of " + e.utils.label(r)), !r.sameTerm(n.rdf("Property")) && r.sameTerm(n.rdfs("Class"))) {
26
+ let e = s.statementsMatching(void 0, n.rdf("type"), void 0), r = {};
27
+ e.forEach(function(e) {
28
+ r[e.object] = e;
29
+ });
30
+ let i = [];
31
+ for (let e in r) i.push(t.st(t.sym(e), n.rdf("type"), n.rdfs("Class")));
32
+ c("Total of " + e.length + " type statements and " + i.length + " unique types.");
33
+ }
34
+ if (u.length > 10) {
35
+ let e = a.createElement("TR");
36
+ e.appendChild(a.createTextNode("" + u.length)), l.appendChild(e);
37
+ }
38
+ o.appendPropertyTRs(l, u, !0, function(e) {
39
+ return !0;
40
+ }), d.length && (c("Implicit:"), o.appendPropertyTRs(l, d, !0, function(e) {
41
+ return !0;
42
+ }));
43
+ }
44
+ return l;
45
+ }
46
+ };
47
+ //#endregion
48
+ export { r as classInstancePane };
49
+
50
+ //# sourceMappingURL=classInstancePane.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classInstancePane.esm.js","names":["ns"],"sources":["../src/classInstancePane.js"],"sourcesContent":["/* Class member Pane\n **\n ** This outline pane lists the members of a class\n */\n\nimport * as UI from 'solid-ui'\nimport * as $rdf from 'rdflib'\n\nconst ns = UI.ns\n\nexport const classInstancePane = {\n icon: UI.icons.originalIconBase + 'tango/22-folder-open.png',\n\n name: 'classInstance',\n\n // Create a new folder in a Solid system,\n\n audience: [ns.solid('PowerUser')],\n\n label: function (subject, context) {\n const kb = context.session.store\n const n = kb.each(undefined, ns.rdf('type'), subject).length\n if (n > 0) return 'List (' + n + ')' // Show how many in hover text\n return null // Suppress pane otherwise\n },\n\n render: function (subject, context) {\n const dom = context.dom\n const outliner = context.getOutliner(dom)\n const kb = context.session.store\n const complain = function complain (message, color) {\n const pre = dom.createElement('pre')\n pre.setAttribute('style', 'background-color: ' + color || '#eed' + ';')\n div.appendChild(pre)\n pre.appendChild(dom.createTextNode(message))\n }\n const div = dom.createElement('div')\n div.setAttribute('class', 'instancePane')\n div.setAttribute(\n 'style',\n ' border-top: solid 1px #777; border-bottom: solid 1px #777; margin-top: 0.5em; margin-bottom: 0.5em '\n )\n\n // If this is a class, look for all both explicit and implicit\n const sts = kb.statementsMatching(undefined, ns.rdf('type'), subject)\n if (sts.length > 0) {\n const already = {}\n const more = []\n sts.forEach(st => {\n already[st.subject.toNT()] = st\n })\n for (const nt in kb.findMembersNT(subject)) {\n if (!already[nt]) {\n more.push($rdf.st(kb.fromNT(nt), ns.rdf('type'), subject)) // @@ no provenance\n }\n }\n if (more.length) {\n complain(\n 'There are ' +\n sts.length +\n ' explicit and ' +\n more.length +\n ' implicit members of ' +\n UI.utils.label(subject)\n )\n }\n if (subject.sameTerm(ns.rdf('Property'))) {\n // / Do not find all properties used as properties .. unless look at kb index\n } else if (subject.sameTerm(ns.rdfs('Class'))) {\n const uses = kb.statementsMatching(undefined, ns.rdf('type'), undefined)\n const usedTypes = {}\n uses.forEach(function (st) {\n usedTypes[st.object] = st\n }) // Get unique\n const used = []\n for (const i in usedTypes) {\n used.push($rdf.st($rdf.sym(i), ns.rdf('type'), ns.rdfs('Class')))\n }\n complain(\n 'Total of ' +\n uses.length +\n ' type statements and ' +\n used.length +\n ' unique types.'\n )\n }\n\n if (sts.length > 10) {\n const tr = dom.createElement('TR')\n tr.appendChild(dom.createTextNode('' + sts.length))\n // tr.AJAR_statement=sts[i]\n div.appendChild(tr)\n }\n\n outliner.appendPropertyTRs(div, sts, true, function (_pred) {\n return true\n })\n\n if (more.length) {\n complain('Implicit:')\n outliner.appendPropertyTRs(div, more, true, function (_pred) {\n return true\n })\n }\n }\n\n return div\n }\n}\n// ends\n"],"mappings":";;;AAQA,IAAMA,IAAK,EAAG,IAED,IAAoB;CAC/B,MAAM,EAAG,MAAM,mBAAmB;CAElC,MAAM;CAIN,UAAU,CAACA,EAAG,MAAM,WAAW,CAAC;CAEhC,OAAO,SAAU,GAAS,GAAS;EAEjC,IAAM,IADK,EAAQ,QAAQ,MACd,KAAK,KAAA,GAAWA,EAAG,IAAI,MAAM,GAAG,CAAO,CAAC,CAAC;EAEtD,OADI,IAAI,IAAU,WAAW,IAAI,MAC1B;CACT;CAEA,QAAQ,SAAU,GAAS,GAAS;EAClC,IAAM,IAAM,EAAQ,KACd,IAAW,EAAQ,YAAY,CAAG,GAClC,IAAK,EAAQ,QAAQ,OACrB,IAAW,SAAmB,GAAS,GAAO;GAClD,IAAM,IAAM,EAAI,cAAc,KAAK;GAGnC,AAFA,EAAI,aAAa,SAAS,uBAAuB,KAAS,OAAY,GACtE,EAAI,YAAY,CAAG,GACnB,EAAI,YAAY,EAAI,eAAe,CAAO,CAAC;EAC7C,GACM,IAAM,EAAI,cAAc,KAAK;EAEnC,AADA,EAAI,aAAa,SAAS,cAAc,GACxC,EAAI,aACF,SACA,uGACF;EAGA,IAAM,IAAM,EAAG,mBAAmB,KAAA,GAAWA,EAAG,IAAI,MAAM,GAAG,CAAO;EACpE,IAAI,EAAI,SAAS,GAAG;GAClB,IAAM,IAAU,CAAC,GACX,IAAO,CAAC;GACd,EAAI,SAAQ,MAAM;IAChB,EAAQ,EAAG,QAAQ,KAAK,KAAK;GAC/B,CAAC;GACD,KAAK,IAAM,KAAM,EAAG,cAAc,CAAO,GACvC,AAAK,EAAQ,MACX,EAAK,KAAK,EAAK,GAAG,EAAG,OAAO,CAAE,GAAGA,EAAG,IAAI,MAAM,GAAG,CAAO,CAAC;GAa7D,IAVI,EAAK,UACP,EACE,eACE,EAAI,SACJ,mBACA,EAAK,SACL,0BACA,EAAG,MAAM,MAAM,CAAO,CAC1B,GAEE,GAAQ,SAASA,EAAG,IAAI,UAAU,CAAC,KAE5B,EAAQ,SAASA,EAAG,KAAK,OAAO,CAAC,GAAG;IAC7C,IAAM,IAAO,EAAG,mBAAmB,KAAA,GAAWA,EAAG,IAAI,MAAM,GAAG,KAAA,CAAS,GACjE,IAAY,CAAC;IACnB,EAAK,QAAQ,SAAU,GAAI;KACzB,EAAU,EAAG,UAAU;IACzB,CAAC;IACD,IAAM,IAAO,CAAC;IACd,KAAK,IAAM,KAAK,GACd,EAAK,KAAK,EAAK,GAAG,EAAK,IAAI,CAAC,GAAGA,EAAG,IAAI,MAAM,GAAGA,EAAG,KAAK,OAAO,CAAC,CAAC;IAElE,EACE,cACE,EAAK,SACL,0BACA,EAAK,SACL,gBACJ;GACF;GAEA,IAAI,EAAI,SAAS,IAAI;IACnB,IAAM,IAAK,EAAI,cAAc,IAAI;IAGjC,AAFA,EAAG,YAAY,EAAI,eAAe,KAAK,EAAI,MAAM,CAAC,GAElD,EAAI,YAAY,CAAE;GACpB;GAMA,AAJA,EAAS,kBAAkB,GAAK,GAAK,IAAM,SAAU,GAAO;IAC1D,OAAO;GACT,CAAC,GAEG,EAAK,WACP,EAAS,WAAW,GACpB,EAAS,kBAAkB,GAAK,GAAM,IAAM,SAAU,GAAO;IAC3D,OAAO;GACT,CAAC;EAEL;EAEA,OAAO;CACT;AACF"}
@@ -0,0 +1,19 @@
1
+ require("../../_virtual/~icons/lucide/help-circle.cjs.js");const e=require("./Header.styles.cjs.js");let t=require("solid-ui");require("solid-ui/components/button");let n=require("lit"),r=require("lit/decorators.js");require("solid-ui/components/account"),require("solid-ui/components/menu-item"),require("solid-ui/components/menu"),require("solid-ui/components/solid-emblem");var i,a,o,s,c,l,u,d,f,p;function m(e,t,n){h(e,t),t.set(e,n)}function h(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function g(e,t,n){return e.set(v(e,t),n),n}function _(e,t){return e.get(v(e,t))}function v(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function y(e,t,n){return(t=x(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e,t,n,r,i,a){function o(e,t,n){return function(r,i){return n&&n(r),e[t].call(r,i)}}function s(e,t){for(var n=0;n<e.length;n++)e[n].call(t);return t}function c(e,t,n,r){if(typeof e!=`function`&&(r||e!==void 0))throw TypeError(t+` must `+(n||`be`)+` a function`+(r?``:` or undefined`));return e}function l(e,t,n,r,i,a,s,l,u,d,f,p,m){function h(e){if(!m(e))throw TypeError(`Attempted to access private element on non-instance`)}var g,_=t[0],v=t[3],y=!l;if(!y){n||Array.isArray(_)||(_=[_]);var b={},x=[],S=i===3?`get`:i===4||p?`set`:`value`;d?(f||p?b={get:C(function(){return v(this)},r,`get`),set:function(e){t[4](this,e)}}:b[S]=v,f||C(b[S],r,i===2?``:S)):f||(b=Object.getOwnPropertyDescriptor(e,r))}for(var w=e,T=_.length-1;T>=0;T-=n?2:1){var E=_[T],D=n?_[T-1]:void 0,O={},k={kind:[`field`,`accessor`,`method`,`getter`,`setter`,`class`][i],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw Error(`attempted to call addInitializer after decoration was finished`);c(t,`An initializer`,`be`,!0),s.push(t)}.bind(null,O)};try{if(y)(g=c(E.call(D,w,k),`class decorators`,`return`))&&(w=g);else{var A,j;k.static=u,k.private=d,d?i===2?A=function(e){return h(e),b.value}:(i<4&&(A=o(b,`get`,h)),i!==3&&(j=o(b,`set`,h))):(A=function(e){return e[r]},(i<2||i===4)&&(j=function(e,t){e[r]=t}));var M=k.access={has:d?m.bind():function(e){return r in e}};if(A&&(M.get=A),j&&(M.set=j),w=E.call(D,p?{get:b.get,set:b.set}:b[S],k),p){if(typeof w==`object`&&w)(g=c(w.get,`accessor.get`))&&(b.get=g),(g=c(w.set,`accessor.set`))&&(b.set=g),(g=c(w.init,`accessor.init`))&&x.push(g);else if(w!==void 0)throw TypeError(`accessor decorators must return an object with get, set, or init properties or void 0`)}else c(w,(f?`field`:`method`)+` decorators`,`return`)&&(f?x.push(w):b[S]=w)}}finally{O.v=!0}}return(f||p)&&l.push(function(e,t){for(var n=x.length-1;n>=0;n--)t=x[n].call(e,t);return t}),f||y||(d?p?l.push(o(b,`get`),o(b,`set`)):l.push(i===2?b[S]:o.call.bind(b[S])):Object.defineProperty(e,r,b)),w}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for(`Symbol.metadata`),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var d=a[Symbol.metadata||Symbol.for(`Symbol.metadata`)];var f=Object.create(d??null),p=function(e,t,n,r){var i,a,o=[],c=function(t){return w(t)===e},u=new Map;function d(e){e&&o.push(s.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var m=p[1],h=p[2],g=p.length>3,_=16&m,v=!!(8&m),y=(m&=7)==0,b=h+`/`+v;if(!y&&!g){var S=u.get(b);if(!0===S||S===3&&m!==4||S===4&&m!==3)throw Error(`Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: `+h);u.set(b,!(m>2)||m)}l(v?e:e.prototype,p,_,g?`#`+h:x(h),m,r,v?a||=[]:i||=[],o,v,g,y,m===1,v&&g?c:n)}}return d(i),d(a),o}(e,t,i,f);return n.length||u(e,f),{e:p,get c(){var t=[];return n.length&&[u(l(e,[n],r,e.name,5,f,t),f),s.bind(null,t,e)]}}}function x(e){var t=S(e,`string`);return typeof t==`symbol`?t:t+``}function S(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function C(e,t,n){typeof t==`symbol`&&(t=(t=t.description)?`[`+t+`]`:``);try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+` `+t:t})}catch{}return e}function w(e){if(Object(e)!==e)throw TypeError(`right-hand side of 'in' should be an object, got `+(e===null?`null`:typeof e));return e}function T(e){return e}l=[(0,t.customElement)(`solid-panes-header`)];var E;new(f=(o=new WeakMap,p=(u=(0,r.property)({type:Array}),`menuItems`),a=class extends t.WebComponent{constructor(...e){super(...e),m(this,o,(s(this),d(this,[])))}get[p](){return _(o,this)}set menuItems(e){g(o,this,e)}render(){return n.html`
2
+ <a href="/" class="logo">
3
+ <span class="sr-only">Home</span>
4
+ <solid-ui-solid-emblem></solid-ui-solid-emblem>
5
+ </a>
6
+ <div class="spacer"></div>
7
+ <solid-ui-account .menuItems=${this.menuItems}></solid-ui-account>
8
+ <span class="separator"></span>
9
+ <solid-ui-menu placement="bottom-end" distance="5">
10
+ <solid-ui-button slot="trigger" variant="ghost" title="Open help">
11
+ <span class="sr-only">Open help</span>
12
+ <icon-lucide-help-circle slot="icon"></icon-lucide-help-circle>
13
+ </solid-ui-button>
14
+
15
+ <solid-ui-menu-item href="https://solidos.github.io/userguide/">User guide</solid-ui-menu-item>
16
+ <solid-ui-menu-item href="https://github.com/solidos/solidos/issues">Report a problem</solid-ui-menu-item>
17
+ </solid-ui-menu>
18
+ `}},{e:[d,s],c:[E,c]}=b(a,[[u,1,`menuItems`]],l,0,void 0,t.WebComponent),a),i=class extends T{constructor(){super(E),y(this,`styles`,e.default),c()}},y(i,f,void 0),i),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return E}});
19
+ //# sourceMappingURL=Header.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.cjs.js","names":["customElement","WebComponent","html","property","styles","_classDecs","_Header","_Header2","_A","WeakMap","_ref","_menuItemsDecs","type","Array","_Header3","Header","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_menuItems","_classPrivateFieldGet","menuItems","v","_classPrivateFieldSet","render","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default"],"sources":["../../../src/components/header/Header.ts"],"sourcesContent":["import { customElement, WebComponent } from 'solid-ui'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport type { AccountMenuItem } from 'solid-ui/components/account'\n\nimport 'solid-ui/components/account'\nimport 'solid-ui/components/button'\nimport 'solid-ui/components/menu-item'\nimport 'solid-ui/components/menu'\nimport 'solid-ui/components/solid-emblem'\nimport '~icons/lucide/help-circle'\n\nimport styles from './Header.styles.css'\n\n@customElement('solid-panes-header')\nexport default class Header extends WebComponent {\n static styles = styles\n\n @property({ type: Array })\n accessor menuItems: AccountMenuItem[] = []\n\n render () {\n return html`\n <a href=\"/\" class=\"logo\">\n <span class=\"sr-only\">Home</span>\n <solid-ui-solid-emblem></solid-ui-solid-emblem>\n </a>\n <div class=\"spacer\"></div>\n <solid-ui-account .menuItems=${this.menuItems}></solid-ui-account>\n <span class=\"separator\"></span>\n <solid-ui-menu placement=\"bottom-end\" distance=\"5\">\n <solid-ui-button slot=\"trigger\" variant=\"ghost\" title=\"Open help\">\n <span class=\"sr-only\">Open help</span>\n <icon-lucide-help-circle slot=\"icon\"></icon-lucide-help-circle>\n </solid-ui-button>\n\n <solid-ui-menu-item href=\"https://solidos.github.io/userguide/\">User guide</solid-ui-menu-item>\n <solid-ui-menu-item href=\"https://github.com/solidos/solidos/issues\">Report a problem</solid-ui-menu-item>\n </solid-ui-menu>\n `\n }\n}\n"],"mappings":"q8IAYwCK,EAAA,EAAA,EAAA,EAAA,cAAA,CAEzB,oBAAoB,CAAC,EAAA,IAAAC,EAAA,IAAAC,GAAAC,EAAA,IAAAC,QAAAC,GAAAC,GAAAA,EAAAA,EAAAA,SAAAA,CAIxB,CAAEC,KAAMC,KAAM,CAAC,EAAC,aAAAC,EAJ5B,cACoCb,EAAAA,YAAa,CAAAe,YAAA,GAAAC,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAAC,EAAA,KAAAV,GAAAW,EAAA,IAAA,EAAAC,EAAA,KAIP,CAAA,CAAE,EAAA,CAAA,CAAA,IAAAV,IAAA,CAAA,OAAAW,EAAAb,EAAA,IAAA,CAAA,CAAA,IAAjCc,UAASC,EAAA,CAAAC,EAAAhB,EAAA,KAAAe,CAAA,CAAA,CAElBE,QAAU,CACR,MAAOvB,GAAAA,IAAI;;;;;;uCAMwB,KAAKoB,UAAS;;;;;;;;;;;KAYnD,CACF,EAAC,CAAAI,EAAA,CAAAN,EAAAD,GAAAQ,EAAA,CAAArB,EAAAsB,IAAAC,EAAAf,EAAA,CAAA,CAAAH,EAAA,EAAA,WAAA,CAAA,EAAAN,EAAA,EAAA,IAAA,GA1BmCJ,EAAAA,YAAY,EAAAa,GAAAgB,EAAA,cAAAC,CAAA,CAAAf,aAAA,CAAA,MAAAV,CAAA,EAAA0B,EAAA,KAAA,SAC9B5B,EAAAA,OAAM,EAAAwB,EAAA,CAAA,CAAA,EAAAI,EAAAF,EAAAvB,EAAA,IAAA,EAAA,EAAAuB"}
@@ -0,0 +1,8 @@
1
+ import { WebComponent } from 'solid-ui';
2
+ import { AccountMenuItem } from 'solid-ui/components/account';
3
+ export default class Header extends WebComponent {
4
+ static styles: any;
5
+ accessor menuItems: AccountMenuItem[];
6
+ render(): import('lit-html').TemplateResult<1>;
7
+ }
8
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/components/header/Header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,UAAU,CAAA;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,6BAA6B,CAAA;AACpC,OAAO,4BAA4B,CAAA;AACnC,OAAO,+BAA+B,CAAA;AACtC,OAAO,0BAA0B,CAAA;AACjC,OAAO,kCAAkC,CAAA;AACzC,OAAO,2BAA2B,CAAA;AAKlC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,YAAY;IAC9C,MAAM,CAAC,MAAM,MAAS;IAGtB,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAK;IAE1C,MAAM;CAoBP"}