solid-ui 5.0.2-1 → 5.0.2-3

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 (320) hide show
  1. package/dist/_virtual/~icons/lucide/arrow-left.cjs.js +2 -0
  2. package/dist/_virtual/~icons/lucide/arrow-left.cjs.js.map +1 -0
  3. package/dist/_virtual/~icons/lucide/arrow-left.esm.js +10 -0
  4. package/dist/_virtual/~icons/lucide/arrow-left.esm.js.map +1 -0
  5. package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js +2 -0
  6. package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js.map +1 -0
  7. package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js +10 -0
  8. package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js.map +1 -0
  9. package/dist/_virtual/~icons/lucide/file.cjs.js +2 -0
  10. package/dist/_virtual/~icons/lucide/file.cjs.js.map +1 -0
  11. package/dist/_virtual/~icons/lucide/file.esm.js +10 -0
  12. package/dist/_virtual/~icons/lucide/file.esm.js.map +1 -0
  13. package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js +2 -0
  14. package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js.map +1 -0
  15. package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js +10 -0
  16. package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js.map +1 -0
  17. package/dist/_virtual/~icons/lucide/pencil.cjs.js +2 -0
  18. package/dist/_virtual/~icons/lucide/pencil.cjs.js.map +1 -0
  19. package/dist/_virtual/~icons/lucide/pencil.esm.js +10 -0
  20. package/dist/_virtual/~icons/lucide/pencil.esm.js.map +1 -0
  21. package/dist/_virtual/~icons/lucide/share-2.cjs.js +2 -0
  22. package/dist/_virtual/~icons/lucide/share-2.cjs.js.map +1 -0
  23. package/dist/_virtual/~icons/lucide/share-2.esm.js +10 -0
  24. package/dist/_virtual/~icons/lucide/share-2.esm.js.map +1 -0
  25. package/dist/_virtual/~icons/lucide/user-round-cog.cjs.js +2 -0
  26. package/dist/_virtual/~icons/lucide/user-round-cog.cjs.js.map +1 -0
  27. package/dist/_virtual/~icons/lucide/user-round-cog.esm.js +10 -0
  28. package/dist/_virtual/~icons/lucide/user-round-cog.esm.js.map +1 -0
  29. package/dist/chunks/DialogProvider-dagk2fHm.js +209 -0
  30. package/dist/chunks/DialogProvider-dagk2fHm.js.map +1 -0
  31. package/dist/chunks/ResourceActionsMenu-o-8kWx8z.js +379 -0
  32. package/dist/chunks/ResourceActionsMenu-o-8kWx8z.js.map +1 -0
  33. package/dist/chunks/{access-control-modal-Dcg6-f4V.js → access-control-modal-CWH98HX3.js} +466 -478
  34. package/dist/chunks/access-control-modal-CWH98HX3.js.map +1 -0
  35. package/dist/chunks/{account-D6JK-n7u.js → account-Cocvv0H3.js} +21 -20
  36. package/dist/chunks/{account-D6JK-n7u.js.map → account-Cocvv0H3.js.map} +1 -1
  37. package/dist/chunks/{auth-B_abPDvH.js → auth-Df5uYksz.js} +41 -39
  38. package/dist/chunks/{auth-B_abPDvH.js.map → auth-Df5uYksz.js.map} +1 -1
  39. package/dist/chunks/{avatar-BR3COVSQ.js → avatar-DeotTinS.js} +11 -10
  40. package/dist/chunks/{avatar-BR3COVSQ.js.map → avatar-DeotTinS.js.map} +1 -1
  41. package/dist/chunks/{button-D6qO2idW.js → button-Dy1aFjqG.js} +11 -10
  42. package/dist/chunks/{button-D6qO2idW.js.map → button-Dy1aFjqG.js.map} +1 -1
  43. package/dist/chunks/{chunk.UEBQI7VV-lcP-fpUk.js → chunk.UEBQI7VV-9M5gO7Ew.js} +9 -12
  44. package/dist/chunks/chunk.UEBQI7VV-9M5gO7Ew.js.map +1 -0
  45. package/dist/chunks/{combobox-fSTp9qoT.js → combobox-BL0-8wef.js} +18 -17
  46. package/dist/chunks/{combobox-fSTp9qoT.js.map → combobox-BL0-8wef.js.map} +1 -1
  47. package/dist/chunks/{combobox-option-DOtGuKel.js → combobox-option-DjlmXt1O.js} +8 -7
  48. package/dist/chunks/{combobox-option-DOtGuKel.js.map → combobox-option-DjlmXt1O.js.map} +1 -1
  49. package/dist/chunks/{components-C8c2Ucm5.js → components-LxiwG5ae.js} +190 -201
  50. package/dist/chunks/components-LxiwG5ae.js.map +1 -0
  51. package/dist/chunks/context-By_u12WA.js +21 -0
  52. package/dist/chunks/context-By_u12WA.js.map +1 -0
  53. package/dist/chunks/custom-element-BW8Ua4c7.js +9 -0
  54. package/dist/chunks/custom-element-BW8Ua4c7.js.map +1 -0
  55. package/dist/chunks/decorators-V-B013l9.js +12 -0
  56. package/dist/chunks/decorators-V-B013l9.js.map +1 -0
  57. package/dist/chunks/{dialog-CgYK767T.js → dialog-CrmftB9c.js} +16 -15
  58. package/dist/chunks/{dialog-CgYK767T.js.map → dialog-CrmftB9c.js.map} +1 -1
  59. package/dist/chunks/{dialog-content-DjwRH1ci.js → dialog-content-Cw3xqJ45.js} +6 -5
  60. package/dist/chunks/{dialog-content-DjwRH1ci.js.map → dialog-content-Cw3xqJ45.js.map} +1 -1
  61. package/dist/chunks/{dialog-footer-GQWi8lfB.js → dialog-footer-sFQf-2zD.js} +6 -5
  62. package/dist/chunks/{dialog-footer-GQWi8lfB.js.map → dialog-footer-sFQf-2zD.js.map} +1 -1
  63. package/dist/chunks/{dialog-header-c3qOMQfb.js → dialog-header-xIWIqfZK.js} +6 -5
  64. package/dist/chunks/{dialog-header-c3qOMQfb.js.map → dialog-header-xIWIqfZK.js.map} +1 -1
  65. package/dist/chunks/{dialogs-BmtLjMzg.js → dialogs-B3tHtjMf.js} +2 -2
  66. package/dist/chunks/{dialogs-BmtLjMzg.js.map → dialogs-B3tHtjMf.js.map} +1 -1
  67. package/dist/chunks/{dialogs-root-BcQo2XMF.js → dialogs-root-Lh2u-3Cs.js} +9 -8
  68. package/dist/chunks/{dialogs-root-BcQo2XMF.js.map → dialogs-root-Lh2u-3Cs.js.map} +1 -1
  69. package/dist/chunks/{error-state-BD4_Wrkz.js → error-state-DnsXVj1z.js} +11 -10
  70. package/dist/chunks/{error-state-BD4_Wrkz.js.map → error-state-DnsXVj1z.js.map} +1 -1
  71. package/dist/chunks/events-CXQHDCs2.js +8 -0
  72. package/dist/chunks/events-CXQHDCs2.js.map +1 -0
  73. package/dist/chunks/file-explorer-header-B6-Q0i6V.js +963 -0
  74. package/dist/chunks/file-explorer-header-B6-Q0i6V.js.map +1 -0
  75. package/dist/chunks/file-explorer-provider-B3gUBkHg.js +296 -0
  76. package/dist/chunks/file-explorer-provider-B3gUBkHg.js.map +1 -0
  77. package/dist/chunks/globe-CsCgZcy5.js +16 -0
  78. package/dist/chunks/globe-CsCgZcy5.js.map +1 -0
  79. package/dist/chunks/{guard-bTeM7wd7.js → guard-C39y81In.js} +11 -10
  80. package/dist/chunks/{guard-bTeM7wd7.js.map → guard-C39y81In.js.map} +1 -1
  81. package/dist/chunks/index.esm-C9oV3H3X.js +6 -0
  82. package/dist/chunks/index.esm-C9oV3H3X.js.map +1 -0
  83. package/dist/chunks/{input-Bz3l514j.js → input-Bi6ZBZQw.js} +12 -11
  84. package/dist/chunks/{input-Bz3l514j.js.map → input-Bi6ZBZQw.js.map} +1 -1
  85. package/dist/chunks/{jsonld-CnfzCyCn.js → jsonld-D-TE94B0.js} +2 -2
  86. package/dist/chunks/{jsonld-CnfzCyCn.js.map → jsonld-D-TE94B0.js.map} +1 -1
  87. package/dist/chunks/{login-button-Div4ZT4J.js → login-button-fo0P8vym.js} +10 -9
  88. package/dist/chunks/{login-button-Div4ZT4J.js.map → login-button-fo0P8vym.js.map} +1 -1
  89. package/dist/chunks/{logout-button-D3lqlnCX.js → logout-button-CF2YFgID.js} +10 -9
  90. package/dist/chunks/{logout-button-D3lqlnCX.js.map → logout-button-CF2YFgID.js.map} +1 -1
  91. package/dist/chunks/{menu-D0k2fkiE.js → menu-RumUciM-.js} +49 -47
  92. package/dist/chunks/{menu-D0k2fkiE.js.map → menu-RumUciM-.js.map} +1 -1
  93. package/dist/chunks/{menu-item-nfPpH4dN.js → menu-item-CVAZyipz.js} +11 -10
  94. package/dist/chunks/{menu-item-nfPpH4dN.js.map → menu-item-CVAZyipz.js.map} +1 -1
  95. package/dist/chunks/{photo-capture-hJaJm4TM.js → photo-capture-CAfo7y6-.js} +21 -20
  96. package/dist/chunks/photo-capture-CAfo7y6-.js.map +1 -0
  97. package/dist/chunks/{photo-capture-modal-BsHv6wmh.js → photo-capture-modal-DWmDE_Ws.js} +29 -28
  98. package/dist/chunks/{photo-capture-modal-BsHv6wmh.js.map → photo-capture-modal-DWmDE_Ws.js.map} +1 -1
  99. package/dist/chunks/provide-B5NeVMM_.js +111 -0
  100. package/dist/chunks/provide-B5NeVMM_.js.map +1 -0
  101. package/dist/chunks/{provider-Dcd1NPYx.js → provider-BbT2duMy.js} +11 -10
  102. package/dist/chunks/{provider-Dcd1NPYx.js.map → provider-BbT2duMy.js.map} +1 -1
  103. package/dist/chunks/{rdf-form-CmPnHKR-.js → rdf-form-CH9bDx98.js} +30 -29
  104. package/dist/chunks/{rdf-form-CmPnHKR-.js.map → rdf-form-CH9bDx98.js.map} +1 -1
  105. package/dist/chunks/{rdf-input-3AgoeCkJ.js → rdf-input-C_V0pIS5.js} +56 -55
  106. package/dist/chunks/{rdf-input-3AgoeCkJ.js.map → rdf-input-C_V0pIS5.js.map} +1 -1
  107. package/dist/chunks/{select-option-DQan7rcB.js → select-option-U4ALXL20.js} +8 -7
  108. package/dist/chunks/{select-option-DQan7rcB.js.map → select-option-U4ALXL20.js.map} +1 -1
  109. package/dist/chunks/{select-ClPkDkGl.js → select-y1Z6fwmh.js} +10 -9
  110. package/dist/chunks/{select-ClPkDkGl.js.map → select-y1Z6fwmh.js.map} +1 -1
  111. package/dist/chunks/{signup-button-2fAoS0Nv.js → signup-button-DicFpAjD.js} +10 -9
  112. package/dist/chunks/{signup-button-2fAoS0Nv.js.map → signup-button-DicFpAjD.js.map} +1 -1
  113. package/dist/chunks/{solid-emblem-DwLdkGuO.js → solid-emblem-CeCXTpve.js} +8 -7
  114. package/dist/chunks/{solid-emblem-DwLdkGuO.js.map → solid-emblem-CeCXTpve.js.map} +1 -1
  115. package/dist/chunks/{index.esm-CECfD0e9.js → solidLogicSingleton.esm-BXyHD7mn.js} +1210 -1161
  116. package/dist/chunks/solidLogicSingleton.esm-BXyHD7mn.js.map +1 -0
  117. package/dist/chunks/{src-Dx7k_VIe.js → src-Bhtor0ZC.js} +2311 -2282
  118. package/dist/chunks/src-Bhtor0ZC.js.map +1 -0
  119. package/dist/chunks/{style-w0Fl0xnd.js → style-CXaw5EYi.js} +9 -8
  120. package/dist/chunks/{style-w0Fl0xnd.js.map → style-CXaw5EYi.js.map} +1 -1
  121. package/dist/chunks/{widgets-BWpm5CPx.js → widgets-BBEQu0CS.js} +722 -721
  122. package/dist/chunks/{widgets-BWpm5CPx.js.map → widgets-BBEQu0CS.js.map} +1 -1
  123. package/dist/components/access-control-modal/AccessControlAddAccess.esm.js.map +1 -1
  124. package/dist/components/access-control-modal/AccessControlErrors.esm.js.map +1 -1
  125. package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js.map +1 -1
  126. package/dist/components/access-control-modal/AccessControlModal.cjs.js +1 -1
  127. package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
  128. package/dist/components/access-control-modal/AccessControlModal.esm.js +1 -1
  129. package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
  130. package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js.map +1 -1
  131. package/dist/components/access-control-modal.js +1 -1
  132. package/dist/components/account/Account.esm.js.map +1 -1
  133. package/dist/components/account.js +1 -1
  134. package/dist/components/all.cjs.js +1 -1
  135. package/dist/components/all.esm.js +3 -0
  136. package/dist/components/avatar.js +1 -1
  137. package/dist/components/button/Button.esm.js.map +1 -1
  138. package/dist/components/button.js +1 -1
  139. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  140. package/dist/components/combobox-option/ComboboxOption.esm.js.map +1 -1
  141. package/dist/components/combobox-option.js +1 -1
  142. package/dist/components/combobox.js +1 -1
  143. package/dist/components/dialog/Dialog.esm.js.map +1 -1
  144. package/dist/components/dialog-content.js +1 -1
  145. package/dist/components/dialog-footer.js +1 -1
  146. package/dist/components/dialog-header.js +1 -1
  147. package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
  148. package/dist/components/dialog-provider.js +1 -1
  149. package/dist/components/dialog.js +1 -1
  150. package/dist/components/dialogs-root/DialogsRoot.esm.js.map +1 -1
  151. package/dist/components/dialogs-root.js +1 -1
  152. package/dist/components/error-state/ErrorState.esm.js.map +1 -1
  153. package/dist/components/error-state.js +1 -1
  154. package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js +15 -0
  155. package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js.map +1 -0
  156. package/dist/components/file-explorer-header/FileExplorerHeader.d.ts +20 -0
  157. package/dist/components/file-explorer-header/FileExplorerHeader.d.ts.map +1 -0
  158. package/dist/components/file-explorer-header/FileExplorerHeader.esm.js +309 -0
  159. package/dist/components/file-explorer-header/FileExplorerHeader.esm.js.map +1 -0
  160. package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js +2 -0
  161. package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js.map +1 -0
  162. package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js +6 -0
  163. package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js.map +1 -0
  164. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +35 -0
  165. package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +1 -0
  166. package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts +23 -0
  167. package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts.map +1 -0
  168. package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +317 -0
  169. package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js.map +1 -0
  170. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js +2 -0
  171. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js.map +1 -0
  172. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js +6 -0
  173. package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js.map +1 -0
  174. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +35 -0
  175. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js.map +1 -0
  176. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts +22 -0
  177. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts.map +1 -0
  178. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +355 -0
  179. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js.map +1 -0
  180. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js +2 -0
  181. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js.map +1 -0
  182. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js +6 -0
  183. package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js.map +1 -0
  184. package/dist/components/file-explorer-header/index.cjs.js +2 -0
  185. package/dist/components/file-explorer-header/index.cjs.js.map +1 -0
  186. package/dist/components/file-explorer-header/index.d.ts +4 -0
  187. package/dist/components/file-explorer-header/index.d.ts.map +1 -0
  188. package/dist/components/file-explorer-header/index.esm.js +6 -0
  189. package/dist/components/file-explorer-header/index.esm.js.map +1 -0
  190. package/dist/components/file-explorer-header/types.d.ts +11 -0
  191. package/dist/components/file-explorer-header/types.d.ts.map +1 -0
  192. package/dist/components/file-explorer-header.js +1 -0
  193. package/dist/components/file-explorer-provider/FileExplorerProvider.cjs.js +2 -0
  194. package/dist/components/file-explorer-provider/FileExplorerProvider.cjs.js.map +1 -0
  195. package/dist/components/file-explorer-provider/FileExplorerProvider.d.ts +17 -0
  196. package/dist/components/file-explorer-provider/FileExplorerProvider.d.ts.map +1 -0
  197. package/dist/components/file-explorer-provider/FileExplorerProvider.esm.js +296 -0
  198. package/dist/components/file-explorer-provider/FileExplorerProvider.esm.js.map +1 -0
  199. package/dist/components/file-explorer-provider/index.cjs.js +2 -0
  200. package/dist/components/file-explorer-provider/index.cjs.js.map +1 -0
  201. package/dist/components/file-explorer-provider/index.d.ts +4 -0
  202. package/dist/components/file-explorer-provider/index.d.ts.map +1 -0
  203. package/dist/components/file-explorer-provider/index.esm.js +6 -0
  204. package/dist/components/file-explorer-provider/index.esm.js.map +1 -0
  205. package/dist/components/file-explorer-provider.js +1 -0
  206. package/dist/components/guard.js +1 -1
  207. package/dist/components/index.cjs.js +1 -1
  208. package/dist/components/index.d.ts.map +1 -1
  209. package/dist/components/index.esm.js +1 -0
  210. package/dist/components/input/Input.esm.js.map +1 -1
  211. package/dist/components/input.js +1 -1
  212. package/dist/components/login-button.js +1 -1
  213. package/dist/components/login-modal/LoginModal.esm.js.map +1 -1
  214. package/dist/components/login-modal.js +1 -1
  215. package/dist/components/logout-button.js +1 -1
  216. package/dist/components/menu/Menu.esm.js.map +1 -1
  217. package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
  218. package/dist/components/menu-item.js +1 -1
  219. package/dist/components/menu.js +1 -1
  220. package/dist/components/photo-capture/PhotoCapture.esm.js.map +1 -1
  221. package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js.map +1 -1
  222. package/dist/components/photo-capture-modal.js +1 -1
  223. package/dist/components/photo-capture.js +1 -1
  224. package/dist/components/provider/Provider.esm.js.map +1 -1
  225. package/dist/components/provider.js +1 -1
  226. package/dist/components/rdf-form/RDFForm.esm.js.map +1 -1
  227. package/dist/components/rdf-form.js +1 -1
  228. package/dist/components/rdf-input/RDFInput.esm.js.map +1 -1
  229. package/dist/components/rdf-input.js +1 -1
  230. package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts +8 -0
  231. package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts.map +1 -0
  232. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +27 -0
  233. package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +1 -0
  234. package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts +23 -0
  235. package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts.map +1 -0
  236. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +343 -0
  237. package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js.map +1 -0
  238. package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.cjs.js +2 -0
  239. package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.cjs.js.map +1 -0
  240. package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.esm.js +6 -0
  241. package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.esm.js.map +1 -0
  242. package/dist/components/resource-actions-menu/ResourceActionsMenu.test.d.ts +1 -0
  243. package/dist/components/resource-actions-menu/ResourceActionsMenu.test.d.ts.map +1 -0
  244. package/dist/components/resource-actions-menu/index.cjs.js +1 -0
  245. package/dist/components/resource-actions-menu/index.d.ts +2 -0
  246. package/dist/components/resource-actions-menu/index.d.ts.map +1 -0
  247. package/dist/components/resource-actions-menu/index.esm.js +1 -0
  248. package/dist/components/resource-actions-menu.js +1 -0
  249. package/dist/components/select/Select.esm.js.map +1 -1
  250. package/dist/components/select-option/SelectOption.esm.js.map +1 -1
  251. package/dist/components/select-option.js +1 -1
  252. package/dist/components/select.js +1 -1
  253. package/dist/components/signup-button.js +1 -1
  254. package/dist/components/solid-emblem.js +1 -1
  255. package/dist/components.js +31 -28
  256. package/dist/index.cjs.js +1 -1
  257. package/dist/index.cjs.js.map +1 -1
  258. package/dist/index.d.ts +1 -1
  259. package/dist/index.d.ts.map +1 -1
  260. package/dist/index.esm.js +8 -4
  261. package/dist/index.esm.js.map +1 -1
  262. package/dist/index.js +12 -9
  263. package/dist/lib/context/noopContext.cjs.js +2 -0
  264. package/dist/lib/context/noopContext.cjs.js.map +1 -0
  265. package/dist/lib/context/noopContext.d.ts +2 -0
  266. package/dist/lib/context/noopContext.d.ts.map +1 -0
  267. package/dist/lib/context/noopContext.esm.js +18 -0
  268. package/dist/lib/context/noopContext.esm.js.map +1 -0
  269. package/dist/lib/file-explorer/compose-explorer.cjs.js +2 -0
  270. package/dist/lib/file-explorer/compose-explorer.cjs.js.map +1 -0
  271. package/dist/lib/file-explorer/compose-explorer.d.ts +17 -0
  272. package/dist/lib/file-explorer/compose-explorer.d.ts.map +1 -0
  273. package/dist/lib/file-explorer/compose-explorer.esm.js +18 -0
  274. package/dist/lib/file-explorer/compose-explorer.esm.js.map +1 -0
  275. package/dist/lib/file-explorer/context.cjs.js +1 -1
  276. package/dist/lib/file-explorer/context.cjs.js.map +1 -1
  277. package/dist/lib/file-explorer/context.d.ts +12 -14
  278. package/dist/lib/file-explorer/context.d.ts.map +1 -1
  279. package/dist/lib/file-explorer/context.esm.js +4 -3
  280. package/dist/lib/file-explorer/context.esm.js.map +1 -1
  281. package/dist/lib/file-explorer/events.cjs.js +2 -0
  282. package/dist/lib/file-explorer/events.cjs.js.map +1 -0
  283. package/dist/lib/file-explorer/events.d.ts +16 -0
  284. package/dist/lib/file-explorer/events.d.ts.map +1 -0
  285. package/dist/lib/file-explorer/events.esm.js +8 -0
  286. package/dist/lib/file-explorer/events.esm.js.map +1 -0
  287. package/dist/lib/file-explorer/index.cjs.js +1 -0
  288. package/dist/lib/file-explorer/index.d.ts +5 -0
  289. package/dist/lib/file-explorer/index.d.ts.map +1 -0
  290. package/dist/lib/file-explorer/index.esm.js +5 -0
  291. package/dist/lib/file-explorer/relevant-panes.cjs.js +2 -0
  292. package/dist/lib/file-explorer/relevant-panes.cjs.js.map +1 -0
  293. package/dist/lib/file-explorer/relevant-panes.d.ts +15 -0
  294. package/dist/lib/file-explorer/relevant-panes.d.ts.map +1 -0
  295. package/dist/lib/file-explorer/relevant-panes.esm.js +14 -0
  296. package/dist/lib/file-explorer/relevant-panes.esm.js.map +1 -0
  297. package/dist/loader.js +12 -9
  298. package/dist/solid-ui.js +211 -107
  299. package/dist/solid-ui.min.js +211 -107
  300. package/dist/solid-ui.min.js.map +1 -1
  301. package/dist/theme.css +1 -1
  302. package/dist/utils/podUtils.cjs.js +2 -0
  303. package/dist/utils/podUtils.cjs.js.map +1 -0
  304. package/dist/utils/podUtils.d.ts +6 -0
  305. package/dist/utils/podUtils.d.ts.map +1 -0
  306. package/dist/utils/podUtils.esm.js +22 -0
  307. package/dist/utils/podUtils.esm.js.map +1 -0
  308. package/dist/utils/webIdUtils.cjs.js +1 -0
  309. package/dist/utils/webIdUtils.d.ts +7 -0
  310. package/dist/utils/webIdUtils.d.ts.map +1 -0
  311. package/dist/utils/webIdUtils.esm.js +3 -0
  312. package/package.json +3 -3
  313. package/dist/chunks/DialogProvider-C89v7x0r.js +0 -314
  314. package/dist/chunks/DialogProvider-C89v7x0r.js.map +0 -1
  315. package/dist/chunks/access-control-modal-Dcg6-f4V.js.map +0 -1
  316. package/dist/chunks/chunk.UEBQI7VV-lcP-fpUk.js.map +0 -1
  317. package/dist/chunks/components-C8c2Ucm5.js.map +0 -1
  318. package/dist/chunks/index.esm-CECfD0e9.js.map +0 -1
  319. package/dist/chunks/photo-capture-hJaJm4TM.js.map +0 -1
  320. package/dist/chunks/src-Dx7k_VIe.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-control-modal-CWH98HX3.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","_Class","_A","_B","_C","_initProto","_initClass","_classDecs","_disabledDecs","_init_disabled","_ref","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_classPrivateFieldSet","_assertClassBrand","_classPrivateFieldGet","_defineProperty","_toPropertyKey","_applyDecs","_setFunctionName","_checkInRHS","_toPrimitive","_identity","property","state","ACCESS_ROLES","sym","styles","customElement","WebComponent","html","property","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","debug","styles","_classDecs","_AccessControlGeneral","_AccessControlGeneral2","_A","WeakMap","_B","_C","_D","_ref","_subjectUriDecs","attribute","_authenticatedAccessRoleValueDecs","_publicAccessRoleValueDecs","_disabledDecs","type","Boolean","_AccessControlGeneralAccess","AccessControlGeneralAccess","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_subjectUri","undefined","_init_authenticatedAccessRoleValue","_init_publicAccessRoleValue","_init_disabled","_classPrivateFieldGet","subjectUri","v","_classPrivateFieldSet","authenticatedAccessRoleValue","publicAccessRoleValue","disabled","onAuthenticatedRoleChange","event","dispatchRoleChange","onPublicRoleChange","eventName","roles","value","detail","option","includes","role","dispatchEvent","CustomEvent","bubbles","composed","onCopyLinkClick","preventDefault","navigator","clipboard","writeText","error","renderAuthenticatedRoleOptions","map","renderPublicRoleOptions","renderAuthenticatedModeSelector","renderPublicModeSelector","renderGeneralAccessIcon","renderGeneralShareRow","options","title","description","variant","render","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","_Class","_A","_B","_C","_D","_initProto","_initClass","_classDecs","_subjectUriDecs","_init_subjectUri","_authenticatedAccessRoleValueDecs","_init_authenticatedAccessRoleValue","_publicAccessRoleValueDecs","_init_publicAccessRoleValue","_disabledDecs","_init_disabled","_ref","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_classPrivateFieldSet","_assertClassBrand","_classPrivateFieldGet","_defineProperty","_toPropertyKey","_applyDecs","_setFunctionName","_checkInRHS","_toPrimitive","_identity","property","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","error","styles","customElement","WebComponent","html","property","styles","_classDecs","_AccessControlErrors","_AccessControlErrors2","_A","WeakMap","_B","_ref","_errorsDecs","attribute","_successfulChangesRefreshedDecs","_AccessControlErrors3","AccessControlErrors","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_errors","_init_successfulChangesRefreshed","_classPrivateFieldGet","errors","v","_classPrivateFieldSet","successfulChangesRefreshed","onClose","event","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","getScopeLabel","scope","render","length","map","error","label","action","role","message","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","_Class","_A","_B","_initProto","_initClass","_classDecs","_errorsDecs","_init_errors","_successfulChangesRefreshedDecs","_init_successfulChangesRefreshed","_ref","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_classPrivateFieldSet","_assertClassBrand","_classPrivateFieldGet","_defineProperty","_toPropertyKey","_applyDecs","_setFunctionName","_checkInRHS","_toPrimitive","_identity","property","styles","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","sym","solidLogicSingleton","customElement","WebComponent","html","nothing","property","ACCESS_ROLES","styles","directoryEntryOptionTemplate","entry","renderDirectoryEntryIcon","label","sources","includes","_classDecs","_AccessControlAddAcce","_AccessControlAddAcce2","_A","WeakMap","_B","_C","_D","_E","_F","_ref","_principalInputValueDecs","attribute","_addAccessRoleValueDecs","_pendingAccessGrantsDecs","_inputErrorDecs","_disabledDecs","type","Boolean","_asyncOptionsProviderDecs","_AccessControlAddAccess","AccessControlAddAccess","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_principalInputValue","_init_addAccessRoleValue","_init_pendingAccessGrants","_init_inputError","_init_disabled","_init_asyncOptionsProvider","_classPrivateFieldGet","principalInputValue","v","_classPrivateFieldSet","addAccessRoleValue","pendingAccessGrants","inputError","disabled","asyncOptionsProvider","onPrincipalInput","event","value","getEventValue","dispatchEvent","CustomEvent","detail","bubbles","composed","onPrincipalSelect","option","targetKind","onRoleChange","role","accessRole","find","candidate","undefined","onPendingGrantRemove","index","target","currentTarget","render","renderPendingAccessGrants","filter","map","length","grant","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","_Class","_A","_B","_C","_D","_E","_F","_initProto","_initClass","_classDecs","_principalInputValueDecs","_init_principalInputValue","_addAccessRoleValueDecs","_init_addAccessRoleValue","_pendingAccessGrantsDecs","_init_pendingAccessGrants","_ref","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_classPrivateFieldSet","_assertClassBrand","_classPrivateFieldGet","_defineProperty","_toPropertyKey","_applyDecs","_setFunctionName","_checkInRHS","_toPrimitive","_identity","nothing","property","ACCESS_ROLES","styles","isAbsoluteHttpUri","value","url","URL","protocol","Boolean","hostname","isOriginUrl","pathname","search","hash","username","password","normalizeOriginInput","trimmedValue","trim","undefined","parsed","isHttpOrigin","hasOnlyOriginParts","isRecognizedHost","includes","origin","dedupeByKey","items","getKey","uniqueItems","Map","item","key","has","set","values","dedupeComboboxOptions","options","option","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","solidLogicSingleton","sym","ns","DEFAULT_DIRECTORY_SOURCES","PUBLIC_ACCESS_ROLES","Public","solidLogicSingleton","applyAccessChanges","subjectUri","accessChanges","options","errors","scope","containerScope","subject","label","role","grantPlanner","acl","planGrantContainerAndContents","planGrantContainer","planGrantContainerContents","planGrant","plan","planRevokeContainerContents","planRevoke","getModes","applyPlan","error","push","action","targetUri","iri","message","Error","type","publicRole","find","candidate","modesFromPublicRole","modesFromRole","solidLogicSingleton","PUBLIC_ACCESS_ROLES","getAccessSubjectLabel","buildAccessChanges","pendingAccessGrants","generalAccessChanges","changedAccessGrants","map","grant","subject","type","subjectType","iri","subjectValue","role","label","flatMap","subjects","customElement","DialogComponent","html","property","state","label","debug","Authenticated","Public","analyzeContainerAccessScope","filterAuthorizationsByContainerScope","solidLogicSingleton","sym","styles","createAccessGrantDrafts","getAccessGrantIds","getAccessGrantViewModels","getAuthenticatedAccessRole","getAuthorizationSubjectLabel","getChangedAccessGrants","getPublicAccessRole","getSharedAuthorization","accessPrincipalOptionsProvider","resolveAccessTarget","applyAccessChanges","buildAccessChanges","isDefined","value","undefined","_classDecs","_AccessControlModal","_AccessControlModal2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_ref","_subjectUriDecs","attribute","_accessGrantsDecs","_principalInputValueDecs","_addAccessRoleValueDecs","_authenticatedAccessRoleValueDecs","_publicAccessRoleValueDecs","_submittingDecs","_pendingAccessGrantsDecs","_accessGrantDraftsDecs","_errorsDecs","_successfulChangesRefreshedDecs","_accessContextDecs","_accessContextLoadingDecs","_accessContextErrorDecs","_advancedSharingOpenDecs","_containerScopeDecs","_containerScopeAnalysisDecs","_protectedTargetDecs","_AccessControlModal3","AccessControlModal","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_subjectUri","_init_accessGrants","_init_principalInputValue","_init_addAccessRoleValue","_init_authenticatedAccessRoleValue","_init_publicAccessRoleValue","_init_submitting","_init_pendingAccessGrants","_init_accessGrantDrafts","_init_errors","_init_successfulChangesRefreshed","_init_accessContext","_init_accessContextLoading","_init_accessContextError","_init_advancedSharingOpen","_init_containerScope","_init_containerScopeAnalysis","_init_protectedTarget","_defineProperty","_classPrivateFieldGet","subjectUri","v","_classPrivateFieldSet","accessGrants","principalInputValue","addAccessRoleValue","authenticatedAccessRoleValue","publicAccessRoleValue","submitting","pendingAccessGrants","accessGrantDrafts","errors","successfulChangesRefreshed","accessContext","accessContextLoading","accessContextError","advancedSharingOpen","containerScope","containerScopeAnalysis","protectedTarget","disconnectedCallback","accessGrantLabelRequestVersion","accessContextRequestVersion","inputError","find","error","action","message","saveErrors","filter","setInputError","item","clearInputError","willUpdate","changedProperties","has","scopedAccessGrants","getScopedAccessGrants","updated","loadAccessContext","catch","refreshAccessGrantLabels","refreshContainerScopeAnalysis","isContainer","primaryScope","refreshScopedAccessGrantDrafts","requestVersion","sourceAccessGrants","scope","getSelectedContainerScope","grants","length","labels","Promise","all","map","authorization","agentGroup","groupUri","store","fetcher","load","doc","labelsById","Map","id","index","draft","subjectLabel","get","getDialogTitle","subject","trim","Boolean","URL","pathname","endsWith","accessContextSubjectUri","acl","findEffectiveAcl","inherited","authorizations","isProtectedResource","Error","ensureAccessContext","isConnected","canMutate","retryAccessContext","renderSharingInformation","isCustomSharing","inheritedContainer","effectiveContainer","inheritedContainerLabel","defaultContainer","onResetToDefault","renderSharingState","renderAdvancedSharing","hasMixedContainerPolicy","mixed","renderAccessContextState","renderMixedContainerWarning","selectContainerScope","checked","closeAdvancedSharing","render","dialogTitle","onSubmit","onPrincipalInput","onPrincipalSelect","onAddAccessRoleInput","onPendingGrantRemoved","onAccessGrantRoleInput","onAuthenticatedAccessRoleInput","onPublicAccessRoleInput","onCancelClick","hasUnsavedChanges","onSaveClick","e","preventDefault","commitPrincipalFromInputSafely","committed","saveAccessChanges","close","resetToDefault","directAccessGrants","findAccessGrants","targetUri","changedAccessGrants","generalAccessChanges","getGeneralAccessChanges","accessChanges","event","detail","queuePendingPrincipal","targetKind","currentAuthenticatedRole","currentPublicRole","authenticatedChange","role","publicChange","grant","_","pendingIndex","commitPrincipalFromInput","rawValue","inputSnapshot","principal","preferredLabel","snapshot","result","createPendingAccessGrant","merged","dedupePendingAccessGrants","normalizedPrincipal","resolvedTarget","subjectType","subjectValue","draftGrants","grantsBySubject","draftGrant","set","values","c","_initClass","_applyDecs","_Class","_identity","default","property","state","error","analyzeContainerAccessScope","solidLogicSingleton","sym","filterAuthorizationsByContainerScope","styles","AccessControlModal","AccessControlModal","namedNode","Public","S","Authenticated","y","w","c$1","v","ns_default","error","findImage","DialogComponent","A","n","WebComponent","i","b","customElement","defineAsyncComboboxOptionsProvider","iconlucidecirclex","iconlucidefolderopen","AccessControlSharedAccess_styles_default","_Class$4","_AccessControlSharedAccess","_A$4","_B$4","_C$3","_initProto$4","_initClass$4","_classDecs$4","_accessGrantViewModelsDecs","_init_accessGrantViewModels","_disabledDecs$2","_init_disabled$2","_searchValueDecs","_init_searchValue","_AccessControlSharedA2","_ref$4","_classPrivateFieldInitSpec$4","a","_checkPrivateRedeclaration$4","_classPrivateFieldSet$4","s","_assertClassBrand$4","r","_classPrivateFieldGet$4","_defineProperty$4","_toPropertyKey$4","t","_applyDecs$4","o","c","applyDec","m","h","g","u","d","p","_setFunctionName$4","P","j","D","I","F","l","f","N","_checkInRHS$4","_toPrimitive$4","e","_identity$4","_AccessControlSharedA","args","target","event","option","value","accessRole","candidate","detail","query","subjects","subjectLabel","entry","badge","authorization","agent","image","agentClass","maxWords","part","role","id","accessGrants","iconlucidelink","AccessControlGeneralAccess_styles_default","_Class$3","_AccessControlGeneralAccess","_A$3","_B$3","_C$2","_D$2","_initProto$3","_initClass$3","_classDecs$3","_subjectUriDecs$1","_init_subjectUri$1","_authenticatedAccessRoleValueDecs$1","_init_authenticatedAccessRoleValue$1","_publicAccessRoleValueDecs$1","_init_publicAccessRoleValue$1","_disabledDecs$1","_init_disabled$1","_AccessControlGeneral2","_ref$3","_classPrivateFieldInitSpec$3","_checkPrivateRedeclaration$3","_classPrivateFieldSet$3","_assertClassBrand$3","_classPrivateFieldGet$3","_defineProperty$3","_toPropertyKey$3","_applyDecs$3","_setFunctionName$3","_checkInRHS$3","_toPrimitive$3","_identity$3","_AccessControlGeneral","roles","eventName","error$7","options","AccessControlErrors_styles_default","_Class$2","_AccessControlErrors3","_A$2","_B$2","_initProto$2","_initClass$2","_classDecs$2","_errorsDecs$1","_init_errors$1","_successfulChangesRefreshedDecs$1","_init_successfulChangesRefreshed$1","_AccessControlErrors2","_ref$2","_classPrivateFieldInitSpec$2","_checkPrivateRedeclaration$2","_classPrivateFieldSet$2","_assertClassBrand$2","_classPrivateFieldGet$2","_defineProperty$2","_toPropertyKey$2","_applyDecs$2","_setFunctionName$2","_checkInRHS$2","_toPrimitive$2","_identity$2","_AccessControlErrors","scope","AccessControlModal_styles_default","getSharedAuthorization","iri","getAuthorizationSubjectEntries","iris","getAccessGrantId","subject","getAccessGrantIds","occurrences","authorizations","baseId","occurrence","getAuthorizationSubjectLabel","label","getAuthorizationRole","createAccessGrantDraft","sharedAuthorization","createAccessGrantDrafts","ids","index","getAccessGrantViewModels","drafts","leftIsOwner","left","rightIsOwner","right","getChangedAccessGrants","initialRole","getAuthenticatedAccessRole","modes","item","getPublicAccessRole","getAccessSubjectLabel","iconlucidebookuser","iconlucideuserround","iconlucideusers","AccessControlAddAccess_styles_default","_Class$1","_AccessControlAddAccess","_A$1","_B$1","_C$1","_D$1","_E$1","_F$1","_initProto$1","_initClass$1","_classDecs$1","_principalInputValueDecs$1","_init_principalInputValue$1","_addAccessRoleValueDecs$1","_init_addAccessRoleValue$1","_pendingAccessGrantsDecs$1","_init_pendingAccessGrants$1","_inputErrorDecs","_init_inputError","_disabledDecs","_init_disabled","_asyncOptionsProviderDecs","_init_asyncOptionsProvider","_AccessControlAddAcce2","_ref$1","_classPrivateFieldInitSpec$1","_checkPrivateRedeclaration$1","_classPrivateFieldSet$1","_assertClassBrand$1","_classPrivateFieldGet$1","_defineProperty$1","_toPropertyKey$1","_applyDecs$1","_setFunctionName$1","_checkInRHS$1","_toPrimitive$1","_identity$1","directoryEntryOptionTemplate","renderDirectoryEntryIcon","_AccessControlAddAcce","grant","isAbsoluteHttpUri","url","isOriginUrl","normalizeOriginInput","trimmedValue","parsed","isHttpOrigin","hasOnlyOriginParts","isRecognizedHost","dedupeByKey","uniqueItems","items","key","getKey","dedupeComboboxOptions","classifyAccessTarget","normalizedOrigin","principal","resolveAccessTargetLabel","resolvedPrincipal","resolvedLabel","preferredLabel","resolveAccessTarget","createUrlOption","resolved","uri","directoryEntryToOption","labelValue","getPreferredAccessPrincipalOptions","urlOption","getTrustedAppOptions","me","store","origin","app","getShortQueryOptions","preferredOptions","accessPrincipalOptionsProvider","filter","trustedAppOptions","targetOption","entries","entryLabel","applyAccessChanges","errors","accessChanges","grantPlanner","plan","subjectUri","getModes","publicRole","buildAccessChanges","pendingAccessGrants","generalAccessChanges","changedAccessGrants","_Class","_AccessControlModal3","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_initProto","_initClass","_classDecs","_subjectUriDecs","_init_subjectUri","_accessGrantsDecs","_init_accessGrants","_principalInputValueDecs","_init_principalInputValue","_addAccessRoleValueDecs","_init_addAccessRoleValue","_authenticatedAccessRoleValueDecs","_init_authenticatedAccessRoleValue","_publicAccessRoleValueDecs","_init_publicAccessRoleValue","_submittingDecs","_init_submitting","_pendingAccessGrantsDecs","_init_pendingAccessGrants","_accessGrantDraftsDecs","_init_accessGrantDrafts","_errorsDecs","_init_errors","_successfulChangesRefreshedDecs","_init_successfulChangesRefreshed","_accessContextDecs","_init_accessContext","_accessContextLoadingDecs","_init_accessContextLoading","_accessContextErrorDecs","_init_accessContextError","_advancedSharingOpenDecs","_init_advancedSharingOpen","_containerScopeDecs","_init_containerScope","_containerScopeAnalysisDecs","_init_containerScopeAnalysis","_protectedTargetDecs","_init_protectedTarget","_AccessControlModal2","_ref","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_classPrivateFieldSet","_assertClassBrand","_classPrivateFieldGet","_defineProperty","_toPropertyKey","_applyDecs","_setFunctionName","_checkInRHS","_toPrimitive","_identity","isDefined","_AccessControlModal","changedProperties","scopedAccessGrants","error$2","error$3","requestVersion","sourceAccessGrants","grants","labels","groupUri","labelsById","draft","accessContext","error$6","isCustomSharing","inheritedContainer","inheritedContainerLabel","defaultContainer","checked","dialogTitle","directAccessGrants","error$1","saveErrors","error$5","currentAuthenticatedRole","currentPublicRole","pendingIndex","rawValue","inputSnapshot","error$4","snapshot","result","targetKind","merged","normalizedPrincipal","resolvedTarget","grantsBySubject","draftGrant","draftGrants","access_control_modal_default"],"sources":["../../src/components/access-control-modal/AccessControlSharedAccess.styles.css","../../src/components/access-control-modal/AccessControlSharedAccess.ts","../../src/components/access-control-modal/AccessControlGeneralAccess.styles.css","../../src/components/access-control-modal/AccessControlGeneralAccess.ts","../../src/components/access-control-modal/AccessControlErrors.styles.css","../../src/components/access-control-modal/AccessControlErrors.ts","../../src/components/access-control-modal/AccessControlModal.styles.css","../../src/components/access-control-modal/accessGrantDrafts.ts","../../src/components/access-control-modal/AccessControlAddAccess.styles.css","../../src/components/access-control-modal/AccessControlAddAccess.ts","../../src/components/access-control-modal/helpers.ts","../../src/components/access-control-modal/accessTargetResolver.ts","../../src/components/access-control-modal/applyAccessChanges.ts","../../src/components/access-control-modal/buildAccessChanges.ts","../../src/components/access-control-modal/AccessControlModal.ts","../../src/components/access-control-modal/index.ts"],"sourcesContent":[":host {\n h2 {\n color: var(--solid-ui-color-gray-900, #101828);\n font-size: var(--solid-ui-font-size-md, 1rem);\n font-weight: 600;\n }\n\n .access-grants-header,\n .access-grants-list {\n padding: 0 10px;\n align-self: stretch;\n }\n\n .access-grants-header {\n display: flex;\n align-items: center;\n gap: 15px;\n justify-content: space-between;\n\n .access-grants-search-input {\n flex: 0 0 auto;\n width: 12ch;\n min-width: 12ch;\n --solid-ui-input-border-color: transparent;\n color: var(--solid-ui-color-zinc-500, #71717B);\n font-size: var(--solid-ui-font-size-sm, .875rem);\n font-weight: 500;\n }\n }\n\n .access-grants-list {\n display: flex;\n align-items: flex-start;\n gap: 20px;\n\n ul {\n display: flex;\n flex-direction: column;\n height: 195px;\n padding: 15px;\n align-items: flex-start;\n gap: 15px;\n flex: 1 0 0;\n min-height: 0;\n box-sizing: border-box;\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: 10px;\n border: 1px solid var(--solid-ui-color-gray-200, #E5E7EB);\n }\n\n li {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 0 0 auto;\n width: 100%;\n\n .access-grants-image {\n display: flex;\n justify-content: center;\n align-items: center;\n aspect-ratio: 1/1;\n width: 30px;\n height: 30px;\n flex: 0 0 30px;\n border-radius: 999px;\n overflow: hidden;\n color: var(--solid-ui-color-white, #FFF);\n text-align: center;\n font-size: var(--solid-ui-font-size-xs, .75rem);\n font-weight: 500;\n\n img {\n display: flex;\n width: 100%;\n height: 100%;\n border-radius: 999px;\n object-fit: cover;\n }\n\n span {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n line-height: 1;\n }\n }\n\n .access-grants-image--agentGroup {\n background: var(--solid-ui-color-blue-900, #083575);\n }\n\n .access-grants-image--agent,\n .access-grants-image--agentClass {\n background: var(--solid-ui-color-lavender-300, #e6dcff);\n }\n\n .access-grants-image--origin {\n background: var(--solid-ui-color-green-700, #15803D);\n }\n\n .access-grants-image--unknown {\n background: var(--solid-ui-color-gray-300, #D1D5DB);\n }\n\n h3 {\n flex: 1 1 auto;\n min-width: 0;\n color: var(--solid-ui-color-gray-800, #1E2939);\n font-size: var(--solid-ui-font-size-xs, .75rem);\n font-weight: 600;\n }\n\n span {\n margin-left: auto;\n flex: 0 0 auto;\n text-align: right;\n }\n\n .access-grants-role {\n margin-left: auto;\n flex: 0 0 auto;\n font-size: var(--solid-ui-font-size-xs, .75rem);\n }\n\n .access-grants-role--owner {\n font-size: var(--solid-ui-font-size-xs, .75rem);\n }\n\n .access-grants-role--editable {\n max-width: 100%;\n }\n }\n }\n\n .access-role-select--compact {\n width: 110px;\n min-width: 110px;\n flex: 0 0 110px;\n max-width: 100%;\n --solid-ui-input-border-color: transparent;\n margin-top: 0;\n }\n\n .access-grants-list li .access-role-select--compact {\n width: 110px;\n min-width: 110px;\n flex: 0 0 110px;\n }\n}\n","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",":host {\n h2 {\n color: var(--solid-ui-color-gray-900, #101828);\n font-size: var(--solid-ui-font-size-md, 1rem);\n font-weight: 600;\n }\n\n .access-grants-general {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n padding: 0 10px;\n align-self: stretch;\n\n solid-ui-combobox,\n solid-ui-input {\n --solid-ui-input-border-color: var(--solid-ui-color-slate-200, #E2E8F0);\n }\n\n .access-grants-general-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: 15px;\n align-self: stretch;\n\n .access-grants-copy-link-button-label {\n font-size: var(--solid-ui-font-size-xs, .75rem);\n font-weight: 500;\n }\n\n .access-grants-copy-link-button icon-lucide-link {\n width: 12px;\n height: 12px;\n aspect-ratio: 1/1;\n }\n }\n\n .access-grants-general-share {\n display: flex;\n align-items: center;\n gap: 10px;\n align-self: stretch;\n\n .access-grants-general-share-content {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n gap: 10px;\n flex: 1 0 0;\n\n .access-grants-general-share-icon {\n display: flex;\n width: 30px;\n height: 30px;\n padding: 5px;\n justify-content: center;\n align-items: center;\n aspect-ratio: 1/1;\n border-radius: 50px;\n background: var(--solid-ui-color-violet-50, #F5F3FF);\n }\n\n .access-grants-general-share-icon-inner {\n display: flex;\n width: 20px;\n height: 20px;\n padding: 1.25px;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n aspect-ratio: 1/1;\n\n icon-lucide-globe {\n width: 17.5px;\n height: 17.5px;\n flex-shrink: 0;\n aspect-ratio: 1/1;\n }\n }\n\n .access-grants-general-share-text {\n flex: 1 1 auto;\n min-width: 0;\n\n .access-grants-general-share-text-title {\n color: var(--solid-ui-color-gray-900, #101828);\n font-size: var(--solid-ui-font-size-sm, .875rem);\n font-weight: 600;\n }\n\n .access-grants-general-share-text-description {\n color: var(--solid-ui-color-gray-700, #364153);\n font-size: var(--solid-ui-font-size-sm, .875rem);\n }\n }\n }\n }\n }\n\n .access-role-select--general {\n width: 120px;\n min-width: 120px;\n flex: 0 0 120px;\n font-size: var(--solid-ui-font-size-xs, .75rem);\n font-weight: 500;\n }\n\n .access-role-select--compact {\n display: block;\n max-width: 100%;\n --solid-ui-input-border-color: transparent;\n margin-top: 0;\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { ACCESS_ROLES, PUBLIC_ACCESS_ROLES, type AccessRole } from 'solid-logic'\nimport * as debug from '@/lib/debug'\nimport type { ComboboxChangeEvent } from '@/components/combobox'\n\nimport '~icons/lucide/link'\nimport '~icons/lucide/globe'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\n\nimport styles from './AccessControlGeneralAccess.styles.css'\nimport type { RoleChangedDetail } from './types'\n\n@customElement('solid-ui-access-control-general-access')\nexport default class AccessControlGeneralAccess extends WebComponent {\n static styles = styles\n\n @property({ attribute: false })\n accessor subjectUri: string | undefined = undefined\n\n @property({ attribute: false })\n accessor authenticatedAccessRoleValue: AccessRole = 'No Access'\n\n @property({ attribute: false })\n accessor publicAccessRoleValue: AccessRole = 'No Access'\n\n @property({ type: Boolean })\n accessor disabled = false\n\n private onAuthenticatedRoleChange (event: ComboboxChangeEvent) {\n this.dispatchRoleChange('authenticated-role-changed', event, ACCESS_ROLES)\n }\n\n private onPublicRoleChange (event: ComboboxChangeEvent) {\n this.dispatchRoleChange('public-role-changed', event, PUBLIC_ACCESS_ROLES)\n }\n\n private dispatchRoleChange (\n eventName: 'authenticated-role-changed' | 'public-role-changed',\n event: ComboboxChangeEvent,\n roles: readonly string[]\n ) {\n const value = event.detail.option.value\n if (typeof value !== 'string' || !roles.includes(value)) {\n return\n }\n\n const detail: RoleChangedDetail = { role: value as AccessRole }\n this.dispatchEvent(new CustomEvent<RoleChangedDetail>(eventName, {\n detail,\n bubbles: true,\n composed: true\n }))\n }\n\n private async onCopyLinkClick (event: Event) {\n event.preventDefault()\n\n if (!this.subjectUri) {\n return\n }\n\n try {\n await navigator.clipboard.writeText(this.subjectUri)\n } catch (error) {\n debug.error('Failed to copy resource link', error)\n }\n }\n\n private renderAuthenticatedRoleOptions () {\n return ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role}</solid-ui-combobox-option>\n `)\n }\n\n private renderPublicRoleOptions () {\n return PUBLIC_ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role}</solid-ui-combobox-option>\n `)\n }\n\n private renderAuthenticatedModeSelector () {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-role-select--general access-grants-role access-grants-role--editable access-role-select--authenticated\"\n .disabled=${this.disabled}\n .value=${this.authenticatedAccessRoleValue}\n @change=${this.onAuthenticatedRoleChange}\n >\n ${this.renderAuthenticatedRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderPublicModeSelector () {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-role-select--general access-grants-role access-grants-role--editable access-role-select--public\"\n .disabled=${this.disabled}\n .value=${this.publicAccessRoleValue}\n @change=${this.onPublicRoleChange}\n >\n ${this.renderPublicRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderGeneralAccessIcon () {\n return html`\n <div class=\"access-grants-general-share-icon\">\n <div class=\"access-grants-general-share-icon-inner\">\n <icon-lucide-globe class=\"access-grants-general-share-icon-image\"></icon-lucide-globe>\n </div>\n </div>\n `\n }\n\n private renderGeneralShareRow (options: {\n title: string\n description: string\n variant: 'authenticated' | 'public'\n }) {\n return html`\n <div class=\"access-grants-general-share\">\n <div class=\"access-grants-general-share-content\">\n ${this.renderGeneralAccessIcon()}\n <div class=\"access-grants-general-share-text\">\n <p class=\"access-grants-general-share-text-title\">${options.title}</p>\n <p class=\"access-grants-general-share-text-description\">${options.description}</p>\n </div>\n </div>\n ${options.variant === 'authenticated'\n ? this.renderAuthenticatedModeSelector()\n : this.renderPublicModeSelector()}\n </div>\n `\n }\n\n protected render () {\n return html`\n <section class=\"access-grants-general\" aria-labelledby=\"general-access-heading\">\n <div class=\"access-grants-general-header\">\n <h2 id=\"general-access-heading\">General Access</h2>\n <solid-ui-button\n class=\"access-grants-copy-link-button\"\n variant=\"tertiary\"\n @click=${this.onCopyLinkClick}\n >\n <icon-lucide-link slot=\"left-icon\"></icon-lucide-link>\n <span class=\"access-grants-copy-link-button-label\">Copy Link</span>\n </solid-ui-button>\n </div>\n ${this.renderGeneralShareRow({\n title: 'Only logged in users with the link',\n description: 'Users must sign in to SolidOS to access this shared item using the link.',\n variant: 'authenticated'\n })}\n ${this.renderGeneralShareRow({\n title: 'Anyone with the Link',\n description: 'Anyone on the internet with the link can view.',\n variant: 'public'\n })}\n </section>\n `\n }\n}\n",":host {\n display: block;\n width: 100%;\n contain: inline-size;\n\n solid-ui-error-state {\n width: 100%;\n max-width: 100%;\n contain: inline-size;\n }\n\n .access-control-save-errors {\n display: grid;\n gap: 8px;\n width: 100%;\n margin: 0;\n padding-left: 0;\n box-sizing: border-box;\n list-style: none;\n\n li {\n display: grid;\n grid-template-columns: minmax(0, 18rem) minmax(0, 1fr);\n align-items: baseline;\n gap: 6px;\n min-width: 0;\n color: var(--solid-ui-color-red-600, #be2e48);\n font-size: var(--solid-ui-font-size-sm, .875rem);\n line-height: 1.4;\n }\n\n .access-control-save-error-label {\n font-weight: 500;\n overflow-wrap: anywhere;\n }\n\n .access-control-save-error-detail {\n min-width: 0;\n overflow-wrap: anywhere;\n }\n }\n\n @media (max-width: 600px) {\n .access-control-save-errors li {\n grid-template-columns: minmax(0, 40%) minmax(0, 1fr);\n }\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport '@/components/error-state'\n\nimport styles from './AccessControlErrors.styles.css'\nimport type { AccessSaveError } from './types'\n\n@customElement('solid-ui-access-control-errors')\nexport default class AccessControlErrors extends WebComponent {\n static styles = styles\n\n @property({ attribute: false })\n accessor errors: AccessSaveError[] = []\n\n @property({ attribute: false })\n accessor successfulChangesRefreshed = true\n\n private onClose (event: Event) {\n event.stopPropagation()\n this.dispatchEvent(new CustomEvent('close', {\n bubbles: true,\n composed: true\n }))\n }\n\n private getScopeLabel (scope: NonNullable<Extract<AccessSaveError, { action: 'grant' | 'revoke' }>['scope']>) {\n return scope === 'folder+contents'\n ? 'folder and contents'\n : scope === 'container'\n ? 'folder'\n : scope === 'contents'\n ? 'contents'\n : 'resource'\n }\n\n protected render () {\n if (!this.errors.length) {\n return html``\n }\n\n return html`\n <solid-ui-error-state\n title=\"Some access changes could not be saved\"\n message=${this.successfulChangesRefreshed\n ? 'Any successful changes are shown above. The list below shows only the changes that failed. Close this dialog and reopen it if you want to try again.'\n : 'Some changes may have been saved, but we could not refresh the Shared with list. The list below shows only the changes that failed. Close this dialog and reopen it if you want to try again.'}\n @close=${this.onClose}\n >\n <ul class=\"access-control-save-errors\">\n ${this.errors.map(error => html`\n <li>\n <span class=\"access-control-save-error-label\">${error.label}</span>\n <span class=\"access-control-save-error-detail\">\n ${error.action === 'grant'\n ? `Could not grant ${error.role ?? 'access'} for ${error.scope ? this.getScopeLabel(error.scope) : 'resource'}`\n : error.action === 'revoke'\n ? `Could not remove access for ${error.scope ? this.getScopeLabel(error.scope) : 'resource'}`\n : error.action === 'reset'\n ? 'Could not reset sharing'\n : 'Could not save access changes'}\n </span>\n <span class=\"access-control-save-error-message\">${error.message}</span>\n </li>\n `)}\n </ul>\n </solid-ui-error-state>\n `\n }\n}\n",":host {\n .access-control-mixed-policy-warning {\n display: grid;\n gap: 4px;\n margin: 0 0 16px;\n padding: 12px 14px;\n border: 1px solid var(--solid-ui-color-red-300, #FCA5A5);\n border-radius: 5px;\n background: var(--solid-ui-color-red-50, #FEF2F2);\n color: var(--solid-ui-color-red-800, #991B1B);\n font-size: var(--solid-ui-font-size-sm, .875rem);\n line-height: 1.45;\n\n strong {\n font-weight: 600;\n }\n }\n\n .access-control-same-access-toggle {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n margin-top: 12px;\n color: var(--solid-ui-color-gray-900, #101828);\n line-height: 1.4;\n border: 0;\n background: transparent;\n padding: 0;\n text-align: left;\n font: inherit;\n cursor: pointer;\n }\n\n .access-control-switch-track {\n display: inline-flex;\n flex: 0 0 auto;\n width: 34px;\n height: 20px;\n margin-top: 1px;\n border-radius: 999px;\n background: var(--solid-ui-color-slate-300, #CBD5E1);\n padding: 2px;\n transition: background .15s ease;\n }\n\n .access-control-same-access-toggle[aria-checked='true'] .access-control-switch-track {\n background: var(--solid-ui-color-purple-600, #9333EA);\n }\n\n .access-control-switch-thumb {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: white;\n box-shadow: 0 1px 2px rgb(0 0 0 / 25%);\n transition: transform .15s ease;\n }\n\n .access-control-same-access-toggle[aria-checked='true'] .access-control-switch-thumb {\n transform: translateX(14px);\n }\n\n .access-control-same-access-toggle > span:last-child {\n min-width: 0;\n max-width: 100%;\n overflow-wrap: anywhere;\n }\n\n .access-control-sharing-state,\n .access-control-contents-prompt {\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n padding: 10px;\n margin-bottom: 16px;\n font-size: var(--solid-ui-font-size-sm, .875rem);\n\n h2 {\n margin: 0 0 10px;\n color: var(--solid-ui-color-gray-900, #101828);\n font-size: var(--solid-ui-font-size-md, 1rem);\n font-weight: 600;\n }\n\n .access-control-advanced-sharing {\n box-sizing: border-box;\n min-width: 0;\n width: 100%;\n max-width: 100%;\n overflow-wrap: anywhere;\n margin-top: 10px;\n padding: 10px 15px;\n position: relative;\n padding-right: 48px;\n\n h2 {\n margin: 0 0 4px;\n color: var(--solid-ui-color-gray-900, #101828);\n font-size: var(--solid-ui-font-size-md, 1rem);\n font-weight: 600;\n }\n\n p {\n margin: 0;\n min-width: 0;\n max-width: 100%;\n overflow-wrap: anywhere;\n color: var(--solid-ui-color-gray-600, #4A5565);\n font-size: var(--solid-ui-font-size-xs, .75rem);\n line-height: 1.5;\n }\n\n .access-control-advanced-sharing-description-line {\n display: block;\n max-width: 100%;\n }\n }\n\n .access-control-advanced-sharing-options,\n .access-control-advanced-sharing-actions {\n display: flex;\n flex-wrap: wrap;\n min-width: 0;\n gap: 8px;\n margin-top: 10px;\n\n solid-ui-button {\n --solid-ui-font-size-md: var(--solid-ui-font-size-sm, .875rem);\n min-width: 0;\n max-width: 100%;\n white-space: normal;\n }\n }\n\n .access-control-advanced-sharing-actions {\n justify-content: flex-end;\n position: absolute;\n top: 10px;\n right: 15px;\n margin-top: 0;\n\n solid-ui-button {\n color: var(--solid-ui-color-gray-600, #4A5565);\n }\n }\n\n p {\n margin: 0;\n min-width: 0;\n max-width: 100%;\n overflow-wrap: anywhere;\n color: var(--solid-ui-color-gray-600, #4A5565);\n line-height: 1.5;\n }\n }\n\n .access-control-sharing-state-panel,\n .access-control-contents-prompt {\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n border: 1px solid var(--solid-ui-color-slate-200, #E2E8F0);\n border-radius: 5px;\n background: var(--solid-ui-color-white, #FFF);\n padding: 10px 15px;\n }\n\n .access-control-sharing-state-panel {\n display: grid;\n gap: 10px;\n\n p {\n min-width: 0;\n max-width: 100%;\n overflow-wrap: anywhere;\n }\n\n .access-control-sharing-state-custom-row {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n\n p {\n flex: 1 1 auto;\n }\n\n solid-ui-button {\n flex: 0 0 auto;\n --solid-ui-font-size-md: var(--solid-ui-font-size-sm, .875rem);\n }\n }\n }\n\n .access-control-sharing-guidance {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n gap: 12px;\n\n p {\n min-width: 0;\n max-width: 100%;\n overflow-wrap: anywhere;\n }\n\n solid-ui-button {\n flex: 0 0 auto;\n --solid-ui-font-size-md: var(--solid-ui-font-size-sm, .875rem);\n }\n }\n\n .access-control-sharing-state-actions {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n min-width: 0;\n justify-content: flex-end;\n margin-top: 10px;\n gap: 8px;\n\n solid-ui-button {\n --solid-ui-font-size-md: var(--solid-ui-font-size-sm, .875rem);\n max-width: 100%;\n }\n }\n\n @media (max-width: 420px) {\n .access-control-sharing-guidance {\n align-items: flex-start;\n flex-direction: column;\n gap: 8px;\n\n solid-ui-button {\n align-self: flex-end;\n }\n }\n }\n\n .access-control-contents-prompt {\n .access-control-contents-prompt-actions {\n display: flex;\n flex-wrap: wrap;\n min-width: 0;\n gap: 8px;\n margin-top: 10px;\n }\n\n solid-ui-button {\n --solid-ui-font-size-md: var(--solid-ui-font-size-sm, .875rem);\n max-width: 100%;\n flex: 0 1 auto;\n }\n }\n\n .access-control-contents-prompt h2 {\n margin-bottom: 4px;\n }\n\n .access-control-footer-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 15px;\n width: 100%;\n\n > solid-ui-button {\n min-width: 132px;\n }\n }\n\n @media (max-width: 380px) {\n .access-control-footer-actions {\n gap: 8px;\n\n > solid-ui-button {\n min-width: 0;\n flex: 1 1 0;\n }\n }\n }\n}\n","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",":host {\n .access-grants-form {\n display: flex;\n flex-direction: column;\n padding: 10px;\n align-items: flex-start;\n gap: 10px;\n align-self: stretch;\n font-size: var(--solid-ui-font-size-sm, .875rem);\n\n --access-role-select-width: 129px;\n\n p {\n color: var(--solid-ui-color-gray-600, #4A5565);\n line-height: 1.5;\n }\n\n .access-grants-form-main {\n display: flex;\n align-items: center;\n gap: 10px;\n align-self: stretch;\n\n .access-grants-input {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-width: 0;\n padding: 10px 15px;\n gap: 12px;\n align-items: flex-start;\n border-radius: 5px;\n border: 1px solid var(--solid-ui-color-slate-200, #E2E8F0);\n background: var(--solid-ui-color-white, #FFF);\n\n solid-ui-combobox {\n width: 100%;\n --solid-ui-input-border-color: var(--solid-ui-color-slate-200, #E2E8F0);\n }\n\n .access-principal-error {\n margin: 0;\n color: var(--solid-ui-color-red-700, #B42318);\n font-size: var(--solid-ui-font-size-xs, .75rem);\n line-height: 1.4;\n }\n }\n }\n\n .access-grants-pending {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 42px;\n align-items: center;\n }\n\n .access-grants-pending-item {\n display: flex;\n padding: 5px 10px;\n align-items: center;\n gap: 6px;\n max-width: 100%;\n border-radius: 5px;\n border: 1px solid var(--solid-ui-color-gray-300, #D1D5DC);\n background: var(--solid-ui-color-gray-50, #F9FAFB);\n color: var(--solid-ui-color-gray-700, #374151);\n }\n\n .access-grants-pending-item-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--solid-ui-color-gray-500, #6A7282);\n font-size: var(--solid-ui-font-size-xs, .75rem);\n line-height: 1;\n }\n\n .access-grants-pending-item-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n border-radius: 999px;\n background: transparent;\n color: var(--solid-ui-color-gray-300, #D1D5DC);\n cursor: pointer;\n\n icon-lucide-circle-x {\n width: 14px;\n height: 14px;\n }\n }\n }\n\n .access-grants-directory-entry {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n line-height: 1;\n }\n\n .access-role-select {\n display: block;\n max-width: 100%;\n margin-top: 25px;\n flex: 0 0 auto;\n width: var(--access-role-select-width);\n --solid-ui-input-border-color: var(--solid-ui-color-slate-200, #E2E8F0);\n }\n\n .access-role-select--top {\n margin-top: 0;\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { ACCESS_ROLES, type AccessRole, type DirectoryEntry } from 'solid-logic'\nimport type { AsyncComboboxOptionsProvider, ComboboxChangeEvent, ComboboxOptionData } from '@/components/combobox'\n\nimport '~icons/lucide/book-user'\nimport '~icons/lucide/user-round'\nimport '~icons/lucide/users'\nimport '~icons/lucide/circle-x'\nimport '~icons/lucide/globe'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\n\nimport styles from './AccessControlAddAccess.styles.css'\nimport type { PendingAccessGrant, PendingGrantRemovedDetail, RoleChangedDetail, TargetInputDetail, TargetSelectedDetail } from './types'\n\nexport function directoryEntryOptionTemplate (entry: DirectoryEntry) {\n return html`\n <span class=\"access-grants-directory-entry\">\n ${renderDirectoryEntryIcon(entry)}\n <span>${entry.label}</span>\n </span>\n `\n}\n\nfunction renderDirectoryEntryIcon (entry: DirectoryEntry) {\n if (entry.sources.includes('contacts') || entry.sources.includes('groups')) {\n return html`<icon-lucide-book-user style=\"width: 13px; height: 13px; flex: 0 0 13px;\"></icon-lucide-book-user>`\n }\n\n if (entry.sources.includes('friends')) {\n return html`<icon-lucide-users style=\"width: 13px; height: 13px; flex: 0 0 13px;\"></icon-lucide-users>`\n }\n\n if (entry.sources.includes('catalog')) {\n return html`<icon-lucide-user-round style=\"width: 13px; height: 13px; flex: 0 0 13px;\"></icon-lucide-user-round>`\n }\n\n return nothing\n}\n\n@customElement('solid-ui-access-control-add-access')\nexport default class AccessControlAddAccess extends WebComponent {\n static styles = styles\n\n @property({ attribute: false })\n accessor principalInputValue = ''\n\n @property({ attribute: false })\n accessor addAccessRoleValue: AccessRole = 'Viewer'\n\n @property({ attribute: false })\n accessor pendingAccessGrants: PendingAccessGrant[] = []\n\n @property({ attribute: false })\n accessor inputError = ''\n\n @property({ type: Boolean })\n accessor disabled = false\n\n @property({ attribute: false })\n accessor asyncOptionsProvider: AsyncComboboxOptionsProvider | null = null\n\n private onPrincipalInput (event: Event) {\n const value = this.getEventValue(event)\n this.dispatchEvent(new CustomEvent<TargetInputDetail>('target-input', {\n detail: { value },\n bubbles: true,\n composed: true\n }))\n }\n\n private onPrincipalSelect (event: ComboboxChangeEvent) {\n const option = event.detail.option as ComboboxOptionData & { targetKind?: 'origin' | 'trustedApp' }\n if (typeof option.value !== 'string') {\n return\n }\n\n this.dispatchEvent(new CustomEvent<TargetSelectedDetail>('target-selected', {\n detail: {\n value: option.value,\n label: option.label,\n targetKind: option.targetKind\n },\n bubbles: true,\n composed: true\n }))\n }\n\n private onRoleChange (event: ComboboxChangeEvent) {\n const role = event.detail.option.value\n const accessRole = typeof role === 'string'\n ? ACCESS_ROLES.find(candidate => candidate === role)\n : undefined\n if (!accessRole) {\n return\n }\n\n this.dispatchEvent(new CustomEvent<RoleChangedDetail>('role-changed', {\n detail: { role: accessRole },\n bubbles: true,\n composed: true\n }))\n }\n\n private onPendingGrantRemove (index: number) {\n this.dispatchEvent(new CustomEvent<PendingGrantRemovedDetail>('pending-grant-removed', {\n detail: { index },\n bubbles: true,\n composed: true\n }))\n }\n\n private getEventValue (event: Event): string {\n const target = event.currentTarget as { value?: string | null } | null\n return typeof target?.value === 'string' ? target.value : ''\n }\n\n protected render () {\n return html`\n <section class=\"access-grants-form\" aria-label=\"Add access\">\n <p>Add person, group or software agent URL.</p>\n <div class=\"access-grants-form-main\">\n <div class=\"access-grants-input\">\n <solid-ui-combobox\n class=\"access-principal-combobox\"\n .disabled=${this.disabled}\n label=\"Add person, group or software agent URL.\"\n .srOnlyLabel=${true}\n .value=${this.principalInputValue}\n placeholder=\"Paste a link or enter a name\"\n .asyncOptionsProvider=${this.asyncOptionsProvider}\n @input=${this.onPrincipalInput}\n @change=${this.onPrincipalSelect}\n ></solid-ui-combobox>\n ${this.inputError\n ? html`<p class=\"access-principal-error\" role=\"alert\">${this.inputError}</p>`\n : nothing}\n ${this.renderPendingAccessGrants()}\n </div>\n <solid-ui-combobox\n class=\"access-role-select access-role-select--top\"\n .disabled=${this.disabled}\n .value=${this.addAccessRoleValue}\n @change=${this.onRoleChange}\n >\n ${ACCESS_ROLES\n .filter(role => role !== 'No Access')\n .map(role => html`\n <solid-ui-combobox-option value=${role}>${role}</solid-ui-combobox-option>\n `)}\n </solid-ui-combobox>\n </div>\n </section>\n `\n }\n\n private renderPendingAccessGrants () {\n if (!this.pendingAccessGrants.length) {\n return nothing\n }\n\n return html`\n <div class=\"access-grants-pending\">\n ${this.pendingAccessGrants.map((grant, index) => html`\n <div class=\"access-grants-pending-item\">\n <span class=\"access-grants-pending-item-label\">\n ${grant.targetKind === 'trustedApp'\n ? html`<icon-lucide-globe style=\"width: 13px; height: 13px; vertical-align: -2px;\"></icon-lucide-globe>`\n : nothing}\n ${grant.label}\n </span>\n <solid-ui-button\n type=\"button\"\n variant=\"ghost\"\n class=\"access-grants-pending-item-remove\"\n ?disabled=${this.disabled}\n @click=${() => this.onPendingGrantRemove(index)}\n >\n <span class=\"sr-only\">Remove ${grant.label}</span>\n <icon-lucide-circle-x slot=\"icon\"></icon-lucide-circle-x>\n </solid-ui-button>\n </div>\n `)}\n </div>\n `\n }\n}\n","import type { ComboboxOptionData } from '@/components/combobox'\n\nexport type StringComboboxOptionData = ComboboxOptionData & { value: string }\n\nexport function isAbsoluteHttpUri (value: string): boolean {\n try {\n const url = new URL(value)\n return (url.protocol === 'http:' || url.protocol === 'https:') && Boolean(url.hostname)\n } catch {\n return false\n }\n}\n\nexport function isOriginUrl (value: string): boolean {\n if (!isAbsoluteHttpUri(value)) {\n return false\n }\n\n const url = new URL(value)\n return url.pathname === '/' &&\n !url.search &&\n !url.hash &&\n !url.username &&\n !url.password\n}\n\nexport function normalizeOriginInput (value: string): string | undefined {\n const trimmedValue = value.trim()\n if (!trimmedValue || isAbsoluteHttpUri(trimmedValue)) {\n return undefined\n }\n\n try {\n const parsed = new URL(`https://${trimmedValue}`)\n const isHttpOrigin = parsed.protocol === 'http:' || parsed.protocol === 'https:'\n const hasOnlyOriginParts = parsed.pathname === '/' && !parsed.search && !parsed.hash\n const isRecognizedHost = parsed.hostname.includes('.') ||\n parsed.hostname.includes(':')\n\n return isHttpOrigin && hasOnlyOriginParts && isRecognizedHost && !parsed.username && !parsed.password\n ? parsed.origin\n : undefined\n } catch {\n return undefined\n }\n}\n\nexport function dedupeByKey<T> (items: T[], getKey: (item: T) => string | undefined): T[] {\n const uniqueItems = new Map<string, T>()\n\n for (const item of items) {\n const key = getKey(item)\n if (key && !uniqueItems.has(key)) {\n uniqueItems.set(key, item)\n }\n }\n\n return [...uniqueItems.values()]\n}\n\nexport function dedupeComboboxOptions (options: StringComboboxOptionData[]): StringComboboxOptionData[] {\n return dedupeByKey(options, option => option.value)\n}\n","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","import { PUBLIC_ACCESS_ROLES, Public, solidLogicSingleton } from 'solid-logic'\nimport type { AccessChange, AccessSaveError, AccessSaveScope } from './types'\n\nexport async function applyAccessChanges (\n subjectUri: string,\n accessChanges: AccessChange[],\n options: { containerScope?: AccessSaveScope } = {}\n): Promise<AccessSaveError[]> {\n const errors: AccessSaveError[] = []\n const scope = options.containerScope ?? 'file'\n\n for (const { subject, label, role } of accessChanges) {\n try {\n const grantPlanner = scope === 'folder+contents'\n ? solidLogicSingleton.acl.planGrantContainerAndContents\n : scope === 'container'\n ? solidLogicSingleton.acl.planGrantContainer\n : scope === 'contents'\n ? solidLogicSingleton.acl.planGrantContainerContents\n : solidLogicSingleton.acl.planGrant\n const plan = role === 'No Access'\n ? await (scope === 'contents'\n ? solidLogicSingleton.acl.planRevokeContainerContents(subjectUri, subject)\n : solidLogicSingleton.acl.planRevoke(subjectUri, subject))\n : await grantPlanner(subjectUri, subject, getModes(subject, role))\n\n await solidLogicSingleton.acl.applyPlan(plan)\n } catch (error) {\n errors.push({\n action: role === 'No Access' ? 'revoke' : 'grant',\n targetUri: subject.iri,\n label,\n role,\n scope,\n message: error instanceof Error\n ? error.message\n : 'Unable to apply access change.'\n })\n }\n }\n\n return errors\n}\n\nfunction getModes (subject: AccessChange['subject'], role: AccessChange['role']) {\n if (subject.type === 'agentClass' && subject.iri === Public.iri) {\n const publicRole = PUBLIC_ACCESS_ROLES.find(candidate => candidate === role)\n if (!publicRole) {\n throw new Error(`Public access does not support the ${role} role.`)\n }\n return solidLogicSingleton.acl.modesFromPublicRole(publicRole)\n }\n\n return solidLogicSingleton.acl.modesFromRole(role)\n}\n","import { getAccessSubjectLabel } from './accessGrantDrafts'\nimport type { AccessChange, ChangedAccessGrant, PendingAccessGrant } from './types'\n\nexport type AccessChangeDrafts = {\n pendingAccessGrants: PendingAccessGrant[]\n generalAccessChanges: AccessChange[]\n changedAccessGrants: ChangedAccessGrant[]\n}\n\nexport function buildAccessChanges ({\n pendingAccessGrants,\n generalAccessChanges,\n changedAccessGrants\n}: AccessChangeDrafts): AccessChange[] {\n return [\n ...pendingAccessGrants.map(grant => ({\n subject: { type: grant.subjectType, iri: grant.subjectValue },\n role: grant.role,\n label: grant.label\n })),\n ...generalAccessChanges,\n ...changedAccessGrants.flatMap(({ subjects, role }) =>\n subjects.map(subject => ({\n subject,\n role,\n label: getAccessSubjectLabel(subject)\n }))\n )\n ]\n}\n","import { customElement, DialogComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport type { PropertyValues } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { label } from '@/utils/label'\nimport * as debug from '@/lib/debug'\nimport { Authenticated, Public, analyzeContainerAccessScope, filterAuthorizationsByContainerScope, solidLogicSingleton, type ACLContext, type AccessRole, type Authorization, type ContainerAccessScope, type ContainerAccessScopeResult } from 'solid-logic'\nimport { sym } from 'rdflib'\n\nimport '~icons/lucide/circle-x'\nimport '~icons/lucide/folder'\nimport '~icons/lucide/folder-open'\nimport '~icons/lucide/x'\nimport '@/components/dialog'\nimport '@/components/dialog-content'\nimport '@/components/dialog-footer'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\nimport './AccessControlSharedAccess'\nimport './AccessControlGeneralAccess'\nimport './AccessControlErrors'\n\nimport styles from './AccessControlModal.styles.css'\nimport type { AccessChange, AccessControlError, AccessGrantDraft, AccessGrantRoleChangedEvent, AccessSaveError, AccessSaveScope, InputAccessControlError, PendingAccessGrant, PendingGrantRemovedEvent, RoleChangedEvent, TargetInputEvent, TargetSelectedEvent } from './types'\nimport { createAccessGrantDrafts, getAccessGrantIds, getAccessGrantViewModels, getAuthenticatedAccessRole, getAuthorizationSubjectLabel, getChangedAccessGrants, getPublicAccessRole, getSharedAuthorization } from './accessGrantDrafts'\nimport { accessPrincipalOptionsProvider, resolveAccessTarget } from './accessTargetResolver'\nimport { applyAccessChanges } from './applyAccessChanges'\nimport { buildAccessChanges } from './buildAccessChanges'\n\nfunction isDefined<T> (value: T | undefined | null): value is T {\n return value !== undefined && value !== null\n}\n\ntype PendingAccessGrantCreationResult =\n | { grant: PendingAccessGrant }\n | { error: InputAccessControlError }\n\n@customElement('solid-ui-access-control-modal')\nexport default class AccessControlModal extends DialogComponent<void> {\n static styles = styles\n\n @property({ attribute: false })\n accessor subjectUri: string | undefined = undefined\n\n @property({ attribute: false })\n accessor accessGrants: Authorization[] | undefined = undefined\n\n @state()\n private accessor principalInputValue: string = ''\n\n @state()\n private accessor addAccessRoleValue: AccessRole = 'Viewer'\n\n @state()\n private accessor authenticatedAccessRoleValue: AccessRole = 'No Access'\n\n @state()\n private accessor publicAccessRoleValue: AccessRole = 'No Access'\n\n @state()\n private accessor submitting: boolean = false\n\n @state()\n private accessor pendingAccessGrants: PendingAccessGrant[] = []\n\n @state()\n private accessor accessGrantDrafts: AccessGrantDraft[] = []\n\n @state()\n private accessor errors: AccessControlError[] = []\n\n @state()\n private accessor successfulChangesRefreshed = true\n\n @state()\n private accessor accessContext: ACLContext | undefined\n\n @state()\n private accessor accessContextLoading = false\n\n @state()\n private accessor accessContextError = ''\n\n // Intentionally has no opener this release: scope selectors and reset are deferred.\n @state()\n private accessor advancedSharingOpen = false\n\n @state()\n private accessor containerScope: ContainerAccessScope = 'folder+contents'\n\n @state()\n private accessor containerScopeAnalysis: ContainerAccessScopeResult | undefined\n\n @state()\n private accessor protectedTarget = false\n\n private accessGrantLabelRequestVersion = 0\n private accessContextRequestVersion = 0\n private accessContextSubjectUri: string | undefined\n\n disconnectedCallback (): void {\n this.accessGrantLabelRequestVersion++\n this.accessContextRequestVersion++\n this.errors = []\n super.disconnectedCallback()\n }\n\n private get inputError (): string {\n return this.errors.find(error => error.action === 'input')?.message ?? ''\n }\n\n private get saveErrors (): AccessSaveError[] {\n return this.errors.filter((error): error is AccessSaveError => error.action !== 'input')\n }\n\n private setInputError (error: InputAccessControlError) {\n this.errors = [\n ...this.errors.filter(item => item.action !== 'input'),\n error\n ]\n }\n\n private clearInputError () {\n this.errors = this.errors.filter(error => error.action !== 'input')\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('accessGrants')) {\n const scopedAccessGrants = this.getScopedAccessGrants()\n this.accessGrantDrafts = createAccessGrantDrafts(scopedAccessGrants)\n this.authenticatedAccessRoleValue = getAuthenticatedAccessRole(scopedAccessGrants)\n this.publicAccessRoleValue = getPublicAccessRole(scopedAccessGrants)\n }\n }\n\n protected updated (changedProperties: PropertyValues<this>) {\n super.updated(changedProperties)\n\n if (changedProperties.has('subjectUri')) {\n this.loadAccessContext().catch(error => {\n debug.error('Failed to load access control context', error)\n })\n }\n\n if (changedProperties.has('accessGrants')) {\n this.refreshAccessGrantLabels().catch((error: unknown) => {\n debug.error('Failed to refresh access grant labels', error)\n })\n }\n\n if (changedProperties.has('accessContext' as keyof AccessControlModal) && !changedProperties.has('subjectUri')) {\n this.refreshContainerScopeAnalysis()\n }\n }\n\n private refreshContainerScopeAnalysis () {\n if (this.isContainer() && this.accessContext) {\n this.containerScopeAnalysis = analyzeContainerAccessScope(this.accessContext)\n this.containerScope = this.containerScopeAnalysis.primaryScope\n this.refreshScopedAccessGrantDrafts()\n } else {\n this.containerScopeAnalysis = undefined\n }\n }\n\n private async refreshAccessGrantLabels () {\n const requestVersion = ++this.accessGrantLabelRequestVersion\n const sourceAccessGrants = this.accessGrants\n const subjectUri = this.subjectUri\n const scope = this.getSelectedContainerScope()\n const grants = this.getScopedAccessGrants(scope)\n if (!grants.length) {\n this.accessGrantDrafts = []\n return\n }\n\n const labels = await Promise.all(grants.map(async authorization => {\n await Promise.all(authorization.agentGroup.map(async groupUri => {\n try {\n await solidLogicSingleton.store.fetcher.load(sym(groupUri).doc())\n } catch {\n // Keep the fallback label if the group document cannot be loaded.\n }\n }))\n\n return getAuthorizationSubjectLabel(getSharedAuthorization(authorization))\n }))\n\n if (\n requestVersion === this.accessGrantLabelRequestVersion &&\n this.accessGrants === sourceAccessGrants &&\n this.subjectUri === subjectUri &&\n this.getSelectedContainerScope() === scope\n ) {\n const labelsById = new Map(getAccessGrantIds(grants).map((id, index) => [id, labels[index]]))\n this.accessGrantDrafts = this.accessGrantDrafts.map(draft => ({\n ...draft,\n subjectLabel: labelsById.get(draft.id) ?? draft.subjectLabel\n }))\n }\n }\n\n private getDialogTitle (): string {\n const subject = this.subjectUri ? sym(this.subjectUri) : undefined\n const subjectLabel = subject ? label(subject).trim() : ''\n\n if (!subjectLabel || subjectLabel === 'this resource') {\n return 'Manage Access of \"this resource\"'\n }\n return `Manage Access of \"${subjectLabel}\"`\n }\n\n private isContainer (): boolean {\n return Boolean(this.subjectUri && new URL(this.subjectUri).pathname.endsWith('/'))\n }\n\n private async loadAccessContext (): Promise<void> {\n const requestVersion = ++this.accessContextRequestVersion\n const subjectUri = this.subjectUri\n this.accessContext = undefined\n this.accessContextSubjectUri = undefined\n this.accessContextError = ''\n this.accessContextLoading = Boolean(subjectUri)\n\n if (!subjectUri) {\n this.accessContextLoading = false\n return\n }\n\n try {\n const accessContext = await solidLogicSingleton.acl.findEffectiveAcl(subjectUri)\n if (requestVersion !== this.accessContextRequestVersion || this.subjectUri !== subjectUri) {\n return\n }\n\n this.accessContext = accessContext\n this.accessContextSubjectUri = subjectUri\n if (this.accessContext?.inherited && !(this.accessGrants?.length)) {\n // findAccessGrants only reports ACLs attached directly to the resource.\n // Inherited permissions are the effective grants users need to review.\n this.accessGrants = this.accessContext.authorizations\n }\n this.refreshContainerScopeAnalysis()\n this.protectedTarget = solidLogicSingleton.acl.isProtectedResource(subjectUri)\n if (this.protectedTarget) {\n this.refreshScopedAccessGrantDrafts()\n }\n } catch (error) {\n if (requestVersion !== this.accessContextRequestVersion || this.subjectUri !== subjectUri) {\n return\n }\n\n this.accessContextError = error instanceof Error && error.message.trim()\n ? error.message\n : 'Unable to load access settings for this resource.'\n debug.error('Failed to load access control context', error)\n } finally {\n if (requestVersion === this.accessContextRequestVersion && this.subjectUri === subjectUri) {\n this.accessContextLoading = false\n }\n }\n }\n\n private async ensureAccessContext (): Promise<boolean> {\n if (!this.subjectUri) {\n return false\n }\n\n // Direct method calls are used by consumers and unit tests before the\n // element is connected; the rendered controls are always guarded below.\n if (!this.isConnected) {\n return true\n }\n\n if (this.accessContextSubjectUri === this.subjectUri && this.accessContext && !this.accessContextError) {\n return true\n }\n\n await this.loadAccessContext()\n return this.accessContextSubjectUri === this.subjectUri && Boolean(this.accessContext) && !this.accessContextError\n }\n\n private canMutate (): boolean {\n if (!this.isConnected) {\n return true\n }\n\n if (!this.subjectUri) {\n return true\n }\n\n return Boolean(\n this.subjectUri &&\n this.accessContextSubjectUri === this.subjectUri &&\n this.accessContext &&\n !this.accessContextLoading &&\n !this.accessContextError\n )\n }\n\n private async retryAccessContext () {\n await this.loadAccessContext()\n }\n\n private renderSharingInformation () {\n if (!this.accessContext) {\n return html``\n }\n\n const isCustomSharing = !this.accessContext.inherited\n const inheritedContainer = this.accessContext?.effectiveContainer\n const inheritedContainerLabel = inheritedContainer\n ? label(sym(inheritedContainer)).trim()\n : ''\n const defaultContainer = inheritedContainerLabel && inheritedContainerLabel !== inheritedContainer\n ? html`<strong>${inheritedContainerLabel}</strong> (${inheritedContainer})`\n : html`<strong>${inheritedContainer ?? 'the parent container'}</strong>`\n return html`\n <div class=\"access-control-sharing-state-panel\">\n ${isCustomSharing\n ? html`\n <div class=\"access-control-sharing-state-custom-row\">\n <p>This resource has its own sharing settings.</p>\n ${!this.protectedTarget\n ? html`\n <solid-ui-button\n type=\"button\"\n variant=\"tertiary\"\n aria-label=\"Reset custom sharing to default\"\n @click=${this.onResetToDefault}\n >\n Reset to default\n </solid-ui-button>\n `\n : html``}\n </div>\n `\n : inheritedContainer\n ? html`<p>This resource inherits sharing settings from ${defaultContainer}.</p>`\n : html`<p>This resource inherits sharing settings, but no inherited default is available.</p>`}\n ${this.protectedTarget\n ? html`<p class=\"access-control-sharing-state-protected-message\">This is a protected storage resource. Its primary access-control settings cannot be reset here.</p>`\n : html``}\n </div>\n `\n }\n\n private renderSharingState () {\n if (!this.accessContext || !this.advancedSharingOpen) {\n return html``\n }\n\n return html`\n <section\n class=\"access-control-sharing-state\"\n aria-labelledby=\"access-control-advanced-sharing-heading\"\n >\n ${this.renderSharingInformation()}\n ${this.renderAdvancedSharing()}\n </section>\n `\n }\n\n private getSelectedContainerScope (): ContainerAccessScope {\n return this.containerScope\n }\n\n private hasMixedContainerPolicy (): boolean {\n return this.isContainer() && this.containerScopeAnalysis?.mixed === true\n }\n\n private renderAccessContextState () {\n if (this.accessContextLoading) {\n return html`<p role=\"status\">Loading access settings...</p>`\n }\n\n if (this.accessContextError) {\n return html`\n <solid-ui-error-state\n title=\"Could not load access settings\"\n message=${this.accessContextError}\n >\n <solid-ui-button type=\"button\" variant=\"secondary\" @click=${this.retryAccessContext}>\n Retry\n </solid-ui-button>\n </solid-ui-error-state>\n `\n }\n\n if (!this.accessContext) {\n return html`<p role=\"status\">Access settings are not ready yet.</p>`\n }\n\n return html``\n }\n\n private renderMixedContainerWarning () {\n if (!this.hasMixedContainerPolicy()) {\n return html``\n }\n\n return html`\n <div class=\"access-control-mixed-policy-warning\" role=\"alert\">\n <strong>This container has different access settings for the folder and its contents.</strong>\n <span>Changing this mixed policy is an advanced feature. You can still change access for the folder or its contents separately below.</span>\n </div>\n `\n }\n\n private getScopedAccessGrants (scope = this.getSelectedContainerScope()): Authorization[] {\n const grants = this.accessGrants ?? []\n if (!this.isContainer() || !this.subjectUri || this.protectedTarget) {\n return grants\n }\n return filterAuthorizationsByContainerScope(this.subjectUri, grants, scope, this.accessContext?.inherited ?? false)\n }\n\n private refreshScopedAccessGrantDrafts () {\n const scopedAccessGrants = this.getScopedAccessGrants()\n this.accessGrantDrafts = createAccessGrantDrafts(scopedAccessGrants)\n this.authenticatedAccessRoleValue = getAuthenticatedAccessRole(scopedAccessGrants)\n this.publicAccessRoleValue = getPublicAccessRole(scopedAccessGrants)\n }\n\n private selectContainerScope (scope: 'folder+contents' | 'contents' | 'folder') {\n this.containerScope = scope\n this.refreshScopedAccessGrantDrafts()\n }\n\n private renderAdvancedSharing () {\n if (!this.advancedSharingOpen) return html``\n\n return html`\n <section\n id=\"access-control-advanced-sharing\"\n class=\"access-control-advanced-sharing\"\n role=\"group\"\n aria-labelledby=\"access-control-advanced-sharing-heading\"\n aria-describedby=\"access-control-advanced-sharing-description\"\n >\n <h2 id=\"access-control-advanced-sharing-heading\">Advanced sharing</h2>\n <p id=\"access-control-advanced-sharing-description\">\n <span class=\"access-control-advanced-sharing-description-line\">Use this option when the folder and its contents have different access requirements.</span>\n <span class=\"access-control-advanced-sharing-description-line\">Choose which access settings to edit.</span>\n <span class=\"access-control-advanced-sharing-description-line\">Save Changes applies your current edits only to that scope.</span>\n </p>\n ${this.isContainer()\n ? html`\n <button\n type=\"button\"\n class=\"access-control-same-access-toggle\"\n role=\"switch\"\n aria-checked=${this.containerScope === 'folder+contents' ? 'true' : 'false'}\n @click=${() => {\n const checked = this.containerScope !== 'folder+contents'\n this.selectContainerScope(checked\n ? 'folder+contents'\n : this.containerScope === 'contents' ? 'contents' : 'folder')\n }}\n >\n <span class=\"access-control-switch-track\" aria-hidden=\"true\">\n <span class=\"access-control-switch-thumb\"></span>\n </span>\n <span>Use the same access for this folder and its contents</span>\n </button>\n <div class=\"access-control-advanced-sharing-options\">\n <solid-ui-button\n type=\"button\"\n variant=${this.containerScope === 'folder' ? 'primary' : 'secondary'}\n aria-pressed=${this.containerScope === 'folder' ? 'true' : 'false'}\n @click=${() => { this.selectContainerScope('folder') }}\n >\n Folder Only\n </solid-ui-button>\n <solid-ui-button\n type=\"button\"\n variant=${this.containerScope === 'contents' ? 'primary' : 'secondary'}\n aria-pressed=${this.containerScope === 'contents' ? 'true' : 'false'}\n @click=${() => { this.selectContainerScope('contents') }}\n >\n Contents Only\n </solid-ui-button>\n </div>\n `\n : html``}\n <div class=\"access-control-advanced-sharing-actions\">\n <solid-ui-button\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Close advanced sharing\"\n title=\"Close advanced sharing\"\n @click=${this.closeAdvancedSharing}\n >\n <icon-lucide-x slot=\"icon\" aria-hidden=\"true\"></icon-lucide-x>\n <span class=\"sr-only\">Close</span>\n </solid-ui-button>\n </div>\n </section>\n `\n }\n\n protected render () {\n const dialogTitle = this.getDialogTitle()\n\n return html`\n <solid-ui-dialog title=${dialogTitle}>\n <form @submit=${this.onSubmit}>\n <solid-ui-dialog-content>\n ${this.renderAccessContextState()}\n ${this.renderMixedContainerWarning()}\n <solid-ui-access-control-add-access\n .disabled=${!this.canMutate() || this.hasMixedContainerPolicy()}\n .principalInputValue=${this.principalInputValue}\n .addAccessRoleValue=${this.addAccessRoleValue}\n .pendingAccessGrants=${this.pendingAccessGrants}\n .inputError=${this.inputError}\n .asyncOptionsProvider=${accessPrincipalOptionsProvider}\n @target-input=${this.onPrincipalInput}\n @target-selected=${this.onPrincipalSelect}\n @role-changed=${this.onAddAccessRoleInput}\n @pending-grant-removed=${this.onPendingGrantRemoved}\n ></solid-ui-access-control-add-access>\n <solid-ui-access-control-shared-access\n .disabled=${!this.canMutate() || this.hasMixedContainerPolicy()}\n .accessGrantViewModels=${getAccessGrantViewModels(this.accessGrantDrafts)}\n @access-grant-role-changed=${this.onAccessGrantRoleInput}\n ></solid-ui-access-control-shared-access>\n <solid-ui-access-control-general-access\n .disabled=${!this.canMutate() || this.hasMixedContainerPolicy()}\n .subjectUri=${this.subjectUri}\n .authenticatedAccessRoleValue=${this.authenticatedAccessRoleValue}\n .publicAccessRoleValue=${this.publicAccessRoleValue}\n @authenticated-role-changed=${this.onAuthenticatedAccessRoleInput}\n @public-role-changed=${this.onPublicAccessRoleInput}\n ></solid-ui-access-control-general-access>\n <solid-ui-access-control-errors\n .errors=${this.saveErrors}\n .successfulChangesRefreshed=${this.successfulChangesRefreshed}\n @close=${this.onCancelClick}\n ></solid-ui-access-control-errors>\n ${this.renderSharingState()}\n </solid-ui-dialog-content>\n\n <solid-ui-dialog-footer>\n <div class=\"access-control-footer-actions\">\n <solid-ui-button\n variant=\"secondary\"\n @click=${this.onCancelClick}\n >\n Cancel\n </solid-ui-button>\n <solid-ui-button\n ?disabled=${!this.canMutate() || !this.hasUnsavedChanges() || this.submitting || this.saveErrors.length > 0 || this.hasMixedContainerPolicy()}\n ?loading=${this.submitting}\n type=\"button\"\n @click=${this.onSaveClick}\n >\n Save Changes\n </solid-ui-button>\n </div>\n </solid-ui-dialog-footer>\n </form>\n </solid-ui-dialog>\n `\n }\n\n private async onSubmit (e: Event) {\n e.preventDefault()\n\n if (this.submitting || this.hasMixedContainerPolicy()) {\n return\n }\n\n if (this.isConnected && !await this.ensureAccessContext()) {\n return\n }\n\n await this.commitPrincipalFromInputSafely()\n }\n\n private async onSaveClick () {\n if (this.submitting || this.hasMixedContainerPolicy()) {\n return\n }\n\n if (this.isConnected && !await this.ensureAccessContext()) {\n return\n }\n\n if (this.principalInputValue.trim()) {\n const committed = await this.commitPrincipalFromInputSafely()\n\n if (!committed) {\n return\n }\n }\n\n const scope = this.isContainer() && !this.protectedTarget\n ? this.getSelectedContainerScope()\n : 'file'\n await this.saveAccessChanges(scope === 'folder' ? 'container' : scope)\n }\n\n private onCancelClick () {\n this.close()\n }\n\n private closeAdvancedSharing () {\n this.advancedSharingOpen = false\n }\n\n private async onResetToDefault () {\n if (!this.subjectUri || !this.canMutate() || !this.accessContext || this.accessContext.inherited || this.submitting || this.hasMixedContainerPolicy()) return\n\n this.submitting = true\n this.errors = this.errors.filter(error => error.action === 'input')\n try {\n await solidLogicSingleton.acl.resetToDefault(this.subjectUri)\n await this.loadAccessContext()\n const directAccessGrants = await solidLogicSingleton.acl.findAccessGrants(this.subjectUri)\n this.accessGrants = this.accessContext?.inherited\n ? this.accessContext.authorizations\n : directAccessGrants\n } catch (error) {\n this.errors = [...this.errors, {\n action: 'reset',\n targetUri: this.subjectUri,\n label: 'Custom sharing',\n message: error instanceof Error ? error.message : 'Unable to reset sharing.'\n }]\n debug.error('Failed to reset access control', error)\n } finally {\n this.submitting = false\n }\n }\n\n private async saveAccessChanges (scope: AccessSaveScope = 'file') {\n if (this.submitting || !this.canMutate() || this.hasMixedContainerPolicy()) {\n return\n }\n\n const changedAccessGrants = getChangedAccessGrants(this.accessGrantDrafts)\n const generalAccessChanges = this.getGeneralAccessChanges()\n\n if (!this.pendingAccessGrants.length && !changedAccessGrants.length && !generalAccessChanges.length) {\n return\n }\n\n if (!this.subjectUri) {\n return\n }\n\n this.submitting = true\n this.errors = this.errors.filter(error => error.action === 'input')\n this.successfulChangesRefreshed = true\n\n try {\n const accessChanges = buildAccessChanges({\n pendingAccessGrants: this.pendingAccessGrants,\n generalAccessChanges,\n changedAccessGrants\n })\n\n const saveErrors = await applyAccessChanges(this.subjectUri, accessChanges, {\n containerScope: scope\n })\n if (saveErrors.length) {\n this.errors = [...this.errors, ...saveErrors]\n this.principalInputValue = ''\n this.pendingAccessGrants = []\n\n try {\n this.accessGrants = await solidLogicSingleton.acl.findAccessGrants(this.subjectUri)\n } catch (error) {\n this.successfulChangesRefreshed = false\n this.errors = [\n ...this.errors,\n {\n action: 'save',\n targetUri: this.subjectUri,\n label: 'Shared with list',\n message: error instanceof Error\n ? error.message\n : 'Unable to refresh the access list.'\n }\n ]\n debug.error('Failed to refresh access grants after save errors', error)\n }\n\n debug.error('Failed to save some access changes', saveErrors)\n return\n }\n\n this.principalInputValue = ''\n this.pendingAccessGrants = []\n this.close()\n } catch (error) {\n this.errors = [\n ...this.errors,\n {\n action: 'save',\n targetUri: this.subjectUri ?? '',\n label: 'Access changes',\n message: error instanceof Error\n ? error.message\n : 'Unexpected error while saving access changes.'\n }\n ]\n } finally {\n this.submitting = false\n }\n }\n\n private onPrincipalInput (event: TargetInputEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.principalInputValue = event.detail.value\n this.clearInputError()\n }\n\n private onPrincipalSelect (event: TargetSelectedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.queuePendingPrincipal(event.detail.value, this.addAccessRoleValue, event.detail.label, undefined, event.detail.targetKind)\n }\n\n private getGeneralAccessChanges (): AccessChange[] {\n if (!this.subjectUri) {\n return []\n }\n\n const accessGrants = this.getScopedAccessGrants()\n const currentAuthenticatedRole = getAuthenticatedAccessRole(accessGrants)\n const currentPublicRole = getPublicAccessRole(accessGrants)\n\n const authenticatedChange = this.authenticatedAccessRoleValue === currentAuthenticatedRole\n ? undefined\n : {\n subject: Authenticated,\n role: this.authenticatedAccessRoleValue,\n label: 'Authenticated users'\n }\n\n const publicChange = this.publicAccessRoleValue === currentPublicRole\n ? undefined\n : {\n subject: Public,\n role: this.publicAccessRoleValue,\n label: 'Public'\n }\n\n return [authenticatedChange, publicChange].filter(isDefined)\n }\n\n private onAddAccessRoleInput (event: RoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.addAccessRoleValue = event.detail.role\n this.pendingAccessGrants = this.pendingAccessGrants.map(grant => ({\n ...grant,\n role: event.detail.role\n }))\n }\n\n private onAuthenticatedAccessRoleInput (event: RoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.authenticatedAccessRoleValue = event.detail.role\n }\n\n private onPublicAccessRoleInput (event: RoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.publicAccessRoleValue = event.detail.role\n }\n\n private onAccessGrantRoleInput (event: AccessGrantRoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.accessGrantDrafts = this.accessGrantDrafts.map(draft =>\n draft.id === event.detail.id\n ? { ...draft, role: event.detail.role }\n : draft\n )\n }\n\n private onPendingGrantRemoved (event: PendingGrantRemovedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.pendingAccessGrants = this.pendingAccessGrants.filter((_, pendingIndex) => pendingIndex !== event.detail.index)\n }\n\n private hasUnsavedChanges (): boolean {\n return Boolean(\n this.pendingAccessGrants.length ||\n this.principalInputValue.trim() ||\n getChangedAccessGrants(this.accessGrantDrafts).length ||\n this.getGeneralAccessChanges().length\n )\n }\n\n private async commitPrincipalFromInput (): Promise<boolean> {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) {\n return false\n }\n\n const rawValue = this.principalInputValue.trim()\n if (!rawValue) {\n return false\n }\n\n return this.queuePendingPrincipal(rawValue, this.addAccessRoleValue, undefined, rawValue)\n }\n\n private async commitPrincipalFromInputSafely (): Promise<boolean> {\n const inputSnapshot = this.principalInputValue.trim()\n\n try {\n return await this.commitPrincipalFromInput()\n } catch (error) {\n if (this.principalInputValue.trim() !== inputSnapshot) {\n debug.error('Ignored stale access-target validation error', error)\n return false\n }\n\n this.setInputError({\n action: 'input',\n label: 'Access target',\n targetUri: this.principalInputValue.trim(),\n message: 'We could not verify this access target. Check the value and try again.'\n })\n debug.error('Failed to commit pending access grants', error)\n return false\n }\n }\n\n private async queuePendingPrincipal (\n principal: string,\n role: AccessRole = this.addAccessRoleValue,\n preferredLabel?: string,\n inputSnapshot?: string,\n targetKind?: 'origin' | 'trustedApp'\n ): Promise<boolean> {\n const snapshot = inputSnapshot ?? this.principalInputValue.trim()\n const result = await this.createPendingAccessGrant(principal, role, preferredLabel, targetKind)\n\n if ('error' in result) {\n if (this.principalInputValue.trim() === snapshot) {\n this.setInputError(result.error)\n }\n debug.error('Failed to add access grant:', result.error.message)\n return false\n }\n\n const merged = [...this.pendingAccessGrants, result.grant]\n this.pendingAccessGrants = this.dedupePendingAccessGrants(merged)\n\n if (this.principalInputValue.trim() === snapshot) {\n this.clearInputError()\n this.principalInputValue = ''\n }\n\n return true\n }\n\n private async createPendingAccessGrant (\n principal: string,\n role: AccessRole = this.addAccessRoleValue,\n preferredLabel?: string,\n targetKind?: 'origin' | 'trustedApp'\n ): Promise<PendingAccessGrantCreationResult> {\n try {\n const normalizedPrincipal = principal.trim()\n const resolvedTarget = await resolveAccessTarget(normalizedPrincipal, preferredLabel)\n if (!resolvedTarget) {\n return {\n error: {\n action: 'input',\n label: 'Access target',\n targetUri: normalizedPrincipal,\n message: 'Could not verify this access target'\n }\n }\n }\n\n return {\n grant: {\n subjectType: resolvedTarget.subjectType,\n subjectValue: resolvedTarget.subjectValue,\n role,\n label: resolvedTarget.label,\n targetKind: targetKind ?? resolvedTarget.targetKind\n }\n }\n } catch (error) {\n return {\n error: {\n action: 'input',\n label: 'Access target',\n targetUri: principal,\n message: error instanceof Error && error.message.trim()\n ? error.message\n : 'Could not verify this access target'\n }\n }\n }\n }\n\n private dedupePendingAccessGrants (draftGrants: PendingAccessGrant[]): PendingAccessGrant[] {\n const grantsBySubject = new Map<string, PendingAccessGrant>()\n for (const draftGrant of draftGrants) {\n grantsBySubject.set(`${draftGrant.subjectType}:${draftGrant.subjectValue}`, draftGrant)\n }\n return [...grantsBySubject.values()]\n }\n}\n","import AccessControlModal from './AccessControlModal'\n\nexport { AccessControlModal }\nexport default AccessControlModal\n"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
- import { a as e, o as t } from "./auth-B_abPDvH.js";
2
- import { b as n, c as r, g as i, i as a, o, p as s, u as c } from "./components-C8c2Ucm5.js";
1
+ import { a as e, o as t } from "./auth-Df5uYksz.js";
2
+ import { c as n, i as r, o as i, p as a, u as o, y as s } from "./components-LxiwG5ae.js";
3
+ import { t as c } from "./decorators-V-B013l9.js";
3
4
  import "./chevron-down-CqUEolao.js";
4
- import "./button-D6qO2idW.js";
5
- import "./avatar-BR3COVSQ.js";
6
- import "./login-button-Div4ZT4J.js";
7
- import "./logout-button-D3lqlnCX.js";
8
- import "./menu-item-nfPpH4dN.js";
9
- import "./menu-D0k2fkiE.js";
10
- import "./signup-button-2fAoS0Nv.js";
5
+ import "./button-Dy1aFjqG.js";
6
+ import "./avatar-DeotTinS.js";
7
+ import "./login-button-fo0P8vym.js";
8
+ import "./logout-button-CF2YFgID.js";
9
+ import "./menu-item-CVAZyipz.js";
10
+ import "./menu-RumUciM-.js";
11
+ import "./signup-button-DicFpAjD.js";
11
12
  // ~icons/lucide/log-in
12
13
  var l = class extends HTMLElement {
13
14
  constructor() {
@@ -30,7 +31,7 @@ var d = class extends HTMLElement {
30
31
  };
31
32
  customElements.get("icon-lucide-user") || customElements.define("icon-lucide-user", d);
32
33
  // src/components/account/Account.styles.css
33
- var f = s`:host{--image-size:1.875rem;flex-direction:row;gap:10px;display:inline-flex}:host([data-state-initializing]){& icon-svg-spinners-180-ring{width:var(--image-size);height:var(--image-size)}}:host([data-state-loggedIn]){--padding:4px;--border-width:1px;& button{background-color:var(--solid-ui-color-body-grey);padding:var(--padding);border-radius:calc((var(--image-size) + 2 * var(--padding) + 2 * var(--border-width)) / 2);color:var(--solid-ui-color-white);justify-content:center;align-items:center;gap:5px;display:inline-flex;& solid-ui-avatar{width:var(--image-size);height:var(--image-size);border:var(--border-width) solid var(--solid-ui-color-white);border-radius:50%}& icon-lucide-chevron-down{width:16px;height:16px}}}`, p, m, h, g, _, v, y, b, x, S, C, w, T;
34
+ var f = a`:host{--image-size:1.875rem;flex-direction:row;gap:10px;display:inline-flex}:host([data-state-initializing]){& icon-svg-spinners-180-ring{width:var(--image-size);height:var(--image-size)}}:host([data-state-loggedIn]){--padding:4px;--border-width:1px;& button{background-color:var(--solid-ui-color-body-grey);padding:var(--padding);border-radius:calc((var(--image-size) + 2 * var(--padding) + 2 * var(--border-width)) / 2);color:var(--solid-ui-color-white);justify-content:center;align-items:center;gap:5px;display:inline-flex;& solid-ui-avatar{width:var(--image-size);height:var(--image-size);border:var(--border-width) solid var(--solid-ui-color-white);border-radius:50%}& icon-lucide-chevron-down{width:16px;height:16px}}}`, p, m, h, g, _, v, y, b, x, S, C, w, T;
34
35
  function E(e, t, n) {
35
36
  D(e, t), t.set(e, n);
36
37
  }
@@ -202,12 +203,12 @@ function I(e) {
202
203
  function L(e) {
203
204
  return e;
204
205
  }
205
- y = [i("solid-ui-account")];
206
+ y = [c("solid-ui-account")];
206
207
  var R;
207
- new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T = (b = a({ type: Array }), S = n({
208
+ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T = (b = r({ type: Array }), S = s({
208
209
  context: t,
209
210
  subscribe: !0
210
- }), "menuItems"), m = class extends o {
211
+ }), "menuItems"), m = class extends i {
211
212
  constructor(...t) {
212
213
  super(...t), E(this, h, (_(this), x(this, []))), E(this, g, C(this, e)), j(this, "unsubscribeSessionUpdated", void 0);
213
214
  }
@@ -230,15 +231,15 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
230
231
  super.disconnectedCallback(), this.unsubscribeSessionUpdated?.();
231
232
  }
232
233
  render() {
233
- return this.auth.initialized ? this.auth.account ? c`
234
+ return this.auth.initialized ? this.auth.account ? o`
234
235
  <solid-ui-menu placement="bottom-end">
235
236
  <button type="button" slot="trigger">
236
237
  <solid-ui-avatar></solid-ui-avatar>
237
238
  <icon-lucide-chevron-down slot="right-icon"></icon-lucide-chevron-down>
238
239
  </button>
239
240
 
240
- ${this.menuItems.map((e) => c`
241
- <solid-ui-menu-item .href=${e.href ?? r} ?selected=${e.selected} @solid-ui-select=${() => e.onSelected?.()}>
241
+ ${this.menuItems.map((e) => o`
242
+ <solid-ui-menu-item .href=${e.href ?? n} ?selected=${e.selected} @solid-ui-select=${() => e.onSelected?.()}>
242
243
  ${e.label}
243
244
  </solid-ui-menu-item>
244
245
  `)}
@@ -249,7 +250,7 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
249
250
  </solid-ui-menu-item>
250
251
  </solid-ui-logout-button>
251
252
  </solid-ui-menu>
252
- ` : c`
253
+ ` : o`
253
254
  <solid-ui-login-button>
254
255
  <solid-ui-button slot="trigger">
255
256
  <icon-lucide-user slot="left-icon"></icon-lucide-user>
@@ -262,7 +263,7 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
262
263
  Sign Up
263
264
  </solid-ui-button>
264
265
  </solid-ui-signup-button>
265
- ` : c`
266
+ ` : o`
266
267
  <icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>
267
268
  `;
268
269
  }
@@ -274,7 +275,7 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
274
275
  S,
275
276
  1,
276
277
  "auth"
277
- ]], y, 0, void 0, o), m), p = class extends L {
278
+ ]], y, 0, void 0, i), m), p = class extends L {
278
279
  constructor() {
279
280
  super(R), j(this, "styles", f), j(this, "states", {
280
281
  initializing: (e) => !e.auth.initialized,
@@ -286,4 +287,4 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
286
287
  var z = R;
287
288
  export { R as n, z as t };
288
289
 
289
- //# sourceMappingURL=account-D6JK-n7u.js.map
290
+ //# sourceMappingURL=account-Cocvv0H3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-D6JK-n7u.js","names":["consume","html","nothing","property","customElement","WebComponent","authContext","DEFAULT_AUTH_CONTEXT","styles","_classDecs","_Account","_Account2","_A","WeakMap","_B","_ref","_menuItemsDecs","type","Array","_authDecs","context","subscribe","_Account3","Account","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_menuItems","_init_auth","_defineProperty","_classPrivateFieldGet","menuItems","v","_classPrivateFieldSet","auth","connectedCallback","unsubscribeSessionUpdated","onSessionUpdated","requestUpdate","disconnectedCallback","render","initialized","account","map","menuItem","href","selected","onSelected","label","e","c","_initClass","_applyDecs","_Class","_identity","initializing","component","loggedIn","default","property","consume","nothing","styles","Account","Account","DEFAULT_AUTH_CONTEXT","authContext","c","A","customElement","n","i","b","iconlucidelogin","iconlucidelogout","iconlucideuser","Account_styles_default","_Class","_Account3","_A","_B","_initProto","_initClass","_classDecs","_menuItemsDecs","_init_menuItems","_authDecs","_init_auth","_Account2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","o","applyDec","m","h","y","v","g","u","w","S","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","_Account","WebComponent","args","menuItem","component","account_default"],"sources":["../../src/components/account/Account.styles.css","../../src/components/account/Account.ts","../../src/components/account/index.ts"],"sourcesContent":[":host {\n --image-size: 1.875rem; /* 30px */\n\n display: inline-flex;\n flex-direction: row;\n gap: 10px;\n}\n\n:host([data-state-initializing]) {\n icon-svg-spinners-180-ring {\n width: var(--image-size);\n height: var(--image-size);\n }\n}\n\n:host([data-state-loggedIn]) {\n --padding: 4px;\n --border-width: 1px;\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 5px;\n background-color: var(--solid-ui-color-body-grey);\n padding: var(--padding);\n border-radius: calc((var(--image-size) + 2 * var(--padding) + 2 * var(--border-width)) / 2);\n color: var(--solid-ui-color-white);\n\n solid-ui-avatar {\n width: var(--image-size);\n height: var(--image-size);\n border: var(--border-width) solid var(--solid-ui-color-white);\n border-radius: 50%;\n }\n\n icon-lucide-chevron-down {\n width: 16px;\n height: 16px;\n }\n }\n}\n","import { consume } from '@lit/context'\nimport { html, nothing, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { customElement, WebComponent } from '@/lib/components'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/avatar'\nimport '@/components/button'\nimport '@/components/login-button'\nimport '@/components/logout-button'\nimport '@/components/menu-item'\nimport '@/components/menu'\nimport '@/components/signup-button'\nimport '~icons/lucide/chevron-down'\nimport '~icons/lucide/log-in'\nimport '~icons/lucide/log-out'\nimport '~icons/lucide/user'\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Account.styles.css'\n\nexport interface AccountMenuItem {\n label: string | TemplateResult\n href?: string\n selected?: boolean\n onSelected?(): void\n}\n\n@customElement('solid-ui-account')\nexport default class Account extends WebComponent {\n static styles = styles\n static states = {\n initializing: (component: Account) => !component.auth.initialized,\n loggedIn: (component: Account) => !!component.auth.account,\n }\n\n @property({ type: Array })\n accessor menuItems: AccountMenuItem[] = []\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n private unsubscribeSessionUpdated?: () => void\n\n connectedCallback () {\n super.connectedCallback()\n\n this.unsubscribeSessionUpdated = this.auth.onSessionUpdated(() => this.requestUpdate())\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.unsubscribeSessionUpdated?.()\n }\n\n protected render () {\n if (!this.auth.initialized) {\n return html`\n <icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>\n `\n }\n\n if (!this.auth.account) {\n return html`\n <solid-ui-login-button>\n <solid-ui-button slot=\"trigger\">\n <icon-lucide-user slot=\"left-icon\"></icon-lucide-user>\n Log In\n </solid-ui-button>\n </solid-ui-login-button>\n <solid-ui-signup-button>\n <solid-ui-button slot=\"trigger\" variant=\"outline\">\n <icon-lucide-log-in slot=\"left-icon\"></icon-lucide-log-in>\n Sign Up\n </solid-ui-button>\n </solid-ui-signup-button>\n `\n }\n\n return html`\n <solid-ui-menu placement=\"bottom-end\">\n <button type=\"button\" slot=\"trigger\">\n <solid-ui-avatar></solid-ui-avatar>\n <icon-lucide-chevron-down slot=\"right-icon\"></icon-lucide-chevron-down>\n </button>\n\n ${this.menuItems.map(menuItem => html`\n <solid-ui-menu-item .href=${menuItem.href ?? nothing} ?selected=${menuItem.selected} @solid-ui-select=${() => menuItem.onSelected?.()}>\n ${menuItem.label}\n </solid-ui-menu-item>\n `)}\n <solid-ui-logout-button>\n <solid-ui-menu-item slot=\"trigger\">\n <icon-lucide-log-out slot=\"left-icon\"></icon-lucide-log-out>\n Sign out\n </solid-ui-menu-item>\n </solid-ui-logout-button>\n </solid-ui-menu>\n `\n }\n}\n","import Account, { type AccountMenuItem } from './Account'\n\nexport { Account, type AccountMenuItem }\nexport default Account\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmByCS,IAAA,CASxCL,EAAc,kBAAkB,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,KAAAC,IAQ/Bb,EAAS,EAAEc,MAAMC,MAAM,CAAC,GAACC,IAGzBnB,EAAQ;CAAEoB,SAASd;CAAae,WAAW;AAAK,CAAC,GAAC,cAAAC,IAXrD,cACqCjB,EAAa;CAAAmB,YAAA,GAAAC,GAAA;EAWSK,AAXT,MAAA,GAAAL,CAAA,GAAAC,EAAA,MAAAd,IAAAe,EAAA,IAAA,GAAAC,EAAA,MAQR,CAAA,CAAE,EAAA,GAAAF,EAAA,MAAAZ,GAAAe,EAAA,MAGLtB,CAAoB,CAAA,GAAAuB,EAAA,MAAA,6BAAA,KAAA,CAAA;CAAA;CAAA,KAAAf,KAAA;EAAA,OAAAgB,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAHhDoB,UAASC,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGDE,OAAI;EAAA,OAAAJ,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAAJqB,KAAIF,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAIrBG,oBAAqB;EAGnB,AAFA,MAAMA,kBAAkB,GAExB,KAAKC,4BAA4B,KAAKF,KAAKG,uBAAuB,KAAKC,cAAc,CAAC;CACxF;CAEAC,uBAAwB;EAGtB,AAFA,MAAMA,qBAAqB,GAE3B,KAAKH,4BAA4B;CACnC;CAEUI,SAAU;EAwBlB,OAvBK,KAAKN,KAAKO,cAMV,KAAKP,KAAKQ,UAiBR1C,CAAI;;;;;;;cAOD,KAAK+B,UAAUY,KAAIC,MAAY5C,CAAI;4CACL4C,EAASC,QAAQ5C,EAAO,aAAc2C,EAASE,SAAQ,0BAA2BF,EAASG,aAAa,EAAC;sBAC/HH,EAASI,MAAK;;aAEvB,EAAC;;;;;;;;QA3BDhD,CAAI;;;;;;;;;;;;;UANJA,CAAI;;;CA0Cf;AACF,GAAC,CAAAiD,GAAA,CAAAtB,GAAAC,GAAAF,IAAAwB,GAAA,CAAAzC,GAAA0C,MAAAC,EAAA/B,GAAA,CAAA;CAAAN;CAAA;CAAA;AAAA,GAAA;CAAAG;CAAA;CAAA;AAAA,CAAA,GAAAV,GAAA,GAAA,KAAA,GAxEoCJ,CAAY,GAAAiB,IAAAgC,IAAA,cAAAC,EAAA;CAAA/B,cAAA;EAAA,MAAAd,CAAA,GAAAoB,EAAA,MAAA,UAC/BtB,CAAM,GAAAsB,EAAA,MAAA,UACN;GACd0B,eAAeC,MAAuB,CAACA,EAAUtB,KAAKO;GACtDgB,WAAWD,MAAuB,CAAC,CAACA,EAAUtB,KAAKQ;EACrD,CAAC,GAAAS,EAAA;CAAA;AAAA,GAAAtB,EAAAwB,GAAA3C,GAAA,KAAA,CAAA,GAAA2C,GAAA;;AC/BH,IAAA+E,IAAerE"}
1
+ {"version":3,"file":"account-Cocvv0H3.js","names":["consume","html","nothing","property","customElement","WebComponent","authContext","DEFAULT_AUTH_CONTEXT","styles","_classDecs","_Account","_Account2","_A","WeakMap","_B","_ref","_menuItemsDecs","type","Array","_authDecs","context","subscribe","_Account3","Account","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_menuItems","_init_auth","_defineProperty","_classPrivateFieldGet","menuItems","v","_classPrivateFieldSet","auth","connectedCallback","unsubscribeSessionUpdated","onSessionUpdated","requestUpdate","disconnectedCallback","render","initialized","account","map","menuItem","href","selected","onSelected","label","e","c","_initClass","_applyDecs","_Class","_identity","initializing","component","loggedIn","default","property","consume","nothing","styles","Account","Account","DEFAULT_AUTH_CONTEXT","authContext","A","n","WebComponent","i","b","c","customElement","iconlucidelogin","iconlucidelogout","iconlucideuser","Account_styles_default","_Class","_Account3","_A","_B","_initProto","_initClass","_classDecs","_menuItemsDecs","_init_menuItems","_authDecs","_init_auth","_Account2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","o","applyDec","m","h","y","v","g","u","w","S","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","_Account","args","menuItem","component","account_default"],"sources":["../../src/components/account/Account.styles.css","../../src/components/account/Account.ts","../../src/components/account/index.ts"],"sourcesContent":[":host {\n --image-size: 1.875rem; /* 30px */\n\n display: inline-flex;\n flex-direction: row;\n gap: 10px;\n}\n\n:host([data-state-initializing]) {\n icon-svg-spinners-180-ring {\n width: var(--image-size);\n height: var(--image-size);\n }\n}\n\n:host([data-state-loggedIn]) {\n --padding: 4px;\n --border-width: 1px;\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 5px;\n background-color: var(--solid-ui-color-body-grey);\n padding: var(--padding);\n border-radius: calc((var(--image-size) + 2 * var(--padding) + 2 * var(--border-width)) / 2);\n color: var(--solid-ui-color-white);\n\n solid-ui-avatar {\n width: var(--image-size);\n height: var(--image-size);\n border: var(--border-width) solid var(--solid-ui-color-white);\n border-radius: 50%;\n }\n\n icon-lucide-chevron-down {\n width: 16px;\n height: 16px;\n }\n }\n}\n","import { consume } from '@lit/context'\nimport { html, nothing, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { customElement, WebComponent } from '@/lib/components'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/avatar'\nimport '@/components/button'\nimport '@/components/login-button'\nimport '@/components/logout-button'\nimport '@/components/menu-item'\nimport '@/components/menu'\nimport '@/components/signup-button'\nimport '~icons/lucide/chevron-down'\nimport '~icons/lucide/log-in'\nimport '~icons/lucide/log-out'\nimport '~icons/lucide/user'\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Account.styles.css'\n\nexport interface AccountMenuItem {\n label: string | TemplateResult\n href?: string\n selected?: boolean\n onSelected?(): void\n}\n\n@customElement('solid-ui-account')\nexport default class Account extends WebComponent {\n static styles = styles\n static states = {\n initializing: (component: Account) => !component.auth.initialized,\n loggedIn: (component: Account) => !!component.auth.account,\n }\n\n @property({ type: Array })\n accessor menuItems: AccountMenuItem[] = []\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n private unsubscribeSessionUpdated?: () => void\n\n connectedCallback () {\n super.connectedCallback()\n\n this.unsubscribeSessionUpdated = this.auth.onSessionUpdated(() => this.requestUpdate())\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.unsubscribeSessionUpdated?.()\n }\n\n protected render () {\n if (!this.auth.initialized) {\n return html`\n <icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>\n `\n }\n\n if (!this.auth.account) {\n return html`\n <solid-ui-login-button>\n <solid-ui-button slot=\"trigger\">\n <icon-lucide-user slot=\"left-icon\"></icon-lucide-user>\n Log In\n </solid-ui-button>\n </solid-ui-login-button>\n <solid-ui-signup-button>\n <solid-ui-button slot=\"trigger\" variant=\"outline\">\n <icon-lucide-log-in slot=\"left-icon\"></icon-lucide-log-in>\n Sign Up\n </solid-ui-button>\n </solid-ui-signup-button>\n `\n }\n\n return html`\n <solid-ui-menu placement=\"bottom-end\">\n <button type=\"button\" slot=\"trigger\">\n <solid-ui-avatar></solid-ui-avatar>\n <icon-lucide-chevron-down slot=\"right-icon\"></icon-lucide-chevron-down>\n </button>\n\n ${this.menuItems.map(menuItem => html`\n <solid-ui-menu-item .href=${menuItem.href ?? nothing} ?selected=${menuItem.selected} @solid-ui-select=${() => menuItem.onSelected?.()}>\n ${menuItem.label}\n </solid-ui-menu-item>\n `)}\n <solid-ui-logout-button>\n <solid-ui-menu-item slot=\"trigger\">\n <icon-lucide-log-out slot=\"left-icon\"></icon-lucide-log-out>\n Sign out\n </solid-ui-menu-item>\n </solid-ui-logout-button>\n </solid-ui-menu>\n `\n }\n}\n","import Account, { type AccountMenuItem } from './Account'\n\nexport { Account, type AccountMenuItem }\nexport default Account\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmByCS,IAAA,CASxCL,EAAc,kBAAkB,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,KAAAC,IAQ/Bb,EAAS,EAAEc,MAAMC,MAAM,CAAC,GAACC,IAGzBnB,EAAQ;CAAEoB,SAASd;CAAae,WAAW;AAAK,CAAC,GAAC,cAAAC,IAXrD,cACqCjB,EAAa;CAAAmB,YAAA,GAAAC,GAAA;EAWSK,AAXT,MAAA,GAAAL,CAAA,GAAAC,EAAA,MAAAd,IAAAe,EAAA,IAAA,GAAAC,EAAA,MAQR,CAAA,CAAE,EAAA,GAAAF,EAAA,MAAAZ,GAAAe,EAAA,MAGLtB,CAAoB,CAAA,GAAAuB,EAAA,MAAA,6BAAA,KAAA,CAAA;CAAA;CAAA,KAAAf,KAAA;EAAA,OAAAgB,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAHhDoB,UAASC,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGDE,OAAI;EAAA,OAAAJ,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAAJqB,KAAIF,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAIrBG,oBAAqB;EAGnB,AAFA,MAAMA,kBAAkB,GAExB,KAAKC,4BAA4B,KAAKF,KAAKG,uBAAuB,KAAKC,cAAc,CAAC;CACxF;CAEAC,uBAAwB;EAGtB,AAFA,MAAMA,qBAAqB,GAE3B,KAAKH,4BAA4B;CACnC;CAEUI,SAAU;EAwBlB,OAvBK,KAAKN,KAAKO,cAMV,KAAKP,KAAKQ,UAiBR1C,CAAI;;;;;;;cAOD,KAAK+B,UAAUY,KAAIC,MAAY5C,CAAI;4CACL4C,EAASC,QAAQ5C,EAAO,aAAc2C,EAASE,SAAQ,0BAA2BF,EAASG,aAAa,EAAC;sBAC/HH,EAASI,MAAK;;aAEvB,EAAC;;;;;;;;QA3BDhD,CAAI;;;;;;;;;;;;;UANJA,CAAI;;;CA0Cf;AACF,GAAC,CAAAiD,GAAA,CAAAtB,GAAAC,GAAAF,IAAAwB,GAAA,CAAAzC,GAAA0C,MAAAC,EAAA/B,GAAA,CAAA;CAAAN;CAAA;CAAA;AAAA,GAAA;CAAAG;CAAA;CAAA;AAAA,CAAA,GAAAV,GAAA,GAAA,KAAA,GAxEoCJ,CAAY,GAAAiB,IAAAgC,IAAA,cAAAC,EAAA;CAAA/B,cAAA;EAAA,MAAAd,CAAA,GAAAoB,EAAA,MAAA,UAC/BtB,CAAM,GAAAsB,EAAA,MAAA,UACN;GACd0B,eAAeC,MAAuB,CAACA,EAAUtB,KAAKO;GACtDgB,WAAWD,MAAuB,CAAC,CAACA,EAAUtB,KAAKQ;EACrD,CAAC,GAAAS,EAAA;CAAA;AAAA,GAAAtB,EAAAwB,GAAA3C,GAAA,KAAA,CAAA,GAAA2C,GAAA;;AC/BH,IAAA+E,IAAerE"}