solid-ui 5.0.2-4 → 5.0.2-6

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 (282) 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/{ResourceActionsMenu-Bllpr4M5.js → ResourceActionsMenu-KFMLta44.js} +78 -69
  37. package/dist/chunks/ResourceActionsMenu-KFMLta44.js.map +1 -0
  38. package/dist/chunks/{access-control-modal-CwmY_Dod.js → access-control-modal-BZdBv6VD.js} +165 -165
  39. package/dist/chunks/{access-control-modal-CwmY_Dod.js.map → access-control-modal-BZdBv6VD.js.map} +1 -1
  40. package/dist/chunks/{account-CoHPKKDu.js → account-DWmMJre6.js} +22 -22
  41. package/dist/chunks/{account-CoHPKKDu.js.map → account-DWmMJre6.js.map} +1 -1
  42. package/dist/chunks/{auth-CocCqS1p.js → auth-EK-iYNYZ.js} +37 -37
  43. package/dist/chunks/{auth-CocCqS1p.js.map → auth-EK-iYNYZ.js.map} +1 -1
  44. package/dist/chunks/{avatar-sNdKdWVO.js → avatar-BBgvMlqv.js} +13 -13
  45. package/dist/chunks/{avatar-sNdKdWVO.js.map → avatar-BBgvMlqv.js.map} +1 -1
  46. package/dist/chunks/{combobox-fSTp9qoT.js → combobox-DS6byaf1.js} +3 -3
  47. package/dist/chunks/{combobox-fSTp9qoT.js.map → combobox-DS6byaf1.js.map} +1 -1
  48. package/dist/chunks/{error-state-BD4_Wrkz.js → error-state-jV9dlFX2.js} +2 -2
  49. package/dist/chunks/{error-state-BD4_Wrkz.js.map → error-state-jV9dlFX2.js.map} +1 -1
  50. package/dist/chunks/{file-explorer-header-D0TebSYR.js → file-explorer-header-BJzo6xDU.js} +50 -50
  51. package/dist/chunks/{file-explorer-header-D0TebSYR.js.map → file-explorer-header-BJzo6xDU.js.map} +1 -1
  52. package/dist/chunks/{guard-BOicu9dt.js → guard-SxVT1xr4.js} +13 -13
  53. package/dist/chunks/{guard-BOicu9dt.js.map → guard-SxVT1xr4.js.map} +1 -1
  54. package/dist/chunks/{index.esm-C9oV3H3X.js → index.esm-BQrkxchZ.js} +2 -2
  55. package/dist/chunks/{index.esm-C9oV3H3X.js.map → index.esm-BQrkxchZ.js.map} +1 -1
  56. package/dist/chunks/{jsonld-D-TE94B0.js → jsonld-C6IOQ1Tg.js} +2 -2
  57. package/dist/chunks/{jsonld-D-TE94B0.js.map → jsonld-C6IOQ1Tg.js.map} +1 -1
  58. package/dist/chunks/{login-button-clTw_9tX.js → login-button-Dd0rwZJk.js} +11 -11
  59. package/dist/chunks/{login-button-clTw_9tX.js.map → login-button-Dd0rwZJk.js.map} +1 -1
  60. package/dist/chunks/{logout-button-CP-Pz70O.js → logout-button-Da34Lrnq.js} +11 -11
  61. package/dist/chunks/{logout-button-CP-Pz70O.js.map → logout-button-Da34Lrnq.js.map} +1 -1
  62. package/dist/chunks/{menu-D0k2fkiE.js → menu-BNJU654v.js} +2 -2
  63. package/dist/chunks/{menu-D0k2fkiE.js.map → menu-BNJU654v.js.map} +1 -1
  64. package/dist/chunks/{provider-Cuv3Kp6G.js → provider-B3FoP2qW.js} +11 -11
  65. package/dist/chunks/{provider-Cuv3Kp6G.js.map → provider-B3FoP2qW.js.map} +1 -1
  66. package/dist/chunks/{rdf-form-DVmTw3RG.js → rdf-form-BkKDmFPD.js} +36 -36
  67. package/dist/chunks/{rdf-form-DVmTw3RG.js.map → rdf-form-BkKDmFPD.js.map} +1 -1
  68. package/dist/chunks/{rdf-input-CRYLK-27.js → rdf-input-BPePtqfS.js} +61 -61
  69. package/dist/chunks/{rdf-input-CRYLK-27.js.map → rdf-input-BPePtqfS.js.map} +1 -1
  70. package/dist/chunks/{signup-button-CexdMWj6.js → signup-button-DOInssOu.js} +11 -11
  71. package/dist/chunks/{signup-button-CexdMWj6.js.map → signup-button-DOInssOu.js.map} +1 -1
  72. package/dist/chunks/{solidLogicSingleton.esm-BXyHD7mn.js → solidLogicSingleton.esm-Bvt7E7Vl.js} +50 -29
  73. package/dist/chunks/solidLogicSingleton.esm-Bvt7E7Vl.js.map +1 -0
  74. package/dist/chunks/square-arrow-out-up-right-DaALlpHo.js +9 -0
  75. package/dist/chunks/square-arrow-out-up-right-DaALlpHo.js.map +1 -0
  76. package/dist/chunks/{src-DQgHAH3d.js → src-Cv9Lm1V-.js} +3009 -2980
  77. package/dist/chunks/src-Cv9Lm1V-.js.map +1 -0
  78. package/dist/chunks/{style-CXaw5EYi.js → style-Dlw9-wPn.js} +3 -3
  79. package/dist/chunks/{style-CXaw5EYi.js.map → style-Dlw9-wPn.js.map} +1 -1
  80. package/dist/chunks/{widgets-BBEQu0CS.js → widgets-C92ihtlF.js} +733 -737
  81. package/dist/chunks/widgets-C92ihtlF.js.map +1 -0
  82. package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js +1 -1
  83. package/dist/components/access-control-modal/AccessControlAddAccess.esm.js +5 -5
  84. package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js +2 -2
  85. package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js.map +1 -1
  86. package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js +12 -12
  87. package/dist/components/access-control-modal/AccessControlModal.cjs.js +2 -2
  88. package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
  89. package/dist/components/access-control-modal/AccessControlModal.esm.js +35 -35
  90. package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
  91. package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js +1 -1
  92. package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js +2 -2
  93. package/dist/components/access-control-modal/accessTargetResolver.cjs.js +1 -1
  94. package/dist/components/access-control-modal/accessTargetResolver.cjs.js.map +1 -1
  95. package/dist/components/access-control-modal/accessTargetResolver.esm.js +21 -21
  96. package/dist/components/access-control-modal.js +1 -1
  97. package/dist/components/account/Account.cjs.js +1 -1
  98. package/dist/components/account/Account.esm.js +3 -3
  99. package/dist/components/account.js +1 -1
  100. package/dist/components/all.cjs.js +1 -1
  101. package/dist/components/all.esm.js +16 -16
  102. package/dist/components/avatar.js +1 -1
  103. package/dist/components/combobox/Combobox.cjs.js +1 -1
  104. package/dist/components/combobox/Combobox.esm.js +1 -1
  105. package/dist/components/combobox.js +1 -1
  106. package/dist/components/dialog/Dialog.cjs.js +2 -2
  107. package/dist/components/dialog/Dialog.cjs.js.map +1 -1
  108. package/dist/components/dialog/Dialog.esm.js +9 -9
  109. package/dist/components/dialog/Dialog.esm.js.map +1 -1
  110. package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
  111. package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
  112. package/dist/components/dialog-provider/DialogProvider.esm.js +6 -6
  113. package/dist/components/dialogs-root/DialogsRoot.cjs.js +2 -2
  114. package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
  115. package/dist/components/dialogs-root/DialogsRoot.esm.js +7 -7
  116. package/dist/components/error-state/ErrorState.cjs.js +1 -1
  117. package/dist/components/error-state/ErrorState.esm.js +1 -1
  118. package/dist/components/error-state.js +1 -1
  119. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +2 -2
  120. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +1 -1
  121. package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +10 -10
  122. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +1 -1
  123. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +5 -5
  124. package/dist/components/file-explorer-header.js +1 -1
  125. package/dist/components/guard.js +1 -1
  126. package/dist/components/login-button/LoginButton.cjs.js +1 -1
  127. package/dist/components/login-button/LoginButton.esm.js +1 -1
  128. package/dist/components/login-button.js +1 -1
  129. package/dist/components/login-modal/LoginModal.cjs.js +1 -1
  130. package/dist/components/login-modal/LoginModal.esm.js +2 -2
  131. package/dist/components/login-modal.js +1 -1
  132. package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
  133. package/dist/components/logout-button/LogoutButton.esm.js +1 -1
  134. package/dist/components/logout-button.js +1 -1
  135. package/dist/components/menu/Menu.cjs.js +1 -1
  136. package/dist/components/menu/Menu.cjs.js.map +1 -1
  137. package/dist/components/menu/Menu.esm.js +1 -1
  138. package/dist/components/menu/Menu.esm.js.map +1 -1
  139. package/dist/components/menu.js +1 -1
  140. package/dist/components/provider.js +1 -1
  141. package/dist/components/rdf-form/RDFForm.cjs.js +3 -3
  142. package/dist/components/rdf-form/RDFForm.cjs.js.map +1 -1
  143. package/dist/components/rdf-form/RDFForm.esm.js +13 -13
  144. package/dist/components/rdf-form/RDFForm.esm.js.map +1 -1
  145. package/dist/components/rdf-form.js +1 -1
  146. package/dist/components/rdf-input/RDFInput.cjs.js +2 -2
  147. package/dist/components/rdf-input/RDFInput.cjs.js.map +1 -1
  148. package/dist/components/rdf-input/RDFInput.esm.js +4 -4
  149. package/dist/components/rdf-input/RDFInput.esm.js.map +1 -1
  150. package/dist/components/rdf-input.js +1 -1
  151. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +9 -3
  152. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +1 -1
  153. package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts +1 -0
  154. package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts.map +1 -1
  155. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +18 -9
  156. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js.map +1 -1
  157. package/dist/components/resource-actions-menu.js +1 -1
  158. package/dist/components/select/Select.cjs.js +1 -1
  159. package/dist/components/select/Select.cjs.js.map +1 -1
  160. package/dist/components/select/Select.esm.js +1 -1
  161. package/dist/components/signup-button/SignupButton.cjs.js +1 -1
  162. package/dist/components/signup-button/SignupButton.esm.js +1 -1
  163. package/dist/components/signup-button.js +1 -1
  164. package/dist/components.js +21 -21
  165. package/dist/create/create.cjs.js +1 -1
  166. package/dist/create/create.cjs.js.map +1 -1
  167. package/dist/create/create.esm.js +23 -23
  168. package/dist/header/index.cjs.js +1 -1
  169. package/dist/header/index.cjs.js.map +1 -1
  170. package/dist/header/index.esm.js +53 -53
  171. package/dist/index.cjs.js +1 -1
  172. package/dist/index.cjs.js.map +1 -1
  173. package/dist/index.esm.js +23 -22
  174. package/dist/index.esm.js.map +1 -1
  175. package/dist/index.js +11 -11
  176. package/dist/lib/auth/SolidAuth.cjs.js +1 -1
  177. package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
  178. package/dist/lib/auth/SolidAuth.esm.js +8 -8
  179. package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
  180. package/dist/lib/code-editor/CodeEditor.cjs.js +1 -1
  181. package/dist/lib/code-editor/CodeEditor.cjs.js.map +1 -1
  182. package/dist/lib/code-editor/CodeEditor.d.ts.map +1 -1
  183. package/dist/lib/code-editor/CodeEditor.esm.js +34 -30
  184. package/dist/lib/code-editor/CodeEditor.esm.js.map +1 -1
  185. package/dist/lib/components/dialog-component/DialogComponent.cjs.js +1 -1
  186. package/dist/lib/components/dialog-component/DialogComponent.cjs.js.map +1 -1
  187. package/dist/lib/components/dialog-component/DialogComponent.esm.js +4 -4
  188. package/dist/lib/components/index.cjs.js +1 -1
  189. package/dist/lib/components/index.esm.js +3 -3
  190. package/dist/lib/dialogs/helpers.cjs.js +1 -1
  191. package/dist/lib/dialogs/helpers.cjs.js.map +1 -1
  192. package/dist/lib/dialogs/helpers.esm.js +4 -4
  193. package/dist/lib/file-explorer/index.cjs.js +1 -1
  194. package/dist/lib/file-explorer/index.d.ts +1 -0
  195. package/dist/lib/file-explorer/index.d.ts.map +1 -1
  196. package/dist/lib/file-explorer/index.esm.js +2 -1
  197. package/dist/lib/file-explorer/pane-menu-items.cjs.js +2 -0
  198. package/dist/lib/file-explorer/pane-menu-items.cjs.js.map +1 -0
  199. package/dist/lib/file-explorer/pane-menu-items.d.ts +22 -0
  200. package/dist/lib/file-explorer/pane-menu-items.d.ts.map +1 -0
  201. package/dist/lib/file-explorer/pane-menu-items.esm.js +20 -0
  202. package/dist/lib/file-explorer/pane-menu-items.esm.js.map +1 -0
  203. package/dist/lib/file-explorer/relevant-panes.cjs.js +1 -1
  204. package/dist/lib/file-explorer/relevant-panes.cjs.js.map +1 -1
  205. package/dist/lib/file-explorer/relevant-panes.esm.js +8 -8
  206. package/dist/lib/messageArea.cjs.js +1 -1
  207. package/dist/lib/messageArea.cjs.js.map +1 -1
  208. package/dist/lib/messageArea.esm.js +27 -27
  209. package/dist/lib/pad.cjs.js +1 -1
  210. package/dist/lib/pad.cjs.js.map +1 -1
  211. package/dist/lib/pad.esm.js +15 -15
  212. package/dist/lib/participation.cjs.js +1 -1
  213. package/dist/lib/participation.cjs.js.map +1 -1
  214. package/dist/lib/participation.esm.js +59 -59
  215. package/dist/lib/preferences.cjs.js +1 -1
  216. package/dist/lib/preferences.cjs.js.map +1 -1
  217. package/dist/lib/preferences.esm.js +28 -28
  218. package/dist/lib/table.cjs.js +3 -3
  219. package/dist/lib/table.cjs.js.map +1 -1
  220. package/dist/lib/table.esm.js +123 -123
  221. package/dist/lib/table.esm.js.map +1 -1
  222. package/dist/lib/tabs.cjs.js +1 -1
  223. package/dist/lib/tabs.cjs.js.map +1 -1
  224. package/dist/lib/tabs.esm.js +16 -16
  225. package/dist/loader.js +11 -11
  226. package/dist/login/login.cjs.js +6 -6
  227. package/dist/login/login.cjs.js.map +1 -1
  228. package/dist/login/login.esm.js +142 -142
  229. package/dist/media/media-capture.cjs.js +1 -1
  230. package/dist/media/media-capture.cjs.js.map +1 -1
  231. package/dist/media/media-capture.esm.js +6 -6
  232. package/dist/solid-ui.js +34 -28
  233. package/dist/solid-ui.min.js +34 -28
  234. package/dist/solid-ui.min.js.map +1 -1
  235. package/dist/utils/index.cjs.js +1 -1
  236. package/dist/utils/index.cjs.js.map +1 -1
  237. package/dist/utils/index.esm.js +4 -4
  238. package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
  239. package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
  240. package/dist/utils/keyHelpers/accessData.esm.js +15 -15
  241. package/dist/utils/label.cjs.js +1 -1
  242. package/dist/utils/label.cjs.js.map +1 -1
  243. package/dist/utils/label.esm.js +4 -4
  244. package/dist/widgets/buttons.cjs.js +12 -12
  245. package/dist/widgets/buttons.cjs.js.map +1 -1
  246. package/dist/widgets/buttons.esm.js +179 -179
  247. package/dist/widgets/error.cjs.js +1 -1
  248. package/dist/widgets/error.cjs.js.map +1 -1
  249. package/dist/widgets/error.esm.js +5 -5
  250. package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js +1 -1
  251. package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js.map +1 -1
  252. package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +17 -17
  253. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js +1 -1
  254. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
  255. package/dist/widgets/forms/autocomplete/autocompleteField.esm.js +23 -23
  256. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js +1 -1
  257. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
  258. package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js +26 -26
  259. package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
  260. package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
  261. package/dist/widgets/forms/autocomplete/language.esm.js +9 -9
  262. package/dist/widgets/forms/autocomplete/publicData.cjs.js +5 -5
  263. package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
  264. package/dist/widgets/forms/autocomplete/publicData.esm.js +67 -67
  265. package/dist/widgets/forms/basic.cjs.js +1 -1
  266. package/dist/widgets/forms/basic.cjs.js.map +1 -1
  267. package/dist/widgets/forms/basic.esm.js +11 -11
  268. package/dist/widgets/forms.cjs.js +4 -4
  269. package/dist/widgets/forms.cjs.js.map +1 -1
  270. package/dist/widgets/forms.esm.js +561 -561
  271. package/dist/widgets/forms.esm.js.map +1 -1
  272. package/dist/widgets/index.cjs.js +1 -1
  273. package/dist/widgets/index.cjs.js.map +1 -1
  274. package/dist/widgets/index.esm.js +82 -82
  275. package/dist/widgets/peoplePicker.cjs.js +2 -2
  276. package/dist/widgets/peoplePicker.cjs.js.map +1 -1
  277. package/dist/widgets/peoplePicker.esm.js +82 -82
  278. package/package.json +3 -3
  279. package/dist/chunks/ResourceActionsMenu-Bllpr4M5.js.map +0 -1
  280. package/dist/chunks/solidLogicSingleton.esm-BXyHD7mn.js.map +0 -1
  281. package/dist/chunks/src-DQgHAH3d.js.map +0 -1
  282. package/dist/chunks/widgets-BBEQu0CS.js.map +0 -1
