solid-ui 5.0.2-3 → 5.0.2-5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/dist/acl/access-controller.cjs.js +1 -1
  2. package/dist/acl/access-controller.cjs.js.map +1 -1
  3. package/dist/acl/access-controller.esm.js +37 -37
  4. package/dist/acl/access-groups.cjs.js +2 -2
  5. package/dist/acl/access-groups.cjs.js.map +1 -1
  6. package/dist/acl/access-groups.esm.js +78 -78
  7. package/dist/acl/acl-control.cjs.js +1 -1
  8. package/dist/acl/acl-control.cjs.js.map +1 -1
  9. package/dist/acl/acl-control.esm.js +19 -19
  10. package/dist/acl/add-agent-buttons.cjs.js +1 -1
  11. package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
  12. package/dist/acl/add-agent-buttons.esm.js +51 -51
  13. package/dist/chat/bookmarks.cjs.js +1 -1
  14. package/dist/chat/bookmarks.cjs.js.map +1 -1
  15. package/dist/chat/bookmarks.esm.js +44 -44
  16. package/dist/chat/bookmarks.esm.js.map +1 -1
  17. package/dist/chat/chatLogic.cjs.js +2 -2
  18. package/dist/chat/chatLogic.cjs.js.map +1 -1
  19. package/dist/chat/chatLogic.esm.js +54 -54
  20. package/dist/chat/dateFolder.cjs.js +1 -1
  21. package/dist/chat/dateFolder.cjs.js.map +1 -1
  22. package/dist/chat/dateFolder.esm.js +30 -30
  23. package/dist/chat/infinite.cjs.js +1 -1
  24. package/dist/chat/infinite.cjs.js.map +1 -1
  25. package/dist/chat/infinite.esm.js +49 -49
  26. package/dist/chat/keys.cjs.js +2 -2
  27. package/dist/chat/keys.cjs.js.map +1 -1
  28. package/dist/chat/keys.esm.js +17 -17
  29. package/dist/chat/message.cjs.js +4 -4
  30. package/dist/chat/message.cjs.js.map +1 -1
  31. package/dist/chat/message.esm.js +114 -114
  32. package/dist/chat/message.esm.js.map +1 -1
  33. package/dist/chat/messageTools.cjs.js +1 -1
  34. package/dist/chat/messageTools.cjs.js.map +1 -1
  35. package/dist/chat/messageTools.esm.js +51 -51
  36. package/dist/chunks/{DialogProvider-dagk2fHm.js → DialogProvider-CdesAsw-.js} +5 -6
  37. package/dist/chunks/{DialogProvider-dagk2fHm.js.map → DialogProvider-CdesAsw-.js.map} +1 -1
  38. package/dist/chunks/{ResourceActionsMenu-o-8kWx8z.js → ResourceActionsMenu-Bx7YWY3E.js} +31 -32
  39. package/dist/chunks/{ResourceActionsMenu-o-8kWx8z.js.map → ResourceActionsMenu-Bx7YWY3E.js.map} +1 -1
  40. package/dist/chunks/{access-control-modal-CWH98HX3.js → access-control-modal-B1mFFIyz.js} +169 -170
  41. package/dist/chunks/{access-control-modal-CWH98HX3.js.map → access-control-modal-B1mFFIyz.js.map} +1 -1
  42. package/dist/chunks/{account-Cocvv0H3.js → account-DWmMJre6.js} +16 -17
  43. package/dist/chunks/{account-Cocvv0H3.js.map → account-DWmMJre6.js.map} +1 -1
  44. package/dist/chunks/{auth-Df5uYksz.js → auth-EK-iYNYZ.js} +42 -43
  45. package/dist/chunks/{auth-Df5uYksz.js.map → auth-EK-iYNYZ.js.map} +1 -1
  46. package/dist/chunks/{avatar-DeotTinS.js → avatar-BBgvMlqv.js} +8 -9
  47. package/dist/chunks/{avatar-DeotTinS.js.map → avatar-BBgvMlqv.js.map} +1 -1
  48. package/dist/chunks/{button-Dy1aFjqG.js → button-D6qO2idW.js} +10 -11
  49. package/dist/chunks/{button-Dy1aFjqG.js.map → button-D6qO2idW.js.map} +1 -1
  50. package/dist/chunks/{chunk.UEBQI7VV-9M5gO7Ew.js → chunk.UEBQI7VV-lcP-fpUk.js} +12 -9
  51. package/dist/chunks/chunk.UEBQI7VV-lcP-fpUk.js.map +1 -0
  52. package/dist/chunks/{combobox-BL0-8wef.js → combobox-DS6byaf1.js} +18 -19
  53. package/dist/chunks/{combobox-BL0-8wef.js.map → combobox-DS6byaf1.js.map} +1 -1
  54. package/dist/chunks/{combobox-option-DjlmXt1O.js → combobox-option-DOtGuKel.js} +7 -8
  55. package/dist/chunks/{combobox-option-DjlmXt1O.js.map → combobox-option-DOtGuKel.js.map} +1 -1
  56. package/dist/chunks/{components-LxiwG5ae.js → components-C8c2Ucm5.js} +201 -190
  57. package/dist/chunks/components-C8c2Ucm5.js.map +1 -0
  58. package/dist/chunks/{context-By_u12WA.js → context-BDrfQ9bN.js} +2 -2
  59. package/dist/chunks/{context-By_u12WA.js.map → context-BDrfQ9bN.js.map} +1 -1
  60. package/dist/chunks/{dialog-CrmftB9c.js → dialog-CgYK767T.js} +15 -16
  61. package/dist/chunks/{dialog-CrmftB9c.js.map → dialog-CgYK767T.js.map} +1 -1
  62. package/dist/chunks/{dialog-content-Cw3xqJ45.js → dialog-content-DjwRH1ci.js} +5 -6
  63. package/dist/chunks/{dialog-content-Cw3xqJ45.js.map → dialog-content-DjwRH1ci.js.map} +1 -1
  64. package/dist/chunks/{dialog-footer-sFQf-2zD.js → dialog-footer-GQWi8lfB.js} +5 -6
  65. package/dist/chunks/{dialog-footer-sFQf-2zD.js.map → dialog-footer-GQWi8lfB.js.map} +1 -1
  66. package/dist/chunks/{dialog-header-xIWIqfZK.js → dialog-header-c3qOMQfb.js} +5 -6
  67. package/dist/chunks/{dialog-header-xIWIqfZK.js.map → dialog-header-c3qOMQfb.js.map} +1 -1
  68. package/dist/chunks/{dialogs-B3tHtjMf.js → dialogs-BmtLjMzg.js} +2 -2
  69. package/dist/chunks/{dialogs-B3tHtjMf.js.map → dialogs-BmtLjMzg.js.map} +1 -1
  70. package/dist/chunks/{dialogs-root-Lh2u-3Cs.js → dialogs-root-BNF3_SA8.js} +8 -9
  71. package/dist/chunks/{dialogs-root-Lh2u-3Cs.js.map → dialogs-root-BNF3_SA8.js.map} +1 -1
  72. package/dist/chunks/{error-state-DnsXVj1z.js → error-state-jV9dlFX2.js} +10 -11
  73. package/dist/chunks/{error-state-DnsXVj1z.js.map → error-state-jV9dlFX2.js.map} +1 -1
  74. package/dist/chunks/{file-explorer-header-B6-Q0i6V.js → file-explorer-header-Djp_eFuT.js} +33 -34
  75. package/dist/chunks/file-explorer-header-Djp_eFuT.js.map +1 -0
  76. package/dist/chunks/{file-explorer-provider-B3gUBkHg.js → file-explorer-provider-DpjC7uds.js} +8 -9
  77. package/dist/chunks/{file-explorer-provider-B3gUBkHg.js.map → file-explorer-provider-DpjC7uds.js.map} +1 -1
  78. package/dist/chunks/{guard-C39y81In.js → guard-SxVT1xr4.js} +8 -9
  79. package/dist/chunks/{guard-C39y81In.js.map → guard-SxVT1xr4.js.map} +1 -1
  80. package/dist/chunks/{index.esm-C9oV3H3X.js → index.esm-BQrkxchZ.js} +2 -2
  81. package/dist/chunks/{index.esm-C9oV3H3X.js.map → index.esm-BQrkxchZ.js.map} +1 -1
  82. package/dist/chunks/{input-Bi6ZBZQw.js → input-Bz3l514j.js} +11 -12
  83. package/dist/chunks/{input-Bi6ZBZQw.js.map → input-Bz3l514j.js.map} +1 -1
  84. package/dist/chunks/{jsonld-D-TE94B0.js → jsonld-C6IOQ1Tg.js} +2 -2
  85. package/dist/chunks/{jsonld-D-TE94B0.js.map → jsonld-C6IOQ1Tg.js.map} +1 -1
  86. package/dist/chunks/{login-button-fo0P8vym.js → login-button-Dd0rwZJk.js} +9 -10
  87. package/dist/chunks/{login-button-fo0P8vym.js.map → login-button-Dd0rwZJk.js.map} +1 -1
  88. package/dist/chunks/{logout-button-CF2YFgID.js → logout-button-Da34Lrnq.js} +9 -10
  89. package/dist/chunks/{logout-button-CF2YFgID.js.map → logout-button-Da34Lrnq.js.map} +1 -1
  90. package/dist/chunks/{menu-RumUciM-.js → menu-BNJU654v.js} +48 -50
  91. package/dist/chunks/{menu-RumUciM-.js.map → menu-BNJU654v.js.map} +1 -1
  92. package/dist/chunks/{menu-item-CVAZyipz.js → menu-item-nfPpH4dN.js} +10 -11
  93. package/dist/chunks/{menu-item-CVAZyipz.js.map → menu-item-nfPpH4dN.js.map} +1 -1
  94. package/dist/chunks/{photo-capture-CAfo7y6-.js → photo-capture-hJaJm4TM.js} +20 -21
  95. package/dist/chunks/photo-capture-hJaJm4TM.js.map +1 -0
  96. package/dist/chunks/{photo-capture-modal-DWmDE_Ws.js → photo-capture-modal-BsHv6wmh.js} +28 -29
  97. package/dist/chunks/{photo-capture-modal-DWmDE_Ws.js.map → photo-capture-modal-BsHv6wmh.js.map} +1 -1
  98. package/dist/chunks/{provide-B5NeVMM_.js → provide-z9U64q4m.js} +2 -2
  99. package/dist/chunks/{provide-B5NeVMM_.js.map → provide-z9U64q4m.js.map} +1 -1
  100. package/dist/chunks/{provider-BbT2duMy.js → provider-B3FoP2qW.js} +12 -13
  101. package/dist/chunks/{provider-BbT2duMy.js.map → provider-B3FoP2qW.js.map} +1 -1
  102. package/dist/chunks/{rdf-form-CH9bDx98.js → rdf-form-BkKDmFPD.js} +30 -31
  103. package/dist/chunks/{rdf-form-CH9bDx98.js.map → rdf-form-BkKDmFPD.js.map} +1 -1
  104. package/dist/chunks/{rdf-input-C_V0pIS5.js → rdf-input-BPePtqfS.js} +62 -63
  105. package/dist/chunks/{rdf-input-C_V0pIS5.js.map → rdf-input-BPePtqfS.js.map} +1 -1
  106. package/dist/chunks/{select-y1Z6fwmh.js → select-ClPkDkGl.js} +9 -10
  107. package/dist/chunks/{select-y1Z6fwmh.js.map → select-ClPkDkGl.js.map} +1 -1
  108. package/dist/chunks/{select-option-U4ALXL20.js → select-option-DQan7rcB.js} +7 -8
  109. package/dist/chunks/{select-option-U4ALXL20.js.map → select-option-DQan7rcB.js.map} +1 -1
  110. package/dist/chunks/{signup-button-DicFpAjD.js → signup-button-DOInssOu.js} +9 -10
  111. package/dist/chunks/{signup-button-DicFpAjD.js.map → signup-button-DOInssOu.js.map} +1 -1
  112. package/dist/chunks/{solid-emblem-CeCXTpve.js → solid-emblem-DwLdkGuO.js} +7 -8
  113. package/dist/chunks/{solid-emblem-CeCXTpve.js.map → solid-emblem-DwLdkGuO.js.map} +1 -1
  114. package/dist/chunks/{solidLogicSingleton.esm-BXyHD7mn.js → solidLogicSingleton.esm-Bvt7E7Vl.js} +50 -29
  115. package/dist/chunks/solidLogicSingleton.esm-Bvt7E7Vl.js.map +1 -0
  116. package/dist/chunks/{src-Bhtor0ZC.js → src-akaVfkuf.js} +2739 -2719
  117. package/dist/chunks/src-akaVfkuf.js.map +1 -0
  118. package/dist/chunks/{style-CXaw5EYi.js → style-Dlw9-wPn.js} +3 -3
  119. package/dist/chunks/{style-CXaw5EYi.js.map → style-Dlw9-wPn.js.map} +1 -1
  120. package/dist/chunks/{widgets-BBEQu0CS.js → widgets-B1hBVhRL.js} +309 -309
  121. package/dist/chunks/widgets-B1hBVhRL.js.map +1 -0
  122. package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js +1 -1
  123. package/dist/components/access-control-modal/AccessControlAddAccess.esm.js +5 -5
  124. package/dist/components/access-control-modal/AccessControlAddAccess.esm.js.map +1 -1
  125. package/dist/components/access-control-modal/AccessControlErrors.esm.js.map +1 -1
  126. package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js +2 -2
  127. package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js.map +1 -1
  128. package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js +12 -12
  129. package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js.map +1 -1
  130. package/dist/components/access-control-modal/AccessControlModal.cjs.js +2 -2
  131. package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
  132. package/dist/components/access-control-modal/AccessControlModal.esm.js +35 -35
  133. package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
  134. package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js +1 -1
  135. package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js +2 -2
  136. package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js.map +1 -1
  137. package/dist/components/access-control-modal/accessTargetResolver.cjs.js +1 -1
  138. package/dist/components/access-control-modal/accessTargetResolver.cjs.js.map +1 -1
  139. package/dist/components/access-control-modal/accessTargetResolver.esm.js +21 -21
  140. package/dist/components/access-control-modal.js +1 -1
  141. package/dist/components/account/Account.cjs.js +1 -1
  142. package/dist/components/account/Account.esm.js +3 -3
  143. package/dist/components/account/Account.esm.js.map +1 -1
  144. package/dist/components/account.js +1 -1
  145. package/dist/components/all.cjs.js +1 -1
  146. package/dist/components/all.esm.js +16 -16
  147. package/dist/components/avatar.js +1 -1
  148. package/dist/components/button/Button.esm.js.map +1 -1
  149. package/dist/components/button.js +1 -1
  150. package/dist/components/combobox/Combobox.cjs.js +1 -1
  151. package/dist/components/combobox/Combobox.esm.js +1 -1
  152. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  153. package/dist/components/combobox-option/ComboboxOption.esm.js.map +1 -1
  154. package/dist/components/combobox-option.js +1 -1
  155. package/dist/components/combobox.js +1 -1
  156. package/dist/components/dialog/Dialog.cjs.js +2 -2
  157. package/dist/components/dialog/Dialog.cjs.js.map +1 -1
  158. package/dist/components/dialog/Dialog.esm.js +9 -9
  159. package/dist/components/dialog/Dialog.esm.js.map +1 -1
  160. package/dist/components/dialog-content.js +1 -1
  161. package/dist/components/dialog-footer.js +1 -1
  162. package/dist/components/dialog-header.js +1 -1
  163. package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
  164. package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
  165. package/dist/components/dialog-provider/DialogProvider.esm.js +6 -6
  166. package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
  167. package/dist/components/dialog-provider.js +1 -1
  168. package/dist/components/dialog.js +1 -1
  169. package/dist/components/dialogs-root/DialogsRoot.cjs.js +2 -2
  170. package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
  171. package/dist/components/dialogs-root/DialogsRoot.esm.js +7 -7
  172. package/dist/components/dialogs-root/DialogsRoot.esm.js.map +1 -1
  173. package/dist/components/dialogs-root.js +1 -1
  174. package/dist/components/error-state/ErrorState.cjs.js +1 -1
  175. package/dist/components/error-state/ErrorState.esm.js +1 -1
  176. package/dist/components/error-state/ErrorState.esm.js.map +1 -1
  177. package/dist/components/error-state.js +1 -1
  178. package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js +2 -2
  179. package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js.map +1 -1
  180. package/dist/components/file-explorer-header/FileExplorerHeader.d.ts.map +1 -1
  181. package/dist/components/file-explorer-header/FileExplorerHeader.esm.js +20 -19
  182. package/dist/components/file-explorer-header/FileExplorerHeader.esm.js.map +1 -1
  183. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +6 -6
  184. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +1 -1
  185. package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts.map +1 -1
  186. package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +25 -24
  187. package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js.map +1 -1
  188. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +7 -7
  189. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js.map +1 -1
  190. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts.map +1 -1
  191. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +28 -27
  192. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js.map +1 -1
  193. package/dist/components/file-explorer-header.js +1 -1
  194. package/dist/components/file-explorer-provider/FileExplorerProvider.cjs.js +1 -1
  195. package/dist/components/file-explorer-provider/FileExplorerProvider.cjs.js.map +1 -1
  196. package/dist/components/file-explorer-provider/FileExplorerProvider.d.ts +1 -1
  197. package/dist/components/file-explorer-provider/FileExplorerProvider.d.ts.map +1 -1
  198. package/dist/components/file-explorer-provider/FileExplorerProvider.esm.js +8 -7
  199. package/dist/components/file-explorer-provider/FileExplorerProvider.esm.js.map +1 -1
  200. package/dist/components/file-explorer-provider.js +1 -1
  201. package/dist/components/guard.js +1 -1
  202. package/dist/components/input/Input.esm.js.map +1 -1
  203. package/dist/components/input.js +1 -1
  204. package/dist/components/login-button/LoginButton.cjs.js +1 -1
  205. package/dist/components/login-button/LoginButton.esm.js +1 -1
  206. package/dist/components/login-button.js +1 -1
  207. package/dist/components/login-modal/LoginModal.cjs.js +1 -1
  208. package/dist/components/login-modal/LoginModal.esm.js +2 -2
  209. package/dist/components/login-modal/LoginModal.esm.js.map +1 -1
  210. package/dist/components/login-modal.js +1 -1
  211. package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
  212. package/dist/components/logout-button/LogoutButton.esm.js +1 -1
  213. package/dist/components/logout-button.js +1 -1
  214. package/dist/components/menu/Menu.cjs.js +1 -1
  215. package/dist/components/menu/Menu.cjs.js.map +1 -1
  216. package/dist/components/menu/Menu.esm.js +1 -1
  217. package/dist/components/menu/Menu.esm.js.map +1 -1
  218. package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
  219. package/dist/components/menu-item.js +1 -1
  220. package/dist/components/menu.js +1 -1
  221. package/dist/components/photo-capture/PhotoCapture.esm.js.map +1 -1
  222. package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js.map +1 -1
  223. package/dist/components/photo-capture-modal.js +1 -1
  224. package/dist/components/photo-capture.js +1 -1
  225. package/dist/components/provider/Provider.esm.js.map +1 -1
  226. package/dist/components/provider.js +1 -1
  227. package/dist/components/rdf-form/RDFForm.cjs.js +3 -3
  228. package/dist/components/rdf-form/RDFForm.cjs.js.map +1 -1
  229. package/dist/components/rdf-form/RDFForm.esm.js +13 -13
  230. package/dist/components/rdf-form/RDFForm.esm.js.map +1 -1
  231. package/dist/components/rdf-form.js +1 -1
  232. package/dist/components/rdf-input/RDFInput.cjs.js +2 -2
  233. package/dist/components/rdf-input/RDFInput.cjs.js.map +1 -1
  234. package/dist/components/rdf-input/RDFInput.esm.js +4 -4
  235. package/dist/components/rdf-input/RDFInput.esm.js.map +1 -1
  236. package/dist/components/rdf-input.js +1 -1
  237. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +8 -8
  238. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +1 -1
  239. package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts.map +1 -1
  240. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +18 -17
  241. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js.map +1 -1
  242. package/dist/components/resource-actions-menu.js +1 -1
  243. package/dist/components/select/Select.cjs.js +1 -1
  244. package/dist/components/select/Select.cjs.js.map +1 -1
  245. package/dist/components/select/Select.esm.js +1 -1
  246. package/dist/components/select/Select.esm.js.map +1 -1
  247. package/dist/components/select-option/SelectOption.esm.js.map +1 -1
  248. package/dist/components/select-option.js +1 -1
  249. package/dist/components/select.js +1 -1
  250. package/dist/components/signup-button/SignupButton.cjs.js +1 -1
  251. package/dist/components/signup-button/SignupButton.esm.js +1 -1
  252. package/dist/components/signup-button.js +1 -1
  253. package/dist/components/solid-emblem.js +1 -1
  254. package/dist/components.js +30 -30
  255. package/dist/create/create.cjs.js +1 -1
  256. package/dist/create/create.cjs.js.map +1 -1
  257. package/dist/create/create.esm.js +23 -23
  258. package/dist/header/index.cjs.js +1 -1
  259. package/dist/header/index.cjs.js.map +1 -1
  260. package/dist/header/index.esm.js +53 -53
  261. package/dist/index.cjs.js +1 -1
  262. package/dist/index.cjs.js.map +1 -1
  263. package/dist/index.esm.js +24 -24
  264. package/dist/index.esm.js.map +1 -1
  265. package/dist/index.js +11 -12
  266. package/dist/lib/auth/SolidAuth.cjs.js +1 -1
  267. package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
  268. package/dist/lib/auth/SolidAuth.esm.js +8 -8
  269. package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
  270. package/dist/lib/code-editor/CodeEditor.cjs.js +1 -1
  271. package/dist/lib/code-editor/CodeEditor.cjs.js.map +1 -1
  272. package/dist/lib/code-editor/CodeEditor.d.ts.map +1 -1
  273. package/dist/lib/code-editor/CodeEditor.esm.js +34 -30
  274. package/dist/lib/code-editor/CodeEditor.esm.js.map +1 -1
  275. package/dist/lib/components/dialog-component/DialogComponent.cjs.js +1 -1
  276. package/dist/lib/components/dialog-component/DialogComponent.cjs.js.map +1 -1
  277. package/dist/lib/components/dialog-component/DialogComponent.esm.js +4 -4
  278. package/dist/lib/components/index.cjs.js +1 -1
  279. package/dist/lib/components/index.esm.js +3 -3
  280. package/dist/lib/dialogs/helpers.cjs.js +1 -1
  281. package/dist/lib/dialogs/helpers.cjs.js.map +1 -1
  282. package/dist/lib/dialogs/helpers.esm.js +4 -4
  283. package/dist/lib/file-explorer/index.cjs.js +1 -1
  284. package/dist/lib/file-explorer/index.esm.js +3 -3
  285. package/dist/lib/file-explorer/relevant-panes.cjs.js +1 -1
  286. package/dist/lib/file-explorer/relevant-panes.cjs.js.map +1 -1
  287. package/dist/lib/file-explorer/relevant-panes.d.ts +7 -0
  288. package/dist/lib/file-explorer/relevant-panes.d.ts.map +1 -1
  289. package/dist/lib/file-explorer/relevant-panes.esm.js +11 -2
  290. package/dist/lib/file-explorer/relevant-panes.esm.js.map +1 -1
  291. package/dist/lib/messageArea.cjs.js +1 -1
  292. package/dist/lib/messageArea.cjs.js.map +1 -1
  293. package/dist/lib/messageArea.esm.js +27 -27
  294. package/dist/lib/pad.cjs.js +1 -1
  295. package/dist/lib/pad.cjs.js.map +1 -1
  296. package/dist/lib/pad.esm.js +15 -15
  297. package/dist/lib/participation.cjs.js +1 -1
  298. package/dist/lib/participation.cjs.js.map +1 -1
  299. package/dist/lib/participation.esm.js +59 -59
  300. package/dist/lib/preferences.cjs.js +1 -1
  301. package/dist/lib/preferences.cjs.js.map +1 -1
  302. package/dist/lib/preferences.esm.js +28 -28
  303. package/dist/lib/table.cjs.js +3 -3
  304. package/dist/lib/table.cjs.js.map +1 -1
  305. package/dist/lib/table.esm.js +123 -123
  306. package/dist/lib/table.esm.js.map +1 -1
  307. package/dist/lib/tabs.cjs.js +1 -1
  308. package/dist/lib/tabs.cjs.js.map +1 -1
  309. package/dist/lib/tabs.esm.js +16 -16
  310. package/dist/loader.js +11 -12
  311. package/dist/login/login.cjs.js +6 -6
  312. package/dist/login/login.cjs.js.map +1 -1
  313. package/dist/login/login.esm.js +142 -142
  314. package/dist/media/media-capture.cjs.js +1 -1
  315. package/dist/media/media-capture.cjs.js.map +1 -1
  316. package/dist/media/media-capture.esm.js +6 -6
  317. package/dist/solid-ui.js +32 -32
  318. package/dist/solid-ui.min.js +32 -32
  319. package/dist/solid-ui.min.js.map +1 -1
  320. package/dist/utils/index.cjs.js +1 -1
  321. package/dist/utils/index.cjs.js.map +1 -1
  322. package/dist/utils/index.esm.js +4 -4
  323. package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
  324. package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
  325. package/dist/utils/keyHelpers/accessData.esm.js +15 -15
  326. package/dist/utils/label.cjs.js +1 -1
  327. package/dist/utils/label.cjs.js.map +1 -1
  328. package/dist/utils/label.esm.js +4 -4
  329. package/dist/widgets/buttons.cjs.js +12 -12
  330. package/dist/widgets/buttons.cjs.js.map +1 -1
  331. package/dist/widgets/buttons.esm.js +179 -179
  332. package/dist/widgets/error.cjs.js +1 -1
  333. package/dist/widgets/error.cjs.js.map +1 -1
  334. package/dist/widgets/error.esm.js +5 -5
  335. package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js +1 -1
  336. package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js.map +1 -1
  337. package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +17 -17
  338. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js +1 -1
  339. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
  340. package/dist/widgets/forms/autocomplete/autocompleteField.esm.js +23 -23
  341. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js +1 -1
  342. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
  343. package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js +26 -26
  344. package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
  345. package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
  346. package/dist/widgets/forms/autocomplete/language.esm.js +9 -9
  347. package/dist/widgets/forms/autocomplete/publicData.cjs.js +5 -5
  348. package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
  349. package/dist/widgets/forms/autocomplete/publicData.esm.js +67 -67
  350. package/dist/widgets/forms/basic.cjs.js +1 -1
  351. package/dist/widgets/forms/basic.cjs.js.map +1 -1
  352. package/dist/widgets/forms/basic.esm.js +11 -11
  353. package/dist/widgets/forms.cjs.js +4 -4
  354. package/dist/widgets/forms.cjs.js.map +1 -1
  355. package/dist/widgets/forms.esm.js +561 -561
  356. package/dist/widgets/forms.esm.js.map +1 -1
  357. package/dist/widgets/index.cjs.js +1 -1
  358. package/dist/widgets/index.cjs.js.map +1 -1
  359. package/dist/widgets/index.esm.js +82 -82
  360. package/dist/widgets/peoplePicker.cjs.js +2 -2
  361. package/dist/widgets/peoplePicker.cjs.js.map +1 -1
  362. package/dist/widgets/peoplePicker.esm.js +82 -82
  363. package/package.json +3 -3
  364. package/dist/chunks/chunk.UEBQI7VV-9M5gO7Ew.js.map +0 -1
  365. package/dist/chunks/components-LxiwG5ae.js.map +0 -1
  366. package/dist/chunks/custom-element-BW8Ua4c7.js +0 -9
  367. package/dist/chunks/custom-element-BW8Ua4c7.js.map +0 -1
  368. package/dist/chunks/decorators-V-B013l9.js +0 -12
  369. package/dist/chunks/decorators-V-B013l9.js.map +0 -1
  370. package/dist/chunks/file-explorer-header-B6-Q0i6V.js.map +0 -1
  371. package/dist/chunks/photo-capture-CAfo7y6-.js.map +0 -1
  372. package/dist/chunks/solidLogicSingleton.esm-BXyHD7mn.js.map +0 -1
  373. package/dist/chunks/src-Bhtor0ZC.js.map +0 -1
  374. package/dist/chunks/widgets-BBEQu0CS.js.map +0 -1
