solid-ui 5.0.2-0 → 5.0.2-1

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 (390) hide show
  1. package/dist/_virtual/_rolldown/runtime.esm.js +1 -2
  2. package/dist/_virtual/~icons/app/solid-emblem.esm.js +1 -2
  3. package/dist/_virtual/~icons/lucide/book-user.esm.js +1 -2
  4. package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -2
  5. package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -2
  6. package/dist/_virtual/~icons/lucide/circle-x.esm.js +1 -2
  7. package/dist/_virtual/~icons/lucide/folder-open.cjs.js +2 -0
  8. package/dist/_virtual/~icons/lucide/folder-open.cjs.js.map +1 -0
  9. package/dist/_virtual/~icons/lucide/folder-open.esm.js +10 -0
  10. package/dist/_virtual/~icons/lucide/folder-open.esm.js.map +1 -0
  11. package/dist/_virtual/~icons/lucide/folder.cjs.js +2 -0
  12. package/dist/_virtual/~icons/lucide/folder.cjs.js.map +1 -0
  13. package/dist/_virtual/~icons/lucide/folder.esm.js +10 -0
  14. package/dist/_virtual/~icons/lucide/folder.esm.js.map +1 -0
  15. package/dist/_virtual/~icons/lucide/globe.esm.js +1 -2
  16. package/dist/_virtual/~icons/lucide/link.esm.js +1 -2
  17. package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -2
  18. package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -2
  19. package/dist/_virtual/~icons/lucide/square-arrow-out-up-right.esm.js +1 -2
  20. package/dist/_virtual/~icons/lucide/triangle-alert.esm.js +1 -2
  21. package/dist/_virtual/~icons/lucide/user-round.esm.js +1 -2
  22. package/dist/_virtual/~icons/lucide/user.esm.js +1 -2
  23. package/dist/_virtual/~icons/lucide/users.esm.js +1 -2
  24. package/dist/_virtual/~icons/lucide/x.esm.js +1 -2
  25. package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -2
  26. package/dist/_virtual/~icons/svg-spinners/3-dots-fade.esm.js +1 -2
  27. package/dist/acl/access-controller.esm.js +1 -2
  28. package/dist/acl/access-groups.esm.js +1 -2
  29. package/dist/acl/acl-control.esm.js +1 -2
  30. package/dist/acl/acl.esm.js +1 -2
  31. package/dist/acl/add-agent-buttons.esm.js +1 -2
  32. package/dist/acl/index.esm.js +1 -2
  33. package/dist/chat/bookmarks.esm.js +1 -2
  34. package/dist/chat/chatLogic.esm.js +1 -2
  35. package/dist/chat/dateFolder.esm.js +1 -2
  36. package/dist/chat/infinite.cjs.js +1 -1
  37. package/dist/chat/infinite.cjs.js.map +1 -1
  38. package/dist/chat/infinite.esm.js +2 -3
  39. package/dist/chat/infinite.esm.js.map +1 -1
  40. package/dist/chat/keys.esm.js +1 -2
  41. package/dist/chat/message.esm.js +1 -2
  42. package/dist/chat/messageTools.esm.js +1 -2
  43. package/dist/chat/signature.esm.js +0 -1
  44. package/dist/chunks/{DialogProvider-B7oVYKJO.js → DialogProvider-C89v7x0r.js} +5 -8
  45. package/dist/chunks/{DialogProvider-B7oVYKJO.js.map → DialogProvider-C89v7x0r.js.map} +1 -1
  46. package/dist/chunks/{access-control-modal-eOv2-U27.js → access-control-modal-Dcg6-f4V.js} +924 -540
  47. package/dist/chunks/access-control-modal-Dcg6-f4V.js.map +1 -0
  48. package/dist/chunks/{account-DpmYJEd-.js → account-D6JK-n7u.js} +16 -21
  49. package/dist/chunks/{account-DpmYJEd-.js.map → account-D6JK-n7u.js.map} +1 -1
  50. package/dist/chunks/{auth-Hp8M6TQf.js → auth-B_abPDvH.js} +28 -31
  51. package/dist/chunks/auth-B_abPDvH.js.map +1 -0
  52. package/dist/chunks/{avatar-D5rcw6gN.js → avatar-BR3COVSQ.js} +6 -9
  53. package/dist/chunks/{avatar-D5rcw6gN.js.map → avatar-BR3COVSQ.js.map} +1 -1
  54. package/dist/chunks/{button-lol95DqR.js → button-D6qO2idW.js} +5 -8
  55. package/dist/chunks/{button-lol95DqR.js.map → button-D6qO2idW.js.map} +1 -1
  56. package/dist/chunks/{chevron-down-ujxRg3MD.js → chevron-down-CqUEolao.js} +2 -3
  57. package/dist/chunks/chevron-down-CqUEolao.js.map +1 -0
  58. package/dist/chunks/{chunk.UEBQI7VV-OBPERnuy.js → chunk.UEBQI7VV-lcP-fpUk.js} +14 -23
  59. package/dist/chunks/{chunk.UEBQI7VV-OBPERnuy.js.map → chunk.UEBQI7VV-lcP-fpUk.js.map} +1 -1
  60. package/dist/chunks/{combobox-Dmv-TZtI.js → combobox-fSTp9qoT.js} +11 -15
  61. package/dist/chunks/combobox-fSTp9qoT.js.map +1 -0
  62. package/dist/chunks/{combobox-option-B-Hksiq2.js → combobox-option-DOtGuKel.js} +4 -6
  63. package/dist/chunks/{combobox-option-B-Hksiq2.js.map → combobox-option-DOtGuKel.js.map} +1 -1
  64. package/dist/chunks/{components-Bdqizu8x.js → components-C8c2Ucm5.js} +17 -33
  65. package/dist/chunks/{components-Bdqizu8x.js.map → components-C8c2Ucm5.js.map} +1 -1
  66. package/dist/chunks/{dialog-DYgcCurb.js → dialog-CgYK767T.js} +8 -10
  67. package/dist/chunks/{dialog-DYgcCurb.js.map → dialog-CgYK767T.js.map} +1 -1
  68. package/dist/chunks/{dialog-content-jx08y2Oa.js → dialog-content-DjwRH1ci.js} +4 -6
  69. package/dist/chunks/{dialog-content-jx08y2Oa.js.map → dialog-content-DjwRH1ci.js.map} +1 -1
  70. package/dist/chunks/{dialog-footer-Bhl8k1PX.js → dialog-footer-GQWi8lfB.js} +4 -6
  71. package/dist/chunks/{dialog-footer-Bhl8k1PX.js.map → dialog-footer-GQWi8lfB.js.map} +1 -1
  72. package/dist/chunks/{dialog-header-Dn6PQzFB.js → dialog-header-c3qOMQfb.js} +4 -6
  73. package/dist/chunks/{dialog-header-Dn6PQzFB.js.map → dialog-header-c3qOMQfb.js.map} +1 -1
  74. package/dist/chunks/{dialogs-B6TfxrPt.js → dialogs-BmtLjMzg.js} +5 -7
  75. package/dist/chunks/{dialogs-B6TfxrPt.js.map → dialogs-BmtLjMzg.js.map} +1 -1
  76. package/dist/chunks/{dialogs-root-Qiucjj9u.js → dialogs-root-BcQo2XMF.js} +6 -8
  77. package/dist/chunks/{dialogs-root-Qiucjj9u.js.map → dialogs-root-BcQo2XMF.js.map} +1 -1
  78. package/dist/chunks/{error-state-DK1x-kNd.js → error-state-BD4_Wrkz.js} +6 -8
  79. package/dist/chunks/{error-state-DK1x-kNd.js.map → error-state-BD4_Wrkz.js.map} +1 -1
  80. package/dist/chunks/{guard-FbhNrJGh.js → guard-bTeM7wd7.js} +5 -7
  81. package/dist/chunks/{guard-FbhNrJGh.js.map → guard-bTeM7wd7.js.map} +1 -1
  82. package/dist/chunks/{index.esm-N8NHgFUj.js → index.esm-CECfD0e9.js} +3256 -3083
  83. package/dist/chunks/index.esm-CECfD0e9.js.map +1 -0
  84. package/dist/chunks/{input-lpqx_k53.js → input-Bz3l514j.js} +5 -7
  85. package/dist/chunks/{input-lpqx_k53.js.map → input-Bz3l514j.js.map} +1 -1
  86. package/dist/chunks/{jsonld-Djw57WRt.js → jsonld-CnfzCyCn.js} +4 -5
  87. package/dist/chunks/{jsonld-Djw57WRt.js.map → jsonld-CnfzCyCn.js.map} +1 -1
  88. package/dist/chunks/{login-button-DCq4Gi3_.js → login-button-Div4ZT4J.js} +6 -8
  89. package/dist/chunks/{login-button-DCq4Gi3_.js.map → login-button-Div4ZT4J.js.map} +1 -1
  90. package/dist/chunks/{logout-button-D3dJrsV4.js → logout-button-D3lqlnCX.js} +6 -8
  91. package/dist/chunks/{logout-button-D3dJrsV4.js.map → logout-button-D3lqlnCX.js.map} +1 -1
  92. package/dist/chunks/{menu-RJklqKQE.js → menu-D0k2fkiE.js} +22 -39
  93. package/dist/chunks/{menu-RJklqKQE.js.map → menu-D0k2fkiE.js.map} +1 -1
  94. package/dist/chunks/{menu-item-C2e0qj-v.js → menu-item-nfPpH4dN.js} +5 -7
  95. package/dist/chunks/{menu-item-C2e0qj-v.js.map → menu-item-nfPpH4dN.js.map} +1 -1
  96. package/dist/chunks/{photo-capture-DEMQNmzb.js → photo-capture-hJaJm4TM.js} +6 -8
  97. package/dist/chunks/{photo-capture-DEMQNmzb.js.map → photo-capture-hJaJm4TM.js.map} +1 -1
  98. package/dist/chunks/{photo-capture-modal-C7oESDQq.js → photo-capture-modal-BsHv6wmh.js} +9 -11
  99. package/dist/chunks/{photo-capture-modal-C7oESDQq.js.map → photo-capture-modal-BsHv6wmh.js.map} +1 -1
  100. package/dist/chunks/{provider-D9UgRI4G.js → provider-Dcd1NPYx.js} +7 -9
  101. package/dist/chunks/{provider-D9UgRI4G.js.map → provider-Dcd1NPYx.js.map} +1 -1
  102. package/dist/chunks/{query-BYu9q8lA.js → query-DjAOg-tk.js} +3 -5
  103. package/dist/chunks/{query-BYu9q8lA.js.map → query-DjAOg-tk.js.map} +1 -1
  104. package/dist/chunks/{rdf-form-BLgKdXP2.js → rdf-form-CmPnHKR-.js} +23 -25
  105. package/dist/chunks/{rdf-form-BLgKdXP2.js.map → rdf-form-CmPnHKR-.js.map} +1 -1
  106. package/dist/chunks/{rdf-input-DWnDpkXy.js → rdf-input-3AgoeCkJ.js} +48 -51
  107. package/dist/chunks/{rdf-input-DWnDpkXy.js.map → rdf-input-3AgoeCkJ.js.map} +1 -1
  108. package/dist/chunks/{select-CnkJMo_K.js → select-ClPkDkGl.js} +7 -10
  109. package/dist/chunks/{select-CnkJMo_K.js.map → select-ClPkDkGl.js.map} +1 -1
  110. package/dist/chunks/{select-option-B9HSZiTp.js → select-option-DQan7rcB.js} +4 -6
  111. package/dist/chunks/{select-option-B9HSZiTp.js.map → select-option-DQan7rcB.js.map} +1 -1
  112. package/dist/chunks/{show-dialog-eEW5yRBv.js → show-dialog-DAmFslrf.js} +2 -3
  113. package/dist/chunks/{show-dialog-eEW5yRBv.js.map → show-dialog-DAmFslrf.js.map} +1 -1
  114. package/dist/chunks/{signup-button-BQ4AWem2.js → signup-button-2fAoS0Nv.js} +6 -8
  115. package/dist/chunks/{signup-button-BQ4AWem2.js.map → signup-button-2fAoS0Nv.js.map} +1 -1
  116. package/dist/chunks/{solid-emblem-DNjQSX1z.js → solid-emblem-DwLdkGuO.js} +5 -8
  117. package/dist/chunks/{solid-emblem-DNjQSX1z.js.map → solid-emblem-DwLdkGuO.js.map} +1 -1
  118. package/dist/chunks/{src-DQMZZG1B.js → src-Dx7k_VIe.js} +2732 -2782
  119. package/dist/chunks/src-Dx7k_VIe.js.map +1 -0
  120. package/dist/chunks/{style-ChFDDB1c.js → style-w0Fl0xnd.js} +25 -29
  121. package/dist/chunks/{style-ChFDDB1c.js.map → style-w0Fl0xnd.js.map} +1 -1
  122. package/dist/chunks/{widgets-CVLwnfkU.js → widgets-BWpm5CPx.js} +694 -715
  123. package/dist/chunks/widgets-BWpm5CPx.js.map +1 -0
  124. package/dist/chunks/{x-BRRkraZN.js → x-D1JUUSOS.js} +2 -3
  125. package/dist/chunks/x-D1JUUSOS.js.map +1 -0
  126. package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js +11 -5
  127. package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js.map +1 -1
  128. package/dist/components/access-control-modal/AccessControlAddAccess.d.ts +1 -0
  129. package/dist/components/access-control-modal/AccessControlAddAccess.d.ts.map +1 -1
  130. package/dist/components/access-control-modal/AccessControlAddAccess.esm.js +75 -57
  131. package/dist/components/access-control-modal/AccessControlAddAccess.esm.js.map +1 -1
  132. package/dist/components/access-control-modal/AccessControlAddAccess.styles.cjs.js +1 -1
  133. package/dist/components/access-control-modal/AccessControlAddAccess.styles.cjs.js.map +1 -1
  134. package/dist/components/access-control-modal/AccessControlAddAccess.styles.esm.js +2 -3
  135. package/dist/components/access-control-modal/AccessControlAddAccess.styles.esm.js.map +1 -1
  136. package/dist/components/access-control-modal/AccessControlErrors.cjs.js +3 -2
  137. package/dist/components/access-control-modal/AccessControlErrors.cjs.js.map +1 -1
  138. package/dist/components/access-control-modal/AccessControlErrors.d.ts +1 -0
  139. package/dist/components/access-control-modal/AccessControlErrors.d.ts.map +1 -1
  140. package/dist/components/access-control-modal/AccessControlErrors.esm.js +6 -3
  141. package/dist/components/access-control-modal/AccessControlErrors.esm.js.map +1 -1
  142. package/dist/components/access-control-modal/AccessControlErrors.styles.esm.js +1 -2
  143. package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js +5 -3
  144. package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js.map +1 -1
  145. package/dist/components/access-control-modal/AccessControlGeneralAccess.d.ts +1 -0
  146. package/dist/components/access-control-modal/AccessControlGeneralAccess.d.ts.map +1 -1
  147. package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js +57 -45
  148. package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js.map +1 -1
  149. package/dist/components/access-control-modal/AccessControlGeneralAccess.styles.esm.js +1 -2
  150. package/dist/components/access-control-modal/AccessControlModal.cjs.js +112 -6
  151. package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
  152. package/dist/components/access-control-modal/AccessControlModal.d.ts +27 -0
  153. package/dist/components/access-control-modal/AccessControlModal.d.ts.map +1 -1
  154. package/dist/components/access-control-modal/AccessControlModal.esm.js +411 -127
  155. package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
  156. package/dist/components/access-control-modal/AccessControlModal.styles.cjs.js +1 -1
  157. package/dist/components/access-control-modal/AccessControlModal.styles.cjs.js.map +1 -1
  158. package/dist/components/access-control-modal/AccessControlModal.styles.esm.js +2 -3
  159. package/dist/components/access-control-modal/AccessControlModal.styles.esm.js.map +1 -1
  160. package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js +6 -5
  161. package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js.map +1 -1
  162. package/dist/components/access-control-modal/AccessControlSharedAccess.d.ts +1 -0
  163. package/dist/components/access-control-modal/AccessControlSharedAccess.d.ts.map +1 -1
  164. package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js +71 -55
  165. package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js.map +1 -1
  166. package/dist/components/access-control-modal/AccessControlSharedAccess.styles.esm.js +1 -2
  167. package/dist/components/access-control-modal/accessGrantDrafts.cjs.js +1 -1
  168. package/dist/components/access-control-modal/accessGrantDrafts.cjs.js.map +1 -1
  169. package/dist/components/access-control-modal/accessGrantDrafts.d.ts.map +1 -1
  170. package/dist/components/access-control-modal/accessGrantDrafts.esm.js +6 -7
  171. package/dist/components/access-control-modal/accessGrantDrafts.esm.js.map +1 -1
  172. package/dist/components/access-control-modal/accessTargetResolver.cjs.js +1 -1
  173. package/dist/components/access-control-modal/accessTargetResolver.cjs.js.map +1 -1
  174. package/dist/components/access-control-modal/accessTargetResolver.d.ts +1 -0
  175. package/dist/components/access-control-modal/accessTargetResolver.d.ts.map +1 -1
  176. package/dist/components/access-control-modal/accessTargetResolver.esm.js +92 -46
  177. package/dist/components/access-control-modal/accessTargetResolver.esm.js.map +1 -1
  178. package/dist/components/access-control-modal/applyAccessChanges.cjs.js +1 -1
  179. package/dist/components/access-control-modal/applyAccessChanges.cjs.js.map +1 -1
  180. package/dist/components/access-control-modal/applyAccessChanges.d.ts +4 -2
  181. package/dist/components/access-control-modal/applyAccessChanges.d.ts.map +1 -1
  182. package/dist/components/access-control-modal/applyAccessChanges.esm.js +23 -15
  183. package/dist/components/access-control-modal/applyAccessChanges.esm.js.map +1 -1
  184. package/dist/components/access-control-modal/buildAccessChanges.esm.js +1 -2
  185. package/dist/components/access-control-modal/helpers.esm.js +1 -2
  186. package/dist/components/access-control-modal/index.esm.js +1 -2
  187. package/dist/components/access-control-modal/types.d.ts +6 -1
  188. package/dist/components/access-control-modal/types.d.ts.map +1 -1
  189. package/dist/components/access-control-modal.js +1 -1
  190. package/dist/components/account/Account.esm.js +1 -2
  191. package/dist/components/account/Account.styles.esm.js +1 -2
  192. package/dist/components/account/index.esm.js +1 -2
  193. package/dist/components/account.js +1 -1
  194. package/dist/components/avatar/Avatar.esm.js +1 -2
  195. package/dist/components/avatar/Avatar.styles.esm.js +1 -2
  196. package/dist/components/avatar/index.esm.js +1 -2
  197. package/dist/components/avatar.js +1 -1
  198. package/dist/components/button/Button.esm.js +1 -2
  199. package/dist/components/button/Button.styles.esm.js +1 -2
  200. package/dist/components/button/index.esm.js +1 -2
  201. package/dist/components/button.js +1 -1
  202. package/dist/components/combobox/Combobox.cjs.js +1 -0
  203. package/dist/components/combobox/Combobox.cjs.js.map +1 -1
  204. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  205. package/dist/components/combobox/Combobox.esm.js +2 -2
  206. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  207. package/dist/components/combobox/Combobox.styles.esm.js +1 -2
  208. package/dist/components/combobox/index.esm.js +1 -2
  209. package/dist/components/combobox-option/ComboboxOption.esm.js +1 -2
  210. package/dist/components/combobox-option/index.esm.js +1 -2
  211. package/dist/components/combobox-option.js +1 -1
  212. package/dist/components/combobox.js +1 -1
  213. package/dist/components/dialog/Dialog.esm.js +1 -2
  214. package/dist/components/dialog/Dialog.styles.esm.js +1 -2
  215. package/dist/components/dialog/index.esm.js +1 -2
  216. package/dist/components/dialog-content/DialogContent.esm.js +1 -2
  217. package/dist/components/dialog-content/DialogContent.styles.esm.js +1 -2
  218. package/dist/components/dialog-content/index.esm.js +1 -2
  219. package/dist/components/dialog-content.js +1 -1
  220. package/dist/components/dialog-footer/DialogFooter.esm.js +1 -2
  221. package/dist/components/dialog-footer/DialogFooter.styles.esm.js +1 -2
  222. package/dist/components/dialog-footer/index.esm.js +1 -2
  223. package/dist/components/dialog-footer.js +1 -1
  224. package/dist/components/dialog-header/DialogHeader.esm.js +1 -2
  225. package/dist/components/dialog-header/DialogHeader.styles.esm.js +1 -2
  226. package/dist/components/dialog-header/index.esm.js +1 -2
  227. package/dist/components/dialog-header.js +1 -1
  228. package/dist/components/dialog-provider/DialogProvider.esm.js +1 -2
  229. package/dist/components/dialog-provider/index.esm.js +1 -2
  230. package/dist/components/dialog-provider.js +2 -3
  231. package/dist/components/dialog.js +1 -1
  232. package/dist/components/dialogs-root/DialogsRoot.esm.js +1 -2
  233. package/dist/components/dialogs-root/index.esm.js +1 -2
  234. package/dist/components/dialogs-root.js +1 -1
  235. package/dist/components/error-state/ErrorState.esm.js +1 -2
  236. package/dist/components/error-state/ErrorState.styles.esm.js +1 -2
  237. package/dist/components/error-state.js +1 -1
  238. package/dist/components/guard/Guard.esm.js +1 -2
  239. package/dist/components/guard/index.esm.js +1 -2
  240. package/dist/components/guard.js +1 -1
  241. package/dist/components/input/Input.esm.js +1 -2
  242. package/dist/components/input/Input.styles.esm.js +1 -2
  243. package/dist/components/input/index.esm.js +1 -2
  244. package/dist/components/input.js +1 -1
  245. package/dist/components/login-button/LoginButton.esm.js +1 -2
  246. package/dist/components/login-button/index.esm.js +1 -2
  247. package/dist/components/login-button.js +1 -1
  248. package/dist/components/login-modal/LoginModal.esm.js +1 -2
  249. package/dist/components/login-modal/LoginModal.styles.esm.js +1 -2
  250. package/dist/components/login-modal/index.esm.js +1 -2
  251. package/dist/components/login-modal.js +1 -1
  252. package/dist/components/logout-button/LogoutButton.esm.js +1 -2
  253. package/dist/components/logout-button/index.esm.js +1 -2
  254. package/dist/components/logout-button.js +1 -1
  255. package/dist/components/menu/Menu.esm.js +1 -2
  256. package/dist/components/menu/Menu.styles.esm.js +1 -2
  257. package/dist/components/menu/index.esm.js +1 -2
  258. package/dist/components/menu-item/MenuItem.esm.js +1 -2
  259. package/dist/components/menu-item/MenuItem.styles.esm.js +1 -2
  260. package/dist/components/menu-item/index.esm.js +1 -2
  261. package/dist/components/menu-item.js +1 -1
  262. package/dist/components/menu.js +1 -1
  263. package/dist/components/photo-capture/PhotoCapture.esm.js +1 -2
  264. package/dist/components/photo-capture/index.esm.js +1 -2
  265. package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js +1 -1
  266. package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js.map +1 -1
  267. package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js +2 -3
  268. package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js.map +1 -1
  269. package/dist/components/photo-capture-modal/PhotoCaptureModal.styles.esm.js +1 -2
  270. package/dist/components/photo-capture-modal/index.esm.js +1 -2
  271. package/dist/components/photo-capture-modal.js +1 -1
  272. package/dist/components/photo-capture.js +1 -1
  273. package/dist/components/provider/Provider.esm.js +1 -2
  274. package/dist/components/provider/index.esm.js +1 -2
  275. package/dist/components/provider.js +1 -1
  276. package/dist/components/rdf-form/RDFForm.esm.js +1 -2
  277. package/dist/components/rdf-form/index.esm.js +1 -2
  278. package/dist/components/rdf-form.js +1 -1
  279. package/dist/components/rdf-input/RDFInput.esm.js +1 -2
  280. package/dist/components/rdf-input/index.esm.js +1 -2
  281. package/dist/components/rdf-input.js +1 -1
  282. package/dist/components/select/Select.esm.js +1 -2
  283. package/dist/components/select/Select.styles.esm.js +1 -2
  284. package/dist/components/select/index.esm.js +1 -2
  285. package/dist/components/select-option/SelectOption.esm.js +1 -2
  286. package/dist/components/select-option/index.esm.js +1 -2
  287. package/dist/components/select-option.js +1 -1
  288. package/dist/components/select.js +1 -1
  289. package/dist/components/signup-button/SignupButton.esm.js +1 -2
  290. package/dist/components/signup-button/index.esm.js +1 -2
  291. package/dist/components/signup-button.js +1 -1
  292. package/dist/components/solid-emblem/SolidEmblem.esm.js +1 -2
  293. package/dist/components/solid-emblem/SolidEmblem.styles.esm.js +1 -2
  294. package/dist/components/solid-emblem/index.esm.js +1 -2
  295. package/dist/components/solid-emblem.js +1 -1
  296. package/dist/components.js +28 -28
  297. package/dist/create/create.esm.js +1 -2
  298. package/dist/create/index.esm.js +1 -2
  299. package/dist/create/types.esm.js +1 -2
  300. package/dist/footer/index.esm.js +1 -2
  301. package/dist/header/empty-profile.esm.js +1 -2
  302. package/dist/header/index.esm.js +1 -2
  303. package/dist/index.esm.js +1 -2
  304. package/dist/index.js +8 -8
  305. package/dist/lib/auth/Account.esm.js +1 -2
  306. package/dist/lib/auth/NoopAuth.esm.js +1 -2
  307. package/dist/lib/auth/SolidAuth.esm.js +1 -2
  308. package/dist/lib/auth/context.esm.js +1 -2
  309. package/dist/lib/code-editor/CodeEditor.esm.js +1 -2
  310. package/dist/lib/components/decorators.esm.js +1 -2
  311. package/dist/lib/components/dialog-component/DialogComponent.esm.js +1 -2
  312. package/dist/lib/components/form-control-component/FormControlComponent.esm.js +1 -2
  313. package/dist/lib/components/ids.esm.js +1 -2
  314. package/dist/lib/components/traits/DialogTrait.esm.js +1 -2
  315. package/dist/lib/components/traits/FormControlTrait.esm.js +1 -2
  316. package/dist/lib/components/web-component/WebComponent.esm.js +1 -2
  317. package/dist/lib/components/web-component/WebComponent.styles.esm.js +1 -2
  318. package/dist/lib/debug.esm.js +1 -2
  319. package/dist/lib/dialogs/Dialog.esm.js +1 -2
  320. package/dist/lib/dialogs/context.esm.js +1 -2
  321. package/dist/lib/dialogs/events/close-dialog.esm.js +1 -2
  322. package/dist/lib/dialogs/events/show-dialog.esm.js +1 -2
  323. package/dist/lib/dialogs/helpers.esm.js +1 -2
  324. package/dist/lib/file-explorer/context.esm.js +1 -2
  325. package/dist/lib/forms/fieldParams.esm.js +1 -2
  326. package/dist/lib/forms/rdfFormsHelper.esm.js +1 -2
  327. package/dist/lib/forms/store/NoopStore.esm.js +1 -2
  328. package/dist/lib/forms/store/StoreContext.esm.js +1 -2
  329. package/dist/lib/iconBase.esm.js +1 -2
  330. package/dist/lib/log.esm.js +1 -2
  331. package/dist/lib/messageArea.esm.js +1 -2
  332. package/dist/lib/newperson.esm.js +1 -2
  333. package/dist/lib/ns.esm.js +1 -2
  334. package/dist/lib/pad.esm.js +1 -2
  335. package/dist/lib/participation.esm.js +1 -2
  336. package/dist/lib/preferences.esm.js +1 -2
  337. package/dist/lib/style.esm.js +1 -2
  338. package/dist/lib/styleConstants.esm.js +1 -2
  339. package/dist/lib/style_multiSelect.esm.js +1 -2
  340. package/dist/lib/table.esm.js +1 -2
  341. package/dist/lib/tabs.esm.js +1 -2
  342. package/dist/lib/timing.esm.js +1 -2
  343. package/dist/lib/values.esm.js +1 -2
  344. package/dist/loader.js +8 -8
  345. package/dist/login/login.esm.js +1 -2
  346. package/dist/matrix/index.esm.js +1 -2
  347. package/dist/matrix/matrix.esm.js +1 -2
  348. package/dist/media/index.esm.js +1 -2
  349. package/dist/media/media-capture.esm.js +1 -2
  350. package/dist/signup/config-default.esm.js +1 -2
  351. package/dist/signup/signup.esm.js +1 -2
  352. package/dist/solid-ui.js +243 -126
  353. package/dist/solid-ui.min.js +243 -126
  354. package/dist/solid-ui.min.js.map +1 -1
  355. package/dist/utils/headerFooterHelpers.esm.js +1 -2
  356. package/dist/utils/index.esm.js +1 -2
  357. package/dist/utils/keyHelpers/accessData.esm.js +1 -2
  358. package/dist/utils/keyHelpers/acl.esm.js +1 -2
  359. package/dist/utils/keyHelpers/otherHelpers.esm.js +1 -2
  360. package/dist/utils/label.esm.js +1 -2
  361. package/dist/widgets/buttons/iconLinks.esm.js +1 -2
  362. package/dist/widgets/buttons.esm.js +1 -2
  363. package/dist/widgets/dragAndDrop.esm.js +1 -2
  364. package/dist/widgets/error.esm.js +1 -2
  365. package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +1 -2
  366. package/dist/widgets/forms/autocomplete/autocompleteField.esm.js +1 -2
  367. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js +1 -1
  368. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
  369. package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js +2 -3
  370. package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
  371. package/dist/widgets/forms/autocomplete/language.esm.js +1 -2
  372. package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -2
  373. package/dist/widgets/forms/basic.esm.js +1 -2
  374. package/dist/widgets/forms/fieldFunction.esm.js +1 -2
  375. package/dist/widgets/forms/fieldParams.esm.js +1 -2
  376. package/dist/widgets/forms/formStyle.esm.js +1 -2
  377. package/dist/widgets/forms.esm.js +1 -2
  378. package/dist/widgets/index.esm.js +1 -2
  379. package/dist/widgets/multiSelect.esm.js +1 -2
  380. package/dist/widgets/peoplePicker.esm.js +1 -2
  381. package/dist/widgets/widgetHelpers.esm.js +1 -2
  382. package/package.json +2 -2
  383. package/dist/chunks/access-control-modal-eOv2-U27.js.map +0 -1
  384. package/dist/chunks/auth-Hp8M6TQf.js.map +0 -1
  385. package/dist/chunks/chevron-down-ujxRg3MD.js.map +0 -1
  386. package/dist/chunks/combobox-Dmv-TZtI.js.map +0 -1
  387. package/dist/chunks/index.esm-N8NHgFUj.js.map +0 -1
  388. package/dist/chunks/src-DQMZZG1B.js.map +0 -1
  389. package/dist/chunks/widgets-CVLwnfkU.js.map +0 -1
  390. package/dist/chunks/x-BRRkraZN.js.map +0 -1