@@ -1,2 +1,2 @@
1
- const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("./dragAndDrop.cjs.js"),n=require("./error.cjs.js"),r=require("./peoplePicker.cjs.js"),i=require("./buttons/iconLinks.cjs.js"),a=require("./buttons.cjs.js"),o=require("./forms/fieldParams.cjs.js"),s=require("./forms/fieldFunction.cjs.js"),c=require("./forms/basic.cjs.js"),l=require("./forms/autocomplete/publicData.cjs.js"),u=require("./forms/autocomplete/autocompletePicker.cjs.js"),d=require("./forms/autocomplete/autocompleteBar.cjs.js"),f=require("./forms.cjs.js");var p=e.__exportAll({Group:()=>r.Group,GroupBuilder:()=>r.GroupBuilder,GroupPicker:()=>r.GroupPicker,PeoplePicker:()=>r.PeoplePicker,Person:()=>r.Person,addStyleSheet:()=>a.addStyleSheet,allClassURIs:()=>a.allClassURIs,appendForm:()=>f.appendForm,askName:()=>a.askName,attachmentList:()=>a.attachmentList,basicField:()=>c.basicField,buildCheckboxForm:()=>f.buildCheckboxForm,button:()=>a.button,cancelButton:()=>a.cancelButton,clearElement:()=>a.clearElement,complain:()=>a.complain,continueButton:()=>a.continueButton,createLinkDiv:()=>a.createLinkDiv,createLinkForURI:()=>i.createLinkForURI,createNameDiv:()=>a.createNameDiv,defaultAnnotationStore:()=>a.defaultAnnotationStore,deleteButtonWithCheck:()=>a.deleteButtonWithCheck,editFormButton:()=>f.editFormButton,errorMessageBlock:()=>n.errorMessageBlock,extractLogURI:()=>a.extractLogURI,faviconOrDefault:()=>a.faviconOrDefault,field:()=>s.field,fieldFunction:()=>s.fieldFunction,fieldLabel:()=>c.fieldLabel,fieldParams:()=>o.fieldParams,fieldStore:()=>c.fieldStore,fileUploadButtonDiv:()=>a.fileUploadButtonDiv,findClosest:()=>f.findClosest,findImage:()=>a.findImage,findImageFromURI:()=>a.findImageFromURI,formatDateTime:()=>a.formatDateTime,formsFor:()=>f.formsFor,iconForClass:()=>a.iconForClass,imagesOf:()=>a.imagesOf,index:()=>a.index,isAudio:()=>a.isAudio,isImage:()=>a.isImage,isVideo:()=>a.isVideo,linkButton:()=>a.linkButton,linkIcon:()=>i.linkIcon,makeDescription:()=>f.makeDescription,makeDraggable:()=>t.makeDraggable,makeDropTarget:()=>t.makeDropTarget,makeSelectForCategory:()=>f.makeSelectForCategory,makeSelectForChoice:()=>f.makeSelectForChoice,makeSelectForClassifierOptions:()=>f.makeSelectForClassifierOptions,makeSelectForNestedCategory:()=>f.makeSelectForNestedCategory,makeSelectForOptions:()=>f.makeSelectForOptions,mostSpecificClassURI:()=>s.mostSpecificClassURI,newButton:()=>f.newButton,newThing:()=>f.newThing,openHrefInOutlineMode:()=>a.openHrefInOutlineMode,personTR:()=>a.personTR,promptForNew:()=>f.promptForNew,propertiesForClass:()=>f.propertiesForClass,propertyTriage:()=>a.propertyTriage,publicData:()=>l.publicData_exports,refreshTree:()=>a.refreshTree,removeButton:()=>a.removeButton,renderAsDiv:()=>a.renderAsDiv,renderAsRow:()=>a.renderAsRow,renderAutoComplete:()=>u.renderAutoComplete,renderAutocompleteControl:()=>d.renderAutocompleteControl,renderNameValuePair:()=>c.renderNameValuePair,selectorPanel:()=>a.selectorPanel,selectorPanelRefresh:()=>a.selectorPanelRefresh,setImage:()=>a.setImage,setName:()=>a.setName,setVisible:()=>u.setVisible,shortDate:()=>a.shortDate,shortTime:()=>a.shortTime,sortByLabel:()=>f.sortByLabel,sortBySequence:()=>f.sortBySequence,timestamp:()=>a.timestamp,uploadFiles:()=>t.uploadFiles});exports.Group=r.Group,exports.GroupBuilder=r.GroupBuilder,exports.GroupPicker=r.GroupPicker,exports.PeoplePicker=r.PeoplePicker,exports.Person=r.Person,exports.addStyleSheet=a.addStyleSheet,exports.allClassURIs=a.allClassURIs,exports.appendForm=f.appendForm,exports.askName=a.askName,exports.attachmentList=a.attachmentList,exports.basicField=c.basicField,exports.buildCheckboxForm=f.buildCheckboxForm,exports.button=a.button,exports.cancelButton=a.cancelButton,exports.clearElement=a.clearElement,exports.complain=a.complain,exports.continueButton=a.continueButton,exports.createLinkDiv=a.createLinkDiv,exports.createLinkForURI=i.createLinkForURI,exports.createNameDiv=a.createNameDiv,exports.defaultAnnotationStore=a.defaultAnnotationStore,exports.deleteButtonWithCheck=a.deleteButtonWithCheck,exports.editFormButton=f.editFormButton,exports.errorMessageBlock=n.errorMessageBlock,exports.extractLogURI=a.extractLogURI,exports.faviconOrDefault=a.faviconOrDefault,exports.field=s.field,exports.fieldFunction=s.fieldFunction,exports.fieldLabel=c.fieldLabel,exports.fieldParams=o.fieldParams,exports.fieldStore=c.fieldStore,exports.fileUploadButtonDiv=a.fileUploadButtonDiv,exports.findClosest=f.findClosest,exports.findImage=a.findImage,exports.findImageFromURI=a.findImageFromURI,exports.formatDateTime=a.formatDateTime,exports.formsFor=f.formsFor,exports.iconForClass=a.iconForClass,exports.imagesOf=a.imagesOf,Object.defineProperty(exports,"index",{enumerable:!0,get:function(){return a.index}}),exports.isAudio=a.isAudio,exports.isImage=a.isImage,exports.isVideo=a.isVideo,exports.linkButton=a.linkButton,exports.linkIcon=i.linkIcon,exports.makeDescription=f.makeDescription,exports.makeDraggable=t.makeDraggable,exports.makeDropTarget=t.makeDropTarget,exports.makeSelectForCategory=f.makeSelectForCategory,exports.makeSelectForChoice=f.makeSelectForChoice,exports.makeSelectForClassifierOptions=f.makeSelectForClassifierOptions,exports.makeSelectForNestedCategory=f.makeSelectForNestedCategory,exports.makeSelectForOptions=f.makeSelectForOptions,exports.mostSpecificClassURI=s.mostSpecificClassURI,exports.newButton=f.newButton,exports.newThing=f.newThing,exports.openHrefInOutlineMode=a.openHrefInOutlineMode,exports.personTR=a.personTR,exports.promptForNew=f.promptForNew,exports.propertiesForClass=f.propertiesForClass,exports.propertyTriage=a.propertyTriage,Object.defineProperty(exports,"publicData",{enumerable:!0,get:function(){return l.publicData_exports}}),exports.refreshTree=a.refreshTree,exports.removeButton=a.removeButton,exports.renderAsDiv=a.renderAsDiv,exports.renderAsRow=a.renderAsRow,exports.renderAutoComplete=u.renderAutoComplete,exports.renderAutocompleteControl=d.renderAutocompleteControl,exports.renderNameValuePair=c.renderNameValuePair,exports.selectorPanel=a.selectorPanel,exports.selectorPanelRefresh=a.selectorPanelRefresh,exports.setImage=a.setImage,exports.setName=a.setName,exports.setVisible=u.setVisible,exports.shortDate=a.shortDate,exports.shortTime=a.shortTime,exports.sortByLabel=f.sortByLabel,exports.sortBySequence=f.sortBySequence,exports.timestamp=a.timestamp,exports.uploadFiles=t.uploadFiles,Object.defineProperty(exports,"widgets_exports",{enumerable:!0,get:function(){return p}});
1
+ const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("./peoplePicker.cjs.js"),n=require("./dragAndDrop.cjs.js"),r=require("./buttons.cjs.js"),i=require("./buttons/iconLinks.cjs.js"),a=require("./error.cjs.js"),o=require("./forms/fieldParams.cjs.js"),s=require("./forms/fieldFunction.cjs.js"),c=require("./forms/basic.cjs.js"),l=require("./forms.cjs.js"),u=require("./forms/autocomplete/autocompleteBar.cjs.js"),d=require("./forms/autocomplete/autocompletePicker.cjs.js"),f=require("./forms/autocomplete/publicData.cjs.js");var p=e.__exportAll({Group:()=>t.Group,GroupBuilder:()=>t.GroupBuilder,GroupPicker:()=>t.GroupPicker,PeoplePicker:()=>t.PeoplePicker,Person:()=>t.Person,addStyleSheet:()=>r.addStyleSheet,allClassURIs:()=>r.allClassURIs,appendForm:()=>l.appendForm,askName:()=>r.askName,attachmentList:()=>r.attachmentList,basicField:()=>c.basicField,buildCheckboxForm:()=>l.buildCheckboxForm,button:()=>r.button,cancelButton:()=>r.cancelButton,clearElement:()=>r.clearElement,complain:()=>r.complain,continueButton:()=>r.continueButton,createLinkDiv:()=>r.createLinkDiv,createLinkForURI:()=>i.createLinkForURI,createNameDiv:()=>r.createNameDiv,defaultAnnotationStore:()=>r.defaultAnnotationStore,deleteButtonWithCheck:()=>r.deleteButtonWithCheck,editFormButton:()=>l.editFormButton,errorMessageBlock:()=>a.errorMessageBlock,extractLogURI:()=>r.extractLogURI,faviconOrDefault:()=>r.faviconOrDefault,field:()=>s.field,fieldFunction:()=>s.fieldFunction,fieldLabel:()=>c.fieldLabel,fieldParams:()=>o.fieldParams,fieldStore:()=>c.fieldStore,fileUploadButtonDiv:()=>r.fileUploadButtonDiv,findClosest:()=>l.findClosest,findImage:()=>r.findImage,findImageFromURI:()=>r.findImageFromURI,formatDateTime:()=>r.formatDateTime,formsFor:()=>l.formsFor,iconForClass:()=>r.iconForClass,imagesOf:()=>r.imagesOf,index:()=>r.index,isAudio:()=>r.isAudio,isImage:()=>r.isImage,isVideo:()=>r.isVideo,linkButton:()=>r.linkButton,linkIcon:()=>i.linkIcon,makeDescription:()=>l.makeDescription,makeDraggable:()=>n.makeDraggable,makeDropTarget:()=>n.makeDropTarget,makeSelectForCategory:()=>l.makeSelectForCategory,makeSelectForChoice:()=>l.makeSelectForChoice,makeSelectForClassifierOptions:()=>l.makeSelectForClassifierOptions,makeSelectForNestedCategory:()=>l.makeSelectForNestedCategory,makeSelectForOptions:()=>l.makeSelectForOptions,mostSpecificClassURI:()=>s.mostSpecificClassURI,newButton:()=>l.newButton,newThing:()=>l.newThing,openHrefInOutlineMode:()=>r.openHrefInOutlineMode,personTR:()=>r.personTR,promptForNew:()=>l.promptForNew,propertiesForClass:()=>l.propertiesForClass,propertyTriage:()=>r.propertyTriage,publicData:()=>f.publicData_exports,refreshTree:()=>r.refreshTree,removeButton:()=>r.removeButton,renderAsDiv:()=>r.renderAsDiv,renderAsRow:()=>r.renderAsRow,renderAutoComplete:()=>d.renderAutoComplete,renderAutocompleteControl:()=>u.renderAutocompleteControl,renderNameValuePair:()=>c.renderNameValuePair,selectorPanel:()=>r.selectorPanel,selectorPanelRefresh:()=>r.selectorPanelRefresh,setImage:()=>r.setImage,setName:()=>r.setName,setVisible:()=>d.setVisible,shortDate:()=>r.shortDate,shortTime:()=>r.shortTime,sortByLabel:()=>l.sortByLabel,sortBySequence:()=>l.sortBySequence,timestamp:()=>r.timestamp,uploadFiles:()=>n.uploadFiles});exports.Group=t.Group,exports.GroupBuilder=t.GroupBuilder,exports.GroupPicker=t.GroupPicker,exports.PeoplePicker=t.PeoplePicker,exports.Person=t.Person,exports.addStyleSheet=r.addStyleSheet,exports.allClassURIs=r.allClassURIs,exports.appendForm=l.appendForm,exports.askName=r.askName,exports.attachmentList=r.attachmentList,exports.basicField=c.basicField,exports.buildCheckboxForm=l.buildCheckboxForm,exports.button=r.button,exports.cancelButton=r.cancelButton,exports.clearElement=r.clearElement,exports.complain=r.complain,exports.continueButton=r.continueButton,exports.createLinkDiv=r.createLinkDiv,exports.createLinkForURI=i.createLinkForURI,exports.createNameDiv=r.createNameDiv,exports.defaultAnnotationStore=r.defaultAnnotationStore,exports.deleteButtonWithCheck=r.deleteButtonWithCheck,exports.editFormButton=l.editFormButton,exports.errorMessageBlock=a.errorMessageBlock,exports.extractLogURI=r.extractLogURI,exports.faviconOrDefault=r.faviconOrDefault,exports.field=s.field,exports.fieldFunction=s.fieldFunction,exports.fieldLabel=c.fieldLabel,exports.fieldParams=o.fieldParams,exports.fieldStore=c.fieldStore,exports.fileUploadButtonDiv=r.fileUploadButtonDiv,exports.findClosest=l.findClosest,exports.findImage=r.findImage,exports.findImageFromURI=r.findImageFromURI,exports.formatDateTime=r.formatDateTime,exports.formsFor=l.formsFor,exports.iconForClass=r.iconForClass,exports.imagesOf=r.imagesOf,Object.defineProperty(exports,"index",{enumerable:!0,get:function(){return r.index}}),exports.isAudio=r.isAudio,exports.isImage=r.isImage,exports.isVideo=r.isVideo,exports.linkButton=r.linkButton,exports.linkIcon=i.linkIcon,exports.makeDescription=l.makeDescription,exports.makeDraggable=n.makeDraggable,exports.makeDropTarget=n.makeDropTarget,exports.makeSelectForCategory=l.makeSelectForCategory,exports.makeSelectForChoice=l.makeSelectForChoice,exports.makeSelectForClassifierOptions=l.makeSelectForClassifierOptions,exports.makeSelectForNestedCategory=l.makeSelectForNestedCategory,exports.makeSelectForOptions=l.makeSelectForOptions,exports.mostSpecificClassURI=s.mostSpecificClassURI,exports.newButton=l.newButton,exports.newThing=l.newThing,exports.openHrefInOutlineMode=r.openHrefInOutlineMode,exports.personTR=r.personTR,exports.promptForNew=l.promptForNew,exports.propertiesForClass=l.propertiesForClass,exports.propertyTriage=r.propertyTriage,Object.defineProperty(exports,"publicData",{enumerable:!0,get:function(){return f.publicData_exports}}),exports.refreshTree=r.refreshTree,exports.removeButton=r.removeButton,exports.renderAsDiv=r.renderAsDiv,exports.renderAsRow=r.renderAsRow,exports.renderAutoComplete=d.renderAutoComplete,exports.renderAutocompleteControl=u.renderAutocompleteControl,exports.renderNameValuePair=c.renderNameValuePair,exports.selectorPanel=r.selectorPanel,exports.selectorPanelRefresh=r.selectorPanelRefresh,exports.setImage=r.setImage,exports.setName=r.setName,exports.setVisible=d.setVisible,exports.shortDate=r.shortDate,exports.shortTime=r.shortTime,exports.sortByLabel=l.sortByLabel,exports.sortBySequence=l.sortBySequence,exports.timestamp=r.timestamp,exports.uploadFiles=n.uploadFiles,Object.defineProperty(exports,"widgets_exports",{enumerable:!0,get:function(){return p}});
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":["require_runtime","require_dragAndDrop","require_error","require_peoplePicker","require_iconLinks","require_buttons","require_fieldParams","require_fieldFunction","require_basic","require_publicData","require_autocompletePicker","require_autocompleteBar","require_forms","widgets_exports"],"sources":["../../src/widgets/index.js"],"sourcesContent":["/**\n * General purpose utility functions used in the panes\n * oshani@csail.mit.edu\n *\n * Includes form-oriented widgets timbl@w3.org\n *\n * sign-in sign-up widgets are in signin.js\n *\n * Note... For pointers to posssible text-editing code, see\n * http://stackoverflow.com/questions/6756407/what-contenteditable-editors\n */\n\n// Each widget should ideally live in its own file. In order to break up this\n// monolithic widget index over time, we should add new widgets to the\n// 'lib/widgets/' directory, and re-export them by merging the module namespaces:\n//\n// (In order to avoid name collisions, it is safely assumed that modules don't\n// export widgets with the same name)\n\nexport * from './peoplePicker'\nexport * from './dragAndDrop'\nexport * from './buttons'\nexport * from './buttons/iconLinks'\nexport * from './error'\nexport * from './forms'\n\nexport * from './forms/autocomplete/autocompleteBar'\nexport * from './forms/autocomplete/autocompletePicker'\n\nexport * as publicData from './forms/autocomplete/publicData'\n\n/*\nimport * as peoplePicker from './peoplePicker'\nimport * as dragAndDrop from './dragAndDrop'\nimport * as buttons from './buttons'\nimport * as error from './error'\nimport { forms } from './forms'\n\nconst widgets = Object.assign(\n {},\n buttons,\n peoplePicker,\n dragAndDrop,\n error,\n forms\n)\n\n// export default widgets .. Policy is not to use exports default\nmodule.export = widgets // @@ Apparently no way to do this (yet?) in esm\nconsole.log('widgets exported:', widgets)\n*/\n// ends\n"],"mappings":""}
1
+ {"version":3,"file":"index.cjs.js","names":["require_runtime","require_peoplePicker","require_dragAndDrop","require_buttons","require_iconLinks","require_error","require_fieldParams","require_fieldFunction","require_basic","require_forms","require_autocompleteBar","require_autocompletePicker","require_publicData","widgets_exports"],"sources":["../../src/widgets/index.js"],"sourcesContent":["/**\n * General purpose utility functions used in the panes\n * oshani@csail.mit.edu\n *\n * Includes form-oriented widgets timbl@w3.org\n *\n * sign-in sign-up widgets are in signin.js\n *\n * Note... For pointers to posssible text-editing code, see\n * http://stackoverflow.com/questions/6756407/what-contenteditable-editors\n */\n\n// Each widget should ideally live in its own file. In order to break up this\n// monolithic widget index over time, we should add new widgets to the\n// 'lib/widgets/' directory, and re-export them by merging the module namespaces:\n//\n// (In order to avoid name collisions, it is safely assumed that modules don't\n// export widgets with the same name)\n\nexport * from './peoplePicker'\nexport * from './dragAndDrop'\nexport * from './buttons'\nexport * from './buttons/iconLinks'\nexport * from './error'\nexport * from './forms'\n\nexport * from './forms/autocomplete/autocompleteBar'\nexport * from './forms/autocomplete/autocompletePicker'\n\nexport * as publicData from './forms/autocomplete/publicData'\n\n/*\nimport * as peoplePicker from './peoplePicker'\nimport * as dragAndDrop from './dragAndDrop'\nimport * as buttons from './buttons'\nimport * as error from './error'\nimport { forms } from './forms'\n\nconst widgets = Object.assign(\n {},\n buttons,\n peoplePicker,\n dragAndDrop,\n error,\n forms\n)\n\n// export default widgets .. Policy is not to use exports default\nmodule.export = widgets // @@ Apparently no way to do this (yet?) in esm\nconsole.log('widgets exported:', widgets)\n*/\n// ends\n"],"mappings":""}
@@ -1,99 +1,99 @@
1
1
  import { __exportAll as ee } from "../_virtual/_rolldown/runtime.esm.js";
