solid-ui 3.1.3-13 → 3.1.3-15

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 (362) hide show
  1. package/README.md +0 -14
  2. package/dist/_virtual/_rolldown/runtime.cjs.js +1 -1
  3. package/dist/acl/access-controller.cjs.js.map +1 -1
  4. package/dist/acl/access-groups.cjs.js +1 -1
  5. package/dist/acl/access-groups.cjs.js.map +1 -1
  6. package/dist/acl/access-groups.esm.js +2 -1
  7. package/dist/acl/access-groups.esm.js.map +1 -1
  8. package/dist/acl/acl.cjs.js.map +1 -1
  9. package/dist/acl/acl.esm.js.map +1 -1
  10. package/dist/chat/bookmarks.esm.js +2 -1
  11. package/dist/chat/bookmarks.esm.js.map +1 -1
  12. package/dist/chat/chatLogic.cjs.js +1 -1
  13. package/dist/chat/chatLogic.cjs.js.map +1 -1
  14. package/dist/chat/chatLogic.esm.js +2 -2
  15. package/dist/chat/chatLogic.esm.js.map +1 -1
  16. package/dist/chat/keys.cjs.js +1 -1
  17. package/dist/chat/keys.cjs.js.map +1 -1
  18. package/dist/chat/keys.d.ts +1 -1
  19. package/dist/chat/keys.d.ts.map +1 -1
  20. package/dist/chat/keys.esm.js +5 -2
  21. package/dist/chat/keys.esm.js.map +1 -1
  22. package/dist/chat/signature.cjs.js +1 -1
  23. package/dist/chat/signature.cjs.js.map +1 -1
  24. package/dist/chat/signature.esm.js +2 -1
  25. package/dist/chat/signature.esm.js.map +1 -1
  26. package/dist/chunks/{DialogProvider-B7wEBrVN.js → DialogProvider-0HIHjONx.js} +11 -11
  27. package/dist/chunks/{DialogProvider-B7wEBrVN.js.map → DialogProvider-0HIHjONx.js.map} +1 -1
  28. package/dist/chunks/{account-DeNlj01m.js → account-Ch8h_zTv.js} +20 -21
  29. package/dist/chunks/{account-DeNlj01m.js.map → account-Ch8h_zTv.js.map} +1 -1
  30. package/dist/chunks/{auth-Knq99zZ9.js → auth-D4NUMSzc.js} +98 -72
  31. package/dist/chunks/auth-D4NUMSzc.js.map +1 -0
  32. package/dist/chunks/{avatar-DgO_p94F.js → avatar-BWtz4RlU.js} +7 -8
  33. package/dist/chunks/{avatar-DgO_p94F.js.map → avatar-BWtz4RlU.js.map} +1 -1
  34. package/dist/chunks/{button-Dvkek1tx.js → button-BJyFKOKO.js} +12 -15
  35. package/dist/chunks/{button-Dvkek1tx.js.map → button-BJyFKOKO.js.map} +1 -1
  36. package/dist/chunks/{chunk.7MPIABXH-DNcYOuE8.js → chunk.64OG2H45-BADxAtEI.js} +97 -50
  37. package/dist/chunks/chunk.64OG2H45-BADxAtEI.js.map +1 -0
  38. package/dist/chunks/{combobox-B5j4LoHY.js → combobox-0NWv9K3D.js} +106 -93
  39. package/dist/chunks/combobox-0NWv9K3D.js.map +1 -0
  40. package/dist/chunks/{combobox-option-C5lKAumO.js → combobox-option-B-twy1Zn.js} +6 -7
  41. package/dist/chunks/{combobox-option-C5lKAumO.js.map → combobox-option-B-twy1Zn.js.map} +1 -1
  42. package/dist/chunks/components-DrP7BOrs.js +1281 -0
  43. package/dist/chunks/components-DrP7BOrs.js.map +1 -0
  44. package/dist/chunks/{dialog-DZgm_Tph.js → dialog-CcMVH-Ut.js} +16 -16
  45. package/dist/chunks/{dialog-DZgm_Tph.js.map → dialog-CcMVH-Ut.js.map} +1 -1
  46. package/dist/chunks/{dialog-content-DY-ROHyi.js → dialog-content-DcD_s3hK.js} +2 -3
  47. package/dist/chunks/{dialog-content-DY-ROHyi.js.map → dialog-content-DcD_s3hK.js.map} +1 -1
  48. package/dist/chunks/{dialog-footer-BAZTjZ8J.js → dialog-footer-CHgSH7G5.js} +2 -3
  49. package/dist/chunks/{dialog-footer-BAZTjZ8J.js.map → dialog-footer-CHgSH7G5.js.map} +1 -1
  50. package/dist/chunks/{dialog-header-COzPcK8F.js → dialog-header-BjellR7_.js} +2 -3
  51. package/dist/chunks/{dialog-header-COzPcK8F.js.map → dialog-header-BjellR7_.js.map} +1 -1
  52. package/dist/chunks/{dialogs-DEuwXC46.js → dialogs-CeHuLUo5.js} +2 -2
  53. package/dist/chunks/{dialogs-DEuwXC46.js.map → dialogs-CeHuLUo5.js.map} +1 -1
  54. package/dist/chunks/{dialogs-root-BYp6fIUE.js → dialogs-root-CvsON-m8.js} +5 -6
  55. package/dist/chunks/{dialogs-root-BYp6fIUE.js.map → dialogs-root-CvsON-m8.js.map} +1 -1
  56. package/dist/chunks/{guard-DI4k0FkM.js → guard-BIesxo_f.js} +7 -8
  57. package/dist/chunks/{guard-DI4k0FkM.js.map → guard-BIesxo_f.js.map} +1 -1
  58. package/dist/chunks/{solid-logic.esm-BrMdCG2_.js → index.esm-CyyOkz04.js} +2663 -2745
  59. package/dist/chunks/index.esm-CyyOkz04.js.map +1 -0
  60. package/dist/chunks/{input-CCpEhtqA.js → input-CFDN76Y5.js} +99 -54
  61. package/dist/chunks/input-CFDN76Y5.js.map +1 -0
  62. package/dist/chunks/{jsonld-B61R4iOL.js → jsonld-52q5nY_t.js} +22 -27
  63. package/dist/chunks/{jsonld-B61R4iOL.js.map → jsonld-52q5nY_t.js.map} +1 -1
  64. package/dist/chunks/{login-button-BafqiKef.js → login-button-BhdKFJ-F.js} +8 -9
  65. package/dist/chunks/{login-button-BafqiKef.js.map → login-button-BhdKFJ-F.js.map} +1 -1
  66. package/dist/chunks/{logout-button-D54NF9EW.js → logout-button-ClbKS9ss.js} +8 -9
  67. package/dist/chunks/{logout-button-D54NF9EW.js.map → logout-button-ClbKS9ss.js.map} +1 -1
  68. package/dist/chunks/{menu-DKxtACGA.js → menu-DVgG-el5.js} +39 -35
  69. package/dist/chunks/menu-DVgG-el5.js.map +1 -0
  70. package/dist/chunks/{menu-item-D9BqJtKZ.js → menu-item-Bj3NgLzB.js} +5 -6
  71. package/dist/chunks/{menu-item-D9BqJtKZ.js.map → menu-item-Bj3NgLzB.js.map} +1 -1
  72. package/dist/chunks/{photo-capture-BoZF621r.js → photo-capture-CVKE0SKx.js} +18 -19
  73. package/dist/chunks/{photo-capture-BoZF621r.js.map → photo-capture-CVKE0SKx.js.map} +1 -1
  74. package/dist/chunks/{photo-capture-modal-BLZtHDj1.js → photo-capture-modal-DARmhHUH.js} +26 -26
  75. package/dist/chunks/{photo-capture-modal-BLZtHDj1.js.map → photo-capture-modal-DARmhHUH.js.map} +1 -1
  76. package/dist/chunks/{provider-Btl6Lnki.js → provider-CBSBzOfP.js} +9 -10
  77. package/dist/chunks/{provider-Btl6Lnki.js.map → provider-CBSBzOfP.js.map} +1 -1
  78. package/dist/chunks/rdf-form-BeuzVBOP.js +339 -0
  79. package/dist/chunks/rdf-form-BeuzVBOP.js.map +1 -0
  80. package/dist/chunks/rdf-input-n73oeSkf.js +440 -0
  81. package/dist/chunks/rdf-input-n73oeSkf.js.map +1 -0
  82. package/dist/chunks/{rolldown-runtime-B1bRi_D7.js → rolldown-runtime-Cb76FRpK.js} +2 -2
  83. package/dist/chunks/{select-XkieYvDm.js → select-BuIxSm1A.js} +9 -10
  84. package/dist/chunks/{select-XkieYvDm.js.map → select-BuIxSm1A.js.map} +1 -1
  85. package/dist/chunks/{select-option-DUg4AWzw.js → select-option-Z8qZsCQo.js} +6 -7
  86. package/dist/chunks/{select-option-DUg4AWzw.js.map → select-option-Z8qZsCQo.js.map} +1 -1
  87. package/dist/chunks/{signup-button-D5wS8_gB.js → signup-button-B-AgjjAK.js} +8 -9
  88. package/dist/chunks/{signup-button-D5wS8_gB.js.map → signup-button-B-AgjjAK.js.map} +1 -1
  89. package/dist/chunks/{solid-emblem-XHk-oomv.js → solid-emblem-D4ItOckU.js} +2 -3
  90. package/dist/chunks/{solid-emblem-XHk-oomv.js.map → solid-emblem-D4ItOckU.js.map} +1 -1
  91. package/dist/chunks/{src-CJICzMIV.js → src-B5SL8UtS.js} +2741 -3207
  92. package/dist/chunks/src-B5SL8UtS.js.map +1 -0
  93. package/dist/chunks/style-CjYxsW7j.js +536 -0
  94. package/dist/chunks/style-CjYxsW7j.js.map +1 -0
  95. package/dist/components/account/Account.cjs.js.map +1 -1
  96. package/dist/components/account.js +1 -1
  97. package/dist/components/all.cjs.js +1 -1
  98. package/dist/components/all.esm.js +2 -1
  99. package/dist/components/avatar/Avatar.cjs.js.map +1 -1
  100. package/dist/components/avatar.js +1 -1
  101. package/dist/components/button/Button.cjs.js +1 -1
  102. package/dist/components/button/Button.cjs.js.map +1 -1
  103. package/dist/components/button/Button.esm.js +1 -3
  104. package/dist/components/button/Button.esm.js.map +1 -1
  105. package/dist/components/button.js +1 -1
  106. package/dist/components/combobox/Combobox.cjs.js +2 -2
  107. package/dist/components/combobox/Combobox.cjs.js.map +1 -1
  108. package/dist/components/combobox/Combobox.d.ts +1 -0
  109. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  110. package/dist/components/combobox/Combobox.esm.js +61 -47
  111. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  112. package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -1
  113. package/dist/components/combobox-option.js +1 -1
  114. package/dist/components/combobox.js +1 -1
  115. package/dist/components/dialog/Dialog.cjs.js +4 -4
  116. package/dist/components/dialog/Dialog.cjs.js.map +1 -1
  117. package/dist/components/dialog/Dialog.esm.js +5 -4
  118. package/dist/components/dialog/Dialog.esm.js.map +1 -1
  119. package/dist/components/dialog-content.js +1 -1
  120. package/dist/components/dialog-footer.js +1 -1
  121. package/dist/components/dialog-header.js +1 -1
  122. package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
  123. package/dist/components/dialog-provider.js +1 -1
  124. package/dist/components/dialog.js +1 -1
  125. package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
  126. package/dist/components/dialogs-root.js +1 -1
  127. package/dist/components/guard/Guard.cjs.js.map +1 -1
  128. package/dist/components/guard.js +1 -1
  129. package/dist/components/input/Input.cjs.js +3 -2
  130. package/dist/components/input/Input.cjs.js.map +1 -1
  131. package/dist/components/input/Input.d.ts +3 -0
  132. package/dist/components/input/Input.d.ts.map +1 -1
  133. package/dist/components/input/Input.esm.js +99 -53
  134. package/dist/components/input/Input.esm.js.map +1 -1
  135. package/dist/components/input/Input.styles.cjs.js +1 -1
  136. package/dist/components/input/Input.styles.cjs.js.map +1 -1
  137. package/dist/components/input/Input.styles.esm.js +1 -1
  138. package/dist/components/input/Input.styles.esm.js.map +1 -1
  139. package/dist/components/input.js +1 -1
  140. package/dist/components/login-button/LoginButton.cjs.js.map +1 -1
  141. package/dist/components/login-button.js +1 -1
  142. package/dist/components/login-modal/LoginModal.cjs.js.map +1 -1
  143. package/dist/components/login-modal.js +1 -1
  144. package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -1
  145. package/dist/components/logout-button.js +1 -1
  146. package/dist/components/menu/Menu.cjs.js +1 -1
  147. package/dist/components/menu/Menu.cjs.js.map +1 -1
  148. package/dist/components/menu/Menu.d.ts.map +1 -1
  149. package/dist/components/menu/Menu.esm.js +1 -1
  150. package/dist/components/menu/Menu.esm.js.map +1 -1
  151. package/dist/components/menu/Menu.test.d.ts +1 -0
  152. package/dist/components/menu/Menu.test.d.ts.map +1 -0
  153. package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
  154. package/dist/components/menu-item.js +1 -1
  155. package/dist/components/menu.js +1 -1
  156. package/dist/components/photo-capture/PhotoCapture.cjs.js.map +1 -1
  157. package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js +1 -1
  158. package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js.map +1 -1
  159. package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js +2 -1
  160. package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js.map +1 -1
  161. package/dist/components/photo-capture-modal.js +1 -1
  162. package/dist/components/photo-capture.js +1 -1
  163. package/dist/components/provider/Provider.cjs.js.map +1 -1
  164. package/dist/components/provider.js +1 -1
  165. package/dist/components/rdf-form/RDFForm.cjs.js +12 -0
  166. package/dist/components/rdf-form/RDFForm.cjs.js.map +1 -0
  167. package/dist/components/rdf-form/RDFForm.d.ts +17 -0
  168. package/dist/components/rdf-form/RDFForm.d.ts.map +1 -0
  169. package/dist/components/rdf-form/RDFForm.esm.js +344 -0
  170. package/dist/components/rdf-form/RDFForm.esm.js.map +1 -0
  171. package/dist/components/rdf-form/RDForm.stories.d.ts +20 -0
  172. package/dist/components/rdf-form/RDForm.stories.d.ts.map +1 -0
  173. package/dist/components/rdf-form/index.cjs.js +2 -0
  174. package/dist/components/rdf-form/index.cjs.js.map +1 -0
  175. package/dist/components/rdf-form/index.d.ts +4 -0
  176. package/dist/components/rdf-form/index.d.ts.map +1 -0
  177. package/dist/components/rdf-form/index.esm.js +7 -0
  178. package/dist/components/rdf-form/index.esm.js.map +1 -0
  179. package/dist/components/rdf-form.js +2 -0
  180. package/dist/components/rdf-input/RDFInput.cjs.js +11 -0
  181. package/dist/components/rdf-input/RDFInput.cjs.js.map +1 -0
  182. package/dist/components/rdf-input/RDFInput.d.ts +24 -0
  183. package/dist/components/rdf-input/RDFInput.d.ts.map +1 -0
  184. package/dist/components/rdf-input/RDFInput.esm.js +349 -0
  185. package/dist/components/rdf-input/RDFInput.esm.js.map +1 -0
  186. package/dist/components/rdf-input/index.cjs.js +2 -0
  187. package/dist/components/rdf-input/index.cjs.js.map +1 -0
  188. package/dist/components/rdf-input/index.d.ts +4 -0
  189. package/dist/components/rdf-input/index.d.ts.map +1 -0
  190. package/dist/components/rdf-input/index.esm.js +7 -0
  191. package/dist/components/rdf-input/index.esm.js.map +1 -0
  192. package/dist/components/rdf-input.js +2 -0
  193. package/dist/components/select/Select.cjs.js.map +1 -1
  194. package/dist/components/select-option/SelectOption.cjs.js.map +1 -1
  195. package/dist/components/select-option.js +1 -1
  196. package/dist/components/select.js +1 -1
  197. package/dist/components/signup-button/SignupButton.cjs.js.map +1 -1
  198. package/dist/components/signup-button.js +1 -1
  199. package/dist/components/solid-emblem.js +1 -1
  200. package/dist/components.js +26 -25
  201. package/dist/index.cjs.js +1 -1
  202. package/dist/index.cjs.js.map +1 -1
  203. package/dist/index.d.ts +1 -0
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.esm.js +3 -2
  206. package/dist/index.esm.js.map +1 -1
  207. package/dist/index.js +8 -7
  208. package/dist/lib/auth/SolidAuth.cjs.js +1 -1
  209. package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
  210. package/dist/lib/auth/SolidAuth.esm.js +3 -1
  211. package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
  212. package/dist/lib/auth/context.cjs.js.map +1 -1
  213. package/dist/lib/components/dialog-component/DialogComponent.cjs.js.map +1 -1
  214. package/dist/lib/components/form-control-component/FormControlComponent.cjs.js.map +1 -1
  215. package/dist/lib/components/web-component/WebComponent.cjs.js +1 -1
  216. package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
  217. package/dist/lib/components/web-component/WebComponent.esm.js +2 -1
  218. package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
  219. package/dist/lib/dialogs/context.cjs.js.map +1 -1
  220. package/dist/lib/file-explorer/context.cjs.js +2 -0
  221. package/dist/lib/file-explorer/context.cjs.js.map +1 -0
  222. package/dist/lib/file-explorer/context.d.ts +22 -0
  223. package/dist/lib/file-explorer/context.d.ts.map +1 -0
  224. package/dist/lib/file-explorer/context.esm.js +7 -0
  225. package/dist/lib/file-explorer/context.esm.js.map +1 -0
  226. package/dist/lib/forms/fieldParams.cjs.js +2 -0
  227. package/dist/lib/forms/fieldParams.cjs.js.map +1 -0
  228. package/dist/lib/forms/fieldParams.d.ts +21 -0
  229. package/dist/lib/forms/fieldParams.d.ts.map +1 -0
  230. package/dist/lib/forms/fieldParams.esm.js +74 -0
  231. package/dist/lib/forms/fieldParams.esm.js.map +1 -0
  232. package/dist/lib/forms/rdfFormsHelper.cjs.js +2 -0
  233. package/dist/lib/forms/rdfFormsHelper.cjs.js.map +1 -0
  234. package/dist/lib/forms/rdfFormsHelper.d.ts +16 -0
  235. package/dist/lib/forms/rdfFormsHelper.d.ts.map +1 -0
  236. package/dist/lib/forms/rdfFormsHelper.esm.js +34 -0
  237. package/dist/lib/forms/rdfFormsHelper.esm.js.map +1 -0
  238. package/dist/lib/forms/store/NoopStore.cjs.js +2 -0
  239. package/dist/lib/forms/store/NoopStore.cjs.js.map +1 -0
  240. package/dist/lib/forms/store/NoopStore.d.ts +6 -0
  241. package/dist/lib/forms/store/NoopStore.d.ts.map +1 -0
  242. package/dist/lib/forms/store/NoopStore.esm.js +10 -0
  243. package/dist/lib/forms/store/NoopStore.esm.js.map +1 -0
  244. package/dist/lib/forms/store/StoreContext.cjs.js +2 -0
  245. package/dist/lib/forms/store/StoreContext.cjs.js.map +1 -0
  246. package/dist/lib/forms/store/StoreContext.d.ts +10 -0
  247. package/dist/lib/forms/store/StoreContext.d.ts.map +1 -0
  248. package/dist/lib/forms/store/StoreContext.esm.js +8 -0
  249. package/dist/lib/forms/store/StoreContext.esm.js.map +1 -0
  250. package/dist/lib/ns.cjs.js.map +1 -1
  251. package/dist/lib/pad.cjs.js +1 -1
  252. package/dist/lib/pad.cjs.js.map +1 -1
  253. package/dist/lib/pad.esm.js +6 -5
  254. package/dist/lib/pad.esm.js.map +1 -1
  255. package/dist/lib/participation.cjs.js +1 -1
  256. package/dist/lib/participation.cjs.js.map +1 -1
  257. package/dist/lib/participation.esm.js +4 -2
  258. package/dist/lib/participation.esm.js.map +1 -1
  259. package/dist/lib/preferences.cjs.js +1 -1
  260. package/dist/lib/preferences.cjs.js.map +1 -1
  261. package/dist/lib/preferences.esm.js +9 -7
  262. package/dist/lib/preferences.esm.js.map +1 -1
  263. package/dist/lib/table.cjs.js +2 -2
  264. package/dist/lib/table.cjs.js.map +1 -1
  265. package/dist/lib/table.esm.js +2 -2
  266. package/dist/lib/table.esm.js.map +1 -1
  267. package/dist/loader.js +8 -7
  268. package/dist/login/login.cjs.js.map +1 -1
  269. package/dist/media/media-capture.esm.js +2 -1
  270. package/dist/media/media-capture.esm.js.map +1 -1
  271. package/dist/solid-ui.js +107 -156
  272. package/dist/solid-ui.min.js +107 -156
  273. package/dist/solid-ui.min.js.map +1 -1
  274. package/dist/storybook/components/StorybookProvider.d.ts +1 -0
  275. package/dist/storybook/components/StorybookProvider.d.ts.map +1 -1
  276. package/dist/storybook/store/StorybookStore.d.ts +6 -0
  277. package/dist/storybook/store/StorybookStore.d.ts.map +1 -0
  278. package/dist/utils/headerFooterHelpers.cjs.js +1 -1
  279. package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
  280. package/dist/utils/headerFooterHelpers.esm.js +2 -1
  281. package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
  282. package/dist/utils/index.cjs.js +1 -1
  283. package/dist/utils/index.cjs.js.map +1 -1
  284. package/dist/utils/index.esm.js +1 -1
  285. package/dist/utils/index.esm.js.map +1 -1
  286. package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
  287. package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
  288. package/dist/utils/keyHelpers/accessData.d.ts +3 -3
  289. package/dist/utils/keyHelpers/accessData.d.ts.map +1 -1
  290. package/dist/utils/keyHelpers/accessData.esm.js +2 -1
  291. package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
  292. package/dist/utils/keyHelpers/otherHelpers.d.ts +1 -1
  293. package/dist/utils/keyHelpers/otherHelpers.d.ts.map +1 -1
  294. package/dist/widgets/buttons.cjs.js +2 -2
  295. package/dist/widgets/buttons.cjs.js.map +1 -1
  296. package/dist/widgets/buttons.esm.js +10 -5
  297. package/dist/widgets/buttons.esm.js.map +1 -1
  298. package/dist/widgets/dragAndDrop.cjs.js +1 -1
  299. package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
  300. package/dist/widgets/dragAndDrop.esm.js +1 -1
  301. package/dist/widgets/dragAndDrop.esm.js.map +1 -1
  302. package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +25 -18
  303. package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js.map +1 -1
  304. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
  305. package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
  306. package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
  307. package/dist/widgets/forms/autocomplete/publicData.d.ts +3 -3
  308. package/dist/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  309. package/dist/widgets/forms/autocomplete/publicData.esm.js +6 -4
  310. package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
  311. package/dist/widgets/forms/basic.cjs.js +1 -1
  312. package/dist/widgets/forms/basic.cjs.js.map +1 -1
  313. package/dist/widgets/forms/basic.esm.js +27 -25
  314. package/dist/widgets/forms/basic.esm.js.map +1 -1
  315. package/dist/widgets/forms/formStyle.cjs.js +1 -1
  316. package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
  317. package/dist/widgets/forms/formStyle.esm.js +4 -4
  318. package/dist/widgets/forms/formStyle.esm.js.map +1 -1
  319. package/dist/widgets/forms.cjs.js +2 -2
  320. package/dist/widgets/forms.cjs.js.map +1 -1
  321. package/dist/widgets/forms.esm.js +10 -8
  322. package/dist/widgets/forms.esm.js.map +1 -1
  323. package/dist/widgets/multiSelect.cjs.js +1 -1
  324. package/dist/widgets/multiSelect.cjs.js.map +1 -1
  325. package/dist/widgets/multiSelect.esm.js +2 -1
  326. package/dist/widgets/multiSelect.esm.js.map +1 -1
  327. package/dist/widgets/peoplePicker.cjs.js.map +1 -1
  328. package/package.json +4 -3
  329. package/dist/chunks/auth-Knq99zZ9.js.map +0 -1
  330. package/dist/chunks/chunk.7MPIABXH-DNcYOuE8.js.map +0 -1
  331. package/dist/chunks/combobox-B5j4LoHY.js.map +0 -1
  332. package/dist/chunks/components-BD458q30.js +0 -758
  333. package/dist/chunks/components-BD458q30.js.map +0 -1
  334. package/dist/chunks/footer-BLSjn5ur.js +0 -144
  335. package/dist/chunks/footer-BLSjn5ur.js.map +0 -1
  336. package/dist/chunks/headerFooterHelpers-CPd5d20q.js +0 -52
  337. package/dist/chunks/headerFooterHelpers-CPd5d20q.js.map +0 -1
  338. package/dist/chunks/input-CCpEhtqA.js.map +0 -1
  339. package/dist/chunks/lit-C4H1jI4q.js +0 -527
  340. package/dist/chunks/lit-C4H1jI4q.js.map +0 -1
  341. package/dist/chunks/menu-DKxtACGA.js.map +0 -1
  342. package/dist/chunks/solid-logic.esm-BrMdCG2_.js.map +0 -1
  343. package/dist/chunks/src-CJICzMIV.js.map +0 -1
  344. package/dist/components/footer/index.cjs.js +0 -1
  345. package/dist/components/footer/index.d.ts +0 -2
  346. package/dist/components/footer/index.d.ts.map +0 -1
  347. package/dist/components/footer/index.esm.js +0 -3
  348. package/dist/components/footer.js +0 -2
  349. package/dist/v2/components/layout/footer/Footer.cjs.js +0 -73
  350. package/dist/v2/components/layout/footer/Footer.cjs.js.map +0 -1
  351. package/dist/v2/components/layout/footer/Footer.d.ts +0 -60
  352. package/dist/v2/components/layout/footer/Footer.d.ts.map +0 -1
  353. package/dist/v2/components/layout/footer/Footer.esm.js +0 -143
  354. package/dist/v2/components/layout/footer/Footer.esm.js.map +0 -1
  355. package/dist/v2/components/layout/footer/Footer.test.d.ts +0 -1
  356. package/dist/v2/components/layout/footer/Footer.test.d.ts.map +0 -1
  357. package/dist/v2/components/layout/footer/index.cjs.js +0 -2
  358. package/dist/v2/components/layout/footer/index.cjs.js.map +0 -1
  359. package/dist/v2/components/layout/footer/index.d.ts +0 -3
  360. package/dist/v2/components/layout/footer/index.d.ts.map +0 -1
  361. package/dist/v2/components/layout/footer/index.esm.js +0 -8
  362. package/dist/v2/components/layout/footer/index.esm.js.map +0 -1