@@ -1,12 +1,12 @@
1
- import e from "../lib/ns.esm.js";
1
+ import { log as e } from "../lib/debug.esm.js";
2
2
  import { label as t } from "../utils/label.esm.js";
3
+ import { icons as n } from "../lib/iconBase.esm.js";
4
+ import { ensureLoadedProfile as r } from "../login/login.esm.js";
5
+ import i from "../lib/ns.esm.js";
3
6
  import "../utils/index.esm.js";
4
- import { log as n } from "../lib/debug.esm.js";
5
- import { style as r } from "../lib/style.esm.js";
6
- import { icons as i } from "../lib/iconBase.esm.js";
7
7
  import { askName as a, button as o, cancelButton as s, continueButton as c, iconForClass as l, personTR as u } from "../widgets/buttons.esm.js";
8
8
  import "../widgets/index.esm.js";
9
- import { ensureLoadedProfile as d } from "../login/login.esm.js";
9
+ import { style as d } from "../lib/style.esm.js";
10
10
  // src/acl/add-agent-buttons.ts
11
11
  var f = class {
12
12
  groupList;
@@ -20,7 +20,7 @@ var f = class {
20
20
  return this.rootElement.innerHTML = "", this.rootElement.appendChild(this.renderAddButton()), this.rootElement.appendChild(this.barElement), this.rootElement;
21
21
  }
22
22
  renderAddButton() {
23
- return o(this.groupList.controller.dom, `${i.iconBase}noun_34653_green.svg`, "Add ...", () => {
23
+ return o(this.groupList.controller.dom, `${n.iconBase}noun_34653_green.svg`, "Add ...", () => {
24
24
  this.toggleBar(), this.renderBar();
25
25
  });
26
26
  }
@@ -31,39 +31,39 @@ var f = class {
31
31
  Array.from(this.barElement.children).filter((t) => t !== e).forEach((e) => this.barElement.removeChild(e));
32
32
  }
33
33
  renderPersonButton() {
34
- return o(this.groupList.controller.dom, i.iconBase + l["vcard:Individual"], "Add Person", (t) => {
35
- this.renderSimplifiedBar(t.target), this.renderNameForm(e.vcard("Individual"), "person").then((e) => this.addPerson(e)).then(() => this.renderCleanup()).catch((e) => this.groupList.controller.renderStatus(e));
34
+ return o(this.groupList.controller.dom, n.iconBase + l["vcard:Individual"], "Add Person", (e) => {
35
+ this.renderSimplifiedBar(e.target), this.renderNameForm(i.vcard("Individual"), "person").then((e) => this.addPerson(e)).then(() => this.renderCleanup()).catch((e) => this.groupList.controller.renderStatus(e));
36
36
  });
37
37
  }
38
38
  renderGroupButton() {
39
- return o(this.groupList.controller.dom, i.iconBase + l["vcard:Group"], "Add Group", (t) => {
40
- this.renderSimplifiedBar(t.target), this.renderNameForm(e.vcard("Group"), "group").then((e) => this.addGroup(e)).then(() => this.renderCleanup()).catch((e) => this.groupList.controller.renderStatus(e));
39
+ return o(this.groupList.controller.dom, n.iconBase + l["vcard:Group"], "Add Group", (e) => {
40
+ this.renderSimplifiedBar(e.target), this.renderNameForm(i.vcard("Group"), "group").then((e) => this.addGroup(e)).then(() => this.renderCleanup()).catch((e) => this.groupList.controller.renderStatus(e));
41
41
  });
42
42
  }
43
- renderNameForm(t, n) {
44
- return a(this.groupList.controller.dom, this.groupList.store, this.barElement, e.vcard("URI"), t, n);
43
+ renderNameForm(e, t) {
44
+ return a(this.groupList.controller.dom, this.groupList.store, this.barElement, i.vcard("URI"), e, t);
45
45
  }
46
46
  renderPublicButton() {
47
- return o(this.groupList.controller.dom, i.iconBase + l["foaf:Agent"], "Add Everyone", () => this.addAgent(e.foaf("Agent").uri).then(() => this.groupList.controller.renderTemporaryStatus("Adding the general public to those who can read. Drag the globe to a different level to give them more access.")).then(() => this.renderCleanup()));
47
+ return o(this.groupList.controller.dom, n.iconBase + l["foaf:Agent"], "Add Everyone", () => this.addAgent(i.foaf("Agent").uri).then(() => this.groupList.controller.renderTemporaryStatus("Adding the general public to those who can read. Drag the globe to a different level to give them more access.")).then(() => this.renderCleanup()));
48
48
  }
49
49
  renderAuthenticatedAgentButton() {
50
- return o(this.groupList.controller.dom, `${i.iconBase}noun_99101.svg`, "Anyone logged In", () => this.addAgent(e.acl("AuthenticatedAgent").uri).then(() => this.groupList.controller.renderTemporaryStatus("Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.")).then(() => this.renderCleanup()));
50
+ return o(this.groupList.controller.dom, `${n.iconBase}noun_99101.svg`, "Anyone logged In", () => this.addAgent(i.acl("AuthenticatedAgent").uri).then(() => this.groupList.controller.renderTemporaryStatus("Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.")).then(() => this.renderCleanup()));
51
51
  }
52
52
  renderBotButton() {
53
- return o(this.groupList.controller.dom, i.iconBase + "noun_Robot_849764.svg", "A Software Agent (bot)", (t) => {
54
- this.renderSimplifiedBar(t.target), this.renderNameForm(e.schema("Application"), "bot").then((e) => this.addBot(e)).then(() => this.renderCleanup());
53
+ return o(this.groupList.controller.dom, n.iconBase + "noun_Robot_849764.svg", "A Software Agent (bot)", (e) => {
54
+ this.renderSimplifiedBar(e.target), this.renderNameForm(i.schema("Application"), "bot").then((e) => this.addBot(e)).then(() => this.renderCleanup());
55
55
  });
56
56
  }
57
57
  renderAppsButton() {
58
- return o(this.groupList.controller.dom, `${i.iconBase}noun_15177.svg`, "A Web App (origin)", (t) => {
59
- this.renderSimplifiedBar(t.target);
60
- let n = {
58
+ return o(this.groupList.controller.dom, `${n.iconBase}noun_15177.svg`, "A Web App (origin)", (e) => {
59
+ this.renderSimplifiedBar(e.target);
60
+ let t = {
61
61
  div: this.barElement,
62
62
  dom: this.groupList.controller.dom
63
- }, r = this.renderAppsTable(n).catch((e) => this.groupList.controller.renderStatus(e));
63
+ }, n = this.renderAppsTable(t).catch((e) => this.groupList.controller.renderStatus(e));
64
64
  this.renderAppsView();
65
- let i = this.renderNameForm(e.schema("WebApplication"), "webapp domain").then((e) => this.getOriginFromName(e));
66
- Promise.race([r, i]).then((e) => {
65
+ let r = this.renderNameForm(i.schema("WebApplication"), "webapp domain").then((e) => this.getOriginFromName(e));
66
+ Promise.race([n, r]).then((e) => {
67
67
  e && this.groupList.addNewURI(e);
68
68
  }).then(() => this.renderCleanup());
69
69
  });
@@ -72,52 +72,52 @@ var f = class {
72
72
  let e = this.groupList.controller.context.session.paneRegistry.byName("trustedApplications");
73
73
  if (e) {
74
74
  let t = e.render(null, this.groupList.controller.context);
75
- t.setAttribute("style", r.trustedAppController);
75
+ t.setAttribute("style", d.trustedAppController);
76
76
  let n = s(this.groupList.controller.dom, () => this.renderCleanup());
77
- n.setAttribute("style", r.trustedAppCancelButton), t.insertBefore(n, t.firstChild), this.barElement.appendChild(t);
77
+ n.setAttribute("style", d.trustedAppCancelButton), t.insertBefore(n, t.firstChild), this.barElement.appendChild(t);
78
78
  }
79
79
  }
80
- async renderAppsTable(n) {
81
- await d(n);
82
- let i = this.groupList.store.each(n.me, e.acl("trustedApp")), a = i.flatMap((t) => this.groupList.store.each(t, e.acl("origin")));
83
- return this.barElement.appendChild(this.groupList.controller.dom.createElement("p")).textContent = `You have ${a.length} selected web apps.`, new Promise((n, a) => {
84
- let o = this.barElement.appendChild(this.groupList.controller.dom.createElement("table"));
85
- o.setAttribute("style", r.trustedAppAddApplicationsTable), i.forEach((r) => {
86
- let i = this.groupList.store.any(r, e.acl("origin"));
87
- i || a(/* @__PURE__ */ Error(`Unable to pick app: ${r.value}`));
88
- let s = u(this.groupList.controller.dom, e.acl("origin"), i, {}), l = this.groupList.controller.dom.createElement("table"), d = l.appendChild(this.groupList.controller.dom.createElement("tr"));
80
+ async renderAppsTable(e) {
81
+ await r(e);
82
+ let n = this.groupList.store.each(e.me, i.acl("trustedApp")), a = n.flatMap((e) => this.groupList.store.each(e, i.acl("origin")));
83
+ return this.barElement.appendChild(this.groupList.controller.dom.createElement("p")).textContent = `You have ${a.length} selected web apps.`, new Promise((e, r) => {
84
+ let a = this.barElement.appendChild(this.groupList.controller.dom.createElement("table"));
85
+ a.setAttribute("style", d.trustedAppAddApplicationsTable), n.forEach((n) => {
86
+ let o = this.groupList.store.any(n, i.acl("origin"));
87
+ o || r(/* @__PURE__ */ Error(`Unable to pick app: ${n.value}`));
88
+ let s = u(this.groupList.controller.dom, i.acl("origin"), o, {}), l = this.groupList.controller.dom.createElement("table"), d = l.appendChild(this.groupList.controller.dom.createElement("tr"));
89
89
  d.appendChild(this.groupList.controller.dom.createElement("td")).appendChild(s);
90
90
  let f = d.appendChild(this.groupList.controller.dom.createElement("td"));
91
- f.textContent = `Give access to ${this.groupList.controller.noun} ${t(this.groupList.controller.subject)}?`, d.appendChild(this.groupList.controller.dom.createElement("td")).appendChild(c(this.groupList.controller.dom, () => n(i.value))), o.appendChild(l);
91
+ f.textContent = `Give access to ${this.groupList.controller.noun} ${t(this.groupList.controller.subject)}?`, d.appendChild(this.groupList.controller.dom.createElement("td")).appendChild(c(this.groupList.controller.dom, () => e(o.value))), a.appendChild(l);
92
92
  });
93
93
  });
94
94
  }
95
95
  renderCleanup() {
96
96
  this.renderBar(), this.groupList.render();
97
97
  }
98
- async addPerson(e) {
99
- if (!e) return this.toggleBar();
100
- if (!e.match(/^https?:/i)) return Promise.reject(/* @__PURE__ */ Error("Not a http URI"));
101
- n(`Adding to ACL person: ${e}`), await this.groupList.addNewURI(e), this.toggleBar();
98
+ async addPerson(t) {
99
+ if (!t) return this.toggleBar();
100
+ if (!t.match(/^https?:/i)) return Promise.reject(/* @__PURE__ */ Error("Not a http URI"));
101
+ e(`Adding to ACL person: ${t}`), await this.groupList.addNewURI(t), this.toggleBar();
102
102
  }
103
- async addGroup(e) {
104
- if (!e) return this.toggleBar();
105
- if (!e.match(/^https?:/i)) return Promise.reject(/* @__PURE__ */ Error("Not a http URI"));
106
- n("Adding to ACL group: " + e), await this.groupList.addNewURI(e), this.toggleBar();
103
+ async addGroup(t) {
104
+ if (!t) return this.toggleBar();
105
+ if (!t.match(/^https?:/i)) return Promise.reject(/* @__PURE__ */ Error("Not a http URI"));
106
+ e("Adding to ACL group: " + t), await this.groupList.addNewURI(t), this.toggleBar();
107
107
  }
108
108
  async addAgent(e) {
109
109
  await this.groupList.addNewURI(e), this.toggleBar();
110
110
  }
111
- async addBot(e) {
112
- if (!e) return this.toggleBar();
113
- if (!e.match(/^https?:/i)) return Promise.reject(/* @__PURE__ */ Error("Not a http URI"));
114
- n("Adding to ACL bot: " + e), await this.groupList.addNewURI(e), this.toggleBar();
111
+ async addBot(t) {
112
+ if (!t) return this.toggleBar();
113
+ if (!t.match(/^https?:/i)) return Promise.reject(/* @__PURE__ */ Error("Not a http URI"));
114
+ e("Adding to ACL bot: " + t), await this.groupList.addNewURI(t), this.toggleBar();
115
115
  }
116
- async getOriginFromName(e) {
117
- if (!e) return Promise.resolve();
118
- if (!e.match(/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i)) return Promise.reject(/* @__PURE__ */ Error("Not a domain name"));
119
- let t = "https://" + e;
120
- return n("Adding to ACL origin: " + t), this.toggleBar(), t;
116
+ async getOriginFromName(t) {
117
+ if (!t) return Promise.resolve();
118
+ if (!t.match(/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i)) return Promise.reject(/* @__PURE__ */ Error("Not a domain name"));
119
+ let n = "https://" + t;
120
+ return e("Adding to ACL origin: " + n), this.toggleBar(), n;
121
121
  }
122
122
  toggleBar() {
123
123
  this.isExpanded = !this.isExpanded;
@@ -1,2 +1,2 @@
1
- const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../utils/label.cjs.js"),r=require("../utils/index.cjs.js"),i=require("../lib/debug.cjs.js"),a=require("../lib/style.cjs.js"),o=require("../lib/iconBase.cjs.js"),s=require("../widgets/index.cjs.js"),c=require("../login/login.cjs.js"),l=require("../media/index.cjs.js"),u=require("../lib/pad.cjs.js");let d=require("rdflib");d=e.__toESM(d);let f=require("solid-logic");var p={icons:o.icons,ns:t.default,media:l.media,pad:u.pad_exports,style:a.style,utils:r.utils_exports,widgets:s.widgets_exports},m=d.Namespace(`http://www.w3.org/2002/01/bookmark#`),h=`noun_45961.svg`,g=n.label,_=window.document||null;function v(e,t){return new Promise(function(n,r){f.store.updater.update(e,t,function(e,t,i){t?n():r(Error(i))})})}async function y(e){let t=m(`Bookmark`);if(await c.findAppInstances(e,t,!0),e.instances&&e.instances.length>0)e.bookmarkDocument=e.instances[0],e.instances.length>1&&i.warn(`More than one bookmark file! `+e.instances);else if(e.publicProfile){let n=d.sym(e.publicProfile.dir().uri+`bookmarks.ttl`);try{i.log(`Creating new bookmark file `+n),await f.store.fetcher.createIfNotExists(n)}catch(t){return i.warn(`Can't make fresh bookmark file:`+t),e}await f.createTypeIndexLogic.registerInTypeIndex(n,e.index,t),e.bookmarkDocument=n}else i.warn(`You seem to have no bookmark file, nor even a profile file!`);return e}async function b(e,n){let r=``,a=f.authn.currentUser();if(!a)throw Error(`Must be logged on to add Bookmark`);r=g(f.store.any(n,t.default.foaf(`maker`)))+`: `+f.store.anyValue(n,t.default.sioc(`content`)).slice(0,80);let o=e.bookmarkDocument,s=p.widgets.newThing(o,r),c=[d.st(o,p.ns.dct(`references`),s,o),d.st(s,p.ns.rdf(`type`),m(`Bookmark`),o),d.st(s,p.ns.dct(`created`),new Date,o),d.st(s,m(`recalls`),n,o),d.st(s,p.ns.foaf(`maker`),a,o),d.st(s,p.ns.dct(`title`),r,o)];try{await v([],c)}catch(e){let t=`Making bookmark: `+e;return i.warn(t),null}return s}async function x(e,t,n){await f.store.fetcher.load(e.bookmarkDocument);let r=f.store.each(null,m(`recalls`),t,e.bookmarkDocument);if(r.length){if(!confirm(`Delete bookmark on this?`+r.length))return;for(let e=0;e<r.length;e++)try{await v(f.store.connectedStatements(r[e]),[]),n.style.backgroundColor=`white`,i.log(`Bookmark deleted: `+r[e])}catch(e){i.error(`Cant delete bookmark:`+e),i.warn(`Cannot delete bookmark:`+e)}}else{let r=await b(e,t);n.style.backgroundColor=`yellow`,i.log(`Bookmark added: `+r)}}async function S(e,t){async function n(t){await f.store.fetcher.load(e.bookmarkDocument);let n=f.store.any(null,m(`recalls`),t.target,e.bookmarkDocument);t.style=p.style.buttonStyle,n&&(t.style.backgroundColor=`yellow`)}let r;if(e.bookmarkDocument)return r=p.widgets.button(_,p.icons.iconBase+h,g(m(`Bookmark`)),()=>{x(e,t,r)}),r.target=t,await n(r),r}exports.findBookmarkDocument=y,exports.renderBookmarksButton=S,exports.toggleBookmark=x;
1
+ const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/debug.cjs.js"),n=require("../utils/label.cjs.js"),r=require("../lib/iconBase.cjs.js"),i=require("../media/index.cjs.js"),a=require("../lib/ns.cjs.js"),o=require("../lib/pad.cjs.js"),s=require("../lib/style.cjs.js"),c=require("../utils/index.cjs.js"),l=require("../widgets/index.cjs.js"),u=require("../login/login.cjs.js");let d=require("rdflib");d=e.__toESM(d);let f=require("solid-logic");var p={icons:r.icons,ns:a.default,media:i.media,pad:o.pad_exports,style:s.style,utils:c.utils_exports,widgets:l.widgets_exports},m=d.Namespace(`http://www.w3.org/2002/01/bookmark#`),h=`noun_45961.svg`,g=n.label,_=window.document||null;function v(e,t){return new Promise(function(n,r){f.store.updater.update(e,t,function(e,t,i){t?n():r(Error(i))})})}async function y(e){let n=m(`Bookmark`);if(await u.findAppInstances(e,n,!0),e.instances&&e.instances.length>0)e.bookmarkDocument=e.instances[0],e.instances.length>1&&t.warn(`More than one bookmark file! `+e.instances);else if(e.publicProfile){let r=d.sym(e.publicProfile.dir().uri+`bookmarks.ttl`);try{t.log(`Creating new bookmark file `+r),await f.store.fetcher.createIfNotExists(r)}catch(n){return t.warn(`Can't make fresh bookmark file:`+n),e}await f.createTypeIndexLogic.registerInTypeIndex(r,e.index,n),e.bookmarkDocument=r}else t.warn(`You seem to have no bookmark file, nor even a profile file!`);return e}async function b(e,n){let r=``,i=f.authn.currentUser();if(!i)throw Error(`Must be logged on to add Bookmark`);r=g(f.store.any(n,a.default.foaf(`maker`)))+`: `+f.store.anyValue(n,a.default.sioc(`content`)).slice(0,80);let o=e.bookmarkDocument,s=p.widgets.newThing(o,r),c=[d.st(o,p.ns.dct(`references`),s,o),d.st(s,p.ns.rdf(`type`),m(`Bookmark`),o),d.st(s,p.ns.dct(`created`),new Date,o),d.st(s,m(`recalls`),n,o),d.st(s,p.ns.foaf(`maker`),i,o),d.st(s,p.ns.dct(`title`),r,o)];try{await v([],c)}catch(e){let n=`Making bookmark: `+e;return t.warn(n),null}return s}async function x(e,n,r){await f.store.fetcher.load(e.bookmarkDocument);let i=f.store.each(null,m(`recalls`),n,e.bookmarkDocument);if(i.length){if(!confirm(`Delete bookmark on this?`+i.length))return;for(let e=0;e<i.length;e++)try{await v(f.store.connectedStatements(i[e]),[]),r.style.backgroundColor=`white`,t.log(`Bookmark deleted: `+i[e])}catch(e){t.error(`Cant delete bookmark:`+e),t.warn(`Cannot delete bookmark:`+e)}}else{let i=await b(e,n);r.style.backgroundColor=`yellow`,t.log(`Bookmark added: `+i)}}async function S(e,t){async function n(t){await f.store.fetcher.load(e.bookmarkDocument);let n=f.store.any(null,m(`recalls`),t.target,e.bookmarkDocument);t.style=p.style.buttonStyle,n&&(t.style.backgroundColor=`yellow`)}let r;if(e.bookmarkDocument)return r=p.widgets.button(_,p.icons.iconBase+h,g(m(`Bookmark`)),()=>{x(e,t,r)}),r.target=t,await n(r),r}exports.findBookmarkDocument=y,exports.renderBookmarksButton=S,exports.toggleBookmark=x;
2
2
  //# sourceMappingURL=bookmarks.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bookmarks.cjs.js","names":["$rdf","findAppInstances","store","createTypeIndexLogic","authn","ns","require_runtime","require_ns","require_label","require_index","require_debug","require_style","require_iconBase","require_index$1","require_login","require_index$2","require_pad","rdflib","solid_logic","UI","BOOK","BOOKMARK_ICON","label","dom","updatePromise","del","ins","ok","resolve","reject","errorBody","findBookmarkDocument","theClass","userContext","newBookmarkFile","e","addBookmark","title","me","target","bookmarkDoc","context","bookmark","msg","toggleBookmark","bookmarks","i","renderBookmarksButton","setBookmarkButtonColor","bookmarked","bookmarkButton"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, createTypeIndexLogic, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, style, utils, widgets }\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n debug.warn('More than one bookmark file! ' + userContext.instances) // @@ todo - deal with > 1\n // Note: should pick up community bookmarks as well\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await store.fetcher.createIfNotExists(newBookmarkFile)\n } catch (e) {\n debug.warn('Can\\'t make fresh bookmark file:' + e)\n return userContext\n }\n await createTypeIndexLogic.registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n debug.warn('You seem to have no bookmark file, nor even a profile file!')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n debug.warn(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n debug.warn('Cannot delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"bookmarks.cjs.js","names":["$rdf","findAppInstances","store","createTypeIndexLogic","authn","ns","require_runtime","require_debug","require_label","require_iconBase","require_index","require_ns","require_pad","require_style","require_index$1","require_index$2","require_login","rdflib","solid_logic","UI","BOOK","BOOKMARK_ICON","label","dom","updatePromise","del","ins","ok","resolve","reject","errorBody","findBookmarkDocument","theClass","userContext","newBookmarkFile","e","addBookmark","title","me","target","bookmarkDoc","context","bookmark","msg","toggleBookmark","bookmarks","i","renderBookmarksButton","setBookmarkButtonColor","bookmarked","bookmarkButton"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, createTypeIndexLogic, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, style, utils, widgets }\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n debug.warn('More than one bookmark file! ' + userContext.instances) // @@ todo - deal with > 1\n // Note: should pick up community bookmarks as well\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await store.fetcher.createIfNotExists(newBookmarkFile)\n } catch (e) {\n debug.warn('Can\\'t make fresh bookmark file:' + e)\n return userContext\n }\n await createTypeIndexLogic.registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n debug.warn('You seem to have no bookmark file, nor even a profile file!')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n debug.warn(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n debug.warn('Cannot delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":"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"}
@@ -1,25 +1,25 @@
1
- import e from "../lib/ns.esm.js";
2
- import { label as t } from "../utils/label.esm.js";
3
- import { utils_exports as n } from "../utils/index.esm.js";
4
- import { error as r, log as i, warn as a } from "../lib/debug.esm.js";
5
- import { style as o } from "../lib/style.esm.js";
6
- import { icons as s } from "../lib/iconBase.esm.js";
7
- import { widgets_exports as c } from "../widgets/index.esm.js";
8
- import { findAppInstances as l } from "../login/login.esm.js";
9
- import { media as u } from "../media/index.esm.js";
10
- import { pad_exports as d } from "../lib/pad.esm.js";
1
+ import { error as e, log as t, warn as n } from "../lib/debug.esm.js";
2
+ import { label as r } from "../utils/label.esm.js";
3
+ import { icons as i } from "../lib/iconBase.esm.js";
4
+ import { media as a } from "../media/index.esm.js";
5
+ import o from "../lib/ns.esm.js";
6
+ import { pad_exports as s } from "../lib/pad.esm.js";
7
+ import { style as c } from "../lib/style.esm.js";
8
+ import { utils_exports as l } from "../utils/index.esm.js";
9
+ import { widgets_exports as u } from "../widgets/index.esm.js";
10
+ import { findAppInstances as d } from "../login/login.esm.js";
11
11
  import * as f from "rdflib";
12
12
  import { authn as p, createTypeIndexLogic as m, store as h } from "solid-logic";
13
13
  // src/chat/bookmarks.js
14
14
  var g = {
15
- icons: s,
16
- ns: e,
17
- media: u,
18
- pad: d,
19
- style: o,
20
- utils: n,
21
- widgets: c
22
- }, _ = f.Namespace("http://www.w3.org/2002/01/bookmark#"), v = "noun_45961.svg", y = t, b = window.document || null;
15
+ icons: i,
16
+ ns: o,
17
+ media: a,
18
+ pad: s,
19
+ style: c,
20
+ utils: l,
21
+ widgets: u
22
+ }, _ = f.Namespace("http://www.w3.org/2002/01/bookmark#"), v = "noun_45961.svg", y = r, b = window.document || null;
23
23
  function x(e, t) {
24
24
  return new Promise(function(n, r) {
25
25
  h.updater.update(e, t, function(e, t, i) {
@@ -28,52 +28,52 @@ function x(e, t) {
28
28
  });
29
29
  }
30
30
  async function S(e) {
31
- let t = _("Bookmark");
32
- if (await l(e, t, !0), e.instances && e.instances.length > 0) e.bookmarkDocument = e.instances[0], e.instances.length > 1 && a("More than one bookmark file! " + e.instances);
31
+ let r = _("Bookmark");
32
+ if (await d(e, r, !0), e.instances && e.instances.length > 0) e.bookmarkDocument = e.instances[0], e.instances.length > 1 && n("More than one bookmark file! " + e.instances);
33
33
  else if (e.publicProfile) {
34
- let n = f.sym(e.publicProfile.dir().uri + "bookmarks.ttl");
34
+ let i = f.sym(e.publicProfile.dir().uri + "bookmarks.ttl");
35
35
  try {
36
- i("Creating new bookmark file " + n), await h.fetcher.createIfNotExists(n);
36
+ t("Creating new bookmark file " + i), await h.fetcher.createIfNotExists(i);
37
37
  } catch (t) {
38
- return a("Can't make fresh bookmark file:" + t), e;
38
+ return n("Can't make fresh bookmark file:" + t), e;
39
39
  }
40
- await m.registerInTypeIndex(n, e.index, t), e.bookmarkDocument = n;
41
- } else a("You seem to have no bookmark file, nor even a profile file!");
40
+ await m.registerInTypeIndex(i, e.index, r), e.bookmarkDocument = i;
41
+ } else n("You seem to have no bookmark file, nor even a profile file!");
42
42
  return e;
43
43
  }
44
- async function C(t, n) {
44
+ async function C(e, t) {
45
45
  let r = "", i = p.currentUser();
46
46
  if (!i) throw Error("Must be logged on to add Bookmark");
47
- r = y(h.any(n, e.foaf("maker"))) + ": " + h.anyValue(n, e.sioc("content")).slice(0, 80);
48
- let o = t.bookmarkDocument, s = g.widgets.newThing(o, r), c = [
49
- f.st(o, g.ns.dct("references"), s, o),
50
- f.st(s, g.ns.rdf("type"), _("Bookmark"), o),
51
- f.st(s, g.ns.dct("created"), /* @__PURE__ */ new Date(), o),
52
- f.st(s, _("recalls"), n, o),
53
- f.st(s, g.ns.foaf("maker"), i, o),
54
- f.st(s, g.ns.dct("title"), r, o)
47
+ r = y(h.any(t, o.foaf("maker"))) + ": " + h.anyValue(t, o.sioc("content")).slice(0, 80);
48
+ let a = e.bookmarkDocument, s = g.widgets.newThing(a, r), c = [
49
+ f.st(a, g.ns.dct("references"), s, a),
50
+ f.st(s, g.ns.rdf("type"), _("Bookmark"), a),
51
+ f.st(s, g.ns.dct("created"), /* @__PURE__ */ new Date(), a),
52
+ f.st(s, _("recalls"), t, a),
53
+ f.st(s, g.ns.foaf("maker"), i, a),
54
+ f.st(s, g.ns.dct("title"), r, a)
55
55
  ];
56
56
  try {
57
57
  await x([], c);
58
58
  } catch (e) {
59
59
  let t = "Making bookmark: " + e;
60
- return a(t), null;
60
+ return n(t), null;
61
61
  }
62
62
  return s;
63
63
  }
64
- async function w(e, t, n) {
65
- await h.fetcher.load(e.bookmarkDocument);
66
- let o = h.each(null, _("recalls"), t, e.bookmarkDocument);
64
+ async function w(r, i, a) {
65
+ await h.fetcher.load(r.bookmarkDocument);
66
+ let o = h.each(null, _("recalls"), i, r.bookmarkDocument);
67
67
  if (o.length) {
68
68
  if (!confirm("Delete bookmark on this?" + o.length)) return;
69
- for (let e = 0; e < o.length; e++) try {
70
- await x(h.connectedStatements(o[e]), []), n.style.backgroundColor = "white", i("Bookmark deleted: " + o[e]);
71
- } catch (e) {
72
- r("Cant delete bookmark:" + e), a("Cannot delete bookmark:" + e);
69
+ for (let r = 0; r < o.length; r++) try {
70
+ await x(h.connectedStatements(o[r]), []), a.style.backgroundColor = "white", t("Bookmark deleted: " + o[r]);
71
+ } catch (t) {
72
+ e("Cant delete bookmark:" + t), n("Cannot delete bookmark:" + t);
73
73
  }
74
74
  } else {
75
- let r = await C(e, t);
76
- n.style.backgroundColor = "yellow", i("Bookmark added: " + r);
75
+ let e = await C(r, i);
76
+ a.style.backgroundColor = "yellow", t("Bookmark added: " + e);
77
77
  }
78
78
  }
79
79
  async function T(e, t) {
@@ -1 +1 @@
1
- {"version":3,"file":"bookmarks.esm.js","names":["utils.label","ns","ns_default","label$1","$rdf","UI","pad_exports","utils_exports","widgets_exports","BOOK","BOOKMARK_ICON","label","dom","updatePromise","del","ins","ok","resolve","reject","errorBody","findBookmarkDocument","theClass","findAppInstances","userContext","warn","newBookmarkFile","log","store","e","createTypeIndexLogic","addBookmark","title","me","authn","target","bookmarkDoc","context","bookmark","msg","toggleBookmark","bookmarks","i","error","renderBookmarksButton","setBookmarkButtonColor","bookmarked","bookmarkButton"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, createTypeIndexLogic, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, style, utils, widgets }\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n debug.warn('More than one bookmark file! ' + userContext.instances) // @@ todo - deal with > 1\n // Note: should pick up community bookmarks as well\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await store.fetcher.createIfNotExists(newBookmarkFile)\n } catch (e) {\n debug.warn('Can\\'t make fresh bookmark file:' + e)\n return userContext\n }\n await createTypeIndexLogic.registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n debug.warn('You seem to have no bookmark file, nor even a profile file!')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n debug.warn(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n debug.warn('Cannot delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"bookmarks.esm.js","names":["utils.label","ns","label$1","ns_default","$rdf","UI","pad_exports","utils_exports","widgets_exports","BOOK","BOOKMARK_ICON","label","dom","updatePromise","del","ins","ok","resolve","reject","errorBody","findBookmarkDocument","theClass","findAppInstances","userContext","warn","newBookmarkFile","log","store","e","createTypeIndexLogic","addBookmark","title","me","authn","target","bookmarkDoc","context","bookmark","msg","toggleBookmark","bookmarks","i","error","renderBookmarksButton","setBookmarkButtonColor","bookmarked","bookmarkButton"],"sources":["../../src/chat/bookmarks.js"],"sourcesContent":["/**\n * Functions related to chat and bookmarks\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { icons } from '../lib/iconBase'\nimport { media } from '../media/index'\nimport ns from '../lib/ns'\nimport * as pad from '../lib/pad'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport { style } from '../lib/style'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\nimport { store, createTypeIndexLogic, authn } from 'solid-logic'\nimport { findAppInstances } from '../login/login'\n\nconst UI = { icons, ns, media, pad, style, utils, widgets }\n\nconst BOOK = $rdf.Namespace('http://www.w3.org/2002/01/bookmark#')\nconst BOOKMARK_ICON = 'noun_45961.svg'\n\nconst label = utils.label\nconst dom = window.document || null\n\n// @@@@ use the one in rdflib.js when it is avaiable and delete this\nfunction updatePromise (del, ins) {\n return new Promise(function (resolve, reject) {\n store.updater.update(del, ins, function (uri, ok, errorBody) {\n if (!ok) {\n reject(new Error(errorBody))\n } else {\n resolve()\n }\n }) // callback\n }) // promise\n}\n\n/* Bookmarking\n */\n/** Find a user's bookmarks\n */\nexport async function findBookmarkDocument (userContext) {\n const theClass = BOOK('Bookmark')\n const fileTail = 'bookmarks.ttl'\n const isPublic = true\n\n await findAppInstances(userContext, theClass, isPublic) // public -- only look for public links\n\n if (userContext.instances && userContext.instances.length > 0) {\n userContext.bookmarkDocument = userContext.instances[0]\n if (userContext.instances.length > 1) {\n debug.warn('More than one bookmark file! ' + userContext.instances) // @@ todo - deal with > 1\n // Note: should pick up community bookmarks as well\n }\n } else {\n if (userContext.publicProfile) {\n // publicProfile or preferencesFile\n const newBookmarkFile = $rdf.sym(\n userContext.publicProfile.dir().uri + fileTail\n )\n try {\n debug.log('Creating new bookmark file ' + newBookmarkFile)\n await store.fetcher.createIfNotExists(newBookmarkFile)\n } catch (e) {\n debug.warn('Can\\'t make fresh bookmark file:' + e)\n return userContext\n }\n await createTypeIndexLogic.registerInTypeIndex(\n newBookmarkFile,\n userContext.index,\n theClass\n )\n userContext.bookmarkDocument = newBookmarkFile\n } else {\n debug.warn('You seem to have no bookmark file, nor even a profile file!')\n }\n }\n return userContext\n}\n\n/** Add a bookmark\n */\n\nasync function addBookmark (context, target) {\n /* like\n @prefix terms: <http://purl.org/dc/terms/>.\n @prefix bookm: <http://www.w3.org/2002/01/bookmark#>.\n @prefix n0: <http://xmlns.com/foaf/0.1/>.\n <> terms:references <#0.5534145389246576>.\n <#0.5534145389246576>\n a bookm:Bookmark;\n terms:created \"2019-01-26T20:26:44.374Z\"^^XML:dateTime;\n terms:title \"Herons\";\n bookm:recalls wiki:Heron;\n n0:maker c:me.\n */\n let title = ''\n const me = authn.currentUser() // If already logged on\n if (!me) throw new Error('Must be logged on to add Bookmark')\n\n const author = store.any(target, ns.foaf('maker'))\n title =\n label(author) + ': ' + store.anyValue(target, ns.sioc('content')).slice(0, 80) // @@ add chat title too?\n const bookmarkDoc = context.bookmarkDocument\n const bookmark = UI.widgets.newThing(bookmarkDoc, title)\n const ins = [\n $rdf.st(bookmarkDoc, UI.ns.dct('references'), bookmark, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.rdf('type'), BOOK('Bookmark'), bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('created'), new Date(), bookmarkDoc),\n $rdf.st(bookmark, BOOK('recalls'), target, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.foaf('maker'), me, bookmarkDoc),\n $rdf.st(bookmark, UI.ns.dct('title'), title, bookmarkDoc)\n ]\n try {\n await updatePromise([], ins) // 20190118A\n } catch (e) {\n const msg = 'Making bookmark: ' + e\n debug.warn(msg)\n return null\n }\n return bookmark\n}\n\nexport async function toggleBookmark (userContext, target, bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarks = store.each(\n null,\n BOOK('recalls'),\n target,\n userContext.bookmarkDocument\n )\n if (bookmarks.length) {\n // delete\n if (!confirm('Delete bookmark on this?' + bookmarks.length)) return\n for (let i = 0; i < bookmarks.length; i++) {\n try {\n await updatePromise(store.connectedStatements(bookmarks[i]), [])\n bookmarkButton.style.backgroundColor = 'white'\n debug.log('Bookmark deleted: ' + bookmarks[i])\n } catch (e) {\n debug.error('Cant delete bookmark:' + e)\n debug.warn('Cannot delete bookmark:' + e)\n }\n }\n } else {\n const bookmark = await addBookmark(userContext, target)\n bookmarkButton.style.backgroundColor = 'yellow'\n debug.log('Bookmark added: ' + bookmark)\n }\n}\n\nexport async function renderBookmarksButton (userContext, target) {\n async function setBookmarkButtonColor (bookmarkButton) {\n await store.fetcher.load(userContext.bookmarkDocument)\n const bookmarked = store.any(\n null,\n BOOK('recalls'),\n bookmarkButton.target,\n userContext.bookmarkDocument\n )\n bookmarkButton.style = UI.style.buttonStyle\n if (bookmarked) bookmarkButton.style.backgroundColor = 'yellow'\n }\n\n let bookmarkButton\n if (userContext.bookmarkDocument) {\n bookmarkButton = UI.widgets.button(\n dom,\n UI.icons.iconBase + BOOKMARK_ICON,\n label(BOOK('Bookmark')),\n () => {\n toggleBookmark(userContext, target, bookmarkButton)\n }\n )\n bookmarkButton.target = target\n await setBookmarkButtonColor(bookmarkButton)\n return bookmarkButton\n }\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js");require("../utils/index.cjs.js");const n=require("../lib/debug.cjs.js"),r=require("./dateFolder.cjs.js"),i=require("./signature.cjs.js"),a=require("./keys.cjs.js");let o=require("rdflib");o=e.__toESM(o);let s=require("solid-logic");var c=class{constructor(e,t){this.channel=e,this.channelRoot=e.doc(),this.options=t,this.dateFolder=new r.DateFolder(this.channelRoot,`chat.ttl`),this.div=null}async createMessage(e){return this.updateMessage(e)}async updateMessage(e,r=null,c,l=null){let u=[],f=new Date,p=``+f.getTime(),m=o.term(f),h=r?r.doc():this.dateFolder.leafDocumentFromDate(f),g=s.store.sym(h.uri+`#Msg`+p),_=s.authn.currentUser(),v=i.getBlankMsg();if(v.id=g.uri,r){let e=s.store.any(r,t.default.foaf(`maker`));if(e.uri===_.uri){let e=await d(r);u.push(o.st(e,t.default.dct(`isReplacedBy`),g,h));let n=s.store.any(e,t.default.sioc(`has_reply`));n&&u.push(o.st(g,t.default.sioc(`has_reply`),n,h)),c&&u.push(o.st(g,t.default.schema(`dateDeleted`),m,h))}else{let t=`Error you cannot delete/edit a message from someone else :
2
- `+e.uri;throw n.warn(t),alert(t),Error(t)}}else u.push(o.st(this.channel,t.default.wf(`message`),g,h));if(u.push(o.st(g,t.default.sioc(`content`),s.store.literal(e),h)),v.content=e,u.push(o.st(g,t.default.dct(`created`),m,h)),v.created=m.value,_){u.push(o.st(g,t.default.foaf(`maker`),_,h)),v.maker=_.uri;let e=await a.getPrivateKey(_),n=i.signMsg(v,e);u.push(o.st(g,o.sym(`${i.SEC}proofValue`),o.lit(n),h))}l&&(u.push(o.st(l,t.default.sioc(`has_member`),g,h)),l.doc().sameTerm(g.doc())||u.push(o.st(l,t.default.sioc(`has_member`),g,l.doc())));try{await s.store.updater.updateMany([],u)}catch(e){let t=`Error saving chat message: `+e;throw n.warn(t),alert(t),Error(t)}return g}async deleteMessage(e){return this.updateMessage(`(message deleted)`,e,!0)}async createThread(e){let n=s.store.each(e,t.default.sioc(`has_reply`),null,e.doc()).filter(e=>s.store.holds(e,t.default.rdf(`type`),t.default.sioc(`Thread`),e.doc()));if(n.length>0)return n[0];let r=o.sym(e.uri+`-thread`),i=[o.st(r,t.default.rdf(`type`),t.default.sioc(`Thread`),r.doc()),o.st(e,t.default.sioc(`has_reply`),r,r.doc())];return await s.store.updater.update([],i),r}};async function l(e){let n=[e],r={};r[e.uri]=!0;let i=e;for(;;){let e=s.store.any(null,t.default.dct(`isReplacedBy`),i,i.doc());if(!e||r[e.uri])break;await s.store.fetcher.load(e),n.unshift(e),r[e.uri]=!0,i=e}for(i=e;;){let e=s.store.any(i,t.default.dct(`isReplacedBy`),null,i.doc());if(!e||r[e.uri])break;n.push(e),r[e.uri]=!0,i=e}return n}async function u(e){let r=e,i={};for(;r;){if(i[r.uri])return n.error(`originalVersion: verion loop`+e),e;i[r.uri]=!0,e=r,await s.store.fetcher.load(e),r=s.store.any(null,t.default.dct(`isReplacedBy`),e,e.doc())}return e}async function d(e){let r=e,i={};for(;r;){if(i[r.uri])return n.error(`mostRecentVersion: verion loop`+e),e;i[r.uri]=!0,e=r,await s.store.fetcher.load(e),r=s.store.any(e,t.default.dct(`isReplacedBy`),null,e.doc())}return e}function f(e){return s.store.holds(e,t.default.schema(`dateDeleted`),null,e.doc())}exports.ChatChannel=c,exports.allVersions=l,exports.isDeleted=f,exports.mostRecentVersion=d,exports.originalVersion=u;
1
+ const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/debug.cjs.js"),n=require("./dateFolder.cjs.js"),r=require("../lib/ns.cjs.js");require("../utils/index.cjs.js");const i=require("./signature.cjs.js"),a=require("./keys.cjs.js");let o=require("rdflib");o=e.__toESM(o);let s=require("solid-logic");var c=class{constructor(e,t){this.channel=e,this.channelRoot=e.doc(),this.options=t,this.dateFolder=new n.DateFolder(this.channelRoot,`chat.ttl`),this.div=null}async createMessage(e){return this.updateMessage(e)}async updateMessage(e,n=null,c,l=null){let u=[],f=new Date,p=``+f.getTime(),m=o.term(f),h=n?n.doc():this.dateFolder.leafDocumentFromDate(f),g=s.store.sym(h.uri+`#Msg`+p),_=s.authn.currentUser(),v=i.getBlankMsg();if(v.id=g.uri,n){let e=s.store.any(n,r.default.foaf(`maker`));if(e.uri===_.uri){let e=await d(n);u.push(o.st(e,r.default.dct(`isReplacedBy`),g,h));let t=s.store.any(e,r.default.sioc(`has_reply`));t&&u.push(o.st(g,r.default.sioc(`has_reply`),t,h)),c&&u.push(o.st(g,r.default.schema(`dateDeleted`),m,h))}else{let n=`Error you cannot delete/edit a message from someone else :
2
+ `+e.uri;throw t.warn(n),alert(n),Error(n)}}else u.push(o.st(this.channel,r.default.wf(`message`),g,h));if(u.push(o.st(g,r.default.sioc(`content`),s.store.literal(e),h)),v.content=e,u.push(o.st(g,r.default.dct(`created`),m,h)),v.created=m.value,_){u.push(o.st(g,r.default.foaf(`maker`),_,h)),v.maker=_.uri;let e=await a.getPrivateKey(_),t=i.signMsg(v,e);u.push(o.st(g,o.sym(`${i.SEC}proofValue`),o.lit(t),h))}l&&(u.push(o.st(l,r.default.sioc(`has_member`),g,h)),l.doc().sameTerm(g.doc())||u.push(o.st(l,r.default.sioc(`has_member`),g,l.doc())));try{await s.store.updater.updateMany([],u)}catch(e){let n=`Error saving chat message: `+e;throw t.warn(n),alert(n),Error(n)}return g}async deleteMessage(e){return this.updateMessage(`(message deleted)`,e,!0)}async createThread(e){let t=s.store.each(e,r.default.sioc(`has_reply`),null,e.doc()).filter(e=>s.store.holds(e,r.default.rdf(`type`),r.default.sioc(`Thread`),e.doc()));if(t.length>0)return t[0];let n=o.sym(e.uri+`-thread`),i=[o.st(n,r.default.rdf(`type`),r.default.sioc(`Thread`),n.doc()),o.st(e,r.default.sioc(`has_reply`),n,n.doc())];return await s.store.updater.update([],i),n}};async function l(e){let t=[e],n={};n[e.uri]=!0;let i=e;for(;;){let e=s.store.any(null,r.default.dct(`isReplacedBy`),i,i.doc());if(!e||n[e.uri])break;await s.store.fetcher.load(e),t.unshift(e),n[e.uri]=!0,i=e}for(i=e;;){let e=s.store.any(i,r.default.dct(`isReplacedBy`),null,i.doc());if(!e||n[e.uri])break;t.push(e),n[e.uri]=!0,i=e}return t}async function u(e){let n=e,i={};for(;n;){if(i[n.uri])return t.error(`originalVersion: verion loop`+e),e;i[n.uri]=!0,e=n,await s.store.fetcher.load(e),n=s.store.any(null,r.default.dct(`isReplacedBy`),e,e.doc())}return e}async function d(e){let n=e,i={};for(;n;){if(i[n.uri])return t.error(`mostRecentVersion: verion loop`+e),e;i[n.uri]=!0,e=n,await s.store.fetcher.load(e),n=s.store.any(e,r.default.dct(`isReplacedBy`),null,e.doc())}return e}function f(e){return s.store.holds(e,r.default.schema(`dateDeleted`),null,e.doc())}exports.ChatChannel=c,exports.allVersions=l,exports.isDeleted=f,exports.mostRecentVersion=d,exports.originalVersion=u;
3
3
  //# sourceMappingURL=chatLogic.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatLogic.cjs.js","names":["DateFolder","$rdf","store","authn","getBlankMsg","ns","getPrivateKey","signMsg","SEC","require_runtime","require_ns","require_debug","require_dateFolder","require_signature","require_keys","rdflib","solid_logic","ChatChannel","channel","options","text","sts","now","timestamp","dateStamp","chatDocument","oldMsg","message","me","msg","oldMsgMaker","oldMsgMostRecentVersion","mostRecentVersion","oldMsgThread","deleteIt","errMsg","privateKey","sig","thread","err","already","threadRoot","insert","allVersions","versions","done","m","prev","next","originalVersion","isDeleted"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport ns from '../lib/ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\nimport { getBlankMsg, signMsg, SEC } from './signature'\nimport { getPrivateKey } from './keys'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt, thread = null) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n const msg = getBlankMsg()\n msg.id = message.uri\n if (oldMsg) { // edit message replaces old one\n const oldMsgMaker = store.any(oldMsg, ns.foaf('maker')) // may not be needed here, but needed on READ\n if (oldMsgMaker.uri === me.uri) {\n const oldMsgMostRecentVersion = await mostRecentVersion(oldMsg)\n sts.push($rdf.st(oldMsgMostRecentVersion, ns.dct('isReplacedBy'), message, chatDocument))\n // if oldMsg has_reply => add has_reply to message\n const oldMsgThread = store.any(oldMsgMostRecentVersion, ns.sioc('has_reply'))\n if (oldMsgThread) {\n sts.push($rdf.st(message, ns.sioc('has_reply'), oldMsgThread, chatDocument))\n }\n if (deleteIt) { // we need to add a specific signature, else anyone can delete a msg ?\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else {\n const errMsg = 'Error you cannot delete/edit a message from someone else : \\n' + oldMsgMaker.uri\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n msg.content = text\n\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n msg.created = dateStamp.value\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n msg.maker = me.uri\n // privateKey the cached private key of me, cached in store\n const privateKey = await getPrivateKey(me) // me.uri)\n\n const sig = signMsg(msg, privateKey)\n sts.push($rdf.st(message, $rdf.sym(`${SEC}proofValue`), $rdf.lit(sig), chatDocument))\n }\n if (thread) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, chatDocument))\n if (!thread.doc().sameTerm(message.doc())) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, thread.doc()))\n }\n }\n\n try {\n await store.updater.updateMany([], sts)\n } catch (err) {\n const errMsg = 'Error saving chat message: ' + err\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n\n // Create a new thread of replies to the thread root message\n // or return one which already exists\n\n async createThread (threadRoot) {\n const already = store.each(threadRoot, ns.sioc('has_reply'), null, threadRoot.doc())\n .filter(thread => store.holds(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()))\n if (already.length > 0) return already[0]\n\n const thread = $rdf.sym(threadRoot.uri + '-thread')\n const insert = [\n $rdf.st(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()),\n $rdf.st(threadRoot, ns.sioc('has_reply'), thread, thread.doc())\n ]\n await store.updater.update([], insert)\n return thread\n }\n} // class ChatChannel\n\n// ////////// Utility functions\n\n// Have to not loop forever if fed loops\nexport async function allVersions (message) {\n const versions = [message]\n const done = {}\n done[message.uri] = true\n let m = message\n while (true) { // earlier?\n const prev = store.any(null, ns.dct('isReplacedBy'), m, m.doc())\n if (!prev || done[prev.uri]) break\n await store.fetcher.load(prev)\n versions.unshift(prev)\n done[prev.uri] = true\n m = prev\n }\n m = message\n while (true) { // later?\n const next = store.any(m, ns.dct('isReplacedBy'), null, m.doc())\n if (!next || done[next.uri]) break\n versions.push(next)\n done[next.uri] = true\n m = next\n }\n return versions\n}\n\nexport async function originalVersion (message) {\n let msg = message\n const done = {}\n // done[message.uri] = true\n while (msg) {\n if (done[msg.uri]) {\n debug.error('originalVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport async function mostRecentVersion (message) {\n let msg = message\n const done = {}\n while (msg) {\n if (done[msg.uri]) {\n debug.error('mostRecentVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n// ends\n"],"mappings":"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"}
1
+ {"version":3,"file":"chatLogic.cjs.js","names":["DateFolder","$rdf","store","authn","getBlankMsg","ns","getPrivateKey","signMsg","SEC","require_runtime","require_debug","require_dateFolder","require_ns","require_signature","require_keys","rdflib","solid_logic","ChatChannel","channel","options","text","sts","now","timestamp","dateStamp","chatDocument","oldMsg","message","me","msg","oldMsgMaker","oldMsgMostRecentVersion","mostRecentVersion","oldMsgThread","deleteIt","errMsg","privateKey","sig","thread","err","already","threadRoot","insert","allVersions","versions","done","m","prev","next","originalVersion","isDeleted"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../lib/debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport ns from '../lib/ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\nimport { getBlankMsg, signMsg, SEC } from './signature'\nimport { getPrivateKey } from './keys'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt, thread = null) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n const msg = getBlankMsg()\n msg.id = message.uri\n if (oldMsg) { // edit message replaces old one\n const oldMsgMaker = store.any(oldMsg, ns.foaf('maker')) // may not be needed here, but needed on READ\n if (oldMsgMaker.uri === me.uri) {\n const oldMsgMostRecentVersion = await mostRecentVersion(oldMsg)\n sts.push($rdf.st(oldMsgMostRecentVersion, ns.dct('isReplacedBy'), message, chatDocument))\n // if oldMsg has_reply => add has_reply to message\n const oldMsgThread = store.any(oldMsgMostRecentVersion, ns.sioc('has_reply'))\n if (oldMsgThread) {\n sts.push($rdf.st(message, ns.sioc('has_reply'), oldMsgThread, chatDocument))\n }\n if (deleteIt) { // we need to add a specific signature, else anyone can delete a msg ?\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else {\n const errMsg = 'Error you cannot delete/edit a message from someone else : \\n' + oldMsgMaker.uri\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n msg.content = text\n\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n msg.created = dateStamp.value\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n msg.maker = me.uri\n // privateKey the cached private key of me, cached in store\n const privateKey = await getPrivateKey(me) // me.uri)\n\n const sig = signMsg(msg, privateKey)\n sts.push($rdf.st(message, $rdf.sym(`${SEC}proofValue`), $rdf.lit(sig), chatDocument))\n }\n if (thread) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, chatDocument))\n if (!thread.doc().sameTerm(message.doc())) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, thread.doc()))\n }\n }\n\n try {\n await store.updater.updateMany([], sts)\n } catch (err) {\n const errMsg = 'Error saving chat message: ' + err\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n\n // Create a new thread of replies to the thread root message\n // or return one which already exists\n\n async createThread (threadRoot) {\n const already = store.each(threadRoot, ns.sioc('has_reply'), null, threadRoot.doc())\n .filter(thread => store.holds(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()))\n if (already.length > 0) return already[0]\n\n const thread = $rdf.sym(threadRoot.uri + '-thread')\n const insert = [\n $rdf.st(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()),\n $rdf.st(threadRoot, ns.sioc('has_reply'), thread, thread.doc())\n ]\n await store.updater.update([], insert)\n return thread\n }\n} // class ChatChannel\n\n// ////////// Utility functions\n\n// Have to not loop forever if fed loops\nexport async function allVersions (message) {\n const versions = [message]\n const done = {}\n done[message.uri] = true\n let m = message\n while (true) { // earlier?\n const prev = store.any(null, ns.dct('isReplacedBy'), m, m.doc())\n if (!prev || done[prev.uri]) break\n await store.fetcher.load(prev)\n versions.unshift(prev)\n done[prev.uri] = true\n m = prev\n }\n m = message\n while (true) { // later?\n const next = store.any(m, ns.dct('isReplacedBy'), null, m.doc())\n if (!next || done[next.uri]) break\n versions.push(next)\n done[next.uri] = true\n m = next\n }\n return versions\n}\n\nexport async function originalVersion (message) {\n let msg = message\n const done = {}\n // done[message.uri] = true\n while (msg) {\n if (done[msg.uri]) {\n debug.error('originalVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport async function mostRecentVersion (message) {\n let msg = message\n const done = {}\n while (msg) {\n if (done[msg.uri]) {\n debug.error('mostRecentVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n// ends\n"],"mappings":"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"}