2
- import { makeDraggable as e, makeDropTarget as t, uploadFiles as n } from "./dragAndDrop.esm.js";
3
- import { errorMessageBlock as r } from "./error.esm.js";
4
- import { Group as i, GroupBuilder as a, GroupPicker as o, PeoplePicker as s, Person as c } from "./peoplePicker.esm.js";
5
- import { createLinkForURI as l, linkIcon as u } from "./buttons/iconLinks.esm.js";
6
- import { addStyleSheet as d, allClassURIs as f, askName as p, attachmentList as m, button as h, cancelButton as g, clearElement as _, complain as v, continueButton as y, createLinkDiv as b, createNameDiv as x, defaultAnnotationStore as S, deleteButtonWithCheck as C, extractLogURI as w, faviconOrDefault as T, fileUploadButtonDiv as E, findImage as D, findImageFromURI as O, formatDateTime as k, iconForClass as A, imagesOf as j, index as M, isAudio as N, isImage as P, isVideo as F, linkButton as I, openHrefInOutlineMode as L, personTR as R, propertyTriage as z, refreshTree as B, removeButton as V, renderAsDiv as H, renderAsRow as U, selectorPanel as te, selectorPanelRefresh as W, setImage as G, setName as K, shortDate as q, shortTime as J, timestamp as Y } from "./buttons.esm.js";
2
+ import { Group as e, GroupBuilder as t, GroupPicker as n, PeoplePicker as r, Person as i } from "./peoplePicker.esm.js";
3
+ import { makeDraggable as a, makeDropTarget as o, uploadFiles as s } from "./dragAndDrop.esm.js";
4
+ import { addStyleSheet as c, allClassURIs as l, askName as u, attachmentList as d, button as f, cancelButton as p, clearElement as m, complain as h, continueButton as g, createLinkDiv as _, createNameDiv as v, defaultAnnotationStore as y, deleteButtonWithCheck as b, extractLogURI as x, faviconOrDefault as S, fileUploadButtonDiv as C, findImage as w, findImageFromURI as T, formatDateTime as E, iconForClass as D, imagesOf as O, index as k, isAudio as A, isImage as j, isVideo as M, linkButton as N, openHrefInOutlineMode as P, personTR as F, propertyTriage as I, refreshTree as L, removeButton as R, renderAsDiv as z, renderAsRow as B, selectorPanel as V, selectorPanelRefresh as H, setImage as U, setName as te, shortDate as W, shortTime as G, timestamp as K } from "./buttons.esm.js";
5
+ import { createLinkForURI as q, linkIcon as J } from "./buttons/iconLinks.esm.js";
6
+ import { errorMessageBlock as Y } from "./error.esm.js";
7
7
  import { fieldParams as X } from "./forms/fieldParams.esm.js";