@@ -5,6 +5,7 @@ export declare class StorybookProvider extends WebComponent {
5
5
  accessor avatarUrl: string | undefined;
6
6
  accessor initialized: boolean;
7
7
  private accessor auth;
8
+ private accessor store;
8
9
  willUpdate(changedProperties: PropertyValues<this>): void;
9
10
  protected render(): import('lit-html').TemplateResult<1>;
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StorybookProvider.d.ts","sourceRoot":"","sources":["../../../src/storybook/components/StorybookProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE9D,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAK/C,OAAO,2BAA2B,CAAA;AAElC,qBACa,iBAAkB,SAAQ,YAAY;IAEjD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAGlC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAGtC,QAAQ,CAAC,WAAW,UAAO;IAG3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAE3C,UAAU,CAAE,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;IAcnD,SAAS,CAAC,MAAM;CAMjB"}
1
+ {"version":3,"file":"StorybookProvider.d.ts","sourceRoot":"","sources":["../../../src/storybook/components/StorybookProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE9D,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAK/C,OAAO,2BAA2B,CAAA;AAIlC,qBACa,iBAAkB,SAAQ,YAAY;IAEjD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAGlC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAGtC,QAAQ,CAAC,WAAW,UAAO;IAG3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAG3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,UAAU,CAAE,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;IAkBnD,SAAS,CAAC,MAAM;CAMjB"}
@@ -0,0 +1,6 @@
1
+ import { StoreContext } from '../../lib/forms/store/StoreContext';
2
+ import { LiveStore } from 'rdflib';
3
+ export default class StorybookStore implements StoreContext {
4
+ store: LiveStore;
5
+ }
6
+ //# sourceMappingURL=StorybookStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorybookStore.d.ts","sourceRoot":"","sources":["../../../src/storybook/store/StorybookStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,YAAY;IAClD,KAAK,EAAE,SAAS,CAAgB;CACxC"}
@@ -1,2 +1,2 @@
1
- const e=require("../lib/ns.cjs.js");let t=require("rdflib");function n(){let{origin:e,pathname:n}=document.location,r=document.body?.dataset?.appShell===`databrowser`,i=n.split(`/`).filter(Boolean),a=i[i.length-1]||``,o=/\.[^/]+$/.test(a);return r&&i.length>0&&!o?(0,t.sym)(`${e}/${i[0]}/`):(0,t.sym)(e).site()}async function r(n,r){try{if(!r.any(n,null,e.default.ldp(`Container`),n)){let e=(await r.fetcher.webOperation(`GET`,n.uri,r.fetcher.initFetchOptions(n.uri,{headers:{accept:`text/turtle`}}))).responseText;(0,t.parse)(e,r,n.uri,`text/turtle`)}}catch(e){return console.error(`Error loading pod `+n+`: `+e),null}if(!r.holds(n,e.default.rdf(`type`),e.default.space(`Storage`),n))return console.warn(`Pod `+n+` does not declare itself as a space:Storage`),null;let i=r.any(n,e.default.solid(`owner`),null,n)||r.any(null,e.default.space(`storage`),n,n);if(i){try{await r.fetcher.load(i.doc())}catch{return console.warn(`Unable to load profile of pod owner `+i),null}return r.holds(i,e.default.space(`storage`),n,i.doc())||console.warn(`Pod owner ${i} does NOT list pod ${n} as their storage`),i}else{let i=(0,t.sym)(`${n.uri}profile/card#me`);try{await r.fetcher.load(i)}catch{return console.error(`Ooops. Guessed wrong pod owner webid {$guess} : can't load it.`),null}return r.holds(i,e.default.space(`storage`),n,i.doc())?(console.warn(`Using guessed pod owner webid but it links back.`),i):null}}function i(t,n){return t.anyValue(n,e.default.vcard(`fn`),null,n.doc())||t.anyValue(n,e.default.foaf(`name`),null,n.doc())||n.uri}function a(e,t,n={}){let r,i,a,o=null,s=0,c=function(){s=n.leading?Date.now():0,o=null,a=e.apply(r,i),o||(r=i=null)};return function(){let l=Date.now();!s&&!n.leading&&(s=l);let u=t-(l-s);return r=this,i=arguments,u<=0||u>t?(o&&=(clearTimeout(o),null),s=l,a=e.apply(r,i),o||(r=i=null)):!o&&n.trailing!==!1&&(o=setTimeout(c,u)),a}}exports.getName=i,exports.getPod=n,exports.getPodOwner=r,exports.throttle=a;
1
+ const e=require("../lib/ns.cjs.js");let t=require("rdflib");function n(){let{origin:e,pathname:n}=document.location,r=document.body?.dataset?.appShell===`databrowser`,i=n.split(`/`).filter(Boolean),a=i[i.length-1]||``,o=/\.[^/]+$/.test(a);return r&&i.length>0&&!o?(0,t.sym)(`${e}/${i[0]}/`):(0,t.sym)(e).site()}async function r(n,r){try{if(!r.any(n,null,e.default.ldp(`Container`),n)){let e=(await r.fetcher.webOperation(`GET`,n.uri,r.fetcher.initFetchOptions(n.uri,{headers:{accept:`text/turtle`}}))).responseText;(0,t.parse)(e,r,n.uri,`text/turtle`)}}catch(e){return console.error(`Error loading pod `+n+`: `+e),null}if(!r.holds(n,e.default.rdf(`type`),e.default.space(`Storage`),n))return console.warn(`Pod `+n+` does not declare itself as a space:Storage`),null;let i=r.any(n,e.default.solid(`owner`),null,n)||r.any(null,e.default.space(`storage`),n,n);if(i){try{await r.fetcher.load(i.doc())}catch{return console.warn(`Unable to load profile of pod owner `+i),null}return r.holds(i,e.default.space(`storage`),n,i.doc())||console.warn(`Pod owner ${i} does NOT list pod ${n} as their storage`),i}{let i=(0,t.sym)(`${n.uri}profile/card#me`);try{await r.fetcher.load(i)}catch{return console.error(`Ooops. Guessed wrong pod owner webid {$guess} : can't load it.`),null}return r.holds(i,e.default.space(`storage`),n,i.doc())?(console.warn(`Using guessed pod owner webid but it links back.`),i):null}}function i(t,n){return t.anyValue(n,e.default.vcard(`fn`),null,n.doc())||t.anyValue(n,e.default.foaf(`name`),null,n.doc())||n.uri}function a(e,t,n={}){let r,i,a,o=null,s=0,c=function(){s=n.leading?Date.now():0,o=null,a=e.apply(r,i),o||(r=i=null)};return function(){let l=Date.now();!s&&!n.leading&&(s=l);let u=t-(l-s);return r=this,i=arguments,u<=0||u>t?(o&&=(clearTimeout(o),null),s=l,a=e.apply(r,i),o||(r=i=null)):!o&&n.trailing!==!1&&(o=setTimeout(c,u)),a}}exports.getName=i,exports.getPod=n,exports.getPodOwner=r,exports.throttle=a;
2
2
  //# sourceMappingURL=headerFooterHelpers.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"headerFooterHelpers.cjs.js","names":[],"sources":["../../src/utils/headerFooterHelpers.ts"],"sourcesContent":["/*\n Copied from mashlib/src/global/metadata.ts\n */\nimport { IndexedFormula, LiveStore, NamedNode, parse, sym } from 'rdflib'\nimport ns from '../lib/ns'\n\n/* @ts-ignore no-console */\ntype ThrottleOptions = {\n leading?: boolean;\n throttling?: boolean;\n trailing?: boolean;\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getPod (): NamedNode {\n const { origin, pathname } = document.location\n const isDatabrowserShell = document.body?.dataset?.appShell === 'databrowser'\n const segments = pathname.split('/').filter(Boolean)\n const lastSegment = segments[segments.length - 1] || ''\n const looksLikeFile = /\\.[^/]+$/.test(lastSegment)\n\n if (isDatabrowserShell && segments.length > 0 && !looksLikeFile) {\n return sym(`${origin}/${segments[0]}/`)\n }\n\n // Root-hosted pods and static databrowser pages still use the site root.\n return sym(origin).site()\n}\n/**\n */\nexport async function getPodOwner (pod: NamedNode, store: LiveStore): Promise<NamedNode | null> {\n // This is a massive guess. In future\n // const podOwner = sym(`${pod.uri}profile/card#me`)\n\n try {\n // load turtle Container representation\n if (!store.any(pod, null, ns.ldp('Container'), pod)) {\n const response = await store.fetcher.webOperation('GET', pod.uri, store.fetcher.initFetchOptions(pod.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n parse(containerTurtle as string, store, pod.uri, 'text/turtle')\n }\n } catch (err) {\n console.error('Error loading pod ' + pod + ': ' + err)\n return null\n }\n if (!store.holds(pod, ns.rdf('type'), ns.space('Storage'), pod)) {\n console.warn('Pod ' + pod + ' does not declare itself as a space:Storage')\n return null\n }\n const podOwner = store.any(pod, ns.solid('owner'), null, pod) ||\n store.any(null, ns.space('storage'), pod, pod)\n if (podOwner) {\n try {\n await store.fetcher.load((podOwner as NamedNode).doc())\n } catch (_err) {\n console.warn('Unable to load profile of pod owner ' + podOwner)\n return null\n }\n if (!store.holds(podOwner, ns.space('storage'), pod, (podOwner as NamedNode).doc())) {\n console.warn(`Pod owner ${podOwner} does NOT list pod ${pod} as their storage`)\n }\n return podOwner as NamedNode// Success!\n } else { // pod owner not declared in pod\n // @@ TODO: This is given the structure that NSS provides\n // This is a massive guess. For old pods which don't have owner link\n const guess = sym(`${pod.uri}profile/card#me`)\n try {\n // @ts-ignore LiveStore always has fetcher\n await store.fetcher.load(guess)\n } catch (_err) {\n console.error('Ooops. Guessed wrong pod owner webid {$guess} : can\\'t load it.')\n return null\n }\n if (store.holds(guess, ns.space('storage'), pod, guess.doc())) {\n console.warn('Using guessed pod owner webid but it links back.')\n return guess\n }\n return null\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getName (store: IndexedFormula, user: NamedNode): string {\n return store.anyValue(user, ns.vcard('fn'), null, user.doc()) ||\n store.anyValue(user, ns.foaf('name'), null, user.doc()) ||\n user.uri\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function throttle (func: Function, wait: number, options: ThrottleOptions = {}): (...args: any[]) => any {\n let context: any,\n args: any,\n result: any\n let timeout: any = null\n let previous = 0\n const later = function () {\n previous = !options.leading ? 0 : Date.now()\n timeout = null\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n return function () {\n const now = Date.now()\n if (!previous && !options.leading) previous = now\n const remaining = wait - (now - previous)\n // @ts-ignore\n context = this\n args = arguments\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n result = func.apply(context, args)\n if (!timeout) context = args = null\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining)\n }\n return result\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"headerFooterHelpers.cjs.js","names":[],"sources":["../../src/utils/headerFooterHelpers.ts"],"sourcesContent":["/*\n Copied from mashlib/src/global/metadata.ts\n */\nimport { IndexedFormula, LiveStore, NamedNode, parse, sym } from 'rdflib'\nimport ns from '../lib/ns'\n\n/* @ts-ignore no-console */\ntype ThrottleOptions = {\n leading?: boolean;\n throttling?: boolean;\n trailing?: boolean;\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getPod (): NamedNode {\n const { origin, pathname } = document.location\n const isDatabrowserShell = document.body?.dataset?.appShell === 'databrowser'\n const segments = pathname.split('/').filter(Boolean)\n const lastSegment = segments[segments.length - 1] || ''\n const looksLikeFile = /\\.[^/]+$/.test(lastSegment)\n\n if (isDatabrowserShell && segments.length > 0 && !looksLikeFile) {\n return sym(`${origin}/${segments[0]}/`)\n }\n\n // Root-hosted pods and static databrowser pages still use the site root.\n return sym(origin).site()\n}\n/**\n */\nexport async function getPodOwner (pod: NamedNode, store: LiveStore): Promise<NamedNode | null> {\n // This is a massive guess. In future\n // const podOwner = sym(`${pod.uri}profile/card#me`)\n\n try {\n // load turtle Container representation\n if (!store.any(pod, null, ns.ldp('Container'), pod)) {\n const response = await store.fetcher.webOperation('GET', pod.uri, store.fetcher.initFetchOptions(pod.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n parse(containerTurtle as string, store, pod.uri, 'text/turtle')\n }\n } catch (err) {\n console.error('Error loading pod ' + pod + ': ' + err)\n return null\n }\n if (!store.holds(pod, ns.rdf('type'), ns.space('Storage'), pod)) {\n console.warn('Pod ' + pod + ' does not declare itself as a space:Storage')\n return null\n }\n const podOwner = store.any(pod, ns.solid('owner'), null, pod) ||\n store.any(null, ns.space('storage'), pod, pod)\n if (podOwner) {\n try {\n await store.fetcher.load((podOwner as NamedNode).doc())\n } catch (_err) {\n console.warn('Unable to load profile of pod owner ' + podOwner)\n return null\n }\n if (!store.holds(podOwner, ns.space('storage'), pod, (podOwner as NamedNode).doc())) {\n console.warn(`Pod owner ${podOwner} does NOT list pod ${pod} as their storage`)\n }\n return podOwner as NamedNode// Success!\n } else { // pod owner not declared in pod\n // @@ TODO: This is given the structure that NSS provides\n // This is a massive guess. For old pods which don't have owner link\n const guess = sym(`${pod.uri}profile/card#me`)\n try {\n // @ts-ignore LiveStore always has fetcher\n await store.fetcher.load(guess)\n } catch (_err) {\n console.error('Ooops. Guessed wrong pod owner webid {$guess} : can\\'t load it.')\n return null\n }\n if (store.holds(guess, ns.space('storage'), pod, guess.doc())) {\n console.warn('Using guessed pod owner webid but it links back.')\n return guess\n }\n return null\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getName (store: IndexedFormula, user: NamedNode): string {\n return store.anyValue(user, ns.vcard('fn'), null, user.doc()) ||\n store.anyValue(user, ns.foaf('name'), null, user.doc()) ||\n user.uri\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function throttle (func: Function, wait: number, options: ThrottleOptions = {}): (...args: any[]) => any {\n let context: any,\n args: any,\n result: any\n let timeout: any = null\n let previous = 0\n const later = function () {\n previous = !options.leading ? 0 : Date.now()\n timeout = null\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n return function () {\n const now = Date.now()\n if (!previous && !options.leading) previous = now\n const remaining = wait - (now - previous)\n // @ts-ignore\n context = this\n args = arguments\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n result = func.apply(context, args)\n if (!timeout) context = args = null\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining)\n }\n return result\n }\n}\n"],"mappings":"4DAgBA,SAAgB,GAAqB,CACnC,GAAM,CAAE,SAAQ,YAAa,SAAS,SAChC,EAAqB,SAAS,MAAM,SAAS,WAAa,cAC1D,EAAW,EAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,EAC7C,EAAc,EAAS,EAAS,OAAS,IAAM,GAC/C,EAAgB,WAAW,KAAK,CAAW,EAOjD,OALI,GAAsB,EAAS,OAAS,GAAK,CAAC,GAChD,EAAO,EAAA,IAAA,CAAI,GAAG,EAAO,GAAG,EAAS,GAAG,EAAE,GAIxC,EAAO,EAAA,IAAA,CAAI,CAAM,CAAC,CAAC,KAAK,CAC1B,CAGA,eAAsB,EAAa,EAAgB,EAA6C,CAI9F,GAAI,CAEF,GAAI,CAAC,EAAM,IAAI,EAAK,KAAM,EAAA,QAAG,IAAI,WAAW,EAAG,CAAG,EAAG,CAEnD,IAAM,GAAkB,MADD,EAAM,QAAQ,aAAa,MAAO,EAAI,IAAK,EAAM,QAAQ,iBAAiB,EAAI,IAAK,CAAE,QAAS,CAAE,OAAQ,aAAc,CAAE,CAAC,CAAC,EAAA,CAChH,cACjC,EAAA,EAAA,MAAA,CAAM,EAA2B,EAAO,EAAI,IAAK,aAAa,CAChE,CACF,OAAS,EAAK,CAEZ,OADA,QAAQ,MAAM,qBAAuB,EAAM,KAAO,CAAG,EAC9C,IACT,CACA,GAAI,CAAC,EAAM,MAAM,EAAK,EAAA,QAAG,IAAI,MAAM,EAAG,EAAA,QAAG,MAAM,SAAS,EAAG,CAAG,EAE5D,OADA,QAAQ,KAAK,QAAU,EAAM,6CAA6C,EACnE,KAET,IAAM,EAAW,EAAM,IAAI,EAAK,EAAA,QAAG,MAAM,OAAO,EAAG,KAAM,CAAG,GACtD,EAAM,IAAI,KAAM,EAAA,QAAG,MAAM,SAAS,EAAG,EAAK,CAAG,EACnD,GAAI,EAAU,CACZ,GAAI,CACF,MAAM,EAAM,QAAQ,KAAM,EAAuB,IAAI,CAAC,CACxD,MAAe,CAEb,OADA,QAAQ,KAAK,uCAAyC,CAAQ,EACvD,IACT,CAIA,OAHK,EAAM,MAAM,EAAU,EAAA,QAAG,MAAM,SAAS,EAAG,EAAM,EAAuB,IAAI,CAAC,GAChF,QAAQ,KAAK,aAAa,EAAS,qBAAqB,EAAI,kBAAkB,EAEzE,CACT,CAAO,CAGL,IAAM,GAAA,EAAQ,EAAA,IAAA,CAAI,GAAG,EAAI,IAAI,gBAAgB,EAC7C,GAAI,CAEF,MAAM,EAAM,QAAQ,KAAK,CAAK,CAChC,MAAe,CAEb,OADA,QAAQ,MAAM,gEAAiE,EACxE,IACT,CAKA,OAJI,EAAM,MAAM,EAAO,EAAA,QAAG,MAAM,SAAS,EAAG,EAAK,EAAM,IAAI,CAAC,GAC1D,QAAQ,KAAK,kDAAkD,EACxD,GAEF,IACT,CACF,CAIA,SAAgB,EAAS,EAAuB,EAAyB,CACvE,OAAO,EAAM,SAAS,EAAM,EAAA,QAAG,MAAM,IAAI,EAAG,KAAM,EAAK,IAAI,CAAC,GAC1D,EAAM,SAAS,EAAM,EAAA,QAAG,KAAK,MAAM,EAAG,KAAM,EAAK,IAAI,CAAC,GACtD,EAAK,GACT,CAIA,SAAgB,EAAU,EAAgB,EAAc,EAA2B,CAAC,EAA4B,CAC9G,IAAI,EACF,EACA,EACE,EAAe,KACf,EAAW,EACT,EAAQ,UAAY,CACxB,EAAY,EAAQ,QAAc,KAAK,IAAI,EAAb,EAC9B,EAAU,KACV,EAAS,EAAK,MAAM,EAAS,CAAI,EAC5B,IAAS,EAAU,EAAO,KACjC,EACA,OAAO,UAAY,CACjB,IAAM,EAAM,KAAK,IAAI,EACjB,CAAC,GAAY,CAAC,EAAQ,UAAS,EAAW,GAC9C,IAAM,EAAY,GAAQ,EAAM,GAehC,MAbA,GAAU,KACV,EAAO,UACH,GAAa,GAAK,EAAY,GAChC,AAEE,KADA,aAAa,CAAO,EACV,MAEZ,EAAW,EACX,EAAS,EAAK,MAAM,EAAS,CAAI,EAC5B,IAAS,EAAU,EAAO,OACtB,CAAC,GAAW,EAAQ,WAAa,KAC1C,EAAU,WAAW,EAAO,CAAS,GAEhC,CACT,CACF"}
@@ -23,7 +23,8 @@ async function i(r, i) {
23
23
  return console.warn("Unable to load profile of pod owner " + a), null;
24
24
  }
25
25
  return i.holds(a, e.space("storage"), r, a.doc()) || console.warn(`Pod owner ${a} does NOT list pod ${r} as their storage`), a;
26
- } else {
26
+ }
27
+ {
27
28
  let t = n(`${r.uri}profile/card#me`);
28
29
  try {
29
30
  await i.fetcher.load(t);
@@ -1 +1 @@
1
- {"version":3,"file":"headerFooterHelpers.esm.js","names":[],"sources":["../../src/utils/headerFooterHelpers.ts"],"sourcesContent":["/*\n Copied from mashlib/src/global/metadata.ts\n */\nimport { IndexedFormula, LiveStore, NamedNode, parse, sym } from 'rdflib'\nimport ns from '../lib/ns'\n\n/* @ts-ignore no-console */\ntype ThrottleOptions = {\n leading?: boolean;\n throttling?: boolean;\n trailing?: boolean;\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getPod (): NamedNode {\n const { origin, pathname } = document.location\n const isDatabrowserShell = document.body?.dataset?.appShell === 'databrowser'\n const segments = pathname.split('/').filter(Boolean)\n const lastSegment = segments[segments.length - 1] || ''\n const looksLikeFile = /\\.[^/]+$/.test(lastSegment)\n\n if (isDatabrowserShell && segments.length > 0 && !looksLikeFile) {\n return sym(`${origin}/${segments[0]}/`)\n }\n\n // Root-hosted pods and static databrowser pages still use the site root.\n return sym(origin).site()\n}\n/**\n */\nexport async function getPodOwner (pod: NamedNode, store: LiveStore): Promise<NamedNode | null> {\n // This is a massive guess. In future\n // const podOwner = sym(`${pod.uri}profile/card#me`)\n\n try {\n // load turtle Container representation\n if (!store.any(pod, null, ns.ldp('Container'), pod)) {\n const response = await store.fetcher.webOperation('GET', pod.uri, store.fetcher.initFetchOptions(pod.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n parse(containerTurtle as string, store, pod.uri, 'text/turtle')\n }\n } catch (err) {\n console.error('Error loading pod ' + pod + ': ' + err)\n return null\n }\n if (!store.holds(pod, ns.rdf('type'), ns.space('Storage'), pod)) {\n console.warn('Pod ' + pod + ' does not declare itself as a space:Storage')\n return null\n }\n const podOwner = store.any(pod, ns.solid('owner'), null, pod) ||\n store.any(null, ns.space('storage'), pod, pod)\n if (podOwner) {\n try {\n await store.fetcher.load((podOwner as NamedNode).doc())\n } catch (_err) {\n console.warn('Unable to load profile of pod owner ' + podOwner)\n return null\n }\n if (!store.holds(podOwner, ns.space('storage'), pod, (podOwner as NamedNode).doc())) {\n console.warn(`Pod owner ${podOwner} does NOT list pod ${pod} as their storage`)\n }\n return podOwner as NamedNode// Success!\n } else { // pod owner not declared in pod\n // @@ TODO: This is given the structure that NSS provides\n // This is a massive guess. For old pods which don't have owner link\n const guess = sym(`${pod.uri}profile/card#me`)\n try {\n // @ts-ignore LiveStore always has fetcher\n await store.fetcher.load(guess)\n } catch (_err) {\n console.error('Ooops. Guessed wrong pod owner webid {$guess} : can\\'t load it.')\n return null\n }\n if (store.holds(guess, ns.space('storage'), pod, guess.doc())) {\n console.warn('Using guessed pod owner webid but it links back.')\n return guess\n }\n return null\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getName (store: IndexedFormula, user: NamedNode): string {\n return store.anyValue(user, ns.vcard('fn'), null, user.doc()) ||\n store.anyValue(user, ns.foaf('name'), null, user.doc()) ||\n user.uri\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function throttle (func: Function, wait: number, options: ThrottleOptions = {}): (...args: any[]) => any {\n let context: any,\n args: any,\n result: any\n let timeout: any = null\n let previous = 0\n const later = function () {\n previous = !options.leading ? 0 : Date.now()\n timeout = null\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n return function () {\n const now = Date.now()\n if (!previous && !options.leading) previous = now\n const remaining = wait - (now - previous)\n // @ts-ignore\n context = this\n args = arguments\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n result = func.apply(context, args)\n if (!timeout) context = args = null\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining)\n }\n return result\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"headerFooterHelpers.esm.js","names":[],"sources":["../../src/utils/headerFooterHelpers.ts"],"sourcesContent":["/*\n Copied from mashlib/src/global/metadata.ts\n */\nimport { IndexedFormula, LiveStore, NamedNode, parse, sym } from 'rdflib'\nimport ns from '../lib/ns'\n\n/* @ts-ignore no-console */\ntype ThrottleOptions = {\n leading?: boolean;\n throttling?: boolean;\n trailing?: boolean;\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getPod (): NamedNode {\n const { origin, pathname } = document.location\n const isDatabrowserShell = document.body?.dataset?.appShell === 'databrowser'\n const segments = pathname.split('/').filter(Boolean)\n const lastSegment = segments[segments.length - 1] || ''\n const looksLikeFile = /\\.[^/]+$/.test(lastSegment)\n\n if (isDatabrowserShell && segments.length > 0 && !looksLikeFile) {\n return sym(`${origin}/${segments[0]}/`)\n }\n\n // Root-hosted pods and static databrowser pages still use the site root.\n return sym(origin).site()\n}\n/**\n */\nexport async function getPodOwner (pod: NamedNode, store: LiveStore): Promise<NamedNode | null> {\n // This is a massive guess. In future\n // const podOwner = sym(`${pod.uri}profile/card#me`)\n\n try {\n // load turtle Container representation\n if (!store.any(pod, null, ns.ldp('Container'), pod)) {\n const response = await store.fetcher.webOperation('GET', pod.uri, store.fetcher.initFetchOptions(pod.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n parse(containerTurtle as string, store, pod.uri, 'text/turtle')\n }\n } catch (err) {\n console.error('Error loading pod ' + pod + ': ' + err)\n return null\n }\n if (!store.holds(pod, ns.rdf('type'), ns.space('Storage'), pod)) {\n console.warn('Pod ' + pod + ' does not declare itself as a space:Storage')\n return null\n }\n const podOwner = store.any(pod, ns.solid('owner'), null, pod) ||\n store.any(null, ns.space('storage'), pod, pod)\n if (podOwner) {\n try {\n await store.fetcher.load((podOwner as NamedNode).doc())\n } catch (_err) {\n console.warn('Unable to load profile of pod owner ' + podOwner)\n return null\n }\n if (!store.holds(podOwner, ns.space('storage'), pod, (podOwner as NamedNode).doc())) {\n console.warn(`Pod owner ${podOwner} does NOT list pod ${pod} as their storage`)\n }\n return podOwner as NamedNode// Success!\n } else { // pod owner not declared in pod\n // @@ TODO: This is given the structure that NSS provides\n // This is a massive guess. For old pods which don't have owner link\n const guess = sym(`${pod.uri}profile/card#me`)\n try {\n // @ts-ignore LiveStore always has fetcher\n await store.fetcher.load(guess)\n } catch (_err) {\n console.error('Ooops. Guessed wrong pod owner webid {$guess} : can\\'t load it.')\n return null\n }\n if (store.holds(guess, ns.space('storage'), pod, guess.doc())) {\n console.warn('Using guessed pod owner webid but it links back.')\n return guess\n }\n return null\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getName (store: IndexedFormula, user: NamedNode): string {\n return store.anyValue(user, ns.vcard('fn'), null, user.doc()) ||\n store.anyValue(user, ns.foaf('name'), null, user.doc()) ||\n user.uri\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function throttle (func: Function, wait: number, options: ThrottleOptions = {}): (...args: any[]) => any {\n let context: any,\n args: any,\n result: any\n let timeout: any = null\n let previous = 0\n const later = function () {\n previous = !options.leading ? 0 : Date.now()\n timeout = null\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n return function () {\n const now = Date.now()\n if (!previous && !options.leading) previous = now\n const remaining = wait - (now - previous)\n // @ts-ignore\n context = this\n args = arguments\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n result = func.apply(context, args)\n if (!timeout) context = args = null\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining)\n }\n return result\n }\n}\n"],"mappings":"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"}
@@ -2,5 +2,5 @@ const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs
2
2
  `,n;if(!e.stack)return t+`No stack available.
3
3
  `;let r=e.stack.toString().split(`
4
4
  `),i=[];for(n=0;n<r.length;n++){let e=r[n];if(e.indexOf(`ecmaunit.js`)>-1)break;e.charAt(0)===`(`&&(e=`function`+e);let t=e.split(`@`);i.push(t)}for(n=0;n<i.length;n++)t+=` `+i[n][1]+`
5
- `+i[n][0];return t}function v(e){let t=e.childNodes,n=t.length;for(let r=n-1;r>=0;r--)e.removeChild(t[r]);return e}function y(e){let t;return e||=window.event,e.target?t=e.target:e.srcElement&&(t=e.srcElement),t.nodeType===3&&(t=t.parentNode),t}function b(e,t){let n;for(n=e;n;n=n.parentNode)try{if(n.tagName===t)return n}catch{return}}function x(e,t){let n,r;for(n=t;n&&n.nodeType===1;n=n.parentNode)if(r=n.getAttribute(`about`),r)return e.fromNT(r);s.log.debug(`getAbout: No about found`)}function S(e){let t=e.parentNode,n=t?t.AJAR_statement:void 0;switch(n?e.className:``){case`pred`:case`pred selected`:return n.predicate;case`obj`:case`obj selected`:return t.AJAR_inverse?n.subject:n.object;case``:case`selected`:return x(a.store,e);case`undetermined selected`:return e.nextSibling?n.predicate:t.AJAR_inverse?n.subject:n.object}}function C(e,t){let n=e.createElement(`script`);return n.setAttribute(`type`,`text/javascript`),n.setAttribute(`src`,t),n}function w(e){let t=window.onload;typeof window.onload==`function`?window.onload=function(){t(),e()}:window.onload=e}function T(e){let t=e.ownerDocument.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return[n.left-t.left,n.top-t.top]}function E(e,t,n,r){r||=window;let i=T(e)[1],a=window.SolidAppContext||{},o=i-(a&&a.scroll||52)-r.scrollY;if(t){if(n){r.scrollBy(0,i+e.clientHeight-(r.scrollY+r.innerHeight));return}r.scrollBy(0,o);return}let s=r.setInterval(l,50),c=0;function l(){r.scrollBy(0,o/10),c++,c===10&&r.clearInterval(s)}}function D(e,t,n,r){r||=document;let i=r.createElement(`img`);return i.setAttribute(`src`,e),i.addEventListener(`copy`,function(e){e.clipboardData.setData(`text/plain`,``),e.clipboardData.setData(`text/html`,``),e.preventDefault()}),n!==void 0&&i.setAttribute(`title`,n),i}function O(e){let t=e;`#/`.indexOf(t[t.length-1])>=0&&(t=t.slice(0,-1));let n=[];for(let e in this.prefixes)n[this.prefixes[e]]=e;let r,i=function(e){return e===`ns`?!1:(r=e,!0)},a,o=t.lastIndexOf(`#`);for(o>=0&&(t=t.slice(o-1));;){let e=t.lastIndexOf(`/`);for(e>=0&&(t=t.slice(e+1)),a=0;a<t.length&&this.prefixchars.indexOf(t[a]);)a++;if(t=t.slice(0,a),t.length<6&&i(t)||i(t.slice(0,3))||i(t.slice(0,2))||i(t.slice(0,4))||i(t.slice(0,1))||i(t.slice(0,5)))return r;for(a=0;;a++)if(i(t.slice(0,3)+a))return r}}function k(e){if(e.uri===void 0)return`??`;let t=e.uri,n=[],r=t.lastIndexOf(`#`),i;if(r>=0)t=t.slice(0,r+1);else if(r=t.lastIndexOf(`/`),r>=0)t=t.slice(0,r+1);else return e.uri+`?!`;for(let e in s.ns)n[s.ns[e]]=e;try{return n[t]}catch{}for(t=t.slice(0,-1);t;)if(r=t.lastIndexOf(`/`),r>=0){if(i=t.slice(r+1),t=t.slice(0,r),i!==`ns`&&`0123456789`.indexOf(i[0])<0)return i}else return e.uri+`!?`}function A(e,t){let n=a.store.findTypeURIs(e);return n[s.ns.rdf(`Predicate`).uri]||n[s.ns.rdfs(`Class`).uri]?r.label(e,t)+` (`+k(e)+`)`:r.label(e,t)}function j(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`)}function M(e){return j(r.label(e))}function N(e,t){return j(P(e,t))}function P(e,t){let n=r.label(e);if(t){let t=a.store.any(e,s.ns.owl(`inverseOf`))||a.store.any(void 0,s.ns.owl(`inverseOf`),e);return t?r.label(t):n===`type`?`...`:`is `+n+` of`}return n}function F(e,t){let n=e.predicate.compareTerm(t.predicate);return n===0?e.object.compareTerm(t.object):n}function I(e,t){let n=e.predicate.compareTerm(t.predicate);return n===0?e.subject.compareTerm(t.subject):n}function L(e){let t=e;for(;;)if(t.getAttribute(`predTR`))return t;else if(t.previousSibling&&t.previousSibling.nodeName===`TR`)t=t.previousSibling;else return s.log.error(`Could not find predParent`),e}exports.AJARImage=D,exports.RDFComparePredicateObject=F,exports.RDFComparePredicateSubject=I,exports.addLoadEvent=w,exports.ancestor=b,exports.beep=f,exports.clearVariableNames=u,exports.emptyNode=v,exports.escapeForXML=j,exports.findPos=T,exports.genUuid=m,exports.getAbout=x,exports.getEyeFocus=E,exports.getTarget=y,exports.getTerm=S,exports.hashColor=p,exports.include=C,exports.label=r.label,exports.labelForXML=M,exports.labelWithOntology=A,exports.newVariableName=l,exports.ontologyLabel=k,exports.predParentOf=L,exports.predicateLabel=P,exports.predicateLabelForXML=N,exports.shortName=O,exports.stackString=_,exports.syncTableToArray=h,exports.syncTableToArrayReOrdered=g,Object.defineProperty(exports,"utils_exports",{enumerable:!0,get:function(){return o}});
5
+ `+i[n][0];return t}function v(e){let t=e.childNodes,n=t.length;for(let r=n-1;r>=0;r--)e.removeChild(t[r]);return e}function y(e){let t;return e||=window.event,e.target?t=e.target:e.srcElement&&(t=e.srcElement),t.nodeType===3&&(t=t.parentNode),t}function b(e,t){let n;for(n=e;n;n=n.parentNode)try{if(n.tagName===t)return n}catch{return}}function x(e,t){let n,r;for(n=t;n&&n.nodeType===1;n=n.parentNode)if(r=n.getAttribute(`about`),r)return e.fromNT(r);s.log.debug(`getAbout: No about found`)}function S(e){let t=e.parentNode,n=t?t.AJAR_statement:void 0;switch(n?e.className:``){case`pred`:case`pred selected`:return n.predicate;case`obj`:case`obj selected`:return t.AJAR_inverse?n.subject:n.object;case``:case`selected`:return x(a.store,e);case`undetermined selected`:return e.nextSibling?n.predicate:t.AJAR_inverse?n.subject:n.object}}function C(e,t){let n=e.createElement(`script`);return n.setAttribute(`type`,`text/javascript`),n.setAttribute(`src`,t),n}function w(e){let t=window.onload;typeof window.onload==`function`?window.onload=function(){t(),e()}:window.onload=e}function T(e){let t=e.ownerDocument.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return[n.left-t.left,n.top-t.top]}function E(e,t,n,r){r||=window;let i=T(e)[1],a=window.SolidAppContext||{},o=i-(a&&a.scroll||52)-r.scrollY;if(t){if(n){r.scrollBy(0,i+e.clientHeight-(r.scrollY+r.innerHeight));return}r.scrollBy(0,o);return}let s=r.setInterval(l,50),c=0;function l(){r.scrollBy(0,o/10),c++,c===10&&r.clearInterval(s)}}function D(e,t,n,r){r||=document;let i=r.createElement(`img`);return i.setAttribute(`src`,e),i.addEventListener(`copy`,function(e){e.clipboardData.setData(`text/plain`,``),e.clipboardData.setData(`text/html`,``),e.preventDefault()}),n!==void 0&&i.setAttribute(`title`,n),i}function O(e){let t=e;`#/`.indexOf(t[t.length-1])>=0&&(t=t.slice(0,-1));let n=[];for(let e in this.prefixes)n[this.prefixes[e]]=e;let r,i=function(e){return e!==`ns`&&(r=e,!0)},a,o=t.lastIndexOf(`#`);for(o>=0&&(t=t.slice(o-1));;){let e=t.lastIndexOf(`/`);for(e>=0&&(t=t.slice(e+1)),a=0;a<t.length&&this.prefixchars.indexOf(t[a]);)a++;if(t=t.slice(0,a),t.length<6&&i(t)||i(t.slice(0,3))||i(t.slice(0,2))||i(t.slice(0,4))||i(t.slice(0,1))||i(t.slice(0,5)))return r;for(a=0;;a++)if(i(t.slice(0,3)+a))return r}}function k(e){if(e.uri===void 0)return`??`;let t=e.uri,n=[],r=t.lastIndexOf(`#`),i;if(r>=0)t=t.slice(0,r+1);else if(r=t.lastIndexOf(`/`),r>=0)t=t.slice(0,r+1);else return e.uri+`?!`;for(let e in s.ns)n[s.ns[e]]=e;try{return n[t]}catch{}for(t=t.slice(0,-1);t;)if(r=t.lastIndexOf(`/`),r>=0){if(i=t.slice(r+1),t=t.slice(0,r),i!==`ns`&&`0123456789`.indexOf(i[0])<0)return i}else return e.uri+`!?`}function A(e,t){let n=a.store.findTypeURIs(e);return n[s.ns.rdf(`Predicate`).uri]||n[s.ns.rdfs(`Class`).uri]?r.label(e,t)+` (`+k(e)+`)`:r.label(e,t)}function j(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`)}function M(e){return j(r.label(e))}function N(e,t){return j(P(e,t))}function P(e,t){let n=r.label(e);if(t){let t=a.store.any(e,s.ns.owl(`inverseOf`))||a.store.any(void 0,s.ns.owl(`inverseOf`),e);return t?r.label(t):n===`type`?`...`:`is `+n+` of`}return n}function F(e,t){let n=e.predicate.compareTerm(t.predicate);return n===0?e.object.compareTerm(t.object):n}function I(e,t){let n=e.predicate.compareTerm(t.predicate);return n===0?e.subject.compareTerm(t.subject):n}function L(e){let t=e;for(;;)if(t.getAttribute(`predTR`))return t;else if(t.previousSibling&&t.previousSibling.nodeName===`TR`)t=t.previousSibling;else return s.log.error(`Could not find predParent`),e}exports.AJARImage=D,exports.RDFComparePredicateObject=F,exports.RDFComparePredicateSubject=I,exports.addLoadEvent=w,exports.ancestor=b,exports.beep=f,exports.clearVariableNames=u,exports.emptyNode=v,exports.escapeForXML=j,exports.findPos=T,exports.genUuid=m,exports.getAbout=x,exports.getEyeFocus=E,exports.getTarget=y,exports.getTerm=S,exports.hashColor=p,exports.include=C,exports.label=r.label,exports.labelForXML=M,exports.labelWithOntology=A,exports.newVariableName=l,exports.ontologyLabel=k,exports.predParentOf=L,exports.predicateLabel=P,exports.predicateLabelForXML=N,exports.shortName=O,exports.stackString=_,exports.syncTableToArray=h,exports.syncTableToArrayReOrdered=g,Object.defineProperty(exports,"utils_exports",{enumerable:!0,get:function(){return o}});
6
6
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":["ContextClass","store","label"],"sources":["../../src/utils/index.js"],"sourcesContent":["// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../lib/log'\nimport { store } from 'solid-logic'\nimport ns from '../lib/ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n * @param {function(DomElement, NamedNode)} updateExistingRow(row, thing) optional hook for refreshing matched rows\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow, updateExistingRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n if (updateExistingRow) {\n const replacement = updateExistingRow(row, thing)\n if (replacement && replacement !== row) {\n row.parentNode.replaceChild(replacement, row)\n replacement.subject = thing\n row = replacement\n }\n }\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&amp;').replace(/</g, '&lt;')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = store.any(p, UI.ns.owl('inverseOf')) || store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","names":["ContextClass","store","label"],"sources":["../../src/utils/index.js"],"sourcesContent":["// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../lib/log'\nimport { store } from 'solid-logic'\nimport ns from '../lib/ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n * @param {function(DomElement, NamedNode)} updateExistingRow(row, thing) optional hook for refreshing matched rows\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow, updateExistingRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n if (updateExistingRow) {\n const replacement = updateExistingRow(row, thing)\n if (replacement && replacement !== row) {\n row.parentNode.replaceChild(replacement, row)\n replacement.subject = thing\n row = replacement\n }\n }\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&amp;').replace(/</g, '&lt;')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = store.any(p, UI.ns.owl('inverseOf')) || store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n"],"mappings":"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"}
@@ -211,7 +211,7 @@ function O(e) {
211
211
  let n = [];
212
212
  for (let e in this.prefixes) n[this.prefixes[e]] = e;
213
213
  let r, i = function(e) {
214
- return e === "ns" ? !1 : (r = e, !0);
214
+ return e !== "ns" && (r = e, !0);
215
215
  }, a, o = t.lastIndexOf("#");
216
216
  for (o >= 0 && (t = t.slice(o - 1));;) {
217
217
  let e = t.lastIndexOf("/");
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","names":["ContextClass"],"sources":["../../src/utils/index.js"],"sourcesContent":["// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../lib/log'\nimport { store } from 'solid-logic'\nimport ns from '../lib/ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n * @param {function(DomElement, NamedNode)} updateExistingRow(row, thing) optional hook for refreshing matched rows\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow, updateExistingRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n if (updateExistingRow) {\n const replacement = updateExistingRow(row, thing)\n if (replacement && replacement !== row) {\n row.parentNode.replaceChild(replacement, row)\n replacement.subject = thing\n row = replacement\n }\n }\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&amp;').replace(/</g, '&lt;')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = store.any(p, UI.ns.owl('inverseOf')) || store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","names":["ContextClass"],"sources":["../../src/utils/index.js"],"sourcesContent":["// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../lib/log'\nimport { store } from 'solid-logic'\nimport ns from '../lib/ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n * @param {function(DomElement, NamedNode)} updateExistingRow(row, thing) optional hook for refreshing matched rows\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow, updateExistingRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n if (updateExistingRow) {\n const replacement = updateExistingRow(row, thing)\n if (replacement && replacement !== row) {\n row.parentNode.replaceChild(replacement, row)\n replacement.subject = thing\n row = replacement\n }\n }\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&amp;').replace(/</g, '&lt;')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = store.any(p, UI.ns.owl('inverseOf')) || store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("../../lib/ns.cjs.js"),t=require("../../lib/debug.cjs.js"),n=require("./otherHelpers.cjs.js");let r=require("solid-logic");var i=e=>{let r;try{r=`${n.getRootIfPreferencesExist(e)}/profile/keys/publicKey.ttl`}catch(e){t.error(e)}return r},a=e=>{let r;try{r=`${n.getRootIfPreferencesExist(e)}/settings/keys/privateKey.ttl`}catch(e){t.error(e)}return r};async function o(e,t){return await c(e,t,`publicKey`)}async function s(e,t){return await c(e,t,`privateKey`)}async function c(n,i,a){try{return await r.store.fetcher.load(i),r.store.any(n,e.default.solid(a))?.value}catch(e){if(e.response.status===404){t.log(`createIfNotExists: doc does NOT exist, will create... `+i);try{await r.store.fetcher.webOperation(`PUT`,i,{data:``,contentType:`text/turtle`})}catch(e){throw t.log(`createIfNotExists doc FAILED: `+i+`: `+e),e}delete r.store.fetcher.requested[i];return}else throw t.log(`createIfNotExists doc FAILED: `+i+`: `+e),e}}exports.getExistingPrivateKey=s,exports.getExistingPublicKey=o,exports.getKeyIfExists=c,exports.privKeyUrl=a,exports.pubKeyUrl=i;
1
+ const e=require("../../lib/ns.cjs.js"),t=require("../../lib/debug.cjs.js"),n=require("./otherHelpers.cjs.js");let r=require("solid-logic");var i=e=>{let r;try{r=`${n.getRootIfPreferencesExist(e)}/profile/keys/publicKey.ttl`}catch(e){t.error(e)}return r},a=e=>{let r;try{r=`${n.getRootIfPreferencesExist(e)}/settings/keys/privateKey.ttl`}catch(e){t.error(e)}return r};async function o(e,t){return await c(e,t,`publicKey`)}async function s(e,t){return await c(e,t,`privateKey`)}async function c(n,i,a){try{return await r.store.fetcher.load(i),r.store.any(n,e.default.solid(a))?.value}catch(e){if(e.response.status===404){t.log(`createIfNotExists: doc does NOT exist, will create... `+i);try{await r.store.fetcher.webOperation(`PUT`,i,{data:``,contentType:`text/turtle`})}catch(e){throw t.log(`createIfNotExists doc FAILED: `+i+`: `+e),e}delete r.store.fetcher.requested[i];return}throw t.log(`createIfNotExists doc FAILED: `+i+`: `+e),e}}exports.getExistingPrivateKey=s,exports.getExistingPublicKey=o,exports.getKeyIfExists=c,exports.privKeyUrl=a,exports.pubKeyUrl=i;
2
2
  //# sourceMappingURL=accessData.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessData.cjs.js","names":[],"sources":["../../../src/utils/keyHelpers/accessData.ts"],"sourcesContent":["import * as debug from '../../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { NamedNode } from 'rdflib'\nimport { getRootIfPreferencesExist } from './otherHelpers'\n\nexport const pubKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/profile/keys/publicKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport const privKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/settings/keys/privateKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport async function getExistingPublicKey (webId: NamedNode, publicKeyUrl: string) {\n // find publickey\n return await getKeyIfExists(webId, publicKeyUrl, 'publicKey')\n}\n\nexport async function getExistingPrivateKey (webId: NamedNode, privateKeyUrl: string) {\n // find privateKey\n return await getKeyIfExists(webId, privateKeyUrl, 'privateKey')\n}\n\ntype KeyType = 'publicKey' | 'privateKey'\n\nexport async function getKeyIfExists (webId: NamedNode, keyUrl: string, keyType: KeyType) {\n try {\n await store.fetcher.load(keyUrl)\n const key = store.any(webId, ns.solid(keyType)) // store.sym(CERT + keyType))\n return key?.value // as NamedNode\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + keyUrl\n )\n try {\n await store.fetcher.webOperation('PUT', keyUrl, {\n data: '',\n contentType: 'text/turtle'\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[keyUrl] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return undefined // response\n } else {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n }\n}\n"],"mappings":"2IAMA,IAAa,EAAa,GAAqB,CAC7C,IAAI,EACJ,GAAI,CAEF,EAAM,GADO,EAAA,0BAA0B,CAC9B,EAAK,4BAChB,OAAS,EAAK,CACZ,EAAA,MAAY,CAAG,CACjB,CACA,OAAO,CACT,EAEa,EAAc,GAAqB,CAC9C,IAAI,EACJ,GAAI,CAEF,EAAM,GADO,EAAA,0BAA0B,CAC9B,EAAK,8BAChB,OAAS,EAAK,CACZ,EAAA,MAAY,CAAG,CACjB,CACA,OAAO,CACT,EAEA,eAAsB,EAAsB,EAAkB,EAAsB,CAElF,OAAO,MAAM,EAAe,EAAO,EAAc,WAAW,CAC9D,CAEA,eAAsB,EAAuB,EAAkB,EAAuB,CAEpF,OAAO,MAAM,EAAe,EAAO,EAAe,YAAY,CAChE,CAIA,eAAsB,EAAgB,EAAkB,EAAgB,EAAkB,CACxF,GAAI,CAGF,OAFA,MAAM,EAAA,MAAM,QAAQ,KAAK,CAAM,EACnB,EAAA,MAAM,IAAI,EAAO,EAAA,QAAG,MAAM,CAAO,CACtC,CAAA,EAAK,KACd,OAAS,EAAK,CACZ,GAAI,EAAI,SAAS,SAAW,IAAK,CAC/B,EAAA,IACE,yDAA2D,CAC7D,EACA,GAAI,CACF,MAAM,EAAA,MAAM,QAAQ,aAAa,MAAO,EAAQ,CAC9C,KAAM,GACN,YAAa,aACf,CAAC,CACH,OAAS,EAAK,CAEZ,MADA,EAAA,IAAU,iCAAmC,EAAS,KAAO,CAAG,EAC1D,CACR,CACA,OAAO,EAAA,MAAM,QAAQ,UAAU,GAE/B,MACF,MAEE,MADA,EAAA,IAAU,iCAAmC,EAAS,KAAO,CAAG,EAC1D,CAEV,CACF"}
1
+ {"version":3,"file":"accessData.cjs.js","names":[],"sources":["../../../src/utils/keyHelpers/accessData.ts"],"sourcesContent":["import * as debug from '../../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { NamedNode } from 'rdflib'\nimport { getRootIfPreferencesExist } from './otherHelpers'\n\nexport const pubKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/profile/keys/publicKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport const privKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/settings/keys/privateKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport async function getExistingPublicKey (webId: NamedNode, publicKeyUrl: string) {\n // find publickey\n return await getKeyIfExists(webId, publicKeyUrl, 'publicKey')\n}\n\nexport async function getExistingPrivateKey (webId: NamedNode, privateKeyUrl: string) {\n // find privateKey\n return await getKeyIfExists(webId, privateKeyUrl, 'privateKey')\n}\n\ntype KeyType = 'publicKey' | 'privateKey'\n\nexport async function getKeyIfExists (webId: NamedNode, keyUrl: string, keyType: KeyType) {\n try {\n await store.fetcher.load(keyUrl)\n const key = store.any(webId, ns.solid(keyType)) // store.sym(CERT + keyType))\n return key?.value // as NamedNode\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + keyUrl\n )\n try {\n await store.fetcher.webOperation('PUT', keyUrl, {\n data: '',\n contentType: 'text/turtle'\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[keyUrl] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return undefined // response\n } else {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n }\n}\n"],"mappings":"2IAMA,IAAa,EAAa,GAAqB,CAC7C,IAAI,EACJ,GAAI,CAEF,EAAM,GADO,EAAA,0BAA0B,CAC9B,EAAK,4BAChB,OAAS,EAAK,CACZ,EAAA,MAAY,CAAG,CACjB,CACA,OAAO,CACT,EAEa,EAAc,GAAqB,CAC9C,IAAI,EACJ,GAAI,CAEF,EAAM,GADO,EAAA,0BAA0B,CAC9B,EAAK,8BAChB,OAAS,EAAK,CACZ,EAAA,MAAY,CAAG,CACjB,CACA,OAAO,CACT,EAEA,eAAsB,EAAsB,EAAkB,EAAsB,CAElF,OAAO,MAAM,EAAe,EAAO,EAAc,WAAW,CAC9D,CAEA,eAAsB,EAAuB,EAAkB,EAAuB,CAEpF,OAAO,MAAM,EAAe,EAAO,EAAe,YAAY,CAChE,CAIA,eAAsB,EAAgB,EAAkB,EAAgB,EAAkB,CACxF,GAAI,CAGF,OAFA,MAAM,EAAA,MAAM,QAAQ,KAAK,CAAM,EACnB,EAAA,MAAM,IAAI,EAAO,EAAA,QAAG,MAAM,CAAO,CACtC,CAAA,EAAK,KACd,OAAS,EAAK,CACZ,GAAI,EAAI,SAAS,SAAW,IAAK,CAC/B,EAAA,IACE,yDAA2D,CAC7D,EACA,GAAI,CACF,MAAM,EAAA,MAAM,QAAQ,aAAa,MAAO,EAAQ,CAC9C,KAAM,GACN,YAAa,aACf,CAAC,CACH,OAAS,EAAK,CAEZ,MADA,EAAA,IAAU,iCAAmC,EAAS,KAAO,CAAG,EAC1D,CACR,CACA,OAAO,EAAA,MAAM,QAAQ,UAAU,GAE/B,MACF,CAEE,MADA,EAAA,IAAU,iCAAmC,EAAS,KAAO,CAAG,EAC1D,CAEV,CACF"}
@@ -1,9 +1,9 @@
1
1
  import { NamedNode } from 'rdflib';
2
2
  export declare const pubKeyUrl: (webId: NamedNode) => any;
3
3
  export declare const privKeyUrl: (webId: NamedNode) => any;
4
- export declare function getExistingPublicKey(webId: NamedNode, publicKeyUrl: string): Promise<string | undefined>;
5
- export declare function getExistingPrivateKey(webId: NamedNode, privateKeyUrl: string): Promise<string | undefined>;
4
+ export declare function getExistingPublicKey(webId: NamedNode, publicKeyUrl: string): Promise<any>;
5
+ export declare function getExistingPrivateKey(webId: NamedNode, privateKeyUrl: string): Promise<any>;
6
6
  type KeyType = 'publicKey' | 'privateKey';
7
- export declare function getKeyIfExists(webId: NamedNode, keyUrl: string, keyType: KeyType): Promise<string | undefined>;
7
+ export declare function getKeyIfExists(webId: NamedNode, keyUrl: string, keyType: KeyType): Promise<any>;
8
8
  export {};
9
9
  //# sourceMappingURL=accessData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessData.d.ts","sourceRoot":"","sources":["../../../src/utils/keyHelpers/accessData.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGlC,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,QASzC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,QAS1C,CAAA;AAED,wBAAsB,oBAAoB,CAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,+BAGjF;AAED,wBAAsB,qBAAqB,CAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,+BAGnF;AAED,KAAK,OAAO,GAAG,WAAW,GAAG,YAAY,CAAA;AAEzC,wBAAsB,cAAc,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,+BA2BvF"}
1
+ {"version":3,"file":"accessData.d.ts","sourceRoot":"","sources":["../../../src/utils/keyHelpers/accessData.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGlC,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,QASzC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,QAS1C,CAAA;AAED,wBAAsB,oBAAoB,CAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAGjF;AAED,wBAAsB,qBAAqB,CAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAGnF;AAED,KAAK,OAAO,GAAG,WAAW,GAAG,YAAY,CAAA;AAEzC,wBAAsB,cAAc,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,gBA2BvF"}
@@ -42,7 +42,8 @@ async function l(t, r, a) {
42
42
  }
43
43
  delete i.fetcher.requested[r];
44
44
  return;
45
- } else throw n("createIfNotExists doc FAILED: " + r + ": " + e), e;
45
+ }
46
+ throw n("createIfNotExists doc FAILED: " + r + ": " + e), e;
46
47
  }
47
48
  }
48
49
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"accessData.esm.js","names":[],"sources":["../../../src/utils/keyHelpers/accessData.ts"],"sourcesContent":["import * as debug from '../../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { NamedNode } from 'rdflib'\nimport { getRootIfPreferencesExist } from './otherHelpers'\n\nexport const pubKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/profile/keys/publicKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport const privKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/settings/keys/privateKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport async function getExistingPublicKey (webId: NamedNode, publicKeyUrl: string) {\n // find publickey\n return await getKeyIfExists(webId, publicKeyUrl, 'publicKey')\n}\n\nexport async function getExistingPrivateKey (webId: NamedNode, privateKeyUrl: string) {\n // find privateKey\n return await getKeyIfExists(webId, privateKeyUrl, 'privateKey')\n}\n\ntype KeyType = 'publicKey' | 'privateKey'\n\nexport async function getKeyIfExists (webId: NamedNode, keyUrl: string, keyType: KeyType) {\n try {\n await store.fetcher.load(keyUrl)\n const key = store.any(webId, ns.solid(keyType)) // store.sym(CERT + keyType))\n return key?.value // as NamedNode\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + keyUrl\n )\n try {\n await store.fetcher.webOperation('PUT', keyUrl, {\n data: '',\n contentType: 'text/turtle'\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[keyUrl] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return undefined // response\n } else {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n }\n}\n"],"mappings":";;;;;AAMA,IAAa,KAAa,MAAqB;CAC7C,IAAI;CACJ,IAAI;EAEF,IAAM,GADO,EAA0B,CAC9B,EAAK;CAChB,SAAS,GAAK;EACZ,EAAY,CAAG;CACjB;CACA,OAAO;AACT,GAEa,KAAc,MAAqB;CAC9C,IAAI;CACJ,IAAI;EAEF,IAAM,GADO,EAA0B,CAC9B,EAAK;CAChB,SAAS,GAAK;EACZ,EAAY,CAAG;CACjB;CACA,OAAO;AACT;AAEA,eAAsB,EAAsB,GAAkB,GAAsB;CAElF,OAAO,MAAM,EAAe,GAAO,GAAc,WAAW;AAC9D;AAEA,eAAsB,EAAuB,GAAkB,GAAuB;CAEpF,OAAO,MAAM,EAAe,GAAO,GAAe,YAAY;AAChE;AAIA,eAAsB,EAAgB,GAAkB,GAAgB,GAAkB;CACxF,IAAI;EAGF,OAFA,MAAM,EAAM,QAAQ,KAAK,CAAM,GACnB,EAAM,IAAI,GAAO,EAAG,MAAM,CAAO,CACtC,CAAA,EAAK;CACd,SAAS,GAAK;EACZ,IAAI,EAAI,SAAS,WAAW,KAAK;GAC/B,EACE,2DAA2D,CAC7D;GACA,IAAI;IACF,MAAM,EAAM,QAAQ,aAAa,OAAO,GAAQ;KAC9C,MAAM;KACN,aAAa;IACf,CAAC;GACH,SAAS,GAAK;IAEZ,MADA,EAAU,mCAAmC,IAAS,OAAO,CAAG,GAC1D;GACR;GACA,OAAO,EAAM,QAAQ,UAAU;GAE/B;EACF,OAEE,MADA,EAAU,mCAAmC,IAAS,OAAO,CAAG,GAC1D;CAEV;AACF"}
1
+ {"version":3,"file":"accessData.esm.js","names":[],"sources":["../../../src/utils/keyHelpers/accessData.ts"],"sourcesContent":["import * as debug from '../../lib/debug'\nimport { store } from 'solid-logic'\nimport ns from '../../lib/ns'\nimport { NamedNode } from 'rdflib'\nimport { getRootIfPreferencesExist } from './otherHelpers'\n\nexport const pubKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/profile/keys/publicKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport const privKeyUrl = (webId: NamedNode) => {\n let url\n try {\n const root = getRootIfPreferencesExist(webId)\n url = `${root}/settings/keys/privateKey.ttl`\n } catch (err) {\n debug.error(err)\n }\n return url\n}\n\nexport async function getExistingPublicKey (webId: NamedNode, publicKeyUrl: string) {\n // find publickey\n return await getKeyIfExists(webId, publicKeyUrl, 'publicKey')\n}\n\nexport async function getExistingPrivateKey (webId: NamedNode, privateKeyUrl: string) {\n // find privateKey\n return await getKeyIfExists(webId, privateKeyUrl, 'privateKey')\n}\n\ntype KeyType = 'publicKey' | 'privateKey'\n\nexport async function getKeyIfExists (webId: NamedNode, keyUrl: string, keyType: KeyType) {\n try {\n await store.fetcher.load(keyUrl)\n const key = store.any(webId, ns.solid(keyType)) // store.sym(CERT + keyType))\n return key?.value // as NamedNode\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + keyUrl\n )\n try {\n await store.fetcher.webOperation('PUT', keyUrl, {\n data: '',\n contentType: 'text/turtle'\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[keyUrl] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return undefined // response\n } else {\n debug.log('createIfNotExists doc FAILED: ' + keyUrl + ': ' + err)\n throw err\n }\n }\n}\n"],"mappings":";;;;;AAMA,IAAa,KAAa,MAAqB;CAC7C,IAAI;CACJ,IAAI;EAEF,IAAM,GADO,EAA0B,CAC9B,EAAK;CAChB,SAAS,GAAK;EACZ,EAAY,CAAG;CACjB;CACA,OAAO;AACT,GAEa,KAAc,MAAqB;CAC9C,IAAI;CACJ,IAAI;EAEF,IAAM,GADO,EAA0B,CAC9B,EAAK;CAChB,SAAS,GAAK;EACZ,EAAY,CAAG;CACjB;CACA,OAAO;AACT;AAEA,eAAsB,EAAsB,GAAkB,GAAsB;CAElF,OAAO,MAAM,EAAe,GAAO,GAAc,WAAW;AAC9D;AAEA,eAAsB,EAAuB,GAAkB,GAAuB;CAEpF,OAAO,MAAM,EAAe,GAAO,GAAe,YAAY;AAChE;AAIA,eAAsB,EAAgB,GAAkB,GAAgB,GAAkB;CACxF,IAAI;EAGF,OAFA,MAAM,EAAM,QAAQ,KAAK,CAAM,GACnB,EAAM,IAAI,GAAO,EAAG,MAAM,CAAO,CACtC,CAAA,EAAK;CACd,SAAS,GAAK;EACZ,IAAI,EAAI,SAAS,WAAW,KAAK;GAC/B,EACE,2DAA2D,CAC7D;GACA,IAAI;IACF,MAAM,EAAM,QAAQ,aAAa,OAAO,GAAQ;KAC9C,MAAM;KACN,aAAa;IACf,CAAC;GACH,SAAS,GAAK;IAEZ,MADA,EAAU,mCAAmC,IAAS,OAAO,CAAG,GAC1D;GACR;GACA,OAAO,EAAM,QAAQ,UAAU;GAE/B;EACF;EAEE,MADA,EAAU,mCAAmC,IAAS,OAAO,CAAG,GAC1D;CAEV;AACF"}
@@ -1,3 +1,3 @@
1
1
  import { NamedNode } from 'rdflib';
2
- export declare const getRootIfPreferencesExist: (webId: NamedNode) => string;
2
+ export declare const getRootIfPreferencesExist: (webId: NamedNode) => any;
3
3
  //# sourceMappingURL=otherHelpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"otherHelpers.d.ts","sourceRoot":"","sources":["../../../src/utils/keyHelpers/otherHelpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIlC,eAAO,MAAM,yBAAyB,GAAI,OAAO,SAAS,WAKzD,CAAA"}
1
+ {"version":3,"file":"otherHelpers.d.ts","sourceRoot":"","sources":["../../../src/utils/keyHelpers/otherHelpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIlC,eAAO,MAAM,yBAAyB,GAAI,OAAO,SAAS,QAKzD,CAAA"}