@@ -5,38 +5,39 @@ import n from "../../lib/components/web-component/WebComponent.esm.js";
5
5
  import "../../lib/components/index.esm.js";
6
6
  import "../combobox/index.esm.js";
7
7
  import "../combobox-option/index.esm.js";
8
+ import "../../_virtual/~icons/lucide/globe.esm.js";
8
9
  import r from "./AccessControlSharedAccess.styles.esm.js";
9
10
  import { sym as i } from "rdflib";
10
11
  import { ACCESS_ROLES as a } from "solid-logic";
11
12
  import { html as o } from "lit";
12
13
  import { property as s, state as c } from "lit/decorators.js";
13
- //#region src/components/access-control-modal/AccessControlSharedAccess.ts
14
- var l, u, d, f, p, m, h, g, _, v, y, b, x;
15
- function S(e, t, n) {
16
- C(e, t), t.set(e, n);
14
+ // src/components/access-control-modal/AccessControlSharedAccess.ts
15
+ var l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w;
16
+ function T(e, t, n) {
17
+ E(e, t), t.set(e, n);
17
18
  }
18
- function C(e, t) {
19
+ function E(e, t) {
19
20
  if (t.has(e)) throw TypeError("Cannot initialize the same private elements twice on an object");
20
21
  }
21
- function w(e, t, n) {
22
- return e.set(E(e, t), n), n;
22
+ function D(e, t, n) {
23
+ return e.set(k(e, t), n), n;
23
24
  }
24
- function T(e, t) {
25
- return e.get(E(e, t));
25
+ function O(e, t) {
26
+ return e.get(k(e, t));
26
27
  }
27
- function E(e, t, n) {
28
+ function k(e, t, n) {
28
29
  if (typeof e == "function" ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
29
30
  throw TypeError("Private element is not present on this object");
30
31
  }
31
- function D(e, t, n) {
32
- return (t = k(t)) in e ? Object.defineProperty(e, t, {
32
+ function A(e, t, n) {
33
+ return (t = M(t)) in e ? Object.defineProperty(e, t, {
33
34
  value: n,
34
35
  enumerable: !0,
35
36
  configurable: !0,
36
37
  writable: !0
37
38
  }) : e[t] = n, e;
38
39
  }
39
- function O(e, t, n, r, i, a) {
40
+ function j(e, t, n, r, i, a) {
40
41
  function o(e, t, n) {
41
42
  return function(r, i) {
42
43
  return n && n(r), e[t].call(r, i);
@@ -59,13 +60,13 @@ function O(e, t, n, r, i, a) {
59
60
  n || Array.isArray(_) || (_ = [_]);
60
61
  var b = {}, x = [], S = i === 3 ? "get" : i === 4 || p ? "set" : "value";
61
62
  d ? (f || p ? b = {
62
- get: j(function() {
63
+ get: P(function() {
63
64
  return v(this);
64
65
  }, r, "get"),
65
66
  set: function(e) {
66
67
  t[4](this, e);
67
68
  }
68
- } : b[S] = v, f || j(b[S], r, i === 2 ? "" : S)) : f || (b = Object.getOwnPropertyDescriptor(e, r));
69
+ } : b[S] = v, f || P(b[S], r, i === 2 ? "" : S)) : f || (b = Object.getOwnPropertyDescriptor(e, r));
69
70
  }
70
71
  for (var C = e, w = _.length - 1; w >= 0; w -= n ? 2 : 1) {
71
72
  var T = _[w], E = n ? _[w - 1] : void 0, D = {}, O = {
@@ -95,10 +96,10 @@ function O(e, t, n, r, i, a) {
95
96
  }, (i < 2 || i === 4) && (A = function(e, t) {
96
97
  e[r] = t;
97
98
  }));
98
- var M = O.access = { has: d ? m.bind() : function(e) {
99
+ var j = O.access = { has: d ? m.bind() : function(e) {
99
100
  return r in e;
100
101
  } };
101
- if (k && (M.get = k), A && (M.set = A), C = T.call(E, p ? {
102
+ if (k && (j.get = k), A && (j.set = A), C = T.call(E, p ? {
102
103
  get: b.get,
103
104
  set: b.set
104
105
  } : b[S], O), p) {
@@ -125,7 +126,7 @@ function O(e, t, n, r, i, a) {
125
126
  if (arguments.length >= 6) var d = a[Symbol.metadata || Symbol.for("Symbol.metadata")];
126
127
  var f = Object.create(d ?? null), p = function(e, t, n, r) {
127
128
  var i, a, o = [], c = function(t) {
128
- return M(t) === e;
129
+ return F(t) === e;
129
130
  }, u = /* @__PURE__ */ new Map();
130
131
  function d(e) {
131
132
  e && o.push(s.bind(null, e));
@@ -139,7 +140,7 @@ function O(e, t, n, r, i, a) {
139
140
  if (!0 === x || x === 3 && m !== 4 || x === 4 && m !== 3) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
140
141
  u.set(b, !(m > 2) || m);
141
142
  }
142
- l(v ? e : e.prototype, p, _, g ? "#" + h : k(h), m, r, v ? a ||= [] : i ||= [], o, v, g, y, m === 1, v && g ? c : n);
143
+ l(v ? e : e.prototype, p, _, g ? "#" + h : M(h), m, r, v ? a ||= [] : i ||= [], o, v, g, y, m === 1, v && g ? c : n);
143
144
  }
144
145
  }
145
146
  return d(i), d(a), o;
@@ -152,11 +153,11 @@ function O(e, t, n, r, i, a) {
152
153
  }
153
154
  };
154
155
  }
155
- function k(e) {
156
- var t = A(e, "string");
156
+ function M(e) {
157
+ var t = N(e, "string");
157
158
  return typeof t == "symbol" ? t : t + "";
158
159
  }
159
- function A(e, t) {
160
+ function N(e, t) {
160
161
  if (typeof e != "object" || !e) return e;
161
162
  var n;
162
163
  if (typeof Symbol < "u" && (n = e[Symbol.toPrimitive]) !== void 0) {
@@ -166,7 +167,7 @@ function A(e, t) {
166
167
  }
167
168
  return (t === "string" ? String : Number)(e);
168
169
  }
169
- function j(e, t, n) {
170
+ function P(e, t, n) {
170
171
  typeof t == "symbol" && (t = (t = t.description) ? "[" + t + "]" : "");
171
172
  try {
172
173
  Object.defineProperty(e, "name", {
@@ -176,30 +177,36 @@ function j(e, t, n) {
176
177
  } catch {}
177
178
  return e;
178
179
  }
179
- function M(e) {
180
+ function F(e) {
180
181
  if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (e === null ? "null" : typeof e));
181
182
  return e;
182
183
  }
183
- function N(e) {
184
+ function I(e) {
184
185
  return e;
185
186
  }
186
- h = [t("solid-ui-access-control-shared-access")];
187
- var P;
188
- new (b = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), x = (g = s({ attribute: !1 }), v = c(), "accessGrantViewModels"), u = class extends n {
187
+ g = [t("solid-ui-access-control-shared-access")];
188
+ var L;
189
+ new (C = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), p = /*#__PURE__*/ new WeakMap(), w = (_ = s({ attribute: !1 }), y = s({ type: Boolean }), x = c(), "accessGrantViewModels"), u = class extends n {
189
190
  constructor(...e) {
190
- super(...e), S(this, d, (p(this), _(this, []))), S(this, f, y(this, ""));
191
+ super(...e), T(this, d, (m(this), v(this, []))), T(this, f, b(this, !1)), T(this, p, S(this, ""));
191
192
  }
192
- get [x]() {
193
- return T(d, this);
193
+ get [w]() {
194
+ return O(d, this);
194
195
  }
195
196
  set accessGrantViewModels(e) {
196
- w(d, this, e);
197
+ D(d, this, e);
198
+ }
199
+ get disabled() {
200
+ return O(f, this);
201
+ }
202
+ set disabled(e) {
203
+ D(f, this, e);
197
204
  }
198
205
  get searchValue() {
199
- return T(f, this);
206
+ return O(p, this);
200
207
  }
201
208
  set searchValue(e) {
202
- w(f, this, e);
209
+ D(p, this, e);
203
210
  }
204
211
  onSearchInput(e) {
205
212
  let t = e.currentTarget;
@@ -210,14 +217,14 @@ new (b = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), x =
210
217
  typeof t.label == "string" && (this.searchValue = t.label);
211
218
  }
212
219
  onAccessGrantRoleChange(e, t) {
213
- let n = t.detail.option.value;
214
- if (typeof n != "string" || !a.includes(n)) return;
215
- let r = {
220
+ let n = t.detail.option.value, r = typeof n == "string" ? a.find((e) => e === n) : void 0;
221
+ if (!r) return;
222
+ let i = {
216
223
  id: e,
217
- role: n
224
+ role: r
218
225
  };
219
226
  this.dispatchEvent(new CustomEvent("access-grant-role-changed", {
220
- detail: r,
227
+ detail: i,
221
228
  bubbles: !0,
222
229
  composed: !0
223
230
  }));
@@ -239,7 +246,7 @@ new (b = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), x =
239
246
  let n = this.getAuthorizationBadge(e, t);
240
247
  return o`
241
248
  <div class="access-grants-image access-grants-image--${n.kind}">
242
- ${n.image ? o`<img src=${n.image} alt="" aria-hidden="true" />` : o`<span aria-hidden="true">${n.text}</span>`}
249
+ ${n.image ? o`<img src=${n.image} alt="" aria-hidden="true" />` : n.kind === "origin" ? o`<icon-lucide-globe aria-hidden="true"></icon-lucide-globe>` : o`<span aria-hidden="true">${n.text}</span>`}
243
250
  </div>
244
251
  `;
245
252
  }
@@ -268,7 +275,8 @@ new (b = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), x =
268
275
  }
269
276
  return t.origin[0] ? {
270
277
  kind: "origin",
271
- text: "O"
278
+ text: "O",
279
+ image: ""
272
280
  } : {
273
281
  kind: "unknown",
274
282
  text: "?"
@@ -281,6 +289,7 @@ new (b = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), x =
281
289
  return o`
282
290
  <solid-ui-combobox
283
291
  class="access-role-select access-role-select--compact access-grants-role access-grants-role--editable ${e === "Owner" ? "access-grants-role--owner" : ""}"
292
+ .disabled=${this.disabled}
284
293
  .value=${e}
285
294
  @change=${(e) => this.onAccessGrantRoleChange(t, e)}
286
295
  >
@@ -298,7 +307,7 @@ new (b = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), x =
298
307
  return o`
299
308
  <section aria-labelledby="access-grants-heading">
300
309
  <div class="access-grants-header">
301
- <h2 id="access-grants-heading">Share with</h2>
310
+ <h2 id="access-grants-heading">Shared with</h2>
302
311
  <solid-ui-combobox
303
312
  class="access-grants-search-input"
304
313
  label="Search access grants"
@@ -323,20 +332,27 @@ new (b = (d = /*#__PURE__*/ new WeakMap(), f = /*#__PURE__*/ new WeakMap(), x =
323
332
  </section>
324
333
  `;
325
334
  }
326
- }, {e: [_, y, p], c: [P, m]} = O(u, [[
327
- g,
328
- 1,
329
- "accessGrantViewModels"
330
- ], [
331
- v,
332
- 1,
333
- "searchValue"
334
- ]], h, 0, void 0, n), u), l = class extends N {
335
+ }, {e: [v, b, S, m], c: [L, h]} = j(u, [
336
+ [
337
+ _,
338
+ 1,
339
+ "accessGrantViewModels"
340
+ ],
341
+ [
342
+ y,
343
+ 1,
344
+ "disabled"
345
+ ],
346
+ [
347
+ x,
348
+ 1,
349
+ "searchValue"
350
+ ]
351
+ ], g, 0, void 0, n), u), l = class extends I {
335
352
  constructor() {
336
- super(P), D(this, "styles", r), m();
353
+ super(L), A(this, "styles", r), h();
337
354
  }
338
- }, D(l, b, void 0), l)();
339
- //#endregion
340
- export { P as default };
355
+ }, A(l, C, void 0), l)();
356
+ export { L as default };
341
357
 
342
358
  //# sourceMappingURL=AccessControlSharedAccess.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessControlSharedAccess.esm.js","names":["customElement","WebComponent","html","property","state","ACCESS_ROLES","findImage","sym","styles","_classDecs","_AccessControlSharedA","_AccessControlSharedA2","_A","WeakMap","_B","_ref","_accessGrantViewModelsDecs","attribute","_searchValueDecs","_AccessControlSharedAccess","AccessControlSharedAccess","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_accessGrantViewModels","_init_searchValue","_classPrivateFieldGet","accessGrantViewModels","v","_classPrivateFieldSet","searchValue","onSearchInput","event","target","currentTarget","value","onSearchSelect","option","detail","label","onAccessGrantRoleChange","id","includes","role","dispatchEvent","CustomEvent","bubbles","composed","getFilteredAccessGrants","query","trim","toLowerCase","filter","subjectLabel","subjects","length","renderAccessGrant","entry","renderAuthorizationBadge","authorization","renderAuthorizationRole","badge","getAuthorizationBadge","kind","image","text","agent","getInitials","agentGroup","agentClass","origin","maxWords","parts","split","Boolean","slice","initials","map","part","join","toUpperCase","renderGrantRoleOptions","render","accessGrants","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","styles","WebComponent","AccessControlSharedAccess_styles_default","_Class","_AccessControlSharedAccess","_A","_B","_initProto","_initClass","_classDecs","_accessGrantViewModelsDecs","_init_accessGrantViewModels","_searchValueDecs","_init_searchValue","_AccessControlSharedA2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","customElement","_AccessControlSharedA","property","state","args","target","event","option","value","ACCESS_ROLES","detail","query","subjects","subjectLabel","entry","badge","authorization","agent","image","findImage","sym","agentClass","maxWords","part","role","id","accessGrants"],"sources":["../../../src/components/access-control-modal/AccessControlSharedAccess.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { ACCESS_ROLES, type AccessRole } from 'solid-logic'\nimport { findImage } from '@/widgets'\nimport type { ComboboxChangeEvent } from '@/components/combobox'\nimport { sym } from 'rdflib'\n\nimport '@/components/combobox'\nimport '@/components/combobox-option'\n\nimport styles from './AccessControlSharedAccess.styles.css'\nimport type { AccessGrantRoleChangedDetail, AccessGrantViewModel } from './types'\n\n@customElement('solid-ui-access-control-shared-access')\nexport default class AccessControlSharedAccess extends WebComponent {\n static styles = styles\n\n @property({ attribute: false })\n accessor accessGrantViewModels: AccessGrantViewModel[] = []\n\n @state()\n private accessor searchValue = ''\n\n private onSearchInput (event: Event) {\n const target = event.currentTarget as { value?: string | null } | null\n this.searchValue = typeof target?.value === 'string' ? target.value : ''\n }\n\n private onSearchSelect (event: ComboboxChangeEvent) {\n const option = event.detail.option\n if (typeof option.label !== 'string') {\n return\n }\n\n this.searchValue = option.label\n }\n\n private onAccessGrantRoleChange (id: string, event: ComboboxChangeEvent) {\n const value = event.detail.option.value\n if (typeof value !== 'string' || !ACCESS_ROLES.includes(value as AccessRole)) {\n return\n }\n\n const detail: AccessGrantRoleChangedDetail = {\n id,\n role: value as AccessRole\n }\n\n this.dispatchEvent(new CustomEvent<AccessGrantRoleChangedDetail>('access-grant-role-changed', {\n detail,\n bubbles: true,\n composed: true\n }))\n }\n\n private getFilteredAccessGrants () {\n const query = this.searchValue.trim().toLowerCase()\n\n return this.accessGrantViewModels.filter(({ subjectLabel, subjects }) => {\n if (!subjects.length) {\n return false\n }\n\n return !query || subjectLabel.toLowerCase().includes(query)\n })\n }\n\n private renderAccessGrant (entry: AccessGrantViewModel) {\n return html`\n <li>\n ${this.renderAuthorizationBadge(entry.authorization, entry.subjectLabel)}\n <h3>${entry.subjectLabel}</h3>\n ${this.renderAuthorizationRole(entry.role, entry.id)}\n </li>\n `\n }\n\n private renderAuthorizationBadge (authorization: AccessGrantViewModel['authorization'], subjectLabel: string) {\n const badge = this.getAuthorizationBadge(authorization, subjectLabel)\n\n return html`\n <div class=\"access-grants-image access-grants-image--${badge.kind}\">\n ${badge.image\n ? html`<img src=${badge.image} alt=\"\" aria-hidden=\"true\" />`\n : html`<span aria-hidden=\"true\">${badge.text}</span>`}\n </div>\n `\n }\n\n private getAuthorizationBadge (\n authorization: AccessGrantViewModel['authorization'],\n subjectLabel: string\n ) {\n const agent = authorization.agent[0]\n if (agent) {\n const image = findImage(sym(agent))\n return {\n kind: 'agent' as const,\n image,\n text: image ? '' : this.getInitials(subjectLabel, 2)\n }\n }\n\n const agentGroup = authorization.agentGroup[0]\n if (agentGroup) {\n return {\n kind: 'agentGroup' as const,\n text: this.getInitials(subjectLabel, 1)\n }\n }\n\n const agentClass = authorization.agentClass[0]\n if (agentClass) {\n const image = findImage(sym(agentClass))\n return {\n kind: 'agentClass' as const,\n image,\n text: image ? '' : this.getInitials(subjectLabel, 2)\n }\n }\n\n if (authorization.origin[0]) {\n return {\n kind: 'origin' as const,\n text: 'O'\n }\n }\n\n return {\n kind: 'unknown' as const,\n text: '?'\n }\n }\n\n private getInitials (value: string, maxWords = 2): string {\n const parts = value.split(/\\s+/).filter(Boolean).slice(0, maxWords)\n const initials = parts.map(part => part[0]).join('')\n return (initials || value.slice(0, maxWords)).toUpperCase()\n }\n\n private renderAuthorizationRole (role: AccessRole, id: string) {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-grants-role access-grants-role--editable ${role === 'Owner' ? 'access-grants-role--owner' : ''}\"\n .value=${role}\n @change=${(event: ComboboxChangeEvent) => this.onAccessGrantRoleChange(id, event)}\n >\n ${this.renderGrantRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderGrantRoleOptions () {\n return ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role === 'No Access' ? 'Remove' : role}</solid-ui-combobox-option>\n `)\n }\n\n protected render () {\n const accessGrants = this.getFilteredAccessGrants()\n\n return html`\n <section aria-labelledby=\"access-grants-heading\">\n <div class=\"access-grants-header\">\n <h2 id=\"access-grants-heading\">Share with</h2>\n <solid-ui-combobox\n class=\"access-grants-search-input\"\n label=\"Search access grants\"\n .srOnlyLabel=${true}\n .value=${this.searchValue}\n placeholder=\"Search\"\n @input=${this.onSearchInput}\n @change=${this.onSearchSelect}\n >\n ${this.accessGrantViewModels\n .filter(({ subjects }) => subjects.length > 0)\n .map(({ subjectLabel }) => html`\n <solid-ui-combobox-option .value=${subjectLabel}>\n ${subjectLabel}\n </solid-ui-combobox-option>\n `)}\n </solid-ui-combobox>\n </div>\n <div class=\"access-grants-list\">\n <ul>\n ${accessGrants.length > 0\n ? accessGrants.map(entry => this.renderAccessGrant(entry))\n : html`<li>No access grants</li>`}\n </ul>\n </div>\n </section>\n `\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AccessControlSharedAccess.esm.js","names":["customElement","WebComponent","html","property","state","ACCESS_ROLES","findImage","sym","styles","_classDecs","_AccessControlSharedA","_AccessControlSharedA2","_A","WeakMap","_B","_C","_ref","_accessGrantViewModelsDecs","attribute","_disabledDecs","type","Boolean","_searchValueDecs","_AccessControlSharedAccess","AccessControlSharedAccess","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_accessGrantViewModels","_init_disabled","_init_searchValue","_classPrivateFieldGet","accessGrantViewModels","v","_classPrivateFieldSet","disabled","searchValue","onSearchInput","event","target","currentTarget","value","onSearchSelect","option","detail","label","onAccessGrantRoleChange","id","accessRole","find","candidate","undefined","role","dispatchEvent","CustomEvent","bubbles","composed","getFilteredAccessGrants","query","trim","toLowerCase","filter","subjectLabel","subjects","length","includes","renderAccessGrant","entry","renderAuthorizationBadge","authorization","renderAuthorizationRole","badge","getAuthorizationBadge","kind","image","text","agent","getInitials","agentGroup","agentClass","origin","maxWords","parts","split","slice","initials","map","part","join","toUpperCase","renderGrantRoleOptions","render","accessGrants","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","styles","WebComponent","AccessControlSharedAccess_styles_default","_Class","_AccessControlSharedAccess","_A","_B","_C","_initProto","_initClass","_classDecs","_accessGrantViewModelsDecs","_init_accessGrantViewModels","_disabledDecs","_init_disabled","_searchValueDecs","_init_searchValue","_AccessControlSharedA2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","customElement","_AccessControlSharedA","property","state","args","target","event","option","value","accessRole","ACCESS_ROLES","candidate","detail","query","subjects","subjectLabel","entry","badge","authorization","agent","image","findImage","sym","agentClass","maxWords","part","role","id","accessGrants"],"sources":["../../../src/components/access-control-modal/AccessControlSharedAccess.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { ACCESS_ROLES, type AccessRole } from 'solid-logic'\nimport { findImage } from '@/widgets'\nimport type { ComboboxChangeEvent } from '@/components/combobox'\nimport { sym } from 'rdflib'\n\nimport '@/components/combobox'\nimport '@/components/combobox-option'\nimport '~icons/lucide/globe'\n\nimport styles from './AccessControlSharedAccess.styles.css'\nimport type { AccessGrantRoleChangedDetail, AccessGrantViewModel } from './types'\n\n@customElement('solid-ui-access-control-shared-access')\nexport default class AccessControlSharedAccess extends WebComponent {\n static styles = styles\n\n @property({ attribute: false })\n accessor accessGrantViewModels: AccessGrantViewModel[] = []\n\n @property({ type: Boolean })\n accessor disabled = false\n\n @state()\n private accessor searchValue = ''\n\n private onSearchInput (event: Event) {\n const target = event.currentTarget as { value?: string | null } | null\n this.searchValue = typeof target?.value === 'string' ? target.value : ''\n }\n\n private onSearchSelect (event: ComboboxChangeEvent) {\n const option = event.detail.option\n if (typeof option.label !== 'string') {\n return\n }\n\n this.searchValue = option.label\n }\n\n private onAccessGrantRoleChange (id: string, event: ComboboxChangeEvent) {\n const value = event.detail.option.value\n const accessRole = typeof value === 'string'\n ? ACCESS_ROLES.find(candidate => candidate === value)\n : undefined\n if (!accessRole) {\n return\n }\n\n const detail: AccessGrantRoleChangedDetail = {\n id,\n role: accessRole\n }\n\n this.dispatchEvent(new CustomEvent<AccessGrantRoleChangedDetail>('access-grant-role-changed', {\n detail,\n bubbles: true,\n composed: true\n }))\n }\n\n private getFilteredAccessGrants () {\n const query = this.searchValue.trim().toLowerCase()\n\n return this.accessGrantViewModels.filter(({ subjectLabel, subjects }) => {\n if (!subjects.length) {\n return false\n }\n\n return !query || subjectLabel.toLowerCase().includes(query)\n })\n }\n\n private renderAccessGrant (entry: AccessGrantViewModel) {\n return html`\n <li>\n ${this.renderAuthorizationBadge(entry.authorization, entry.subjectLabel)}\n <h3>${entry.subjectLabel}</h3>\n ${this.renderAuthorizationRole(entry.role, entry.id)}\n </li>\n `\n }\n\n private renderAuthorizationBadge (authorization: AccessGrantViewModel['authorization'], subjectLabel: string) {\n const badge = this.getAuthorizationBadge(authorization, subjectLabel)\n\n return html`\n <div class=\"access-grants-image access-grants-image--${badge.kind}\">\n ${badge.image\n ? html`<img src=${badge.image} alt=\"\" aria-hidden=\"true\" />`\n : badge.kind === 'origin'\n ? html`<icon-lucide-globe aria-hidden=\"true\"></icon-lucide-globe>`\n : html`<span aria-hidden=\"true\">${badge.text}</span>`}\n </div>\n `\n }\n\n private getAuthorizationBadge (\n authorization: AccessGrantViewModel['authorization'],\n subjectLabel: string\n ) {\n const agent = authorization.agent[0]\n if (agent) {\n const image = findImage(sym(agent))\n return {\n kind: 'agent' as const,\n image,\n text: image ? '' : this.getInitials(subjectLabel, 2)\n }\n }\n\n const agentGroup = authorization.agentGroup[0]\n if (agentGroup) {\n return {\n kind: 'agentGroup' as const,\n text: this.getInitials(subjectLabel, 1)\n }\n }\n\n const agentClass = authorization.agentClass[0]\n if (agentClass) {\n const image = findImage(sym(agentClass))\n return {\n kind: 'agentClass' as const,\n image,\n text: image ? '' : this.getInitials(subjectLabel, 2)\n }\n }\n\n if (authorization.origin[0]) {\n return {\n kind: 'origin' as const,\n text: 'O',\n image: ''\n }\n }\n\n return {\n kind: 'unknown' as const,\n text: '?'\n }\n }\n\n private getInitials (value: string, maxWords = 2): string {\n const parts = value.split(/\\s+/).filter(Boolean).slice(0, maxWords)\n const initials = parts.map(part => part[0]).join('')\n return (initials || value.slice(0, maxWords)).toUpperCase()\n }\n\n private renderAuthorizationRole (role: AccessRole, id: string) {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-grants-role access-grants-role--editable ${role === 'Owner' ? 'access-grants-role--owner' : ''}\"\n .disabled=${this.disabled}\n .value=${role}\n @change=${(event: ComboboxChangeEvent) => this.onAccessGrantRoleChange(id, event)}\n >\n ${this.renderGrantRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderGrantRoleOptions () {\n return ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role === 'No Access' ? 'Remove' : role}</solid-ui-combobox-option>\n `)\n }\n\n protected render () {\n const accessGrants = this.getFilteredAccessGrants()\n\n return html`\n <section aria-labelledby=\"access-grants-heading\">\n <div class=\"access-grants-header\">\n <h2 id=\"access-grants-heading\">Shared with</h2>\n <solid-ui-combobox\n class=\"access-grants-search-input\"\n label=\"Search access grants\"\n .srOnlyLabel=${true}\n .value=${this.searchValue}\n placeholder=\"Search\"\n @input=${this.onSearchInput}\n @change=${this.onSearchSelect}\n >\n ${this.accessGrantViewModels\n .filter(({ subjects }) => subjects.length > 0)\n .map(({ subjectLabel }) => html`\n <solid-ui-combobox-option .value=${subjectLabel}>\n ${subjectLabel}\n </solid-ui-combobox-option>\n `)}\n </solid-ui-combobox>\n </div>\n <div class=\"access-grants-list\">\n <ul>\n ${accessGrants.length > 0\n ? accessGrants.map(entry => this.renderAccessGrant(entry))\n : html`<li>No access grants</li>`}\n </ul>\n </div>\n </section>\n `\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { css as e } from "lit";
2
- //#region src/components/access-control-modal/AccessControlSharedAccess.styles.css
2
+ // src/components/access-control-modal/AccessControlSharedAccess.styles.css
3
3
  var t = e`:host h2{color:var(--solid-ui-color-gray-900,#101828);font-size:var(--solid-ui-font-size-md,1rem);font-weight:600}:host .access-grants-header,:host .access-grants-list{align-self:stretch;padding:0 10px}:host .access-grants-header{justify-content:space-between;align-items:center;gap:15px;display:flex}:host .access-grants-header .access-grants-search-input{--solid-ui-input-border-color:transparent;width:12ch;min-width:12ch;color:var(--solid-ui-color-zinc-500,#71717b);font-size:var(--solid-ui-font-size-sm,.875rem);flex:none;font-weight:500}:host .access-grants-list{align-items:flex-start;gap:20px;display:flex}:host .access-grants-list ul{box-sizing:border-box;border:1px solid var(--solid-ui-color-gray-200,#e5e7eb);border-radius:10px;flex-direction:column;flex:1 0 0;align-items:flex-start;gap:15px;height:195px;min-height:0;padding:15px;display:flex;overflow:hidden auto}:host .access-grants-list li{flex:none;align-items:center;gap:10px;width:100%;display:flex}:host .access-grants-list li .access-grants-image{aspect-ratio:1;width:30px;height:30px;color:var(--solid-ui-color-white,#fff);text-align:center;font-size:var(--solid-ui-font-size-xs,.75rem);border-radius:999px;flex:0 0 30px;justify-content:center;align-items:center;font-weight:500;display:flex;overflow:hidden}:host .access-grants-list li .access-grants-image img{object-fit:cover;border-radius:999px;width:100%;height:100%;display:flex}:host .access-grants-list li .access-grants-image span{justify-content:center;align-items:center;width:100%;height:100%;line-height:1;display:flex}:host .access-grants-list li .access-grants-image--agentGroup{background:var(--solid-ui-color-blue-900,#083575)}:host .access-grants-list li .access-grants-image--agent,:host .access-grants-list li .access-grants-image--agentClass{background:var(--solid-ui-color-lavender-300,#e6dcff)}:host .access-grants-list li .access-grants-image--origin{background:var(--solid-ui-color-green-700,#15803d)}:host .access-grants-list li .access-grants-image--unknown{background:var(--solid-ui-color-gray-300,#d1d5db)}:host .access-grants-list li h3{min-width:0;color:var(--solid-ui-color-gray-800,#1e2939);font-size:var(--solid-ui-font-size-xs,.75rem);flex:auto;font-weight:600}:host .access-grants-list li span{text-align:right;flex:none;margin-left:auto}:host .access-grants-list li .access-grants-role{font-size:var(--solid-ui-font-size-xs,.75rem);flex:none;margin-left:auto}:host .access-grants-list li .access-grants-role--owner{font-size:var(--solid-ui-font-size-xs,.75rem)}:host .access-grants-list li .access-grants-role--editable{max-width:100%}:host .access-role-select--compact{--solid-ui-input-border-color:transparent;flex:0 0 110px;width:110px;min-width:110px;max-width:100%;margin-top:0}:host .access-grants-list li .access-role-select--compact{flex:0 0 110px;width:110px;min-width:110px}`;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=AccessControlSharedAccess.styles.esm.js.map
@@ -1,2 +1,2 @@
1
- const e=require("../../utils/label.cjs.js");let t=require("rdflib"),n=require("solid-logic");function r(e){return{...e,agentClass:e.agentClass.filter(e=>e!==n.Authenticated.iri&&e!==n.Public.iri)}}function i(e){return[{type:`agent`,iris:e.agent},{type:`agentGroup`,iris:e.agentGroup},{type:`agentClass`,iris:e.agentClass},{type:`origin`,iris:e.origin}].flatMap(({type:e,iris:t})=>t.map(t=>({type:e,iri:t})))}function a(e){return i(e).map(e=>`${e.type}:${e.iri}`).sort().join(`|`)}function o(e){let t=new Map;return e.map(e=>{let n=a(r(e)),i=t.get(n)??0;return t.set(n,i+1),i===0?n:`${n}#${i}`})}function s(n){let r=[...n.agent,...n.agentGroup,...n.agentClass,...n.origin];return r.length?r.map(n=>e.label((0,t.sym)(n))).join(`, `):`Unknown access holder`}function c(e){return n.solidLogicSingleton.acl.roleFromModes(e.mode)}function l(e){let t=r(e);return{id:a(t),authorization:t,role:c(t),initialRole:c(e),subjectLabel:s(t),subjects:i(t)}}function u(e){let t=o(e);return e.map((e,n)=>({...l(e),id:t[n]}))}function d(e){return[...e].sort((t,n)=>{let r=t.role===`Owner`,i=n.role===`Owner`;return r&&!i?-1:!r&&i?1:e.indexOf(t)-e.indexOf(n)})}function f(e){return d(e).filter(({role:e,initialRole:t,subjects:n})=>e!==t&&n.length>0).map(({authorization:e,subjects:t,role:n})=>({authorization:e,subjects:t,role:n}))}function p(e){let t=e.find(e=>e.agentClass.includes(n.Authenticated.iri));return t?c(t):`No Access`}function m(e){let t=e.find(e=>e.agentClass.includes(n.Public.iri));return t?n.solidLogicSingleton.acl.publicRoleFromModes(t.mode):`No Access`}function h(r){return r.iri===n.Authenticated.iri?`Authenticated users`:r.iri===n.Public.iri?`Public`:e.label((0,t.sym)(r.iri)).trim()||r.iri}exports.createAccessGrantDraft=l,exports.createAccessGrantDrafts=u,exports.getAccessGrantId=a,exports.getAccessGrantIds=o,exports.getAccessGrantViewModels=d,exports.getAccessSubjectLabel=h,exports.getAuthenticatedAccessRole=p,exports.getAuthorizationRole=c,exports.getAuthorizationSubjectEntries=i,exports.getAuthorizationSubjectLabel=s,exports.getChangedAccessGrants=f,exports.getPublicAccessRole=m,exports.getSharedAuthorization=r;
1
+ const e=require("../../utils/label.cjs.js");let t=require("rdflib"),n=require("solid-logic");function r(e){return{...e,agentClass:e.agentClass.filter(e=>e!==n.Authenticated.iri&&e!==n.Public.iri)}}function i(e){return[{type:`agent`,iris:e.agent},{type:`agentGroup`,iris:e.agentGroup},{type:`agentClass`,iris:e.agentClass},{type:`origin`,iris:e.origin}].flatMap(({type:e,iris:t})=>t.map(t=>({type:e,iri:t})))}function a(e){return e.id?e.id:i(e).map(e=>`${e.type}:${e.iri}`).sort().join(`|`)}function o(e){let t=new Map;return e.map(e=>{let n=a(r(e)),i=t.get(n)??0;return t.set(n,i+1),i===0?n:`${n}#${i}`})}function s(n){let r=[...n.agent,...n.agentGroup,...n.agentClass,...n.origin];return r.length?r.map(n=>e.label((0,t.sym)(n))).join(`, `):`Unknown access holder`}function c(e){return n.solidLogicSingleton.acl.roleFromModes(e.mode)}function l(e){let t=r(e);return{id:a(t),authorization:t,role:c(t),initialRole:c(e),subjectLabel:s(t),subjects:i(t)}}function u(e){let t=o(e);return e.map((e,n)=>({...l(e),id:t[n]}))}function d(e){return[...e].sort((t,n)=>{let r=t.role===`Owner`,i=n.role===`Owner`;return r&&!i?-1:!r&&i?1:e.indexOf(t)-e.indexOf(n)})}function f(e){return d(e).filter(({role:e,initialRole:t,subjects:n})=>e!==t&&n.length>0).map(({authorization:e,subjects:t,role:n})=>({authorization:e,subjects:t,role:n}))}function p(e){let t=e.filter(e=>e.agentClass.includes(n.Authenticated.iri)).flatMap(e=>e.mode);return t.length?n.solidLogicSingleton.acl.roleFromModes(t):`No Access`}function m(e){let t=e.filter(e=>e.agentClass.includes(n.Public.iri)).flatMap(e=>e.mode);return t.length?n.solidLogicSingleton.acl.publicRoleFromModes(t):`No Access`}function h(r){return r.iri===n.Authenticated.iri?`Authenticated users`:r.iri===n.Public.iri?`Public`:e.label((0,t.sym)(r.iri)).trim()||r.iri}exports.createAccessGrantDraft=l,exports.createAccessGrantDrafts=u,exports.getAccessGrantId=a,exports.getAccessGrantIds=o,exports.getAccessGrantViewModels=d,exports.getAccessSubjectLabel=h,exports.getAuthenticatedAccessRole=p,exports.getAuthorizationRole=c,exports.getAuthorizationSubjectEntries=i,exports.getAuthorizationSubjectLabel=s,exports.getChangedAccessGrants=f,exports.getPublicAccessRole=m,exports.getSharedAuthorization=r;
2
2
  //# sourceMappingURL=accessGrantDrafts.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessGrantDrafts.cjs.js","names":["label","Authenticated","Public","solidLogicSingleton","sym","getSharedAuthorization","authorization","agentClass","filter","iri","getAuthorizationSubjectEntries","subjectSets","type","iris","agent","agentGroup","origin","flatMap","map","getAccessGrantId","subject","sort","join","getAccessGrantIds","authorizations","occurrences","Map","sharedAuthorization","baseId","occurrence","get","set","getAuthorizationSubjectLabel","subjects","length","getAuthorizationRole","acl","roleFromModes","mode","createAccessGrantDraft","id","role","initialRole","subjectLabel","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","left","right","leftIsOwner","rightIsOwner","indexOf","getChangedAccessGrants","getAuthenticatedAccessRole","accessGrants","find","item","includes","getPublicAccessRole","publicRoleFromModes","getAccessSubjectLabel","trim","Authenticated","Public","label","sym","solidLogicSingleton","require_label","rdflib","solid_logic","getSharedAuthorization","authorization","iri","getAuthorizationSubjectEntries","iris","getAccessGrantId","subject","getAccessGrantIds","occurrences","authorizations","baseId","occurrence","getAuthorizationSubjectLabel","subjects","getAuthorizationRole","createAccessGrantDraft","sharedAuthorization","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","leftIsOwner","left","rightIsOwner","right","getChangedAccessGrants","role","initialRole","getAuthenticatedAccessRole","accessGrants","item","getPublicAccessRole","getAccessSubjectLabel"],"sources":["../../../src/components/access-control-modal/accessGrantDrafts.ts"],"sourcesContent":["import { label } from '@/utils/label'\nimport { Authenticated, Public, solidLogicSingleton, type AccessRole, type AccessSubject } from 'solid-logic'\nimport { sym } from 'rdflib'\nimport type { AccessAuthorization, AccessGrantDraft, AccessGrantViewModel, AuthorizationSubjectSet, ChangedAccessGrant } from './types'\n\nexport function getSharedAuthorization (authorization: AccessAuthorization): AccessAuthorization {\n return {\n ...authorization,\n agentClass: authorization.agentClass.filter(iri => iri !== Authenticated.iri && iri !== Public.iri)\n }\n}\n\nexport function getAuthorizationSubjectEntries (authorization: AccessAuthorization): AccessSubject[] {\n const subjectSets: AuthorizationSubjectSet[] = [\n { type: 'agent', iris: authorization.agent },\n { type: 'agentGroup', iris: authorization.agentGroup },\n { type: 'agentClass', iris: authorization.agentClass },\n { type: 'origin', iris: authorization.origin }\n ]\n\n return subjectSets.flatMap(({ type, iris }) => iris.map(iri => ({ type, iri })))\n}\n\nexport function getAccessGrantId (authorization: AccessAuthorization): string {\n return getAuthorizationSubjectEntries(authorization)\n .map(subject => `${subject.type}:${subject.iri}`)\n .sort()\n .join('|')\n}\n\nexport function getAccessGrantIds (authorizations: AccessAuthorization[]): string[] {\n const occurrences = new Map<string, number>()\n\n return authorizations.map(authorization => {\n const sharedAuthorization = getSharedAuthorization(authorization)\n const baseId = getAccessGrantId(sharedAuthorization)\n const occurrence = occurrences.get(baseId) ?? 0\n occurrences.set(baseId, occurrence + 1)\n return occurrence === 0 ? baseId : `${baseId}#${occurrence}`\n })\n}\n\nexport function getAuthorizationSubjectLabel (authorization: AccessAuthorization): string {\n const subjects = [\n ...authorization.agent,\n ...authorization.agentGroup,\n ...authorization.agentClass,\n ...authorization.origin\n ]\n return subjects.length ? subjects.map(subject => label(sym(subject))).join(', ') : 'Unknown access holder'\n}\n\nexport function getAuthorizationRole (authorization: AccessAuthorization): AccessRole {\n return solidLogicSingleton.acl.roleFromModes(authorization.mode)\n}\n\nexport function createAccessGrantDraft (authorization: AccessAuthorization): AccessGrantDraft {\n const sharedAuthorization = getSharedAuthorization(authorization)\n return {\n id: getAccessGrantId(sharedAuthorization),\n authorization: sharedAuthorization,\n role: getAuthorizationRole(sharedAuthorization),\n initialRole: getAuthorizationRole(authorization),\n subjectLabel: getAuthorizationSubjectLabel(sharedAuthorization),\n subjects: getAuthorizationSubjectEntries(sharedAuthorization)\n }\n}\n\nexport function createAccessGrantDrafts (authorizations: AccessAuthorization[]): AccessGrantDraft[] {\n const ids = getAccessGrantIds(authorizations)\n return authorizations.map((authorization, index) => ({\n ...createAccessGrantDraft(authorization),\n id: ids[index]\n }))\n}\n\nexport function getAccessGrantViewModels (drafts: AccessGrantDraft[]): AccessGrantViewModel[] {\n return [...drafts]\n .sort((left, right) => {\n const leftIsOwner = left.role === 'Owner'\n const rightIsOwner = right.role === 'Owner'\n\n if (leftIsOwner && !rightIsOwner) return -1\n if (!leftIsOwner && rightIsOwner) return 1\n return drafts.indexOf(left) - drafts.indexOf(right)\n })\n}\n\nexport function getChangedAccessGrants (drafts: AccessGrantDraft[]): ChangedAccessGrant[] {\n return getAccessGrantViewModels(drafts)\n .filter(({ role, initialRole, subjects }) => role !== initialRole && subjects.length > 0)\n .map(({ authorization, subjects, role }) => ({ authorization, subjects, role }))\n}\n\nexport function getAuthenticatedAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const authorization = accessGrants.find(item => item.agentClass.includes(Authenticated.iri))\n return authorization ? getAuthorizationRole(authorization) : 'No Access'\n}\n\nexport function getPublicAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const authorization = accessGrants.find(item => item.agentClass.includes(Public.iri))\n return authorization ? solidLogicSingleton.acl.publicRoleFromModes(authorization.mode) : 'No Access'\n}\n\nexport function getAccessSubjectLabel (subject: AccessSubject): string {\n if (subject.iri === Authenticated.iri) {\n return 'Authenticated users'\n }\n\n if (subject.iri === Public.iri) {\n return 'Public'\n }\n\n return label(sym(subject.iri)).trim() || subject.iri\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"accessGrantDrafts.cjs.js","names":["label","Authenticated","Public","solidLogicSingleton","sym","getSharedAuthorization","authorization","agentClass","filter","iri","getAuthorizationSubjectEntries","subjectSets","type","iris","agent","agentGroup","origin","flatMap","map","getAccessGrantId","id","subject","sort","join","getAccessGrantIds","authorizations","occurrences","Map","sharedAuthorization","baseId","occurrence","get","set","getAuthorizationSubjectLabel","subjects","length","getAuthorizationRole","acl","roleFromModes","mode","createAccessGrantDraft","role","initialRole","subjectLabel","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","left","right","leftIsOwner","rightIsOwner","indexOf","getChangedAccessGrants","getAuthenticatedAccessRole","accessGrants","modes","item","includes","getPublicAccessRole","publicRoleFromModes","getAccessSubjectLabel","trim","Authenticated","Public","label","sym","solidLogicSingleton","require_label","rdflib","solid_logic","getSharedAuthorization","authorization","iri","getAuthorizationSubjectEntries","iris","getAccessGrantId","subject","getAccessGrantIds","occurrences","authorizations","baseId","occurrence","getAuthorizationSubjectLabel","subjects","getAuthorizationRole","createAccessGrantDraft","sharedAuthorization","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","leftIsOwner","left","rightIsOwner","right","getChangedAccessGrants","role","initialRole","getAuthenticatedAccessRole","modes","accessGrants","item","getPublicAccessRole","getAccessSubjectLabel"],"sources":["../../../src/components/access-control-modal/accessGrantDrafts.ts"],"sourcesContent":["import { label } from '@/utils/label'\nimport { Authenticated, Public, solidLogicSingleton, type AccessRole, type AccessSubject } from 'solid-logic'\nimport { sym } from 'rdflib'\nimport type { AccessAuthorization, AccessGrantDraft, AccessGrantViewModel, AuthorizationSubjectSet, ChangedAccessGrant } from './types'\n\nexport function getSharedAuthorization (authorization: AccessAuthorization): AccessAuthorization {\n return {\n ...authorization,\n agentClass: authorization.agentClass.filter(iri => iri !== Authenticated.iri && iri !== Public.iri)\n }\n}\n\nexport function getAuthorizationSubjectEntries (authorization: AccessAuthorization): AccessSubject[] {\n const subjectSets: AuthorizationSubjectSet[] = [\n { type: 'agent', iris: authorization.agent },\n { type: 'agentGroup', iris: authorization.agentGroup },\n { type: 'agentClass', iris: authorization.agentClass },\n { type: 'origin', iris: authorization.origin }\n ]\n\n return subjectSets.flatMap(({ type, iris }) => iris.map(iri => ({ type, iri })))\n}\n\nexport function getAccessGrantId (authorization: AccessAuthorization): string {\n if (authorization.id) {\n return authorization.id\n }\n\n return getAuthorizationSubjectEntries(authorization)\n .map(subject => `${subject.type}:${subject.iri}`)\n .sort()\n .join('|')\n}\n\nexport function getAccessGrantIds (authorizations: AccessAuthorization[]): string[] {\n const occurrences = new Map<string, number>()\n\n return authorizations.map(authorization => {\n const sharedAuthorization = getSharedAuthorization(authorization)\n const baseId = getAccessGrantId(sharedAuthorization)\n const occurrence = occurrences.get(baseId) ?? 0\n occurrences.set(baseId, occurrence + 1)\n return occurrence === 0 ? baseId : `${baseId}#${occurrence}`\n })\n}\n\nexport function getAuthorizationSubjectLabel (authorization: AccessAuthorization): string {\n const subjects = [\n ...authorization.agent,\n ...authorization.agentGroup,\n ...authorization.agentClass,\n ...authorization.origin\n ]\n return subjects.length ? subjects.map(subject => label(sym(subject))).join(', ') : 'Unknown access holder'\n}\n\nexport function getAuthorizationRole (authorization: AccessAuthorization): AccessRole {\n return solidLogicSingleton.acl.roleFromModes(authorization.mode)\n}\n\nexport function createAccessGrantDraft (authorization: AccessAuthorization): AccessGrantDraft {\n const sharedAuthorization = getSharedAuthorization(authorization)\n return {\n id: getAccessGrantId(sharedAuthorization),\n authorization: sharedAuthorization,\n role: getAuthorizationRole(sharedAuthorization),\n initialRole: getAuthorizationRole(authorization),\n subjectLabel: getAuthorizationSubjectLabel(sharedAuthorization),\n subjects: getAuthorizationSubjectEntries(sharedAuthorization)\n }\n}\n\nexport function createAccessGrantDrafts (authorizations: AccessAuthorization[]): AccessGrantDraft[] {\n const ids = getAccessGrantIds(authorizations)\n return authorizations.map((authorization, index) => ({\n ...createAccessGrantDraft(authorization),\n id: ids[index]\n }))\n}\n\nexport function getAccessGrantViewModels (drafts: AccessGrantDraft[]): AccessGrantViewModel[] {\n return [...drafts]\n .sort((left, right) => {\n const leftIsOwner = left.role === 'Owner'\n const rightIsOwner = right.role === 'Owner'\n\n if (leftIsOwner && !rightIsOwner) return -1\n if (!leftIsOwner && rightIsOwner) return 1\n return drafts.indexOf(left) - drafts.indexOf(right)\n })\n}\n\nexport function getChangedAccessGrants (drafts: AccessGrantDraft[]): ChangedAccessGrant[] {\n return getAccessGrantViewModels(drafts)\n .filter(({ role, initialRole, subjects }) => role !== initialRole && subjects.length > 0)\n .map(({ authorization, subjects, role }) => ({ authorization, subjects, role }))\n}\n\nexport function getAuthenticatedAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const modes = accessGrants\n .filter(item => item.agentClass.includes(Authenticated.iri))\n .flatMap(item => item.mode)\n return modes.length ? solidLogicSingleton.acl.roleFromModes(modes) : 'No Access'\n}\n\nexport function getPublicAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const modes = accessGrants\n .filter(item => item.agentClass.includes(Public.iri))\n .flatMap(item => item.mode)\n return modes.length ? solidLogicSingleton.acl.publicRoleFromModes(modes) : 'No Access'\n}\n\nexport function getAccessSubjectLabel (subject: AccessSubject): string {\n if (subject.iri === Authenticated.iri) {\n return 'Authenticated users'\n }\n\n if (subject.iri === Public.iri) {\n return 'Public'\n }\n\n return label(sym(subject.iri)).trim() || subject.iri\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"accessGrantDrafts.d.ts","sourceRoot":"","sources":["../../../src/components/access-control-modal/accessGrantDrafts.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAE7G,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAA2B,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEvI,wBAAgB,sBAAsB,CAAE,aAAa,EAAE,mBAAmB,GAAG,mBAAmB,CAK/F;AAED,wBAAgB,8BAA8B,CAAE,aAAa,EAAE,mBAAmB,GAAG,aAAa,EAAE,CASnG;AAED,wBAAgB,gBAAgB,CAAE,aAAa,EAAE,mBAAmB,GAAG,MAAM,CAK5E;AAED,wBAAgB,iBAAiB,CAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAUlF;AAED,wBAAgB,4BAA4B,CAAE,aAAa,EAAE,mBAAmB,GAAG,MAAM,CAQxF;AAED,wBAAgB,oBAAoB,CAAE,aAAa,EAAE,mBAAmB,GAAG,UAAU,CAEpF;AAED,wBAAgB,sBAAsB,CAAE,aAAa,EAAE,mBAAmB,GAAG,gBAAgB,CAU5F;AAED,wBAAgB,uBAAuB,CAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,EAAE,CAMlG;AAED,wBAAgB,wBAAwB,CAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,EAAE,CAU5F;AAED,wBAAgB,sBAAsB,CAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,EAAE,CAIxF;AAED,wBAAgB,0BAA0B,CAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAG3F;AAED,wBAAgB,mBAAmB,CAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAGpF;AAED,wBAAgB,qBAAqB,CAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAUrE"}
1
+ {"version":3,"file":"accessGrantDrafts.d.ts","sourceRoot":"","sources":["../../../src/components/access-control-modal/accessGrantDrafts.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAE7G,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAA2B,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEvI,wBAAgB,sBAAsB,CAAE,aAAa,EAAE,mBAAmB,GAAG,mBAAmB,CAK/F;AAED,wBAAgB,8BAA8B,CAAE,aAAa,EAAE,mBAAmB,GAAG,aAAa,EAAE,CASnG;AAED,wBAAgB,gBAAgB,CAAE,aAAa,EAAE,mBAAmB,GAAG,MAAM,CAS5E;AAED,wBAAgB,iBAAiB,CAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAUlF;AAED,wBAAgB,4BAA4B,CAAE,aAAa,EAAE,mBAAmB,GAAG,MAAM,CAQxF;AAED,wBAAgB,oBAAoB,CAAE,aAAa,EAAE,mBAAmB,GAAG,UAAU,CAEpF;AAED,wBAAgB,sBAAsB,CAAE,aAAa,EAAE,mBAAmB,GAAG,gBAAgB,CAU5F;AAED,wBAAgB,uBAAuB,CAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,EAAE,CAMlG;AAED,wBAAgB,wBAAwB,CAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,EAAE,CAU5F;AAED,wBAAgB,sBAAsB,CAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,EAAE,CAIxF;AAED,wBAAgB,0BAA0B,CAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAK3F;AAED,wBAAgB,mBAAmB,CAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAKpF;AAED,wBAAgB,qBAAqB,CAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAUrE"}
@@ -1,7 +1,7 @@
1
1
  import { label as e } from "../../utils/label.esm.js";
2
2
  import { sym as t } from "rdflib";
3
3
  import { Authenticated as n, Public as r, solidLogicSingleton as i } from "solid-logic";
4
- //#region src/components/access-control-modal/accessGrantDrafts.ts
4
+ // src/components/access-control-modal/accessGrantDrafts.ts
5
5
  function a(e) {
6
6
  return {
7
7
  ...e,
@@ -32,7 +32,7 @@ function o(e) {
32
32
  })));
33
33
  }
34
34
  function s(e) {
35
- return o(e).map((e) => `${e.type}:${e.iri}`).sort().join("|");
35
+ return e.id ? e.id : o(e).map((e) => `${e.type}:${e.iri}`).sort().join("|");
36
36
  }
37
37
  function c(e) {
38
38
  let t = /* @__PURE__ */ new Map();
@@ -85,17 +85,16 @@ function m(e) {
85
85
  }));
86
86
  }
87
87
  function h(e) {
88
- let t = e.find((e) => e.agentClass.includes(n.iri));
89
- return t ? u(t) : "No Access";
88
+ let t = e.filter((e) => e.agentClass.includes(n.iri)).flatMap((e) => e.mode);
89
+ return t.length ? i.acl.roleFromModes(t) : "No Access";
90
90
  }
91
91
  function g(e) {
92
- let t = e.find((e) => e.agentClass.includes(r.iri));
93
- return t ? i.acl.publicRoleFromModes(t.mode) : "No Access";
92
+ let t = e.filter((e) => e.agentClass.includes(r.iri)).flatMap((e) => e.mode);
93
+ return t.length ? i.acl.publicRoleFromModes(t) : "No Access";
94
94
  }
95
95
  function _(i) {
96
96
  return i.iri === n.iri ? "Authenticated users" : i.iri === r.iri ? "Public" : e(t(i.iri)).trim() || i.iri;
97
97
  }
98
- //#endregion
99
98
  export { d as createAccessGrantDraft, f as createAccessGrantDrafts, s as getAccessGrantId, c as getAccessGrantIds, p as getAccessGrantViewModels, _ as getAccessSubjectLabel, h as getAuthenticatedAccessRole, u as getAuthorizationRole, o as getAuthorizationSubjectEntries, l as getAuthorizationSubjectLabel, m as getChangedAccessGrants, g as getPublicAccessRole, a as getSharedAuthorization };
100
99
 
101
100
  //# sourceMappingURL=accessGrantDrafts.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessGrantDrafts.esm.js","names":["label","Authenticated","Public","solidLogicSingleton","sym","getSharedAuthorization","authorization","agentClass","filter","iri","getAuthorizationSubjectEntries","subjectSets","type","iris","agent","agentGroup","origin","flatMap","map","getAccessGrantId","subject","sort","join","getAccessGrantIds","authorizations","occurrences","Map","sharedAuthorization","baseId","occurrence","get","set","getAuthorizationSubjectLabel","subjects","length","getAuthorizationRole","acl","roleFromModes","mode","createAccessGrantDraft","id","role","initialRole","subjectLabel","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","left","right","leftIsOwner","rightIsOwner","indexOf","getChangedAccessGrants","getAuthenticatedAccessRole","accessGrants","find","item","includes","getPublicAccessRole","publicRoleFromModes","getAccessSubjectLabel","trim","getSharedAuthorization","authorization","iri","Authenticated","Public","getAuthorizationSubjectEntries","iris","getAccessGrantId","subject","getAccessGrantIds","occurrences","authorizations","baseId","occurrence","getAuthorizationSubjectLabel","subjects","label","sym","getAuthorizationRole","solidLogicSingleton","createAccessGrantDraft","sharedAuthorization","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","leftIsOwner","left","rightIsOwner","right","getChangedAccessGrants","role","initialRole","getAuthenticatedAccessRole","accessGrants","item","getPublicAccessRole","getAccessSubjectLabel"],"sources":["../../../src/components/access-control-modal/accessGrantDrafts.ts"],"sourcesContent":["import { label } from '@/utils/label'\nimport { Authenticated, Public, solidLogicSingleton, type AccessRole, type AccessSubject } from 'solid-logic'\nimport { sym } from 'rdflib'\nimport type { AccessAuthorization, AccessGrantDraft, AccessGrantViewModel, AuthorizationSubjectSet, ChangedAccessGrant } from './types'\n\nexport function getSharedAuthorization (authorization: AccessAuthorization): AccessAuthorization {\n return {\n ...authorization,\n agentClass: authorization.agentClass.filter(iri => iri !== Authenticated.iri && iri !== Public.iri)\n }\n}\n\nexport function getAuthorizationSubjectEntries (authorization: AccessAuthorization): AccessSubject[] {\n const subjectSets: AuthorizationSubjectSet[] = [\n { type: 'agent', iris: authorization.agent },\n { type: 'agentGroup', iris: authorization.agentGroup },\n { type: 'agentClass', iris: authorization.agentClass },\n { type: 'origin', iris: authorization.origin }\n ]\n\n return subjectSets.flatMap(({ type, iris }) => iris.map(iri => ({ type, iri })))\n}\n\nexport function getAccessGrantId (authorization: AccessAuthorization): string {\n return getAuthorizationSubjectEntries(authorization)\n .map(subject => `${subject.type}:${subject.iri}`)\n .sort()\n .join('|')\n}\n\nexport function getAccessGrantIds (authorizations: AccessAuthorization[]): string[] {\n const occurrences = new Map<string, number>()\n\n return authorizations.map(authorization => {\n const sharedAuthorization = getSharedAuthorization(authorization)\n const baseId = getAccessGrantId(sharedAuthorization)\n const occurrence = occurrences.get(baseId) ?? 0\n occurrences.set(baseId, occurrence + 1)\n return occurrence === 0 ? baseId : `${baseId}#${occurrence}`\n })\n}\n\nexport function getAuthorizationSubjectLabel (authorization: AccessAuthorization): string {\n const subjects = [\n ...authorization.agent,\n ...authorization.agentGroup,\n ...authorization.agentClass,\n ...authorization.origin\n ]\n return subjects.length ? subjects.map(subject => label(sym(subject))).join(', ') : 'Unknown access holder'\n}\n\nexport function getAuthorizationRole (authorization: AccessAuthorization): AccessRole {\n return solidLogicSingleton.acl.roleFromModes(authorization.mode)\n}\n\nexport function createAccessGrantDraft (authorization: AccessAuthorization): AccessGrantDraft {\n const sharedAuthorization = getSharedAuthorization(authorization)\n return {\n id: getAccessGrantId(sharedAuthorization),\n authorization: sharedAuthorization,\n role: getAuthorizationRole(sharedAuthorization),\n initialRole: getAuthorizationRole(authorization),\n subjectLabel: getAuthorizationSubjectLabel(sharedAuthorization),\n subjects: getAuthorizationSubjectEntries(sharedAuthorization)\n }\n}\n\nexport function createAccessGrantDrafts (authorizations: AccessAuthorization[]): AccessGrantDraft[] {\n const ids = getAccessGrantIds(authorizations)\n return authorizations.map((authorization, index) => ({\n ...createAccessGrantDraft(authorization),\n id: ids[index]\n }))\n}\n\nexport function getAccessGrantViewModels (drafts: AccessGrantDraft[]): AccessGrantViewModel[] {\n return [...drafts]\n .sort((left, right) => {\n const leftIsOwner = left.role === 'Owner'\n const rightIsOwner = right.role === 'Owner'\n\n if (leftIsOwner && !rightIsOwner) return -1\n if (!leftIsOwner && rightIsOwner) return 1\n return drafts.indexOf(left) - drafts.indexOf(right)\n })\n}\n\nexport function getChangedAccessGrants (drafts: AccessGrantDraft[]): ChangedAccessGrant[] {\n return getAccessGrantViewModels(drafts)\n .filter(({ role, initialRole, subjects }) => role !== initialRole && subjects.length > 0)\n .map(({ authorization, subjects, role }) => ({ authorization, subjects, role }))\n}\n\nexport function getAuthenticatedAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const authorization = accessGrants.find(item => item.agentClass.includes(Authenticated.iri))\n return authorization ? getAuthorizationRole(authorization) : 'No Access'\n}\n\nexport function getPublicAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const authorization = accessGrants.find(item => item.agentClass.includes(Public.iri))\n return authorization ? solidLogicSingleton.acl.publicRoleFromModes(authorization.mode) : 'No Access'\n}\n\nexport function getAccessSubjectLabel (subject: AccessSubject): string {\n if (subject.iri === Authenticated.iri) {\n return 'Authenticated users'\n }\n\n if (subject.iri === Public.iri) {\n return 'Public'\n }\n\n return label(sym(subject.iri)).trim() || subject.iri\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"accessGrantDrafts.esm.js","names":["label","Authenticated","Public","solidLogicSingleton","sym","getSharedAuthorization","authorization","agentClass","filter","iri","getAuthorizationSubjectEntries","subjectSets","type","iris","agent","agentGroup","origin","flatMap","map","getAccessGrantId","id","subject","sort","join","getAccessGrantIds","authorizations","occurrences","Map","sharedAuthorization","baseId","occurrence","get","set","getAuthorizationSubjectLabel","subjects","length","getAuthorizationRole","acl","roleFromModes","mode","createAccessGrantDraft","role","initialRole","subjectLabel","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","left","right","leftIsOwner","rightIsOwner","indexOf","getChangedAccessGrants","getAuthenticatedAccessRole","accessGrants","modes","item","includes","getPublicAccessRole","publicRoleFromModes","getAccessSubjectLabel","trim","getSharedAuthorization","authorization","iri","Authenticated","Public","getAuthorizationSubjectEntries","iris","getAccessGrantId","subject","getAccessGrantIds","occurrences","authorizations","baseId","occurrence","getAuthorizationSubjectLabel","subjects","label","sym","getAuthorizationRole","solidLogicSingleton","createAccessGrantDraft","sharedAuthorization","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","leftIsOwner","left","rightIsOwner","right","getChangedAccessGrants","role","initialRole","getAuthenticatedAccessRole","modes","accessGrants","item","getPublicAccessRole","getAccessSubjectLabel"],"sources":["../../../src/components/access-control-modal/accessGrantDrafts.ts"],"sourcesContent":["import { label } from '@/utils/label'\nimport { Authenticated, Public, solidLogicSingleton, type AccessRole, type AccessSubject } from 'solid-logic'\nimport { sym } from 'rdflib'\nimport type { AccessAuthorization, AccessGrantDraft, AccessGrantViewModel, AuthorizationSubjectSet, ChangedAccessGrant } from './types'\n\nexport function getSharedAuthorization (authorization: AccessAuthorization): AccessAuthorization {\n return {\n ...authorization,\n agentClass: authorization.agentClass.filter(iri => iri !== Authenticated.iri && iri !== Public.iri)\n }\n}\n\nexport function getAuthorizationSubjectEntries (authorization: AccessAuthorization): AccessSubject[] {\n const subjectSets: AuthorizationSubjectSet[] = [\n { type: 'agent', iris: authorization.agent },\n { type: 'agentGroup', iris: authorization.agentGroup },\n { type: 'agentClass', iris: authorization.agentClass },\n { type: 'origin', iris: authorization.origin }\n ]\n\n return subjectSets.flatMap(({ type, iris }) => iris.map(iri => ({ type, iri })))\n}\n\nexport function getAccessGrantId (authorization: AccessAuthorization): string {\n if (authorization.id) {\n return authorization.id\n }\n\n return getAuthorizationSubjectEntries(authorization)\n .map(subject => `${subject.type}:${subject.iri}`)\n .sort()\n .join('|')\n}\n\nexport function getAccessGrantIds (authorizations: AccessAuthorization[]): string[] {\n const occurrences = new Map<string, number>()\n\n return authorizations.map(authorization => {\n const sharedAuthorization = getSharedAuthorization(authorization)\n const baseId = getAccessGrantId(sharedAuthorization)\n const occurrence = occurrences.get(baseId) ?? 0\n occurrences.set(baseId, occurrence + 1)\n return occurrence === 0 ? baseId : `${baseId}#${occurrence}`\n })\n}\n\nexport function getAuthorizationSubjectLabel (authorization: AccessAuthorization): string {\n const subjects = [\n ...authorization.agent,\n ...authorization.agentGroup,\n ...authorization.agentClass,\n ...authorization.origin\n ]\n return subjects.length ? subjects.map(subject => label(sym(subject))).join(', ') : 'Unknown access holder'\n}\n\nexport function getAuthorizationRole (authorization: AccessAuthorization): AccessRole {\n return solidLogicSingleton.acl.roleFromModes(authorization.mode)\n}\n\nexport function createAccessGrantDraft (authorization: AccessAuthorization): AccessGrantDraft {\n const sharedAuthorization = getSharedAuthorization(authorization)\n return {\n id: getAccessGrantId(sharedAuthorization),\n authorization: sharedAuthorization,\n role: getAuthorizationRole(sharedAuthorization),\n initialRole: getAuthorizationRole(authorization),\n subjectLabel: getAuthorizationSubjectLabel(sharedAuthorization),\n subjects: getAuthorizationSubjectEntries(sharedAuthorization)\n }\n}\n\nexport function createAccessGrantDrafts (authorizations: AccessAuthorization[]): AccessGrantDraft[] {\n const ids = getAccessGrantIds(authorizations)\n return authorizations.map((authorization, index) => ({\n ...createAccessGrantDraft(authorization),\n id: ids[index]\n }))\n}\n\nexport function getAccessGrantViewModels (drafts: AccessGrantDraft[]): AccessGrantViewModel[] {\n return [...drafts]\n .sort((left, right) => {\n const leftIsOwner = left.role === 'Owner'\n const rightIsOwner = right.role === 'Owner'\n\n if (leftIsOwner && !rightIsOwner) return -1\n if (!leftIsOwner && rightIsOwner) return 1\n return drafts.indexOf(left) - drafts.indexOf(right)\n })\n}\n\nexport function getChangedAccessGrants (drafts: AccessGrantDraft[]): ChangedAccessGrant[] {\n return getAccessGrantViewModels(drafts)\n .filter(({ role, initialRole, subjects }) => role !== initialRole && subjects.length > 0)\n .map(({ authorization, subjects, role }) => ({ authorization, subjects, role }))\n}\n\nexport function getAuthenticatedAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const modes = accessGrants\n .filter(item => item.agentClass.includes(Authenticated.iri))\n .flatMap(item => item.mode)\n return modes.length ? solidLogicSingleton.acl.roleFromModes(modes) : 'No Access'\n}\n\nexport function getPublicAccessRole (accessGrants: AccessAuthorization[]): AccessRole {\n const modes = accessGrants\n .filter(item => item.agentClass.includes(Public.iri))\n .flatMap(item => item.mode)\n return modes.length ? solidLogicSingleton.acl.publicRoleFromModes(modes) : 'No Access'\n}\n\nexport function getAccessSubjectLabel (subject: AccessSubject): string {\n if (subject.iri === Authenticated.iri) {\n return 'Authenticated users'\n }\n\n if (subject.iri === Public.iri) {\n return 'Public'\n }\n\n return label(sym(subject.iri)).trim() || subject.iri\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("../../utils/label.cjs.js"),t=require("../combobox/Combobox.cjs.js");require("../combobox/index.cjs.js");const n=require("./helpers.cjs.js"),r=require("./AccessControlAddAccess.cjs.js");let i=require("rdflib"),a=require("solid-logic");async function o(e){let t=n.normalizeOriginInput(e);return t?{kind:`origin`,subjectValue:t}:await a.solidLogicSingleton.acl.classifyAccessControlSubject(e)}async function s(t,n){if(!t||t.kind===`origin`)return t?.subjectValue;let r=(0,i.sym)(t.subjectValue);await a.solidLogicSingleton.store.fetcher.load(r.doc());let o=n?.trim()||e.label(r).trim();if(o&&o!==t.subjectValue)return o}async function c(e,t){let n=await o(e);if(!n)return;let r=await s(n,t);if(r)return{subjectType:n.kind,subjectValue:n.subjectValue,label:r}}async function l(e){let t=await c(e);return t?{label:t.label,value:e}:void 0}function u(e,t){return{label:t,value:e.uri,template:r.directoryEntryOptionTemplate({...e,label:t})}}async function d(e){let t=n.normalizeOriginInput(e);if(t)return[{label:`Use origin ${t}`,value:t}];if(!n.isAbsoluteHttpUri(e))return[];if(n.isOriginUrl(e))return[{label:`Use origin ${new URL(e).origin}`,value:new URL(e).origin}];let r=await l(e);return n.dedupeComboboxOptions(r?[r]:[])}function f(e){return e.length?e:[{label:`Type at least 2 characters to search`,value:``,selectable:!1}]}var p=t.defineAsyncComboboxOptionsProvider(async e=>{let t=e.trim(),r=await d(t);if(t.length<2)return f(r);let i=[];try{i=await a.solidLogicSingleton.directory.search({query:t,sources:a.DEFAULT_DIRECTORY_SOURCES})}catch(e){if(!r.length)throw e}let o=(await Promise.all(i.map(async e=>{try{let t=await c(e.uri,e.label);return t?{entry:e,label:t.label}:void 0}catch{return}}))).filter(e=>e!==void 0).map(({entry:e,label:t})=>u(e,t));return n.dedupeByKey([...r,...o],e=>typeof e.value==`string`?e.value:void 0)});exports.accessPrincipalOptionsProvider=p,exports.resolveAccessTarget=c;
1
+ const e=require("../../lib/ns.cjs.js"),t=require("../../utils/label.cjs.js"),n=require("../combobox/Combobox.cjs.js");require("../combobox/index.cjs.js"),require("../../_virtual/~icons/lucide/globe.cjs.js");const r=require("./AccessControlAddAccess.cjs.js"),i=require("./helpers.cjs.js");let a=require("rdflib"),o=require("solid-logic"),s=require("lit");async function c(e){let t=i.normalizeOriginInput(e);return t?{kind:`origin`,subjectValue:t}:i.isOriginUrl(e)?{kind:`origin`,subjectValue:new URL(e).origin}:await o.solidLogicSingleton.acl.classifyAccessControlSubject(e)}async function l(e,n){if(!e||e.kind===`origin`)return e?.subjectValue;let r=(0,a.sym)(e.subjectValue);await o.solidLogicSingleton.store.fetcher.load(r.doc());let i=n?.trim()||t.label(r).trim();if(!i||i===e.subjectValue)throw Error(`The access target has no usable display label.`);return i}async function u(e,t){let n=await c(e);if(!n)return;let r=await l(n,t);if(r)return{subjectType:n.kind,subjectValue:n.subjectValue,label:r,targetKind:n.kind===`origin`?`origin`:void 0}}async function d(e){let t=await u(e);return t?{label:t.label,value:e}:void 0}function f(e,t){return{label:t,value:e.uri,template:r.directoryEntryOptionTemplate({...e,label:t})}}async function p(e){let t=i.normalizeOriginInput(e);if(t)return[{label:`Use origin ${t}`,value:t,targetKind:`origin`,template:s.html`<span class="access-grants-directory-entry"><icon-lucide-globe style="width: 13px; height: 13px; flex: 0 0 13px;"></icon-lucide-globe><span>Use origin ${t}</span></span>`}];if(!i.isAbsoluteHttpUri(e))return[];if(i.isOriginUrl(e))return[{label:`Use origin ${new URL(e).origin}`,value:new URL(e).origin,targetKind:`origin`,template:s.html`<span class="access-grants-directory-entry"><icon-lucide-globe style="width: 13px; height: 13px; flex: 0 0 13px;"></icon-lucide-globe><span>Use origin ${new URL(e).origin}</span></span>`}];let n=await d(e);return i.dedupeComboboxOptions(n?[n]:[])}async function m(t){try{let n=o.solidLogicSingleton.authn.currentUser();if(!n)return[];await o.solidLogicSingleton.profile.loadProfile(n);let r=o.solidLogicSingleton.store;return r.each(n,e.default.acl(`trustedApp`)).flatMap(n=>{let a=r.any(n,e.default.acl(`origin`));if(!a||!i.isOriginUrl(a.value))return[];let o=new URL(a.value).origin;return t&&!`${o} trusted app`.toLowerCase().includes(t.toLowerCase())?[]:[{label:`Trusted app: ${o}`,value:o,targetKind:`trustedApp`,template:s.html`<span class="access-grants-directory-entry"><icon-lucide-globe style="width: 13px; height: 13px; flex: 0 0 13px;"></icon-lucide-globe><span>Trusted app: ${o}</span></span>`}]})}catch{return[]}}function h(e){return e.length?e:[{label:`Type at least 2 characters to search`,value:``,selectable:!1}]}var g=n.defineAsyncComboboxOptionsProvider(async e=>{let t=e.trim(),n=await p(t),r=await m(t);if(t.length<2)return i.dedupeByKey([...n,...r,...h(n)],e=>{let t=e;return typeof t.value==`string`?`${t.value}:${t.targetKind??`default`}`:void 0});let a=[];try{a=await o.solidLogicSingleton.directory.search({query:t,sources:o.DEFAULT_DIRECTORY_SOURCES})}catch(e){if(!n.length&&!r.length)throw e}let s=(await Promise.all(a.map(async e=>{try{let t=await u(e.uri,e.label);return t?{entry:e,label:t.label}:void 0}catch{return}}))).filter(e=>e!==void 0).map(({entry:e,label:t})=>f(e,t));return i.dedupeByKey([...n,...r,...s],e=>{let t=e;return typeof t.value==`string`?`${t.value}:${t.targetKind??`default`}`:void 0})});exports.accessPrincipalOptionsProvider=g,exports.resolveAccessTarget=u;
2
2
  //# sourceMappingURL=accessTargetResolver.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessTargetResolver.cjs.js","names":["defineAsyncComboboxOptionsProvider","directoryEntryOptionTemplate","label","DEFAULT_DIRECTORY_SOURCES","solidLogicSingleton","sym","dedupeByKey","dedupeComboboxOptions","isAbsoluteHttpUri","isOriginUrl","normalizeOriginInput","classifyAccessTarget","principal","normalizedOrigin","kind","subjectValue","acl","classifyAccessControlSubject","resolveAccessTargetLabel","resolvedPrincipal","preferredLabel","subject","store","fetcher","load","doc","resolvedLabel","trim","undefined","resolveAccessTarget","subjectType","createUrlOption","uri","resolved","value","directoryEntryToOption","entry","labelValue","template","getPreferredAccessPrincipalOptions","query","URL","origin","urlOption","getShortQueryOptions","preferredOptions","length","selectable","accessPrincipalOptionsProvider","filter","entries","directory","search","sources","error","verifiedEntries","Promise","all","map","options","entryLabel","option","normalizeOriginInput","solidLogicSingleton","sym","label","directoryEntryOptionTemplate","isAbsoluteHttpUri","isOriginUrl","dedupeComboboxOptions","defineAsyncComboboxOptionsProvider","DEFAULT_DIRECTORY_SOURCES","dedupeByKey","require_label","require_Combobox","require_helpers","require_AccessControlAddAccess","rdflib","solid_logic","classifyAccessTarget","normalizedOrigin","principal","resolveAccessTargetLabel","resolvedPrincipal","subject","resolvedLabel","preferredLabel","resolveAccessTarget","createUrlOption","resolved","uri","directoryEntryToOption","labelValue","entry","getPreferredAccessPrincipalOptions","query","urlOption","getShortQueryOptions","preferredOptions","accessPrincipalOptionsProvider","filter","entries","error","options","entryLabel","option"],"sources":["../../../src/components/access-control-modal/accessTargetResolver.ts"],"sourcesContent":["import { defineAsyncComboboxOptionsProvider, type AsyncComboboxOptionsProvider, type ComboboxOptionData } from '@/components/combobox'\nimport { directoryEntryOptionTemplate } from './AccessControlAddAccess'\nimport { label } from '@/utils/label'\nimport { DEFAULT_DIRECTORY_SOURCES, solidLogicSingleton, type AccessControlSubjectKind, type DirectoryEntry } from 'solid-logic'\nimport { sym } from 'rdflib'\nimport { dedupeByKey, dedupeComboboxOptions, isAbsoluteHttpUri, isOriginUrl, normalizeOriginInput, type StringComboboxOptionData } from './helpers'\n\nexport type ResolvedAccessTarget = {\n subjectType: AccessControlSubjectKind\n subjectValue: string\n label: string\n}\n\nasync function classifyAccessTarget (principal: string) {\n const normalizedOrigin = normalizeOriginInput(principal)\n return normalizedOrigin\n ? { kind: 'origin' as const, subjectValue: normalizedOrigin }\n : await solidLogicSingleton.acl.classifyAccessControlSubject(principal)\n}\n\nasync function resolveAccessTargetLabel (\n resolvedPrincipal: Awaited<ReturnType<typeof classifyAccessTarget>>,\n preferredLabel?: string\n): Promise<string | undefined> {\n if (!resolvedPrincipal || resolvedPrincipal.kind === 'origin') {\n return resolvedPrincipal?.subjectValue\n }\n\n const subject = sym(resolvedPrincipal.subjectValue)\n await solidLogicSingleton.store.fetcher.load(subject.doc())\n const resolvedLabel = preferredLabel?.trim() || label(subject).trim()\n if (!resolvedLabel || resolvedLabel === resolvedPrincipal.subjectValue) {\n return undefined\n }\n\n return resolvedLabel\n}\n\nexport async function resolveAccessTarget (\n principal: string,\n preferredLabel?: string\n): Promise<ResolvedAccessTarget | undefined> {\n const resolvedPrincipal = await classifyAccessTarget(principal)\n if (!resolvedPrincipal) {\n return undefined\n }\n\n const resolvedLabel = await resolveAccessTargetLabel(resolvedPrincipal, preferredLabel)\n if (!resolvedLabel) {\n return undefined\n }\n\n return {\n subjectType: resolvedPrincipal.kind,\n subjectValue: resolvedPrincipal.subjectValue,\n label: resolvedLabel\n }\n}\n\nasync function createUrlOption (uri: string): Promise<StringComboboxOptionData | undefined> {\n const resolved = await resolveAccessTarget(uri)\n return resolved\n ? { label: resolved.label, value: uri }\n : undefined\n}\n\nfunction directoryEntryToOption (entry: DirectoryEntry, labelValue: string): ComboboxOptionData {\n return {\n label: labelValue,\n value: entry.uri,\n template: directoryEntryOptionTemplate({ ...entry, label: labelValue })\n }\n}\n\nasync function getPreferredAccessPrincipalOptions (query: string): Promise<ComboboxOptionData[]> {\n const normalizedOrigin = normalizeOriginInput(query)\n if (normalizedOrigin) {\n return [{\n label: `Use origin ${normalizedOrigin}`,\n value: normalizedOrigin\n }]\n }\n\n if (!isAbsoluteHttpUri(query)) {\n return []\n }\n\n if (isOriginUrl(query)) {\n return [{\n label: `Use origin ${new URL(query).origin}`,\n value: new URL(query).origin\n }]\n }\n\n const urlOption = await createUrlOption(query)\n return dedupeComboboxOptions(urlOption ? [urlOption] : [])\n}\n\nfunction getShortQueryOptions (preferredOptions: ComboboxOptionData[]): ComboboxOptionData[] {\n if (preferredOptions.length) {\n return preferredOptions\n }\n\n return [{\n label: 'Type at least 2 characters to search',\n value: '',\n selectable: false\n }]\n}\n\nexport const accessPrincipalOptionsProvider: AsyncComboboxOptionsProvider =\n defineAsyncComboboxOptionsProvider(async (filter: string) => {\n const query = filter.trim()\n const preferredOptions = await getPreferredAccessPrincipalOptions(query)\n\n if (query.length < 2) {\n return getShortQueryOptions(preferredOptions)\n }\n\n let entries: DirectoryEntry[] = []\n\n try {\n entries = await solidLogicSingleton.directory.search({\n query,\n sources: DEFAULT_DIRECTORY_SOURCES\n })\n } catch (error) {\n if (!preferredOptions.length) {\n throw error\n }\n }\n\n const verifiedEntries = await Promise.all(entries.map(async entry => {\n try {\n const resolved = await resolveAccessTarget(entry.uri, entry.label)\n return resolved ? { entry, label: resolved.label } : undefined\n } catch {\n return undefined\n }\n }))\n const options = verifiedEntries\n .filter((entry): entry is { entry: DirectoryEntry, label: string } => entry !== undefined)\n .map(({ entry, label: entryLabel }) => directoryEntryToOption(entry, entryLabel))\n return dedupeByKey(\n [...preferredOptions, ...options],\n option => typeof option.value === 'string' ? option.value : undefined\n )\n })\n"],"mappings":"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"}
1
+ {"version":3,"file":"accessTargetResolver.cjs.js","names":["defineAsyncComboboxOptionsProvider","directoryEntryOptionTemplate","label","DEFAULT_DIRECTORY_SOURCES","solidLogicSingleton","sym","html","ns","dedupeByKey","dedupeComboboxOptions","isAbsoluteHttpUri","isOriginUrl","normalizeOriginInput","classifyAccessTarget","principal","normalizedOrigin","kind","subjectValue","URL","origin","acl","classifyAccessControlSubject","resolveAccessTargetLabel","resolvedPrincipal","preferredLabel","subject","store","fetcher","load","doc","resolvedLabel","trim","Error","resolveAccessTarget","undefined","subjectType","targetKind","createUrlOption","uri","resolved","value","directoryEntryToOption","entry","labelValue","template","getPreferredAccessPrincipalOptions","query","urlOption","getTrustedAppOptions","me","authn","currentUser","profile","loadProfile","apps","each","flatMap","app","any","toLowerCase","includes","getShortQueryOptions","preferredOptions","length","selectable","accessPrincipalOptionsProvider","filter","trustedAppOptions","option","targetOption","entries","directory","search","sources","error","verifiedEntries","Promise","all","map","options","entryLabel","normalizeOriginInput","isOriginUrl","solidLogicSingleton","sym","label","directoryEntryOptionTemplate","isAbsoluteHttpUri","dedupeComboboxOptions","ns","defineAsyncComboboxOptionsProvider","dedupeByKey","DEFAULT_DIRECTORY_SOURCES","require_ns","require_label","require_Combobox","require_AccessControlAddAccess","require_helpers","rdflib","solid_logic","lit","classifyAccessTarget","normalizedOrigin","principal","resolveAccessTargetLabel","resolvedPrincipal","subject","resolvedLabel","preferredLabel","resolveAccessTarget","createUrlOption","resolved","uri","directoryEntryToOption","labelValue","entry","getPreferredAccessPrincipalOptions","query","urlOption","getTrustedAppOptions","me","store","origin","app","getShortQueryOptions","preferredOptions","accessPrincipalOptionsProvider","filter","trustedAppOptions","targetOption","option","entries","error","options","entryLabel"],"sources":["../../../src/components/access-control-modal/accessTargetResolver.ts"],"sourcesContent":["import { defineAsyncComboboxOptionsProvider, type AsyncComboboxOptionsProvider, type ComboboxOptionData } from '@/components/combobox'\nimport { directoryEntryOptionTemplate } from './AccessControlAddAccess'\nimport { label } from '@/utils/label'\nimport { DEFAULT_DIRECTORY_SOURCES, solidLogicSingleton, type AccessControlSubjectKind, type DirectoryEntry } from 'solid-logic'\nimport { sym } from 'rdflib'\nimport { html } from 'lit'\nimport ns from '@/lib/ns'\nimport '~icons/lucide/globe'\nimport { dedupeByKey, dedupeComboboxOptions, isAbsoluteHttpUri, isOriginUrl, normalizeOriginInput, type StringComboboxOptionData } from './helpers'\n\nexport type ResolvedAccessTarget = {\n subjectType: AccessControlSubjectKind\n subjectValue: string\n label: string\n targetKind?: 'origin' | 'trustedApp'\n}\n\ntype AccessTargetOption = ComboboxOptionData & {\n targetKind?: 'origin' | 'trustedApp'\n}\n\nasync function classifyAccessTarget (principal: string) {\n const normalizedOrigin = normalizeOriginInput(principal)\n if (normalizedOrigin) {\n return { kind: 'origin' as const, subjectValue: normalizedOrigin }\n }\n\n if (isOriginUrl(principal)) {\n return { kind: 'origin' as const, subjectValue: new URL(principal).origin }\n }\n\n return await solidLogicSingleton.acl.classifyAccessControlSubject(principal)\n}\n\nasync function resolveAccessTargetLabel (\n resolvedPrincipal: Awaited<ReturnType<typeof classifyAccessTarget>>,\n preferredLabel?: string\n): Promise<string | undefined> {\n if (!resolvedPrincipal || resolvedPrincipal.kind === 'origin') {\n return resolvedPrincipal?.subjectValue\n }\n\n const subject = sym(resolvedPrincipal.subjectValue)\n await solidLogicSingleton.store.fetcher.load(subject.doc())\n const resolvedLabel = preferredLabel?.trim() || label(subject).trim()\n if (!resolvedLabel || resolvedLabel === resolvedPrincipal.subjectValue) {\n throw new Error('The access target has no usable display label.')\n }\n\n return resolvedLabel\n}\n\nexport async function resolveAccessTarget (\n principal: string,\n preferredLabel?: string\n): Promise<ResolvedAccessTarget | undefined> {\n const resolvedPrincipal = await classifyAccessTarget(principal)\n if (!resolvedPrincipal) {\n return undefined\n }\n\n const resolvedLabel = await resolveAccessTargetLabel(resolvedPrincipal, preferredLabel)\n if (!resolvedLabel) {\n return undefined\n }\n\n return {\n subjectType: resolvedPrincipal.kind,\n subjectValue: resolvedPrincipal.subjectValue,\n label: resolvedLabel,\n targetKind: resolvedPrincipal.kind === 'origin' ? 'origin' : undefined\n }\n}\n\nasync function createUrlOption (uri: string): Promise<StringComboboxOptionData | undefined> {\n const resolved = await resolveAccessTarget(uri)\n return resolved\n ? { label: resolved.label, value: uri }\n : undefined\n}\n\nfunction directoryEntryToOption (entry: DirectoryEntry, labelValue: string): ComboboxOptionData {\n return {\n label: labelValue,\n value: entry.uri,\n template: directoryEntryOptionTemplate({ ...entry, label: labelValue })\n }\n}\n\nasync function getPreferredAccessPrincipalOptions (query: string): Promise<AccessTargetOption[]> {\n const normalizedOrigin = normalizeOriginInput(query)\n if (normalizedOrigin) {\n return [{\n label: `Use origin ${normalizedOrigin}`,\n value: normalizedOrigin,\n targetKind: 'origin',\n template: html`<span class=\"access-grants-directory-entry\"><icon-lucide-globe style=\"width: 13px; height: 13px; flex: 0 0 13px;\"></icon-lucide-globe><span>Use origin ${normalizedOrigin}</span></span>`\n }]\n }\n\n if (!isAbsoluteHttpUri(query)) {\n return []\n }\n\n if (isOriginUrl(query)) {\n return [{\n label: `Use origin ${new URL(query).origin}`,\n value: new URL(query).origin,\n targetKind: 'origin',\n template: html`<span class=\"access-grants-directory-entry\"><icon-lucide-globe style=\"width: 13px; height: 13px; flex: 0 0 13px;\"></icon-lucide-globe><span>Use origin ${new URL(query).origin}</span></span>`\n }]\n }\n\n const urlOption = await createUrlOption(query)\n return dedupeComboboxOptions(urlOption ? [urlOption] : [])\n}\n\nasync function getTrustedAppOptions (query: string): Promise<AccessTargetOption[]> {\n try {\n const me = solidLogicSingleton.authn.currentUser()\n if (!me) return []\n await solidLogicSingleton.profile.loadProfile(me)\n const store = solidLogicSingleton.store\n const apps = store.each(me, ns.acl('trustedApp')) as Array<ReturnType<typeof sym>>\n return apps.flatMap(app => {\n const origin = store.any(app, ns.acl('origin'))\n if (!origin || !isOriginUrl(origin.value)) return []\n const normalizedOrigin = new URL(origin.value).origin\n if (query && !`${normalizedOrigin} trusted app`.toLowerCase().includes(query.toLowerCase())) return []\n return [{\n label: `Trusted app: ${normalizedOrigin}`,\n value: normalizedOrigin,\n targetKind: 'trustedApp' as const,\n template: html`<span class=\"access-grants-directory-entry\"><icon-lucide-globe style=\"width: 13px; height: 13px; flex: 0 0 13px;\"></icon-lucide-globe><span>Trusted app: ${normalizedOrigin}</span></span>`\n }]\n })\n } catch {\n return []\n }\n}\n\nfunction getShortQueryOptions (preferredOptions: ComboboxOptionData[]): ComboboxOptionData[] {\n if (preferredOptions.length) {\n return preferredOptions\n }\n\n return [{\n label: 'Type at least 2 characters to search',\n value: '',\n selectable: false\n }]\n}\n\nexport const accessPrincipalOptionsProvider: AsyncComboboxOptionsProvider =\n defineAsyncComboboxOptionsProvider(async (filter: string) => {\n const query = filter.trim()\n const preferredOptions = await getPreferredAccessPrincipalOptions(query)\n const trustedAppOptions = await getTrustedAppOptions(query)\n\n if (query.length < 2) {\n return dedupeByKey(\n [...preferredOptions, ...trustedAppOptions, ...getShortQueryOptions(preferredOptions)],\n option => {\n const targetOption = option as AccessTargetOption\n return typeof targetOption.value === 'string'\n ? `${targetOption.value}:${targetOption.targetKind ?? 'default'}`\n : undefined\n }\n )\n }\n\n let entries: DirectoryEntry[] = []\n\n try {\n entries = await solidLogicSingleton.directory.search({\n query,\n sources: DEFAULT_DIRECTORY_SOURCES\n })\n } catch (error) {\n if (!preferredOptions.length && !trustedAppOptions.length) {\n throw error\n }\n }\n\n const verifiedEntries = await Promise.all(entries.map(async entry => {\n try {\n const resolved = await resolveAccessTarget(entry.uri, entry.label)\n return resolved ? { entry, label: resolved.label } : undefined\n } catch {\n return undefined\n }\n }))\n const options = verifiedEntries\n .filter((entry): entry is { entry: DirectoryEntry, label: string } => entry !== undefined)\n .map(({ entry, label: entryLabel }) => directoryEntryToOption(entry, entryLabel))\n return dedupeByKey(\n [...preferredOptions, ...trustedAppOptions, ...options],\n option => {\n const targetOption = option as AccessTargetOption\n return typeof targetOption.value === 'string'\n ? `${targetOption.value}:${targetOption.targetKind ?? 'default'}`\n : undefined\n }\n )\n })\n"],"mappings":"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"}
@@ -4,6 +4,7 @@ export type ResolvedAccessTarget = {
4
4
  subjectType: AccessControlSubjectKind;
5
5
  subjectValue: string;
6
6
  label: string;
7
+ targetKind?: 'origin' | 'trustedApp';
7
8
  };
8
9
  export declare function resolveAccessTarget(principal: string, preferredLabel?: string): Promise<ResolvedAccessTarget | undefined>;
9
10
  export declare const accessPrincipalOptionsProvider: AsyncComboboxOptionsProvider;