8
8
  import { field as Z, fieldFunction as Q, mostSpecificClassURI as $ } from "./forms/fieldFunction.esm.js";
9
9
  import { basicField as ne, fieldLabel as re, fieldStore as ie, renderNameValuePair as ae } from "./forms/basic.esm.js";
10
- import { publicData_exports as oe } from "./forms/autocomplete/publicData.esm.js";
11
- import { renderAutoComplete as se, setVisible as ce } from "./forms/autocomplete/autocompletePicker.esm.js";
12
- import { renderAutocompleteControl as le } from "./forms/autocomplete/autocompleteBar.esm.js";
13
- import { appendForm as ue, buildCheckboxForm as de, editFormButton as fe, findClosest as pe, formsFor as me, makeDescription as he, makeSelectForCategory as ge, makeSelectForChoice as _e, makeSelectForClassifierOptions as ve, makeSelectForNestedCategory as ye, makeSelectForOptions as be, newButton as xe, newThing as Se, promptForNew as Ce, propertiesForClass as we, sortByLabel as Te, sortBySequence as Ee } from "./forms.esm.js";
10
+ import { appendForm as oe, buildCheckboxForm as se, editFormButton as ce, findClosest as le, formsFor as ue, makeDescription as de, makeSelectForCategory as fe, makeSelectForChoice as pe, makeSelectForClassifierOptions as me, makeSelectForNestedCategory as he, makeSelectForOptions as ge, newButton as _e, newThing as ve, promptForNew as ye, propertiesForClass as be, sortByLabel as xe, sortBySequence as Se } from "./forms.esm.js";
11
+ import { renderAutocompleteControl as Ce } from "./forms/autocomplete/autocompleteBar.esm.js";
12
+ import { renderAutoComplete as we, setVisible as Te } from "./forms/autocomplete/autocompletePicker.esm.js";
13
+ import { publicData_exports as Ee } from "./forms/autocomplete/publicData.esm.js";
14
14
  // src/widgets/index.js
15
15
  var De = /* @__PURE__ */ ee({
16
- Group: () => i,
17
- GroupBuilder: () => a,
18
- GroupPicker: () => o,
19
- PeoplePicker: () => s,
20
- Person: () => c,
21
- addStyleSheet: () => d,
22
- allClassURIs: () => f,
23
- appendForm: () => ue,
24
- askName: () => p,
25
- attachmentList: () => m,
16
+ Group: () => e,
17
+ GroupBuilder: () => t,
18
+ GroupPicker: () => n,
19
+ PeoplePicker: () => r,
20
+ Person: () => i,
21
+ addStyleSheet: () => c,
22
+ allClassURIs: () => l,
23
+ appendForm: () => oe,
24
+ askName: () => u,
25
+ attachmentList: () => d,
26
26
  basicField: () => ne,
27
- buildCheckboxForm: () => de,
28
- button: () => h,
29
- cancelButton: () => g,
30
- clearElement: () => _,
31
- complain: () => v,
32
- continueButton: () => y,
33
- createLinkDiv: () => b,
34
- createLinkForURI: () => l,
35
- createNameDiv: () => x,
36
- defaultAnnotationStore: () => S,
37
- deleteButtonWithCheck: () => C,
38
- editFormButton: () => fe,
39
- errorMessageBlock: () => r,
40
- extractLogURI: () => w,
41
- faviconOrDefault: () => T,
27
+ buildCheckboxForm: () => se,
28
+ button: () => f,
29
+ cancelButton: () => p,
30
+ clearElement: () => m,
31
+ complain: () => h,
32
+ continueButton: () => g,
33
+ createLinkDiv: () => _,
34
+ createLinkForURI: () => q,
35
+ createNameDiv: () => v,
36
+ defaultAnnotationStore: () => y,
37
+ deleteButtonWithCheck: () => b,
38
+ editFormButton: () => ce,
39
+ errorMessageBlock: () => Y,
40
+ extractLogURI: () => x,
41
+ faviconOrDefault: () => S,
42
42
  field: () => Z,
43
43
  fieldFunction: () => Q,
44
44
  fieldLabel: () => re,
45
45
  fieldParams: () => X,
46
46
  fieldStore: () => ie,
47
- fileUploadButtonDiv: () => E,
48
- findClosest: () => pe,
49
- findImage: () => D,
50
- findImageFromURI: () => O,
51
- formatDateTime: () => k,
52
- formsFor: () => me,
53
- iconForClass: () => A,
54
- imagesOf: () => j,
55
- index: () => M,
56
- isAudio: () => N,
57
- isImage: () => P,
58
- isVideo: () => F,
59
- linkButton: () => I,
60
- linkIcon: () => u,
61
- makeDescription: () => he,
62
- makeDraggable: () => e,
63
- makeDropTarget: () => t,
64
- makeSelectForCategory: () => ge,
65
- makeSelectForChoice: () => _e,
66
- makeSelectForClassifierOptions: () => ve,
67
- makeSelectForNestedCategory: () => ye,
68
- makeSelectForOptions: () => be,
47
+ fileUploadButtonDiv: () => C,
48
+ findClosest: () => le,
49
+ findImage: () => w,
50
+ findImageFromURI: () => T,
51
+ formatDateTime: () => E,
52
+ formsFor: () => ue,
53
+ iconForClass: () => D,
54
+ imagesOf: () => O,
55
+ index: () => k,
56
+ isAudio: () => A,
57
+ isImage: () => j,
58
+ isVideo: () => M,
59
+ linkButton: () => N,
60
+ linkIcon: () => J,
61
+ makeDescription: () => de,
62
+ makeDraggable: () => a,
63
+ makeDropTarget: () => o,
64
+ makeSelectForCategory: () => fe,
65
+ makeSelectForChoice: () => pe,
66
+ makeSelectForClassifierOptions: () => me,
67
+ makeSelectForNestedCategory: () => he,
68
+ makeSelectForOptions: () => ge,
69
69
  mostSpecificClassURI: () => $,
70
- newButton: () => xe,
71
- newThing: () => Se,
72
- openHrefInOutlineMode: () => L,
73
- personTR: () => R,
74
- promptForNew: () => Ce,
75
- propertiesForClass: () => we,
76
- propertyTriage: () => z,
77
- publicData: () => oe,
78
- refreshTree: () => B,
79
- removeButton: () => V,
80
- renderAsDiv: () => H,
81
- renderAsRow: () => U,
82
- renderAutoComplete: () => se,
83
- renderAutocompleteControl: () => le,
70
+ newButton: () => _e,
71
+ newThing: () => ve,
72
+ openHrefInOutlineMode: () => P,
73
+ personTR: () => F,
74
+ promptForNew: () => ye,
75
+ propertiesForClass: () => be,
76
+ propertyTriage: () => I,
77
+ publicData: () => Ee,
78
+ refreshTree: () => L,
79
+ removeButton: () => R,
80
+ renderAsDiv: () => z,
81
+ renderAsRow: () => B,
82
+ renderAutoComplete: () => we,
83
+ renderAutocompleteControl: () => Ce,
84
84
  renderNameValuePair: () => ae,
85
- selectorPanel: () => te,
86
- selectorPanelRefresh: () => W,
87
- setImage: () => G,
88
- setName: () => K,
89
- setVisible: () => ce,
90
- shortDate: () => q,
91
- shortTime: () => J,
92
- sortByLabel: () => Te,
93
- sortBySequence: () => Ee,
94
- timestamp: () => Y,
95
- uploadFiles: () => n
85
+ selectorPanel: () => V,
86
+ selectorPanelRefresh: () => H,
87
+ setImage: () => U,
88
+ setName: () => te,
89
+ setVisible: () => Te,
90
+ shortDate: () => W,
91
+ shortTime: () => G,
92
+ sortByLabel: () => xe,
93
+ sortBySequence: () => Se,
94
+ timestamp: () => K,
95
+ uploadFiles: () => s
96
96
  });
97
- export { i as Group, a as GroupBuilder, o as GroupPicker, s as PeoplePicker, c as Person, d as addStyleSheet, f as allClassURIs, ue as appendForm, p as askName, m as attachmentList, ne as basicField, de as buildCheckboxForm, h as button, g as cancelButton, _ as clearElement, v as complain, y as continueButton, b as createLinkDiv, l as createLinkForURI, x as createNameDiv, S as defaultAnnotationStore, C as deleteButtonWithCheck, fe as editFormButton, r as errorMessageBlock, w as extractLogURI, T as faviconOrDefault, Z as field, Q as fieldFunction, re as fieldLabel, X as fieldParams, ie as fieldStore, E as fileUploadButtonDiv, pe as findClosest, D as findImage, O as findImageFromURI, k as formatDateTime, me as formsFor, A as iconForClass, j as imagesOf, M as index, N as isAudio, P as isImage, F as isVideo, I as linkButton, u as linkIcon, he as makeDescription, e as makeDraggable, t as makeDropTarget, ge as makeSelectForCategory, _e as makeSelectForChoice, ve as makeSelectForClassifierOptions, ye as makeSelectForNestedCategory, be as makeSelectForOptions, $ as mostSpecificClassURI, xe as newButton, Se as newThing, L as openHrefInOutlineMode, R as personTR, Ce as promptForNew, we as propertiesForClass, z as propertyTriage, oe as publicData, B as refreshTree, V as removeButton, H as renderAsDiv, U as renderAsRow, se as renderAutoComplete, le as renderAutocompleteControl, ae as renderNameValuePair, te as selectorPanel, W as selectorPanelRefresh, G as setImage, K as setName, ce as setVisible, q as shortDate, J as shortTime, Te as sortByLabel, Ee as sortBySequence, Y as timestamp, n as uploadFiles, De as widgets_exports };
97
+ export { e as Group, t as GroupBuilder, n as GroupPicker, r as PeoplePicker, i as Person, c as addStyleSheet, l as allClassURIs, oe as appendForm, u as askName, d as attachmentList, ne as basicField, se as buildCheckboxForm, f as button, p as cancelButton, m as clearElement, h as complain, g as continueButton, _ as createLinkDiv, q as createLinkForURI, v as createNameDiv, y as defaultAnnotationStore, b as deleteButtonWithCheck, ce as editFormButton, Y as errorMessageBlock, x as extractLogURI, S as faviconOrDefault, Z as field, Q as fieldFunction, re as fieldLabel, X as fieldParams, ie as fieldStore, C as fileUploadButtonDiv, le as findClosest, w as findImage, T as findImageFromURI, E as formatDateTime, ue as formsFor, D as iconForClass, O as imagesOf, k as index, A as isAudio, j as isImage, M as isVideo, N as linkButton, J as linkIcon, de as makeDescription, a as makeDraggable, o as makeDropTarget, fe as makeSelectForCategory, pe as makeSelectForChoice, me as makeSelectForClassifierOptions, he as makeSelectForNestedCategory, ge as makeSelectForOptions, $ as mostSpecificClassURI, _e as newButton, ve as newThing, P as openHrefInOutlineMode, F as personTR, ye as promptForNew, be as propertiesForClass, I as propertyTriage, Ee as publicData, L as refreshTree, R as removeButton, z as renderAsDiv, B as renderAsRow, we as renderAutoComplete, Ce as renderAutocompleteControl, ae as renderNameValuePair, V as selectorPanel, H as selectorPanelRefresh, U as setImage, te as setName, Te as setVisible, W as shortDate, G as shortTime, xe as sortByLabel, Se as sortBySequence, K as timestamp, s as uploadFiles, De as widgets_exports };
98
98
 
99
99
  //# sourceMappingURL=index.esm.js.map
@@ -1,4 +1,4 @@
1
- const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/ns.cjs.js"),n=require("../lib/debug.cjs.js"),r=require("./dragAndDrop.cjs.js"),i=require("./error.cjs.js"),a=require("../lib/iconBase.cjs.js");let o=require("rdflib");o=e.__toESM(o);let s=require("solid-logic"),c=require("escape-html");c=e.__toESM(c);let l=require("uuid");var u=s.solidLogicSingleton.store,d=class{constructor(e,t,n,r){this.options=r||{},this.element=e,this.typeIndex=t,this.groupPickedCb=n,this.selectedgroup=this.options.selectedgroup,this.onSelectGroup=this.onSelectGroup.bind(this)}render(){let e=document.createElement(`div`);if(e.style.maxWidth=`350px`,e.style.minHeight=`200px`,e.style.outline=`1px solid black`,e.style.display=`flex`,this.selectedgroup){e.style.flexDirection=`column`;let t=document.createElement(`div`);new p(t,this.selectedgroup).render();let n=document.createElement(`button`);n.textContent=(0,c.default)(`Change group`),n.addEventListener(`click`,e=>{this.selectedgroup=null,this.render()}),e.appendChild(t),e.appendChild(n)}else this.findAddressBook(this.typeIndex).then(({book:t})=>{let n=document.createElement(`button`);n.textContent=(0,c.default)(`Pick an existing group`),n.style.margin=`auto`,n.addEventListener(`click`,n=>{new f(e,t,this.onSelectGroup).render()});let r=document.createElement(`button`);r.textContent=(0,c.default)(`Create a new group`),r.style.margin=`auto`,r.addEventListener(`click`,e=>{this.createNewGroup(t,this.options.defaultNewGroupName).then(({group:e})=>{new m(this.element,t,e,this.onSelectGroup).render()}).catch(e=>{this.element.appendChild(i.errorMessageBlock(document,(0,c.default)(`Error creating a new group. (${e})`)))})}),e.appendChild(n),e.appendChild(r),this.element.innerHTML=``,this.element.appendChild(e)}).catch(e=>{this.element.appendChild(i.errorMessageBlock(document,(0,c.default)(`Could find your groups. (${e})`)))});return this.element.innerHTML=``,this.element.appendChild(e),this}findAddressBook(e){return new Promise((n,r)=>{u.fetcher.nowOrWhenFetched(e,(i,a)=>{if(!i)return r(a);let o=u.any(null,t.default.solid(`forClass`),t.default.vcard(`AddressBook`));if(!o)return r(Error(`no address book registered in the solid type index `+e));let s=u.any(o,t.default.solid(`instance`));if(!s)return r(Error(`incomplete address book registration`));u.fetcher.load(s).then(function(e){return n({book:s})}).catch(function(e){return r(Error(`Could not load address book `+e))})})})}createNewGroup(e,r){let{groupIndex:i,groupContainer:a}=v(e),s=o.sym(`${a.uri}${(0,l.v4)().slice(0,8)}.ttl#this`),c=r||`Untitled Group`,d=[s.doc(),i].map(n=>{let r=o.st(s,t.default.rdf(`type`),t.default.vcard(`Group`),n),a=o.st(s,t.default.vcard(`fn`),c,s.doc(),n),l=o.st(e,t.default.vcard(`includesGroup`),s,n),d=n.equals(i)?[r,a,l]:[r,a];return _(n.uri,{toIns:d}).then(()=>{d.forEach(e=>{u.add(e)})})});return Promise.all(d).then(()=>({group:s})).catch(e=>{throw n.log(`Could not create new group. PATCH failed `+e),Error(`Couldn't create new group. PATCH failed for (${e.xhr?e.xhr.responseURL:``} )`)})}onSelectGroup(e){this.selectedgroup=e,this.groupPickedCb(e),this.render()}},f=class{constructor(e,t,n){this.element=e,this.book=t,this.onSelectGroup=n}render(){return this.loadGroups().then(e=>{let t=document.createElement(`div`);t.style.display=`flex`,t.style.flexDirection=`column`,e.forEach(e=>{let n=document.createElement(`button`);n.addEventListener(`click`,this.handleClickGroup(e)),new p(n,e).render(),t.appendChild(n)}),this.element.innerHTML=``,this.element.appendChild(t)}).catch(e=>{this.element.appendChild(i.errorMessageBlock(document,(0,c.default)(`There was an error loading your groups. (${e})`)))}),this}loadGroups(){return new Promise((e,n)=>{let{groupIndex:r}=v(this.book);u.fetcher.nowOrWhenFetched(r,(r,i)=>r?e(u.each(this.book,t.default.vcard(`includesGroup`))):n(i))})}handleClickGroup(e){return t=>{this.onSelectGroup(e)}}},p=class{constructor(e,t){this.element=e,this.group=t}render(){let e=document.createElement(`div`);return e.textContent=(0,c.default)(g(this.group,t.default.vcard(`fn`),`[${this.group.value}]`)),this.element.innerHTML=``,this.element.appendChild(e),this}},m=class{constructor(e,t,n,r,i){this.element=e,this.book=t,this.group=n,this.onGroupChanged=(e,t,n)=>{i&&i(e,t,n)},this.groupChangedCb=i,this.doneBuildingCb=r}refresh(){}render(){let e=document.createElement(`div`);e.style.maxWidth=`350px`,e.style.minHeight=`200px`,e.style.outline=`1px solid black`,e.style.display=`flex`,e.style.flexDirection=`column`,r.makeDropTarget(e,e=>{e.forEach(e=>{this.add(e).catch(e=>{this.element.appendChild(i.errorMessageBlock(document,(0,c.default)(`Could not add the given WebId. (${e})`)))})})});let n=document.createElement(`input`);n.type=`text`,n.value=g(this.group,t.default.vcard(`fn`),`Untitled Group`),n.addEventListener(`change`,e=>{this.setGroupName(e.target.value).catch(e=>{this.element.appendChild(i.errorMessageBlock(document,`Error changing group name. (${e})`))})});let a=document.createElement(`label`);if(a.textContent=(0,c.default)(`Group Name:`),a.appendChild(n),e.appendChild(a),u.any(this.group,t.default.vcard(`hasMember`)))u.match(this.group,t.default.vcard(`hasMember`)).forEach(t=>{let n=t.object,r=document.createElement(`div`);new h(r,n,this.handleRemove(n)).render(),e.appendChild(r)});else{let t=document.createElement(`p`);t.textContent=c.default`
1
+ const e=require("../_virtual/_rolldown/runtime.cjs.js"),t=require("../lib/debug.cjs.js"),n=require("./dragAndDrop.cjs.js"),r=require("./error.cjs.js"),i=require("../lib/iconBase.cjs.js"),a=require("../lib/ns.cjs.js");let o=require("rdflib");o=e.__toESM(o);let s=require("solid-logic"),c=require("escape-html");c=e.__toESM(c);let l=require("uuid");var u=s.solidLogicSingleton.store,d=class{constructor(e,t,n,r){this.options=r||{},this.element=e,this.typeIndex=t,this.groupPickedCb=n,this.selectedgroup=this.options.selectedgroup,this.onSelectGroup=this.onSelectGroup.bind(this)}render(){let e=document.createElement(`div`);if(e.style.maxWidth=`350px`,e.style.minHeight=`200px`,e.style.outline=`1px solid black`,e.style.display=`flex`,this.selectedgroup){e.style.flexDirection=`column`;let t=document.createElement(`div`);new p(t,this.selectedgroup).render();let n=document.createElement(`button`);n.textContent=(0,c.default)(`Change group`),n.addEventListener(`click`,e=>{this.selectedgroup=null,this.render()}),e.appendChild(t),e.appendChild(n)}else this.findAddressBook(this.typeIndex).then(({book:t})=>{let n=document.createElement(`button`);n.textContent=(0,c.default)(`Pick an existing group`),n.style.margin=`auto`,n.addEventListener(`click`,n=>{new f(e,t,this.onSelectGroup).render()});let i=document.createElement(`button`);i.textContent=(0,c.default)(`Create a new group`),i.style.margin=`auto`,i.addEventListener(`click`,e=>{this.createNewGroup(t,this.options.defaultNewGroupName).then(({group:e})=>{new m(this.element,t,e,this.onSelectGroup).render()}).catch(e=>{this.element.appendChild(r.errorMessageBlock(document,(0,c.default)(`Error creating a new group. (${e})`)))})}),e.appendChild(n),e.appendChild(i),this.element.innerHTML=``,this.element.appendChild(e)}).catch(e=>{this.element.appendChild(r.errorMessageBlock(document,(0,c.default)(`Could find your groups. (${e})`)))});return this.element.innerHTML=``,this.element.appendChild(e),this}findAddressBook(e){return new Promise((t,n)=>{u.fetcher.nowOrWhenFetched(e,(r,i)=>{if(!r)return n(i);let o=u.any(null,a.default.solid(`forClass`),a.default.vcard(`AddressBook`));if(!o)return n(Error(`no address book registered in the solid type index `+e));let s=u.any(o,a.default.solid(`instance`));if(!s)return n(Error(`incomplete address book registration`));u.fetcher.load(s).then(function(e){return t({book:s})}).catch(function(e){return n(Error(`Could not load address book `+e))})})})}createNewGroup(e,n){let{groupIndex:r,groupContainer:i}=v(e),s=o.sym(`${i.uri}${(0,l.v4)().slice(0,8)}.ttl#this`),c=n||`Untitled Group`,d=[s.doc(),r].map(t=>{let n=o.st(s,a.default.rdf(`type`),a.default.vcard(`Group`),t),i=o.st(s,a.default.vcard(`fn`),c,s.doc(),t),l=o.st(e,a.default.vcard(`includesGroup`),s,t),d=t.equals(r)?[n,i,l]:[n,i];return _(t.uri,{toIns:d}).then(()=>{d.forEach(e=>{u.add(e)})})});return Promise.all(d).then(()=>({group:s})).catch(e=>{throw t.log(`Could not create new group. PATCH failed `+e),Error(`Couldn't create new group. PATCH failed for (${e.xhr?e.xhr.responseURL:``} )`)})}onSelectGroup(e){this.selectedgroup=e,this.groupPickedCb(e),this.render()}},f=class{constructor(e,t,n){this.element=e,this.book=t,this.onSelectGroup=n}render(){return this.loadGroups().then(e=>{let t=document.createElement(`div`);t.style.display=`flex`,t.style.flexDirection=`column`,e.forEach(e=>{let n=document.createElement(`button`);n.addEventListener(`click`,this.handleClickGroup(e)),new p(n,e).render(),t.appendChild(n)}),this.element.innerHTML=``,this.element.appendChild(t)}).catch(e=>{this.element.appendChild(r.errorMessageBlock(document,(0,c.default)(`There was an error loading your groups. (${e})`)))}),this}loadGroups(){return new Promise((e,t)=>{let{groupIndex:n}=v(this.book);u.fetcher.nowOrWhenFetched(n,(n,r)=>n?e(u.each(this.book,a.default.vcard(`includesGroup`))):t(r))})}handleClickGroup(e){return t=>{this.onSelectGroup(e)}}},p=class{constructor(e,t){this.element=e,this.group=t}render(){let e=document.createElement(`div`);return e.textContent=(0,c.default)(g(this.group,a.default.vcard(`fn`),`[${this.group.value}]`)),this.element.innerHTML=``,this.element.appendChild(e),this}},m=class{constructor(e,t,n,r,i){this.element=e,this.book=t,this.group=n,this.onGroupChanged=(e,t,n)=>{i&&i(e,t,n)},this.groupChangedCb=i,this.doneBuildingCb=r}refresh(){}render(){let e=document.createElement(`div`);e.style.maxWidth=`350px`,e.style.minHeight=`200px`,e.style.outline=`1px solid black`,e.style.display=`flex`,e.style.flexDirection=`column`,n.makeDropTarget(e,e=>{e.forEach(e=>{this.add(e).catch(e=>{this.element.appendChild(r.errorMessageBlock(document,(0,c.default)(`Could not add the given WebId. (${e})`)))})})});let t=document.createElement(`input`);t.type=`text`,t.value=g(this.group,a.default.vcard(`fn`),`Untitled Group`),t.addEventListener(`change`,e=>{this.setGroupName(e.target.value).catch(e=>{this.element.appendChild(r.errorMessageBlock(document,`Error changing group name. (${e})`))})});let i=document.createElement(`label`);if(i.textContent=(0,c.default)(`Group Name:`),i.appendChild(t),e.appendChild(i),u.any(this.group,a.default.vcard(`hasMember`)))u.match(this.group,a.default.vcard(`hasMember`)).forEach(t=>{let n=t.object,r=document.createElement(`div`);new h(r,n,this.handleRemove(n)).render(),e.appendChild(r)});else{let t=document.createElement(`p`);t.textContent=c.default`
2
2
  To add someone to this group, drag and drop their WebID URL onto the box.
3
- `,e.appendChild(t)}let o=document.createElement(`button`);return o.textContent=(0,c.default)(`Done`),o.addEventListener(`click`,e=>{this.doneBuildingCb(this.group)}),e.appendChild(o),this.element.innerHTML=``,this.element.appendChild(e),this}add(e){return new Promise((n,r)=>{u.fetcher.nowOrWhenFetched(e,(i,a)=>{if(!i)return this.onGroupChanged(a),r(a);let s=o.namedNode(e),c=u.any(s,t.default.rdf(`type`));return!c||!c.equals(t.default.foaf(`Person`))?r(Error(`Only people supported right now. (tried to add something of type ${c.value})`)):n(s)})}).then(e=>{let n=o.st(this.group,t.default.vcard(`hasMember`),e);return u.holdsStatement(n)?e:_(this.group.doc().uri,{toIns:[n]}).then(()=>{n.why=this.group.doc(),u.add(n),this.onGroupChanged(null,`added`,e),this.render()})})}handleRemove(e){return n=>{let r=o.st(this.group,t.default.vcard(`hasMember`),e);return _(this.group.doc().uri,{toDel:[r]}).then(()=>(u.remove(r),this.onGroupChanged(null,`removed`,e),this.render(),!0)).catch(n=>{let r=u.any(e,t.default.foaf(`name`)),i=r&&r.value?`Could not remove ${r.value}. (${n})`:`Could not remove ${e.value}. (${n})`;throw Error(i)})}}setGroupName(e){let{groupIndex:n}=v(this.book),r=[this.group.doc(),n].map(n=>{let r=u.match(this.group,t.default.vcard(`fn`),null,n),i=o.st(this.group,t.default.vcard(`fn`),o.literal(e));return _(n.value,{toDel:r,toIns:[i]}).then(e=>{u.removeStatements(r),i.why=n,u.add(i)})});return Promise.all(r)}},h=class{constructor(e,t,n){this.webIdNode=t,this.element=e,this.handleRemove=n}render(){let e=document.createElement(`div`);e.style.display=`flex`;let n=g(this.webIdNode,t.default.foaf(`img`),a.iconBase+`noun_15059.svg`),r=document.createElement(`img`);r.src=(0,c.default)(n),r.width=`50`,r.height=`50`,r.style.margin=`5px`;let o=g(this.webIdNode,t.default.foaf(`name`),`[${this.webIdNode}]`),s=document.createElement(`span`);s.innerHTML=(0,c.default)(o),s.style.flexGrow=`1`,s.style.margin=`auto 0`;let l=document.createElement(`button`);return l.textContent=`Remove`,l.addEventListener(`click`,e=>this.handleRemove().catch(e=>{this.element.appendChild(i.errorMessageBlock(document,(0,c.default)(`${e}`)))})),l.style.margin=`5px`,e.appendChild(r),e.appendChild(s),e.appendChild(l),this.element.innerHTML=``,this.element.appendChild(e),this}};function g(e,t,n){let r=u.any(e,t);return r?r.value:n}function _(e,{toDel:t,toIns:n}){return new Promise((e,r)=>{u.updater.update(t,n,(t,n,i)=>{if(!n)return r(Error(`PATCH failed for resource <${t}>: ${i}`));e()})})}function v(e){return{groupIndex:u.any(e,t.default.vcard(`groupIndex`)),groupContainer:u.sym(e.dir().uri+`Group/`)}}exports.Group=p,exports.GroupBuilder=m,exports.GroupPicker=f,exports.PeoplePicker=d,exports.Person=h;
3
+ `,e.appendChild(t)}let o=document.createElement(`button`);return o.textContent=(0,c.default)(`Done`),o.addEventListener(`click`,e=>{this.doneBuildingCb(this.group)}),e.appendChild(o),this.element.innerHTML=``,this.element.appendChild(e),this}add(e){return new Promise((t,n)=>{u.fetcher.nowOrWhenFetched(e,(r,i)=>{if(!r)return this.onGroupChanged(i),n(i);let s=o.namedNode(e),c=u.any(s,a.default.rdf(`type`));return!c||!c.equals(a.default.foaf(`Person`))?n(Error(`Only people supported right now. (tried to add something of type ${c.value})`)):t(s)})}).then(e=>{let t=o.st(this.group,a.default.vcard(`hasMember`),e);return u.holdsStatement(t)?e:_(this.group.doc().uri,{toIns:[t]}).then(()=>{t.why=this.group.doc(),u.add(t),this.onGroupChanged(null,`added`,e),this.render()})})}handleRemove(e){return t=>{let n=o.st(this.group,a.default.vcard(`hasMember`),e);return _(this.group.doc().uri,{toDel:[n]}).then(()=>(u.remove(n),this.onGroupChanged(null,`removed`,e),this.render(),!0)).catch(t=>{let n=u.any(e,a.default.foaf(`name`)),r=n&&n.value?`Could not remove ${n.value}. (${t})`:`Could not remove ${e.value}. (${t})`;throw Error(r)})}}setGroupName(e){let{groupIndex:t}=v(this.book),n=[this.group.doc(),t].map(t=>{let n=u.match(this.group,a.default.vcard(`fn`),null,t),r=o.st(this.group,a.default.vcard(`fn`),o.literal(e));return _(t.value,{toDel:n,toIns:[r]}).then(e=>{u.removeStatements(n),r.why=t,u.add(r)})});return Promise.all(n)}},h=class{constructor(e,t,n){this.webIdNode=t,this.element=e,this.handleRemove=n}render(){let e=document.createElement(`div`);e.style.display=`flex`;let t=g(this.webIdNode,a.default.foaf(`img`),i.iconBase+`noun_15059.svg`),n=document.createElement(`img`);n.src=(0,c.default)(t),n.width=`50`,n.height=`50`,n.style.margin=`5px`;let o=g(this.webIdNode,a.default.foaf(`name`),`[${this.webIdNode}]`),s=document.createElement(`span`);s.innerHTML=(0,c.default)(o),s.style.flexGrow=`1`,s.style.margin=`auto 0`;let l=document.createElement(`button`);return l.textContent=`Remove`,l.addEventListener(`click`,e=>this.handleRemove().catch(e=>{this.element.appendChild(r.errorMessageBlock(document,(0,c.default)(`${e}`)))})),l.style.margin=`5px`,e.appendChild(n),e.appendChild(s),e.appendChild(l),this.element.innerHTML=``,this.element.appendChild(e),this}};function g(e,t,n){let r=u.any(e,t);return r?r.value:n}function _(e,{toDel:t,toIns:n}){return new Promise((e,r)=>{u.updater.update(t,n,(t,n,i)=>{if(!n)return r(Error(`PATCH failed for resource <${t}>: ${i}`));e()})})}function v(e){return{groupIndex:u.any(e,a.default.vcard(`groupIndex`)),groupContainer:u.sym(e.dir().uri+`Group/`)}}exports.Group=p,exports.GroupBuilder=m,exports.GroupPicker=f,exports.PeoplePicker=d,exports.Person=h;
4
4
  //# sourceMappingURL=peoplePicker.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"peoplePicker.cjs.js","names":["solidLogicSingleton","escape","errorMessageBlock","ns","rdf","uuidv4","iconBase","require_runtime","require_ns","require_debug","require_dragAndDrop","require_error","require_iconBase","rdflib","solid_logic","escape_html","uuid","kb","PeoplePicker","options","element","typeIndex","groupPickedCb","container","selectedGroup","Group","changeGroupButton","chooseExistingGroupButton","GroupPicker","book","createNewGroupButton","GroupBuilder","group","errorBody","err","ok","reject","bookRegistration","resolve","errr","indexes","groupContainer","name","defaultNewGroupName","patchPromises","groupIndex","typeStatement","doc","nameStatement","includesGroupStatement","toIns","patch","st","onSelectGroup","groups","groupButton","getWithDefault","groupChangedCb","changeType","agent","doneBuildingCb","dropContainer","uris","uri","groupNameInput","event","groupNameLabel","webIdNode","statement","personDiv","Person","copy","doneBuildingButton","webId","rdfClass","errorMessage","updatePromises","oldNameStatements","namedGraph","newNameStatement","handleRemove","imgSrc","profileImg","nameSpan","removeButton","object","subject","predicate","defaultValue","toDel","success"],"sources":["../../src/widgets/peoplePicker.js"],"sourcesContent":["/**\n *\n * People Picker Pane\n *\n * This pane offers a mechanism for selecting a set of individuals, groups, or\n * organizations to take some action on.\n *\n * Assumptions\n * - Assumes that the user has a type index entry for vcard:AddressBook. @@ bad assuption\n *\n */\nimport escape from 'escape-html'\nimport { v4 as uuidv4 } from 'uuid'\nimport * as rdf from 'rdflib'\nimport * as debug from '../lib/debug'\n\nimport { makeDropTarget } from './dragAndDrop'\nimport { errorMessageBlock } from './error'\nimport { iconBase } from '../lib/iconBase'\nimport ns from '../lib/ns'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport class PeoplePicker {\n constructor (element, typeIndex, groupPickedCb, options) { // @@ can't expect typeindex to be passed\n this.options = options || {}\n this.element = element\n this.typeIndex = typeIndex\n this.groupPickedCb = groupPickedCb\n this.selectedgroup = this.options.selectedgroup // current selected group if any\n this.onSelectGroup = this.onSelectGroup.bind(this)\n }\n\n render () {\n const container = document.createElement('div')\n container.style.maxWidth = '350px'\n container.style.minHeight = '200px'\n container.style.outline = '1px solid black'\n container.style.display = 'flex'\n\n if (this.selectedgroup) {\n container.style.flexDirection = 'column'\n const selectedGroup = document.createElement('div')\n new Group(selectedGroup, this.selectedgroup).render()\n const changeGroupButton = document.createElement('button')\n changeGroupButton.textContent = escape('Change group')\n changeGroupButton.addEventListener('click', _event => {\n this.selectedgroup = null\n this.render()\n })\n container.appendChild(selectedGroup)\n container.appendChild(changeGroupButton)\n } else {\n this.findAddressBook(this.typeIndex)\n .then(({ book }) => {\n const chooseExistingGroupButton = document.createElement('button')\n chooseExistingGroupButton.textContent = escape(\n 'Pick an existing group'\n )\n chooseExistingGroupButton.style.margin = 'auto'\n chooseExistingGroupButton.addEventListener('click', _event => {\n new GroupPicker(container, book, this.onSelectGroup).render()\n })\n\n const createNewGroupButton = document.createElement('button')\n createNewGroupButton.textContent = escape('Create a new group')\n createNewGroupButton.style.margin = 'auto'\n createNewGroupButton.addEventListener('click', _event => {\n this.createNewGroup(book, this.options.defaultNewGroupName)\n .then(({ group }) => {\n new GroupBuilder(\n this.element,\n book,\n group,\n this.onSelectGroup\n ).render()\n })\n .catch(errorBody => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Error creating a new group. (${errorBody})`)\n )\n )\n })\n })\n\n container.appendChild(chooseExistingGroupButton)\n container.appendChild(createNewGroupButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could find your groups. (${err})`)\n )\n )\n })\n }\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n\n findAddressBook (typeIndex) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(typeIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const bookRegistration = kb.any(\n null,\n ns.solid('forClass'),\n ns.vcard('AddressBook')\n )\n if (!bookRegistration) {\n return reject(\n new Error(\n 'no address book registered in the solid type index ' + typeIndex\n )\n )\n }\n const book = kb.any(bookRegistration, ns.solid('instance'))\n if (!book) {\n return reject(new Error('incomplete address book registration'))\n }\n kb.fetcher\n .load(book)\n .then(function (_xhr) {\n return resolve({ book })\n })\n .catch(function (errr) {\n return reject(new Error('Could not load address book ' + errr))\n })\n })\n })\n }\n\n createNewGroup (book, defaultNewGroupName) {\n const { groupIndex, groupContainer } = indexes(book)\n const group = rdf.sym(\n `${groupContainer.uri}${uuidv4().slice(0, 8)}.ttl#this`\n )\n const name = defaultNewGroupName || 'Untitled Group'\n\n // NOTE that order matters here. Unfortunately this type of update is\n // non-atomic in that solid requires us to send two PATCHes, either of which\n // might fail.\n const patchPromises = [group.doc(), groupIndex].map(doc => {\n const typeStatement = rdf.st(group, ns.rdf('type'), ns.vcard('Group'), doc)\n const nameStatement = rdf.st(group, ns.vcard('fn'), name, group.doc(), doc)\n const includesGroupStatement = rdf.st(\n book,\n ns.vcard('includesGroup'),\n group,\n doc\n )\n const toIns = doc.equals(groupIndex)\n ? [typeStatement, nameStatement, includesGroupStatement]\n : [typeStatement, nameStatement]\n return patch(doc.uri, { toIns }).then(() => {\n toIns.forEach(st => {\n kb.add(st)\n })\n })\n })\n return Promise.all(patchPromises)\n .then(() => ({ group }))\n .catch(err => {\n debug.log('Could not create new group. PATCH failed ' + err)\n throw new Error(\n `Couldn't create new group. PATCH failed for (${\n err.xhr ? err.xhr.responseURL : ''\n } )`\n )\n })\n }\n\n onSelectGroup (group) {\n this.selectedgroup = group\n this.groupPickedCb(group)\n this.render()\n }\n}\n\nexport class GroupPicker {\n constructor (element, book, onSelectGroup) {\n this.element = element\n this.book = book\n this.onSelectGroup = onSelectGroup\n }\n\n render () {\n this.loadGroups()\n .then(groups => {\n // render the groups\n const container = document.createElement('div')\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n groups.forEach(group => {\n const groupButton = document.createElement('button')\n groupButton.addEventListener('click', this.handleClickGroup(group))\n new Group(groupButton, group).render()\n container.appendChild(groupButton)\n })\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`There was an error loading your groups. (${err})`)\n )\n )\n })\n return this\n }\n\n loadGroups () {\n return new Promise((resolve, reject) => {\n const { groupIndex } = indexes(this.book)\n kb.fetcher.nowOrWhenFetched(groupIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const groups = kb.each(this.book, ns.vcard('includesGroup'))\n return resolve(groups)\n })\n })\n }\n\n handleClickGroup (group) {\n return _event => {\n this.onSelectGroup(group)\n }\n }\n}\n\nexport class Group {\n constructor (element, group) {\n this.element = element\n this.group = group\n }\n\n render () {\n const container = document.createElement('div')\n container.textContent = escape(\n // @@@@@ need to escape??\n getWithDefault(this.group, ns.vcard('fn'), `[${this.group.value}]`)\n )\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nexport class GroupBuilder {\n constructor (element, book, group, doneBuildingCb, groupChangedCb) {\n this.element = element\n this.book = book\n this.group = group\n this.onGroupChanged = (err, changeType, agent) => {\n if (groupChangedCb) {\n groupChangedCb(err, changeType, agent)\n }\n }\n this.groupChangedCb = groupChangedCb\n this.doneBuildingCb = doneBuildingCb\n }\n\n refresh () {\n // TODO: implement\n }\n\n render () {\n const dropContainer = document.createElement('div')\n dropContainer.style.maxWidth = '350px'\n dropContainer.style.minHeight = '200px'\n dropContainer.style.outline = '1px solid black'\n dropContainer.style.display = 'flex'\n dropContainer.style.flexDirection = 'column'\n\n makeDropTarget(dropContainer, uris => {\n uris.forEach(uri => {\n this.add(uri).catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could not add the given WebId. (${err})`)\n )\n )\n })\n })\n })\n\n const groupNameInput = document.createElement('input')\n groupNameInput.type = 'text'\n groupNameInput.value = getWithDefault(\n this.group,\n ns.vcard('fn'),\n 'Untitled Group'\n )\n groupNameInput.addEventListener('change', event => {\n this.setGroupName(event.target.value).catch(err => {\n this.element.appendChild(\n errorMessageBlock(document, `Error changing group name. (${err})`)\n )\n })\n })\n const groupNameLabel = document.createElement('label')\n groupNameLabel.textContent = escape('Group Name:')\n groupNameLabel.appendChild(groupNameInput)\n dropContainer.appendChild(groupNameLabel)\n\n if (kb.any(this.group, ns.vcard('hasMember'))) {\n kb.match(this.group, ns.vcard('hasMember')).forEach(statement => {\n const webIdNode = statement.object\n const personDiv = document.createElement('div')\n new Person(personDiv, webIdNode, this.handleRemove(webIdNode)).render()\n dropContainer.appendChild(personDiv)\n })\n } else {\n const copy = document.createElement('p')\n copy.textContent = escape`\n To add someone to this group, drag and drop their WebID URL onto the box.\n `\n dropContainer.appendChild(copy)\n }\n\n const doneBuildingButton = document.createElement('button')\n doneBuildingButton.textContent = escape('Done')\n doneBuildingButton.addEventListener('click', _event => {\n this.doneBuildingCb(this.group)\n })\n dropContainer.appendChild(doneBuildingButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(dropContainer)\n return this\n }\n\n add (webId) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(webId, (ok, err) => {\n if (!ok) {\n this.onGroupChanged(err)\n return reject(err)\n }\n // make sure it's a valid person, group, or entity (for now just handle\n // webId)\n const webIdNode = rdf.namedNode(webId)\n const rdfClass = kb.any(webIdNode, ns.rdf('type'))\n if (!rdfClass || !rdfClass.equals(ns.foaf('Person'))) {\n return reject(\n new Error(\n `Only people supported right now. (tried to add something of type ${rdfClass.value})`\n )\n )\n }\n return resolve(webIdNode)\n })\n }).then(webIdNode => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n if (kb.holdsStatement(statement)) {\n return webIdNode\n }\n return patch(this.group.doc().uri, { toIns: [statement] }).then(() => {\n statement.why = this.group.doc()\n kb.add(statement)\n this.onGroupChanged(null, 'added', webIdNode)\n this.render()\n })\n })\n }\n\n handleRemove (webIdNode) {\n return _event => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n return patch(this.group.doc().uri, { toDel: [statement] })\n .then(() => {\n kb.remove(statement)\n this.onGroupChanged(null, 'removed', webIdNode)\n this.render()\n return true\n })\n .catch(err => {\n const name = kb.any(webIdNode, ns.foaf('name'))\n const errorMessage =\n name && name.value\n ? `Could not remove ${name.value}. (${err})`\n : `Could not remove ${webIdNode.value}. (${err})`\n throw new Error(errorMessage)\n })\n }\n }\n\n setGroupName (name) {\n const { groupIndex } = indexes(this.book)\n const updatePromises = [this.group.doc(), groupIndex].map(namedGraph => {\n const oldNameStatements = kb.match(\n this.group,\n ns.vcard('fn'),\n null,\n namedGraph\n )\n const newNameStatement = rdf.st(\n this.group,\n ns.vcard('fn'),\n rdf.literal(name)\n )\n return patch(namedGraph.value, {\n toDel: oldNameStatements,\n toIns: [newNameStatement]\n }).then(_solidResponse => {\n kb.removeStatements(oldNameStatements)\n newNameStatement.why = namedGraph\n kb.add(newNameStatement)\n })\n })\n return Promise.all(updatePromises)\n }\n}\n// @ignore exporting this only for the unit test\n// @@ TODO maybe I should move this down at end, but for\n// now I will leave it where it was\nexport class Person {\n constructor (element, webIdNode, handleRemove) {\n this.webIdNode = webIdNode\n this.element = element\n this.handleRemove = handleRemove\n }\n\n render () {\n const container = document.createElement('div')\n container.style.display = 'flex'\n\n // TODO: take a look at UI.widgets.setName\n const imgSrc = getWithDefault(\n this.webIdNode,\n ns.foaf('img'),\n iconBase + 'noun_15059.svg'\n )\n const profileImg = document.createElement('img')\n profileImg.src = escape(imgSrc)\n profileImg.width = '50'\n profileImg.height = '50'\n profileImg.style.margin = '5px'\n\n // TODO: take a look at UI.widgets.setImage\n const name = getWithDefault(\n this.webIdNode,\n ns.foaf('name'),\n `[${this.webIdNode}]`\n )\n const nameSpan = document.createElement('span')\n nameSpan.innerHTML = escape(name)\n nameSpan.style.flexGrow = '1'\n nameSpan.style.margin = 'auto 0'\n\n const removeButton = document.createElement('button')\n removeButton.textContent = 'Remove'\n removeButton.addEventListener('click', _event =>\n this.handleRemove().catch(err => {\n this.element.appendChild(errorMessageBlock(document, escape(`${err}`)))\n })\n )\n removeButton.style.margin = '5px'\n\n container.appendChild(profileImg)\n container.appendChild(nameSpan)\n container.appendChild(removeButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nfunction getWithDefault (subject, predicate, defaultValue) {\n const object = kb.any(subject, predicate)\n return object ? object.value : defaultValue\n}\n\nfunction patch (url, { toDel, toIns }) {\n return new Promise((resolve, reject) => {\n kb.updater.update(toDel, toIns, (uri, success, errorMessage) => {\n if (!success) {\n return reject(\n new Error(`PATCH failed for resource <${uri}>: ${errorMessage}`)\n )\n }\n resolve()\n })\n })\n // return webClient.patch(url, toDel, toIns)\n // .then(solidResponse => {\n // const status = solidResponse.xhr.status\n // if (status < 200 || status >= 400) {\n // const err = new Error(`PATCH failed for resource <${solidResponse.url}>`)\n // err.solidResponse = solidResponse\n // throw err\n // }\n // })\n}\n\nfunction indexes (book) {\n return {\n // bookIndex: book,\n groupIndex: kb.any(book, ns.vcard('groupIndex')),\n groupContainer: kb.sym(book.dir().uri + 'Group/')\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"peoplePicker.cjs.js","names":["solidLogicSingleton","escape","errorMessageBlock","ns","rdf","uuidv4","iconBase","require_runtime","require_debug","require_dragAndDrop","require_error","require_iconBase","require_ns","rdflib","solid_logic","escape_html","uuid","kb","PeoplePicker","options","element","typeIndex","groupPickedCb","container","selectedGroup","Group","changeGroupButton","chooseExistingGroupButton","GroupPicker","book","createNewGroupButton","GroupBuilder","group","errorBody","err","ok","reject","bookRegistration","resolve","errr","indexes","groupContainer","name","defaultNewGroupName","patchPromises","groupIndex","typeStatement","doc","nameStatement","includesGroupStatement","toIns","patch","st","onSelectGroup","groups","groupButton","getWithDefault","groupChangedCb","changeType","agent","doneBuildingCb","dropContainer","uris","uri","groupNameInput","event","groupNameLabel","webIdNode","statement","personDiv","Person","copy","doneBuildingButton","webId","rdfClass","errorMessage","updatePromises","oldNameStatements","namedGraph","newNameStatement","handleRemove","imgSrc","profileImg","nameSpan","removeButton","object","subject","predicate","defaultValue","toDel","success"],"sources":["../../src/widgets/peoplePicker.js"],"sourcesContent":["/**\n *\n * People Picker Pane\n *\n * This pane offers a mechanism for selecting a set of individuals, groups, or\n * organizations to take some action on.\n *\n * Assumptions\n * - Assumes that the user has a type index entry for vcard:AddressBook. @@ bad assuption\n *\n */\nimport escape from 'escape-html'\nimport { v4 as uuidv4 } from 'uuid'\nimport * as rdf from 'rdflib'\nimport * as debug from '../lib/debug'\n\nimport { makeDropTarget } from './dragAndDrop'\nimport { errorMessageBlock } from './error'\nimport { iconBase } from '../lib/iconBase'\nimport ns from '../lib/ns'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport class PeoplePicker {\n constructor (element, typeIndex, groupPickedCb, options) { // @@ can't expect typeindex to be passed\n this.options = options || {}\n this.element = element\n this.typeIndex = typeIndex\n this.groupPickedCb = groupPickedCb\n this.selectedgroup = this.options.selectedgroup // current selected group if any\n this.onSelectGroup = this.onSelectGroup.bind(this)\n }\n\n render () {\n const container = document.createElement('div')\n container.style.maxWidth = '350px'\n container.style.minHeight = '200px'\n container.style.outline = '1px solid black'\n container.style.display = 'flex'\n\n if (this.selectedgroup) {\n container.style.flexDirection = 'column'\n const selectedGroup = document.createElement('div')\n new Group(selectedGroup, this.selectedgroup).render()\n const changeGroupButton = document.createElement('button')\n changeGroupButton.textContent = escape('Change group')\n changeGroupButton.addEventListener('click', _event => {\n this.selectedgroup = null\n this.render()\n })\n container.appendChild(selectedGroup)\n container.appendChild(changeGroupButton)\n } else {\n this.findAddressBook(this.typeIndex)\n .then(({ book }) => {\n const chooseExistingGroupButton = document.createElement('button')\n chooseExistingGroupButton.textContent = escape(\n 'Pick an existing group'\n )\n chooseExistingGroupButton.style.margin = 'auto'\n chooseExistingGroupButton.addEventListener('click', _event => {\n new GroupPicker(container, book, this.onSelectGroup).render()\n })\n\n const createNewGroupButton = document.createElement('button')\n createNewGroupButton.textContent = escape('Create a new group')\n createNewGroupButton.style.margin = 'auto'\n createNewGroupButton.addEventListener('click', _event => {\n this.createNewGroup(book, this.options.defaultNewGroupName)\n .then(({ group }) => {\n new GroupBuilder(\n this.element,\n book,\n group,\n this.onSelectGroup\n ).render()\n })\n .catch(errorBody => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Error creating a new group. (${errorBody})`)\n )\n )\n })\n })\n\n container.appendChild(chooseExistingGroupButton)\n container.appendChild(createNewGroupButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could find your groups. (${err})`)\n )\n )\n })\n }\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n\n findAddressBook (typeIndex) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(typeIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const bookRegistration = kb.any(\n null,\n ns.solid('forClass'),\n ns.vcard('AddressBook')\n )\n if (!bookRegistration) {\n return reject(\n new Error(\n 'no address book registered in the solid type index ' + typeIndex\n )\n )\n }\n const book = kb.any(bookRegistration, ns.solid('instance'))\n if (!book) {\n return reject(new Error('incomplete address book registration'))\n }\n kb.fetcher\n .load(book)\n .then(function (_xhr) {\n return resolve({ book })\n })\n .catch(function (errr) {\n return reject(new Error('Could not load address book ' + errr))\n })\n })\n })\n }\n\n createNewGroup (book, defaultNewGroupName) {\n const { groupIndex, groupContainer } = indexes(book)\n const group = rdf.sym(\n `${groupContainer.uri}${uuidv4().slice(0, 8)}.ttl#this`\n )\n const name = defaultNewGroupName || 'Untitled Group'\n\n // NOTE that order matters here. Unfortunately this type of update is\n // non-atomic in that solid requires us to send two PATCHes, either of which\n // might fail.\n const patchPromises = [group.doc(), groupIndex].map(doc => {\n const typeStatement = rdf.st(group, ns.rdf('type'), ns.vcard('Group'), doc)\n const nameStatement = rdf.st(group, ns.vcard('fn'), name, group.doc(), doc)\n const includesGroupStatement = rdf.st(\n book,\n ns.vcard('includesGroup'),\n group,\n doc\n )\n const toIns = doc.equals(groupIndex)\n ? [typeStatement, nameStatement, includesGroupStatement]\n : [typeStatement, nameStatement]\n return patch(doc.uri, { toIns }).then(() => {\n toIns.forEach(st => {\n kb.add(st)\n })\n })\n })\n return Promise.all(patchPromises)\n .then(() => ({ group }))\n .catch(err => {\n debug.log('Could not create new group. PATCH failed ' + err)\n throw new Error(\n `Couldn't create new group. PATCH failed for (${\n err.xhr ? err.xhr.responseURL : ''\n } )`\n )\n })\n }\n\n onSelectGroup (group) {\n this.selectedgroup = group\n this.groupPickedCb(group)\n this.render()\n }\n}\n\nexport class GroupPicker {\n constructor (element, book, onSelectGroup) {\n this.element = element\n this.book = book\n this.onSelectGroup = onSelectGroup\n }\n\n render () {\n this.loadGroups()\n .then(groups => {\n // render the groups\n const container = document.createElement('div')\n container.style.display = 'flex'\n container.style.flexDirection = 'column'\n groups.forEach(group => {\n const groupButton = document.createElement('button')\n groupButton.addEventListener('click', this.handleClickGroup(group))\n new Group(groupButton, group).render()\n container.appendChild(groupButton)\n })\n this.element.innerHTML = ''\n this.element.appendChild(container)\n })\n .catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`There was an error loading your groups. (${err})`)\n )\n )\n })\n return this\n }\n\n loadGroups () {\n return new Promise((resolve, reject) => {\n const { groupIndex } = indexes(this.book)\n kb.fetcher.nowOrWhenFetched(groupIndex, (ok, err) => {\n if (!ok) {\n return reject(err)\n }\n const groups = kb.each(this.book, ns.vcard('includesGroup'))\n return resolve(groups)\n })\n })\n }\n\n handleClickGroup (group) {\n return _event => {\n this.onSelectGroup(group)\n }\n }\n}\n\nexport class Group {\n constructor (element, group) {\n this.element = element\n this.group = group\n }\n\n render () {\n const container = document.createElement('div')\n container.textContent = escape(\n // @@@@@ need to escape??\n getWithDefault(this.group, ns.vcard('fn'), `[${this.group.value}]`)\n )\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nexport class GroupBuilder {\n constructor (element, book, group, doneBuildingCb, groupChangedCb) {\n this.element = element\n this.book = book\n this.group = group\n this.onGroupChanged = (err, changeType, agent) => {\n if (groupChangedCb) {\n groupChangedCb(err, changeType, agent)\n }\n }\n this.groupChangedCb = groupChangedCb\n this.doneBuildingCb = doneBuildingCb\n }\n\n refresh () {\n // TODO: implement\n }\n\n render () {\n const dropContainer = document.createElement('div')\n dropContainer.style.maxWidth = '350px'\n dropContainer.style.minHeight = '200px'\n dropContainer.style.outline = '1px solid black'\n dropContainer.style.display = 'flex'\n dropContainer.style.flexDirection = 'column'\n\n makeDropTarget(dropContainer, uris => {\n uris.forEach(uri => {\n this.add(uri).catch(err => {\n this.element.appendChild(\n errorMessageBlock(\n document,\n escape(`Could not add the given WebId. (${err})`)\n )\n )\n })\n })\n })\n\n const groupNameInput = document.createElement('input')\n groupNameInput.type = 'text'\n groupNameInput.value = getWithDefault(\n this.group,\n ns.vcard('fn'),\n 'Untitled Group'\n )\n groupNameInput.addEventListener('change', event => {\n this.setGroupName(event.target.value).catch(err => {\n this.element.appendChild(\n errorMessageBlock(document, `Error changing group name. (${err})`)\n )\n })\n })\n const groupNameLabel = document.createElement('label')\n groupNameLabel.textContent = escape('Group Name:')\n groupNameLabel.appendChild(groupNameInput)\n dropContainer.appendChild(groupNameLabel)\n\n if (kb.any(this.group, ns.vcard('hasMember'))) {\n kb.match(this.group, ns.vcard('hasMember')).forEach(statement => {\n const webIdNode = statement.object\n const personDiv = document.createElement('div')\n new Person(personDiv, webIdNode, this.handleRemove(webIdNode)).render()\n dropContainer.appendChild(personDiv)\n })\n } else {\n const copy = document.createElement('p')\n copy.textContent = escape`\n To add someone to this group, drag and drop their WebID URL onto the box.\n `\n dropContainer.appendChild(copy)\n }\n\n const doneBuildingButton = document.createElement('button')\n doneBuildingButton.textContent = escape('Done')\n doneBuildingButton.addEventListener('click', _event => {\n this.doneBuildingCb(this.group)\n })\n dropContainer.appendChild(doneBuildingButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(dropContainer)\n return this\n }\n\n add (webId) {\n return new Promise((resolve, reject) => {\n kb.fetcher.nowOrWhenFetched(webId, (ok, err) => {\n if (!ok) {\n this.onGroupChanged(err)\n return reject(err)\n }\n // make sure it's a valid person, group, or entity (for now just handle\n // webId)\n const webIdNode = rdf.namedNode(webId)\n const rdfClass = kb.any(webIdNode, ns.rdf('type'))\n if (!rdfClass || !rdfClass.equals(ns.foaf('Person'))) {\n return reject(\n new Error(\n `Only people supported right now. (tried to add something of type ${rdfClass.value})`\n )\n )\n }\n return resolve(webIdNode)\n })\n }).then(webIdNode => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n if (kb.holdsStatement(statement)) {\n return webIdNode\n }\n return patch(this.group.doc().uri, { toIns: [statement] }).then(() => {\n statement.why = this.group.doc()\n kb.add(statement)\n this.onGroupChanged(null, 'added', webIdNode)\n this.render()\n })\n })\n }\n\n handleRemove (webIdNode) {\n return _event => {\n const statement = rdf.st(this.group, ns.vcard('hasMember'), webIdNode)\n return patch(this.group.doc().uri, { toDel: [statement] })\n .then(() => {\n kb.remove(statement)\n this.onGroupChanged(null, 'removed', webIdNode)\n this.render()\n return true\n })\n .catch(err => {\n const name = kb.any(webIdNode, ns.foaf('name'))\n const errorMessage =\n name && name.value\n ? `Could not remove ${name.value}. (${err})`\n : `Could not remove ${webIdNode.value}. (${err})`\n throw new Error(errorMessage)\n })\n }\n }\n\n setGroupName (name) {\n const { groupIndex } = indexes(this.book)\n const updatePromises = [this.group.doc(), groupIndex].map(namedGraph => {\n const oldNameStatements = kb.match(\n this.group,\n ns.vcard('fn'),\n null,\n namedGraph\n )\n const newNameStatement = rdf.st(\n this.group,\n ns.vcard('fn'),\n rdf.literal(name)\n )\n return patch(namedGraph.value, {\n toDel: oldNameStatements,\n toIns: [newNameStatement]\n }).then(_solidResponse => {\n kb.removeStatements(oldNameStatements)\n newNameStatement.why = namedGraph\n kb.add(newNameStatement)\n })\n })\n return Promise.all(updatePromises)\n }\n}\n// @ignore exporting this only for the unit test\n// @@ TODO maybe I should move this down at end, but for\n// now I will leave it where it was\nexport class Person {\n constructor (element, webIdNode, handleRemove) {\n this.webIdNode = webIdNode\n this.element = element\n this.handleRemove = handleRemove\n }\n\n render () {\n const container = document.createElement('div')\n container.style.display = 'flex'\n\n // TODO: take a look at UI.widgets.setName\n const imgSrc = getWithDefault(\n this.webIdNode,\n ns.foaf('img'),\n iconBase + 'noun_15059.svg'\n )\n const profileImg = document.createElement('img')\n profileImg.src = escape(imgSrc)\n profileImg.width = '50'\n profileImg.height = '50'\n profileImg.style.margin = '5px'\n\n // TODO: take a look at UI.widgets.setImage\n const name = getWithDefault(\n this.webIdNode,\n ns.foaf('name'),\n `[${this.webIdNode}]`\n )\n const nameSpan = document.createElement('span')\n nameSpan.innerHTML = escape(name)\n nameSpan.style.flexGrow = '1'\n nameSpan.style.margin = 'auto 0'\n\n const removeButton = document.createElement('button')\n removeButton.textContent = 'Remove'\n removeButton.addEventListener('click', _event =>\n this.handleRemove().catch(err => {\n this.element.appendChild(errorMessageBlock(document, escape(`${err}`)))\n })\n )\n removeButton.style.margin = '5px'\n\n container.appendChild(profileImg)\n container.appendChild(nameSpan)\n container.appendChild(removeButton)\n\n this.element.innerHTML = ''\n this.element.appendChild(container)\n return this\n }\n}\n\nfunction getWithDefault (subject, predicate, defaultValue) {\n const object = kb.any(subject, predicate)\n return object ? object.value : defaultValue\n}\n\nfunction patch (url, { toDel, toIns }) {\n return new Promise((resolve, reject) => {\n kb.updater.update(toDel, toIns, (uri, success, errorMessage) => {\n if (!success) {\n return reject(\n new Error(`PATCH failed for resource <${uri}>: ${errorMessage}`)\n )\n }\n resolve()\n })\n })\n // return webClient.patch(url, toDel, toIns)\n // .then(solidResponse => {\n // const status = solidResponse.xhr.status\n // if (status < 200 || status >= 400) {\n // const err = new Error(`PATCH failed for resource <${solidResponse.url}>`)\n // err.solidResponse = solidResponse\n // throw err\n // }\n // })\n}\n\nfunction indexes (book) {\n return {\n // bookIndex: book,\n groupIndex: kb.any(book, ns.vcard('groupIndex')),\n groupContainer: kb.sym(book.dir().uri + 'Group/')\n }\n}\n"],"mappings":"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"}