solid-ui 5.0.2-2 → 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
@@ -1 +1 @@
1
- {"version":3,"file":"AccessControlAddAccess.esm.js","names":["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","styles","WebComponent","AccessControlAddAccess_styles_default","_Class","_AccessControlAddAccess","_A","_B","_C","_D","_E","_F","_initProto","_initClass","_classDecs","_principalInputValueDecs","_init_principalInputValue","_addAccessRoleValueDecs","_init_addAccessRoleValue","_pendingAccessGrantsDecs","_init_pendingAccessGrants","_inputErrorDecs","_init_inputError","_disabledDecs","_init_disabled","_asyncOptionsProviderDecs","_init_asyncOptionsProvider","_AccessControlAddAcce2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","directoryEntryOptionTemplate","renderDirectoryEntryIcon","entry","nothing","customElement","_AccessControlAddAcce","property","args","value","event","option","role","accessRole","ACCESS_ROLES","candidate","target","grant","index"],"sources":["../../../src/components/access-control-modal/AccessControlAddAccess.ts"],"sourcesContent":["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"],"mappings":"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"}
1
+ {"version":3,"file":"AccessControlAddAccess.esm.js","names":["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","customElement","styles","customElement$1","WebComponent","AccessControlAddAccess_styles_default","_Class","_AccessControlAddAccess","_A","_B","_C","_D","_E","_F","_initProto","_initClass","_classDecs","_principalInputValueDecs","_init_principalInputValue","_addAccessRoleValueDecs","_init_addAccessRoleValue","_pendingAccessGrantsDecs","_init_pendingAccessGrants","_inputErrorDecs","_init_inputError","_disabledDecs","_init_disabled","_asyncOptionsProviderDecs","_init_asyncOptionsProvider","_AccessControlAddAcce2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","directoryEntryOptionTemplate","renderDirectoryEntryIcon","entry","nothing","_AccessControlAddAcce","property","args","value","event","option","role","accessRole","ACCESS_ROLES","candidate","target","grant","index"],"sources":["../../../src/components/access-control-modal/AccessControlAddAccess.ts"],"sourcesContent":["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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccessControlErrors.esm.js","names":["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","styles","WebComponent","AccessControlErrors_styles_default","_Class","_AccessControlErrors3","_A","_B","_initProto","_initClass","_classDecs","_errorsDecs","_init_errors","_successfulChangesRefreshedDecs","_init_successfulChangesRefreshed","_AccessControlErrors2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","O","k","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","customElement","_AccessControlErrors","property","args","event","scope","error"],"sources":["../../../src/components/access-control-modal/AccessControlErrors.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMqDK,IAAA,CAGpDL,EAAc,gCAAgC,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,KAAAC,IAI7CT,EAAS,EAAEU,WAAW,GAAM,CAAC,GAACC,IAG9BX,EAAS,EAAEU,WAAW,GAAM,CAAC,GAAC,WAAAE,IAPjC,cACiDd,EAAa;CAAAgB,YAAA,GAAAC,GAAA;EAIrBC,AAJqB,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAX,IAAAY,EAAA,IAAA,GAAAC,EAAA,MAIvB,CAAA,CAAE,EAAA,GAAAF,EAAA,MAAAT,GAAAY,EAAA,MAGD,EAAI,CAAA;CAAA;CAAA,KAAAX,KAAA;EAAA,OAAAY,EAAAf,GAAA,IAAA;CAAA;CAAA,IAHjCgB,OAAMC,GAAA;EAAAC,EAAAlB,GAAA,MAAAiB,CAAA;CAAA;CAAA,IAGNE,6BAA0B;EAAA,OAAAJ,EAAAb,GAAA,IAAA;CAAA;CAAA,IAA1BiB,2BAA0BF,GAAA;EAAAC,EAAAhB,GAAA,MAAAe,CAAA;CAAA;CAE3BG,QAASC,GAAc;EAE7B,AADAA,EAAMC,gBAAgB,GACtB,KAAKC,cAAc,IAAIC,YAAY,SAAS;GAC1CC,SAAS;GACTC,UAAU;EACZ,CAAC,CAAC;CACJ;CAEQC,cAAeC,GAAuF;EAC5G,OAAOA,MAAU,oBACb,wBACAA,MAAU,cACR,WACAA,MAAU,aACR,aACA;CACV;CAEUC,SAAU;EAKlB,OAJK,KAAKb,OAAOc,SAIVpC,CAAI;;;kBAGG,KAAKyB,6BACX,yJACA,gMAA+L;iBAC1L,KAAKC,QAAO;;;YAGjB,KAAKJ,OAAOe,KAAIC,MAAStC,CAAI;;8DAEqBsC,EAAMC,MAAK;;kBAEvDD,EAAME,WAAW,UACjB,mBAAmBF,EAAMG,QAAQ,SAAQ,OAAQH,EAAMJ,QAAQ,KAAKD,cAAcK,EAAMJ,KAAK,IAAI,eAC/FI,EAAME,WAAW,WACjB,+BAA+BF,EAAMJ,QAAQ,KAAKD,cAAcK,EAAMJ,KAAK,IAAI,eAC7EI,EAAME,WAAW,UACf,4BACF,gCAA+B;;gEAEWF,EAAMI,QAAO;;WAElE,EAAC;;;QA1BC1C,CAAI;CA8Bf;AACF,GAAC,CAAA2C,GAAA,CAAAxB,GAAAC,GAAAF,IAAA0B,GAAA,CAAAxC,GAAAyC,MAAAC,EAAAjC,GAAA,CAAA;CAAAH;CAAA;CAAA;AAAA,GAAA;CAAAE;CAAA;CAAA;AAAA,CAAA,GAAAT,GAAA,GAAA,KAAA,GA5DgDJ,CAAY,GAAAc,IAAAkC,IAAA,cAAAC,EAAA;CAAAjC,cAAA;EAAA,MAAAX,CAAA,GAAA6C,EAAA,MAAA,UAC3C/C,CAAM,GAAA2C,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAA1C,GAAA,KAAA,CAAA,GAAA0C,GAAA"}
1
+ {"version":3,"file":"AccessControlErrors.esm.js","names":["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","customElement","styles","customElement$1","WebComponent","AccessControlErrors_styles_default","_Class","_AccessControlErrors3","_A","_B","_initProto","_initClass","_classDecs","_errorsDecs","_init_errors","_successfulChangesRefreshedDecs","_init_successfulChangesRefreshed","_AccessControlErrors2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","O","k","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","_AccessControlErrors","property","args","event","scope","error"],"sources":["../../../src/components/access-control-modal/AccessControlErrors.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMqDK,IAAA,CAGpDL,EAAc,gCAAgC,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,KAAAC,IAI7CT,EAAS,EAAEU,WAAW,GAAM,CAAC,GAACC,IAG9BX,EAAS,EAAEU,WAAW,GAAM,CAAC,GAAC,WAAAE,IAPjC,cACiDd,EAAa;CAAAgB,YAAA,GAAAC,GAAA;EAIrBC,AAJqB,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAX,IAAAY,EAAA,IAAA,GAAAC,EAAA,MAIvB,CAAA,CAAE,EAAA,GAAAF,EAAA,MAAAT,GAAAY,EAAA,MAGD,EAAI,CAAA;CAAA;CAAA,KAAAX,KAAA;EAAA,OAAAY,EAAAf,GAAA,IAAA;CAAA;CAAA,IAHjCgB,OAAMC,GAAA;EAAAC,EAAAlB,GAAA,MAAAiB,CAAA;CAAA;CAAA,IAGNE,6BAA0B;EAAA,OAAAJ,EAAAb,GAAA,IAAA;CAAA;CAAA,IAA1BiB,2BAA0BF,GAAA;EAAAC,EAAAhB,GAAA,MAAAe,CAAA;CAAA;CAE3BG,QAASC,GAAc;EAE7B,AADAA,EAAMC,gBAAgB,GACtB,KAAKC,cAAc,IAAIC,YAAY,SAAS;GAC1CC,SAAS;GACTC,UAAU;EACZ,CAAC,CAAC;CACJ;CAEQC,cAAeC,GAAuF;EAC5G,OAAOA,MAAU,oBACb,wBACAA,MAAU,cACR,WACAA,MAAU,aACR,aACA;CACV;CAEUC,SAAU;EAKlB,OAJK,KAAKb,OAAOc,SAIVpC,CAAI;;;kBAGG,KAAKyB,6BACX,yJACA,gMAA+L;iBAC1L,KAAKC,QAAO;;;YAGjB,KAAKJ,OAAOe,KAAIC,MAAStC,CAAI;;8DAEqBsC,EAAMC,MAAK;;kBAEvDD,EAAME,WAAW,UACjB,mBAAmBF,EAAMG,QAAQ,SAAQ,OAAQH,EAAMJ,QAAQ,KAAKD,cAAcK,EAAMJ,KAAK,IAAI,eAC/FI,EAAME,WAAW,WACjB,+BAA+BF,EAAMJ,QAAQ,KAAKD,cAAcK,EAAMJ,KAAK,IAAI,eAC7EI,EAAME,WAAW,UACf,4BACF,gCAA+B;;gEAEWF,EAAMI,QAAO;;WAElE,EAAC;;;QA1BC1C,CAAI;CA8Bf;AACF,GAAC,CAAA2C,GAAA,CAAAxB,GAAAC,GAAAF,IAAA0B,GAAA,CAAAxC,GAAAyC,MAAAC,EAAAjC,GAAA,CAAA;CAAAH;CAAA;CAAA;AAAA,GAAA;CAAAE;CAAA;CAAA;AAAA,CAAA,GAAAT,GAAA,GAAA,KAAA,GA5DgDJ,CAAY,GAAAc,IAAAkC,IAAA,cAAAC,EAAA;CAAAjC,cAAA;EAAA,MAAAX,CAAA,GAAA6C,EAAA,MAAA,UAC3C/C,CAAM,GAAA2C,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAA1C,GAAA,KAAA,CAAA,GAAA0C,GAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccessControlGeneralAccess.esm.js","names":["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","error","styles","WebComponent","AccessControlGeneralAccess_styles_default","_Class","_AccessControlGeneralAccess","_A","_B","_C","_D","_initProto","_initClass","_classDecs","_subjectUriDecs","_init_subjectUri","_authenticatedAccessRoleValueDecs","_init_authenticatedAccessRoleValue","_publicAccessRoleValueDecs","_init_publicAccessRoleValue","_disabledDecs","_init_disabled","_AccessControlGeneral2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","customElement","_AccessControlGeneral","property","args","event","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","value","roles","detail","eventName","error$1","role","options"],"sources":["../../../src/components/access-control-modal/AccessControlGeneralAccess.ts"],"sourcesContent":["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"],"mappings":"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"}
1
+ {"version":3,"file":"AccessControlGeneralAccess.esm.js","names":["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","customElement","error","styles","customElement$1","WebComponent","AccessControlGeneralAccess_styles_default","_Class","_AccessControlGeneralAccess","_A","_B","_C","_D","_initProto","_initClass","_classDecs","_subjectUriDecs","_init_subjectUri","_authenticatedAccessRoleValueDecs","_init_authenticatedAccessRoleValue","_publicAccessRoleValueDecs","_init_publicAccessRoleValue","_disabledDecs","_init_disabled","_AccessControlGeneral2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","_AccessControlGeneral","property","args","event","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","value","roles","detail","eventName","error$1","role","options"],"sources":["../../../src/components/access-control-modal/AccessControlGeneralAccess.ts"],"sourcesContent":["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"],"mappings":"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"}
@@ -37,7 +37,7 @@ const e=require("../../utils/label.cjs.js"),t=require("../../lib/debug.cjs.js"),
37
37
  `:this.accessContext?d.html``:d.html`<p role="status">Access settings are not ready yet.</p>`}renderMixedContainerWarning(){return this.hasMixedContainerPolicy()?d.html`
38
38
  <div class="access-control-mixed-policy-warning" role="alert">
39
39
  <strong>This container has different access settings for the folder and its contents.</strong>
40
- <span>Changing this mixed policy is an advanced feature and will be available in the next release. Access changes are disabled for now.</span>
40
+ <span>Changing this mixed policy is an advanced feature. You can still change access for the folder or its contents separately below.</span>
41
41
  </div>
42
42
  `:d.html``}getScopedAccessGrants(e=this.getSelectedContainerScope()){let t=this.accessGrants??[];return!this.isContainer()||!this.subjectUri||this.protectedTarget?t:(0,u.filterAuthorizationsByContainerScope)(this.subjectUri,t,e,this.accessContext?.inherited??!1)}refreshScopedAccessGrantDrafts(){let e=this.getScopedAccessGrants();this.accessGrantDrafts=a.createAccessGrantDrafts(e),this.authenticatedAccessRoleValue=a.getAuthenticatedAccessRole(e),this.publicAccessRoleValue=a.getPublicAccessRole(e)}selectContainerScope(e){this.containerScope=e,this.refreshScopedAccessGrantDrafts()}renderAdvancedSharing(){return this.advancedSharingOpen?d.html`
43
43
  <section
@@ -1 +1 @@
1
- {"version":3,"file":"AccessControlModal.cjs.js","names":["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","customElement","property","state","DialogComponent","createAccessGrantDrafts","getAuthenticatedAccessRole","getPublicAccessRole","error","analyzeContainerAccessScope","solidLogicSingleton","sym","getAuthorizationSubjectLabel","getSharedAuthorization","getAccessGrantIds","label","filterAuthorizationsByContainerScope","accessPrincipalOptionsProvider","getAccessGrantViewModels","getChangedAccessGrants","buildAccessChanges","applyAccessChanges","Authenticated","Public","resolveAccessTarget","styles","require_label","require_debug","require_decorators","require_DialogComponent","require_AccessControlModal_styles","require_accessGrantDrafts","require_accessTargetResolver","require_applyAccessChanges","require_buildAccessChanges","rdflib","solid_logic","lit","lit_decorators_js","_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","a","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","f","p","_setFunctionName","P","j","D","I","F","l","N","_checkInRHS","_toPrimitive","e","_identity","isDefined","value","_AccessControlModal","args","error","item","changedProperties","scopedAccessGrants","error$2","error$3","requestVersion","sourceAccessGrants","subjectUri","scope","grants","labels","authorization","groupUri","labelsById","id","index","draft","subject","subjectLabel","accessContext","error$6","isCustomSharing","inheritedContainer","inheritedContainerLabel","defaultContainer","checked","dialogTitle","directAccessGrants","error$1","changedAccessGrants","generalAccessChanges","accessChanges","saveErrors","error$5","event","accessGrants","currentAuthenticatedRole","currentPublicRole","grant","pendingIndex","rawValue","inputSnapshot","error$4","snapshot","result","principal","role","preferredLabel","targetKind","merged","normalizedPrincipal","resolvedTarget","grantsBySubject","draftGrant","draftGrants"],"sources":["../../../src/components/access-control-modal/AccessControlModal.ts"],"sourcesContent":["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 and will be available in the next release. Access changes are disabled for now.</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"],"mappings":"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"}
1
+ {"version":3,"file":"AccessControlModal.cjs.js","names":["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","customElement","property","state","DialogComponent","createAccessGrantDrafts","getAuthenticatedAccessRole","getPublicAccessRole","error","analyzeContainerAccessScope","solidLogicSingleton","sym","getAuthorizationSubjectLabel","getSharedAuthorization","getAccessGrantIds","label","filterAuthorizationsByContainerScope","accessPrincipalOptionsProvider","getAccessGrantViewModels","getChangedAccessGrants","buildAccessChanges","applyAccessChanges","Authenticated","Public","resolveAccessTarget","styles","require_label","require_debug","require_decorators","require_DialogComponent","require_AccessControlModal_styles","require_accessGrantDrafts","require_accessTargetResolver","require_applyAccessChanges","require_buildAccessChanges","rdflib","solid_logic","lit","lit_decorators_js","_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","a","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","f","p","_setFunctionName","P","j","D","I","F","l","N","_checkInRHS","_toPrimitive","e","_identity","isDefined","value","_AccessControlModal","args","error","item","changedProperties","scopedAccessGrants","error$2","error$3","requestVersion","sourceAccessGrants","subjectUri","scope","grants","labels","authorization","groupUri","labelsById","id","index","draft","subject","subjectLabel","accessContext","error$6","isCustomSharing","inheritedContainer","inheritedContainerLabel","defaultContainer","checked","dialogTitle","directAccessGrants","error$1","changedAccessGrants","generalAccessChanges","accessChanges","saveErrors","error$5","event","accessGrants","currentAuthenticatedRole","currentPublicRole","grant","pendingIndex","rawValue","inputSnapshot","error$4","snapshot","result","principal","role","preferredLabel","targetKind","merged","normalizedPrincipal","resolvedTarget","grantsBySubject","draftGrant","draftGrants"],"sources":["../../../src/components/access-control-modal/AccessControlModal.ts"],"sourcesContent":["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"],"mappings":"A,22KA8BA,SAAS0B,GAAcC,EAAyC,CAC9D,OAAOA,GAAiC,IAC1C,CAACE,GAAA,CAMA7B,EAAAA,cAAc,+BAA+B,CAAC,EAAA,IAAA8B,EAAA,IAAAC,IAAAC,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAAAG,EAAA,IAAAH,QAAAI,EAAA,IAAAJ,QAAAK,EAAA,IAAAL,QAAAM,EAAA,IAAAN,QAAAO,EAAA,IAAAP,QAAAQ,EAAA,IAAAR,QAAAS,EAAA,IAAAT,QAAAU,EAAA,IAAAV,QAAAW,EAAA,IAAAX,QAAAY,EAAA,IAAAZ,QAAAa,EAAA,IAAAb,QAAAc,EAAA,IAAAd,QAAAe,EAAA,IAAAf,QAAAgB,EAAA,IAAAhB,QAAAiB,EAAA,IAAAjB,QAAAkB,IAAAC,IAAAA,EAI5CjD,EAAAA,SAAAA,CAAS,CAAEkD,UAAW,EAAM,CAAC,EAACC,IAAAA,EAG9BnD,EAAAA,SAAAA,CAAS,CAAEkD,UAAW,EAAM,CAAC,EAACE,GAAAA,EAG9BnD,EAAAA,MAAAA,CAAM,EAACoD,GAAAA,EAGPpD,EAAAA,MAAAA,CAAM,EAACqD,GAAAA,EAGPrD,EAAAA,MAAAA,CAAM,EAACsD,GAAAA,EAGPtD,EAAAA,MAAAA,CAAM,EAACuD,GAAAA,EAGPvD,EAAAA,MAAAA,CAAM,EAACwD,GAAAA,EAGPxD,EAAAA,MAAAA,CAAM,EAACyD,GAAAA,EAGPzD,EAAAA,MAAAA,CAAM,EAAC0D,GAAAA,EAGP1D,EAAAA,MAAAA,CAAM,EAAC2D,IAAAA,EAGP3D,EAAAA,MAAAA,CAAM,EAAC4D,IAAAA,EAGP5D,EAAAA,MAAAA,CAAM,EAAC6D,IAAAA,EAGP7D,EAAAA,MAAAA,CAAM,EAAC8D,IAAAA,EAGP9D,EAAAA,MAAAA,CAAM,EAAC+D,IAAAA,EAIP/D,EAAAA,MAAAA,CAAM,EAACgE,IAAAA,EAGPhE,EAAAA,MAAAA,CAAM,EAACiE,IAAAA,EAGPjE,EAAAA,MAAAA,CAAM,EAACkE,IAAAA,EAGPlE,EAAAA,MAAAA,CAAM,EAAC,cAAAmE,EAxDV,cACgDtE,EAAAA,OAAsB,CAAAwE,YAAA,GAAAC,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAAC,EAAA,KAAA3C,GAAA4C,GAAA,IAAA,EAAAC,GAAA,KAI1BjD,IAAAA,EAAS,EAAA,EAAA+C,EAAA,KAAAzC,EAAA4C,GAAA,KAGElD,IAAAA,EAAS,CAAA,EAAA+C,EAAA,KAAAxC,EAAA4C,EAAA,KAGf,EAAE,CAAA,EAAAJ,EAAA,KAAAvC,EAAA4C,EAAA,KAGC,QAAQ,CAAA,EAAAL,EAAA,KAAAtC,EAAA4C,EAAA,KAGE,WAAW,CAAA,EAAAN,EAAA,KAAArC,EAAA4C,EAAA,KAGlB,WAAW,CAAA,EAAAP,EAAA,KAAApC,EAAA4C,EAAA,KAGzB,EAAK,CAAA,EAAAR,EAAA,KAAAnC,EAAA4C,EAAA,KAGiB,CAAA,CAAE,CAAA,EAAAT,EAAA,KAAAlC,EAAA4C,EAAA,KAGN,CAAA,CAAE,CAAA,EAAAV,EAAA,KAAAjC,EAAA4C,GAAA,KAGX,CAAA,CAAE,CAAA,EAAAX,EAAA,KAAAhC,EAAA4C,GAAA,KAGJ,EAAI,CAAA,EAAAZ,EAAA,KAAA/B,EAAA4C,GAAA,IAAA,CAAA,EAAAb,EAAA,KAAA9B,EAAA4C,GAAA,KAMV,EAAK,CAAA,EAAAd,EAAA,KAAA7B,EAAA4C,GAAA,KAGP,EAAE,CAAA,EAExCf,EAAA,KAAA5B,EAAA4C,GAAA,KAEuC,EAAK,CAAA,EAAAhB,EAAA,KAAA3B,EAAA4C,GAAA,KAGY,iBAAiB,CAAA,EAAAjB,EAAA,KAAA1B,EAAA4C,GAAA,IAAA,CAAA,EAAAlB,EAAA,KAAAzB,EAAA4C,GAAA,KAMtC,EAAK,CAAA,EAAAC,EAAA,KAAA,iCAEC,CAAC,EAAAA,EAAA,KAAA,8BACJ,CAAC,EAAAA,EAAA,KAAA,0BAAA,IAAA,EAAA,CAAA,CAAA,IAAA5C,KAAA,CAAA,OAAA6C,EAAAhE,EAAA,IAAA,CAAA,CAAA,IAvD9BiE,WAAUC,EAAA,CAAAC,EAAAnE,EAAA,KAAAkE,CAAA,CAAA,CAAA,IAGVE,cAAY,CAAA,OAAAJ,EAAA9D,EAAA,IAAA,CAAA,CAAA,IAAZkE,aAAYF,EAAA,CAAAC,EAAAjE,EAAA,KAAAgE,CAAA,CAAA,CAAA,IAGJG,qBAAmB,CAAA,OAAAL,EAAA7D,EAAA,IAAA,CAAA,CAAA,IAAnBkE,oBAAmBH,EAAA,CAAAC,EAAAhE,EAAA,KAAA+D,CAAA,CAAA,CAAA,IAGnBI,oBAAkB,CAAA,OAAAN,EAAA5D,EAAA,IAAA,CAAA,CAAA,IAAlBkE,mBAAkBJ,EAAA,CAAAC,EAAA/D,EAAA,KAAA8D,CAAA,CAAA,CAAA,IAGlBK,8BAA4B,CAAA,OAAAP,EAAA3D,EAAA,IAAA,CAAA,CAAA,IAA5BkE,6BAA4BL,EAAA,CAAAC,EAAA9D,EAAA,KAAA6D,CAAA,CAAA,CAAA,IAG5BM,uBAAqB,CAAA,OAAAR,EAAA1D,EAAA,IAAA,CAAA,CAAA,IAArBkE,sBAAqBN,EAAA,CAAAC,EAAA7D,EAAA,KAAA4D,CAAA,CAAA,CAAA,IAGrBO,YAAU,CAAA,OAAAT,EAAAzD,EAAA,IAAA,CAAA,CAAA,IAAVkE,WAAUP,EAAA,CAAAC,EAAA5D,EAAA,KAAA2D,CAAA,CAAA,CAAA,IAGVQ,qBAAmB,CAAA,OAAAV,EAAAxD,EAAA,IAAA,CAAA,CAAA,IAAnBkE,oBAAmBR,EAAA,CAAAC,EAAA3D,EAAA,KAAA0D,CAAA,CAAA,CAAA,IAGnBS,mBAAiB,CAAA,OAAAX,EAAAvD,EAAA,IAAA,CAAA,CAAA,IAAjBkE,kBAAiBT,EAAA,CAAAC,EAAA1D,EAAA,KAAAyD,CAAA,CAAA,CAAA,IAGjBU,QAAM,CAAA,OAAAZ,EAAAtD,EAAA,IAAA,CAAA,CAAA,IAANkE,OAAMV,EAAA,CAAAC,EAAAzD,EAAA,KAAAwD,CAAA,CAAA,CAAA,IAGNW,4BAA0B,CAAA,OAAAb,EAAArD,EAAA,IAAA,CAAA,CAAA,IAA1BkE,2BAA0BX,EAAA,CAAAC,EAAAxD,EAAA,KAAAuD,CAAA,CAAA,CAAA,IAG1BY,eAAa,CAAA,OAAAd,EAAApD,EAAA,IAAA,CAAA,CAAA,IAAbkE,cAAaZ,EAAA,CAAAC,EAAAvD,EAAA,KAAAsD,CAAA,CAAA,CAAA,IAGba,sBAAoB,CAAA,OAAAf,EAAAnD,EAAA,IAAA,CAAA,CAAA,IAApBkE,qBAAoBb,EAAA,CAAAC,EAAAtD,EAAA,KAAAqD,CAAA,CAAA,CAAA,IAGpBc,oBAAkB,CAAA,OAAAhB,EAAAlD,EAAA,IAAA,CAAA,CAAA,IAAlBkE,mBAAkBd,EAAA,CAAAC,EAAArD,EAAA,KAAAoD,CAAA,CAAA,CAAA,IAIlBe,qBAAmB,CAAA,OAAAjB,EAAAjD,EAAA,IAAA,CAAA,CAAA,IAAnBkE,oBAAmBf,EAAA,CAAAC,EAAApD,EAAA,KAAAmD,CAAA,CAAA,CAAA,IAGnBgB,gBAAc,CAAA,OAAAlB,EAAAhD,EAAA,IAAA,CAAA,CAAA,IAAdkE,eAAchB,EAAA,CAAAC,EAAAnD,EAAA,KAAAkD,CAAA,CAAA,CAAA,IAGdiB,wBAAsB,CAAA,OAAAnB,EAAA/C,EAAA,IAAA,CAAA,CAAA,IAAtBkE,uBAAsBjB,EAAA,CAAAC,EAAAlD,EAAA,KAAAiD,CAAA,CAAA,CAAA,IAGtBkB,iBAAe,CAAA,OAAApB,EAAA9C,EAAA,IAAA,CAAA,CAAA,IAAfkE,gBAAelB,EAAA,CAAAC,EAAAjD,EAAA,KAAAgD,CAAA,CAAA,CAMhCmB,sBAA8B,CAC5B,KAAKC,iCACL,KAAKC,8BACL,KAAKX,OAAS,CAAA,EACd,MAAMS,qBAAqB,CAC7B,CAEA,IAAYG,YAAsB,CAChC,OAAO,KAAKZ,OAAOa,KAAKC,GAASA,EAAMC,SAAW,OAAO,CAAC,EAAEC,SAAW,EACzE,CAEA,IAAYC,YAAiC,CAC3C,OAAO,KAAKjB,OAAOkB,OAAQJ,GAAoCA,EAAMC,SAAW,OAAO,CACzF,CAEQI,cAAeL,EAAgC,CACrD,KAAKd,OAAS,CACZ,GAAG,KAAKA,OAAOkB,OAAOE,GAAQA,EAAKL,SAAW,OAAO,EACrDD,CAAK,CAET,CAEQO,iBAAmB,CACzB,KAAKrB,OAAS,KAAKA,OAAOkB,OAAOJ,GAASA,EAAMC,SAAW,OAAO,CACpE,CAEUO,WAAYC,EAAyC,CAG7D,GAFA,MAAMD,WAAWC,CAAiB,EAE9BA,EAAkBC,IAAI,cAAc,EAAG,CACzC,IAAMC,EAAqB,KAAKC,sBAAsB,EACtD,KAAK3B,kBAAoB7F,EAAAA,wBAAwBuH,CAAkB,EACnE,KAAK9B,6BAA+BtF,EAAAA,2BAA2BoH,CAAkB,EACjF,KAAK7B,sBAAwBpF,EAAAA,oBAAoBiH,CAAkB,CACrE,CACF,CAEUE,QAASJ,EAAyC,CAC1D,MAAMI,QAAQJ,CAAiB,EAE3BA,EAAkBC,IAAI,YAAY,GACpC,KAAKI,kBAAkB,CAAC,CAACC,MAAMf,GAAS,CACtCpH,EAAAA,MAAY,wCAAyCoH,CAAK,CAC5D,CAAC,EAGCS,EAAkBC,IAAI,cAAc,GACtC,KAAKM,yBAAyB,CAAC,CAACD,MAAOf,GAAmB,CACxDpH,EAAAA,MAAY,wCAAyCoH,CAAK,CAC5D,CAAC,EAGCS,EAAkBC,IAAI,eAA2C,GAAK,CAACD,EAAkBC,IAAI,YAAY,GAC3G,KAAKO,8BAA8B,CAEvC,CAEQA,+BAAiC,CACnC,KAAKC,YAAY,GAAK,KAAK9B,eAC7B,KAAKK,wBAAAA,EAAyB1G,EAAAA,4BAAAA,CAA4B,KAAKqG,aAAa,EAC5E,KAAKI,eAAiB,KAAKC,uBAAuB0B,aAClD,KAAKC,+BAA+B,GAEpC,KAAK3B,uBAAyBvF,IAAAA,EAElC,CAEA,MAAc8G,0BAA4B,CACxC,IAAMK,EAAiB,EAAE,KAAKzB,+BACxB0B,EAAqB,KAAK5C,aAC1BH,EAAa,KAAKA,WAClBgD,EAAQ,KAAKC,0BAA0B,EACvCC,EAAS,KAAKb,sBAAsBW,CAAK,EAC/C,GAAI,CAACE,EAAOC,OAAQ,CAClB,KAAKzC,kBAAoB,CAAA,EACzB,MACF,CAEA,IAAM0C,EAAS,MAAMC,QAAQC,IAAIJ,EAAOK,IAAI,KAAMC,KAChD,MAAMH,QAAQC,IAAIE,EAAcC,WAAWF,IAAI,KAAMG,IAAY,CAC/D,GAAI,CACF,MAAMhJ,EAAAA,oBAAoBiJ,MAAMC,QAAQC,MAAAA,EAAKlJ,EAAAA,IAAAA,CAAI+I,CAAQ,CAAC,CAACI,IAAI,CAAC,CAClE,MAAQ,CACN,CAEJ,CAAC,CAAC,EAEK7I,EAAAA,6BAA6BG,EAAAA,uBAAuBoI,CAAa,CAAC,EAC1E,CAAC,EAEF,GACEV,IAAmB,KAAKzB,gCACxB,KAAKlB,eAAiB4C,GACtB,KAAK/C,aAAeA,GACpB,KAAKiD,0BAA0B,IAAMD,EACrC,CACA,IAAMe,EAAa,IAAIC,IAAIlJ,EAAAA,kBAAkBoI,CAAM,CAAC,CAACK,KAAKU,EAAIC,IAAU,CAACD,EAAIb,EAAOc,EAAM,CAAC,CAAC,EAC5F,KAAKxD,kBAAoB,KAAKA,kBAAkB6C,IAAIY,IAAU,CAC5D,GAAGA,EACHC,aAAcL,EAAWM,IAAIF,EAAMF,EAAE,GAAKE,EAAMC,YAClD,EAAE,CACJ,CACF,CAEQE,gBAA0B,CAChC,IAAMC,EAAU,KAAKvE,YAAAA,EAAarF,EAAAA,IAAAA,CAAI,KAAKqF,UAAU,EAAIrE,IAAAA,GACnDyI,EAAeG,EAAUnK,EAAAA,MAAMmK,CAAO,CAAC,CAACC,KAAK,EAAI,GAKvD,MAHI,CAACJ,GAAgBA,IAAiB,gBAC7B,mCAEF,qBAAqBA,EAAY,EAC1C,CAEQzB,aAAwB,CAC9B,MAAO8B,GAAQ,KAAKzE,YAAc,IAAI0E,IAAI,KAAK1E,UAAU,CAAC,CAAC2E,SAASC,SAAS,GAAG,EAClF,CAEA,MAAcrC,mBAAoC,CAChD,IAAMO,EAAiB,EAAE,KAAKxB,4BACxBtB,EAAa,KAAKA,WAMxB,GALA,KAAKa,cAAgBlF,IAAAA,GACrB,KAAKkJ,wBAA0BlJ,IAAAA,GAC/B,KAAKoF,mBAAqB,GAC1B,KAAKD,qBAAuB2D,EAAQzE,EAEhC,CAACA,EACH,KAAKc,qBAAuB,QAI9B,GAAI,CACF,IAAMD,EAAgB,MAAMnG,EAAAA,oBAAoBoK,IAAIC,iBAAiB/E,CAAU,EAC/E,GAAI8C,IAAmB,KAAKxB,6BAA+B,KAAKtB,aAAeA,EAC7E,OAGF,KAAKa,cAAgBA,EACrB,KAAKgE,wBAA0B7E,EAC3B,KAAKa,eAAemE,WAAa,CAAE,KAAK7E,cAAcgD,SAGxD,KAAKhD,aAAe,KAAKU,cAAcoE,gBAEzC,KAAKvC,8BAA8B,EACnC,KAAKvB,gBAAkBzG,EAAAA,oBAAoBoK,IAAII,oBAAoBlF,CAAU,EACzE,KAAKmB,iBACP,KAAK0B,+BAA+B,CAExC,OAASpB,EAAO,CACd,GAAIqB,IAAmB,KAAKxB,6BAA+B,KAAKtB,aAAeA,EAC7E,OAGF,KAAKe,mBAAqBU,aAAiB0D,OAAS1D,EAAME,QAAQ6C,KAAK,EACnE/C,EAAME,QACN,oDACJtH,EAAAA,MAAY,wCAAyCoH,CAAK,CAC5D,QAAU,CACJqB,IAAmB,KAAKxB,6BAA+B,KAAKtB,aAAeA,IAC7E,KAAKc,qBAAuB,GAEhC,CACF,CAEA,MAAcsE,qBAAyC,CAgBrD,OAfK,KAAKpF,WAMN,CAAC,KAAKqF,aAIN,KAAKR,0BAA4B,KAAK7E,YAAc,KAAKa,eAAiB,CAAC,KAAKE,mBAC3E,IAGT,MAAM,KAAKwB,kBAAkB,EACtB,KAAKsC,0BAA4B,KAAK7E,YAAcyE,EAAQ,KAAK5D,eAAkB,CAAC,KAAKE,oBAdvF,EAeX,CAEQuE,WAAsB,CAS5B,MARI,CAAC,KAAKD,aAIN,CAAC,KAAKrF,YAIHyE,EACL,MAAKzE,YACL,KAAK6E,0BAA4B,KAAK7E,YACtC,MAAKa,eACJ,KAAKC,sBACL,KAAKC,mBAEV,CAEA,MAAcwE,oBAAsB,CAClC,MAAM,KAAKhD,kBAAkB,CAC/B,CAEQiD,0BAA4B,CAClC,GAAI,CAAC,KAAK3E,cACR,MAAO5G,GAAAA,IAAI,GAGb,IAAMwL,EAAkB,CAAC,KAAK5E,cAAcmE,UACtCU,EAAqB,KAAK7E,eAAe8E,mBACzCC,EAA0BF,EAC5BtL,EAAAA,OAAAA,EAAMO,EAAAA,IAAAA,CAAI+K,CAAkB,CAAC,CAAC,CAAClB,KAAK,EACpC,GACEqB,EAAmBD,GAA2BA,IAA4BF,EAC5EzL,EAAAA,IAAI,WAAW2L,EAAuB,aAAcF,EAAkB,GACtEzL,EAAAA,IAAI,WAAWyL,GAAsB,uBAAsB,WAC/D,MAAOzL,GAAAA,IAAI;;UAELwL,EACExL,EAAAA,IAAI;;;gBAGC,KAAKkH,gBAWJlH,EAAAA,IAAI,GAVJA,EAAAA,IAAI;;;;;6BAKO,KAAK6L,iBAAgB;;;;kBAK1B;;YAGZJ,EACEzL,EAAAA,IAAI,mDAAmD4L,EAAgB,OACvE5L,EAAAA,IAAI,yFAAwF;UAChG,KAAKkH,gBACHlH,EAAAA,IAAI,gKACJA,EAAAA,IAAI,GAAE;;KAGhB,CAEQ8L,oBAAsB,CAK5B,MAJI,CAAC,KAAKlF,eAAiB,CAAC,KAAKG,oBACxB/G,EAAAA,IAAI,GAGNA,EAAAA,IAAI;;;;;UAKL,KAAKuL,yBAAyB,EAAC;UAC/B,KAAKQ,sBAAsB,EAAC;;KAGpC,CAEQ/C,2BAAmD,CACzD,OAAO,KAAKhC,cACd,CAEQgF,yBAAoC,CAC1C,OAAO,KAAKtD,YAAY,GAAK,KAAKzB,wBAAwBgF,QAAU,EACtE,CAEQC,0BAA4B,CAsBlC,OArBI,KAAKrF,qBACA7G,EAAAA,IAAI,kDAGT,KAAK8G,mBACA9G,EAAAA,IAAI;;;oBAGG,KAAK8G,mBAAkB;;sEAE2B,KAAKwE,mBAAkB;;;;QAOpF,KAAK1E,cAIH5G,EAAAA,IAAI,GAHFA,EAAAA,IAAI,yDAIf,CAEQmM,6BAA+B,CAKrC,OAJK,KAAKH,wBAAwB,EAI3BhM,EAAAA,IAAI;;;;;MAHFA,EAAAA,IAAI,EASf,CAEQoI,sBAAuBW,EAAQ,KAAKC,0BAA0B,EAAoB,CACxF,IAAMC,EAAS,KAAK/C,cAAgB,CAAA,EAIpC,MAHI,CAAC,KAAKwC,YAAY,GAAK,CAAC,KAAK3C,YAAc,KAAKmB,gBAC3C+B,GAET,EAAOzI,EAAAA,qCAAAA,CAAqC,KAAKuF,WAAYkD,EAAQF,EAAO,KAAKnC,eAAemE,WAAa,EAAK,CACpH,CAEQnC,gCAAkC,CACxC,IAAMT,EAAqB,KAAKC,sBAAsB,EACtD,KAAK3B,kBAAoB7F,EAAAA,wBAAwBuH,CAAkB,EACnE,KAAK9B,6BAA+BtF,EAAAA,2BAA2BoH,CAAkB,EACjF,KAAK7B,sBAAwBpF,EAAAA,oBAAoBiH,CAAkB,CACrE,CAEQiE,qBAAsBrD,EAAkD,CAC9E,KAAK/B,eAAiB+B,EACtB,KAAKH,+BAA+B,CACtC,CAEQmD,uBAAyB,CAG/B,OAFK,KAAKhF,oBAEH/G,EAAAA,IAAI;;;;;;;;;;;;;;UAcL,KAAK0I,YAAY,EACf1I,EAAAA,IAAI;;;;;6BAKa,KAAKgH,iBAAmB,kBAAoB,OAAS,QAAO;2BAC5D,CACb,IAAMqF,EAAU,KAAKrF,iBAAmB,kBACxC,KAAKoF,qBAAqBC,EACtB,kBACA,KAAKrF,iBAAmB,WAAa,WAAa,QAAQ,CAChE,EAAC;;;;;;;;;;0BAUW,KAAKA,iBAAmB,SAAW,UAAY,YAAW;+BACrD,KAAKA,iBAAmB,SAAW,OAAS,QAAO;6BACnD,CAAE,KAAKoF,qBAAqB,QAAQ,CAAE,EAAC;;;;;;0BAM5C,KAAKpF,iBAAmB,WAAa,UAAY,YAAW;+BACvD,KAAKA,iBAAmB,WAAa,OAAS,QAAO;6BACrD,CAAE,KAAKoF,qBAAqB,UAAU,CAAE,EAAC;;;;;YAM5DpM,EAAAA,IAAI,GAAE;;;;;;;qBAOG,KAAKsM,qBAAoB;;;;;;;MA7DJtM,EAAAA,IAAI,EAqE5C,CAEUuM,QAAU,CAClB,IAAMC,EAAc,KAAKnC,eAAe,EAExC,MAAOrK,GAAAA,IAAI;+BACgBwM,EAAW;wBAClB,KAAKC,SAAQ;;cAEvB,KAAKP,yBAAyB,EAAC;cAC/B,KAAKC,4BAA4B,EAAC;;0BAEtB,CAAC,KAAKd,UAAU,GAAK,KAAKW,wBAAwB,EAAC;qCACxC,KAAK7F,oBAAmB;oCACzB,KAAKC,mBAAkB;qCACtB,KAAKI,oBAAmB;4BACjC,KAAKc,WAAU;sCACLlG,EAAAA,+BAA8B;8BACtC,KAAKsL,iBAAgB;iCAClB,KAAKC,kBAAiB;8BACzB,KAAKC,qBAAoB;uCAChB,KAAKC,sBAAqB;;;0BAGvC,CAAC,KAAKxB,UAAU,GAAK,KAAKW,wBAAwB,EAAC;uCACtClL,EAAAA,yBAAyB,KAAK2F,iBAAiB,EAAC;2CAC5C,KAAKqG,uBAAsB;;;0BAG5C,CAAC,KAAKzB,UAAU,GAAK,KAAKW,wBAAwB,EAAC;4BACjD,KAAKjG,WAAU;8CACG,KAAKM,6BAA4B;uCACxC,KAAKC,sBAAqB;4CACrB,KAAKyG,+BAA8B;qCAC1C,KAAKC,wBAAuB;;;wBAGzC,KAAKrF,WAAU;4CACK,KAAKhB,2BAA0B;uBACpD,KAAKsG,cAAa;;cAE3B,KAAKnB,mBAAmB,EAAC;;;;;;;yBAOd,KAAKmB,cAAa;;;;;4BAKf,CAAC,KAAK5B,UAAU,GAAK,CAAC,KAAK6B,kBAAkB,GAAK,KAAK3G,YAAc,KAAKoB,WAAWuB,OAAS,GAAK,KAAK8C,wBAAwB,EAAC;2BAClI,KAAKzF,WAAU;;yBAEjB,KAAK4G,YAAW;;;;;;;;KASvC,CAEA,MAAcV,SAAUW,EAAU,CAChCA,EAAEC,eAAe,EAEb,KAAK9G,YAAc,KAAKyF,wBAAwB,GAIhD,KAAKZ,aAAgB,OAAM,KAAKD,oBAAoB,GAIxD,MAAM,KAAKmC,+BAA+B,CAC5C,CAEA,MAAcH,aAAe,CAS3B,GARI,KAAK5G,YAAc,KAAKyF,wBAAwB,GAIhD,KAAKZ,aAAe,CAAC,MAAM,KAAKD,oBAAoB,GAIpD,KAAKhF,oBAAoBoE,KAAK,GAG5B,CAACgD,MAFmB,KAAKD,+BAA+B,EAG1D,OAIJ,IAAMvE,EAAQ,KAAKL,YAAY,GAAK,CAAC,KAAKxB,gBACtC,KAAK8B,0BAA0B,EAC/B,OACJ,MAAM,KAAKwE,kBAAkBzE,IAAU,SAAW,YAAcA,CAAK,CACvE,CAEQkE,eAAiB,CACvB,KAAKQ,MAAM,CACb,CAEQnB,sBAAwB,CAC9B,KAAKvF,oBAAsB,EAC7B,CAEA,MAAc8E,kBAAoB,CAChC,GAAK,KAAK9F,YAAe,KAAKsF,UAAU,GAAM,KAAKzE,eAAiB,MAAKA,cAAcmE,WAAa,MAAKxE,YAAc,MAAKyF,wBAAwB,EAEpJ,MAAKzF,WAAa,GAClB,KAAKG,OAAS,KAAKA,OAAOkB,OAAOJ,GAASA,EAAMC,SAAW,OAAO,EAClE,GAAI,CACF,MAAMhH,EAAAA,oBAAoBoK,IAAI6C,eAAe,KAAK3H,UAAU,EAC5D,MAAM,KAAKuC,kBAAkB,EAC7B,IAAMqF,EAAqB,MAAMlN,EAAAA,oBAAoBoK,IAAI+C,iBAAiB,KAAK7H,UAAU,EACzF,KAAKG,aAAe,KAAKU,eAAemE,UACpC,KAAKnE,cAAcoE,eACnB2C,CACN,OAASnG,EAAO,CACd,KAAKd,OAAS,CAAC,GAAG,KAAKA,OAAQ,CAC7Be,OAAQ,QACRoG,UAAW,KAAK9H,WAChB5F,MAAO,iBACPuH,QAASF,aAAiB0D,MAAQ1D,EAAME,QAAU,0BACpD,CAAC,EACDtH,EAAAA,MAAY,iCAAkCoH,CAAK,CACrD,QAAU,CACR,KAAKjB,WAAa,EACpB,CAnBkB,CAoBpB,CAEA,MAAciH,kBAAmBzE,EAAyB,OAAQ,CAChE,GAAI,KAAKxC,YAAc,CAAC,KAAK8E,UAAU,GAAK,KAAKW,wBAAwB,EACvE,OAGF,IAAM8B,EAAsB7M,EAAAA,uBAAuB,KAAKwF,iBAAiB,EACnEsH,EAAuB,KAAKC,wBAAwB,EAE1D,IAAK,KAAKxH,oBAAoB0C,QAAW4E,EAAoB5E,QAAW6E,EAAqB7E,SAIxF,KAAKnD,WAIV,MAAKQ,WAAa,GAClB,KAAKG,OAAS,KAAKA,OAAOkB,OAAOJ,GAASA,EAAMC,SAAW,OAAO,EAClE,KAAKd,2BAA6B,GAElC,GAAI,CACF,IAAMsH,EAAgB1M,EAAAA,mBAAmB,CACvCiF,oBAAqB,KAAKA,oBAC1BuH,uBACAD,qBACF,CAAC,EAEKnG,EAAa,MAAMrG,EAAAA,mBAAmB,KAAKyE,WAAYkI,EAAe,CAC1EjH,eAAgB+B,CAClB,CAAC,EACD,GAAIpB,EAAWuB,OAAQ,CACrB,KAAKxC,OAAS,CAAC,GAAG,KAAKA,OAAQ,GAAGiB,CAAU,EAC5C,KAAKxB,oBAAsB,GAC3B,KAAKK,oBAAsB,CAAA,EAE3B,GAAI,CACF,KAAKN,aAAe,MAAMzF,EAAAA,oBAAoBoK,IAAI+C,iBAAiB,KAAK7H,UAAU,CACpF,OAASyB,EAAO,CACd,KAAKb,2BAA6B,GAClC,KAAKD,OAAS,CACZ,GAAG,KAAKA,OACR,CACEe,OAAQ,OACRoG,UAAW,KAAK9H,WAChB5F,MAAO,mBACPuH,QAASF,aAAiB0D,MACtB1D,EAAME,QACN,oCACN,CAAC,EAEHtH,EAAAA,MAAY,oDAAqDoH,CAAK,CACxE,CAEApH,EAAAA,MAAY,qCAAsCuH,CAAU,EAC5D,MACF,CAEA,KAAKxB,oBAAsB,GAC3B,KAAKK,oBAAsB,CAAA,EAC3B,KAAKiH,MAAM,CACb,OAASjG,EAAO,CACd,KAAKd,OAAS,CACZ,GAAG,KAAKA,OACR,CACEe,OAAQ,OACRoG,UAAW,KAAK9H,YAAc,GAC9B5F,MAAO,iBACPuH,QAASF,aAAiB0D,MACtB1D,EAAME,QACN,+CACN,CAAC,CAEL,QAAU,CACR,KAAKnB,WAAa,EACpB,CA1DkB,CA2DpB,CAEQmG,iBAAkBwB,EAAyB,CAC5C,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK7F,oBAAsB+H,EAAMC,OAAO1M,MACxC,KAAKsG,gBAAgB,EACvB,CAEQ4E,kBAAmBuB,EAA4B,CAChD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,GACtD,KAAKoC,sBAAsBF,EAAMC,OAAO1M,MAAO,KAAK2E,mBAAoB8H,EAAMC,OAAOhO,MAAOuB,IAAAA,GAAWwM,EAAMC,OAAOE,UAAU,CAChI,CAEQL,yBAA2C,CACjD,GAAI,CAAC,KAAKjI,WACR,MAAO,CAAA,EAGT,IAAMG,EAAe,KAAKkC,sBAAsB,EAC1CkG,EAA2BvN,EAAAA,2BAA2BmF,CAAY,EAClEqI,EAAoBrN,EAAAA,oBAAoBgF,CAAY,EAkB1D,MAAO,CAhBqB,KAAKG,+BAAiCiI,EAC9D5M,IAAAA,GACA,CACE4I,QAASjK,EAAAA,cACToO,KAAM,KAAKpI,6BACXlG,MAAO,qBACT,EAEiB,KAAKmG,wBAA0BiI,EAChD7M,IAAAA,GACA,CACE4I,QAAShK,EAAAA,OACTmO,KAAM,KAAKnI,sBACXnG,MAAO,QACT,CAEqC,CAAC,CAACyH,OAAOpG,EAAS,CAC7D,CAEQoL,qBAAsBsB,EAAyB,CAChD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK5F,mBAAqB8H,EAAMC,OAAOM,KACvC,KAAKjI,oBAAsB,KAAKA,oBAAoB8C,IAAIqF,IAAU,CAChE,GAAGA,EACHF,KAAMP,EAAMC,OAAOM,IACrB,EAAE,EACJ,CAEQ1B,+BAAgCmB,EAAyB,CAC1D,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK3F,6BAA+B6H,EAAMC,OAAOM,KACnD,CAEQzB,wBAAyBkB,EAAyB,CACnD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK1F,sBAAwB4H,EAAMC,OAAOM,KAC5C,CAEQ3B,uBAAwBoB,EAAoC,CAC7D,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAKvF,kBAAoB,KAAKA,kBAAkB6C,IAAIY,GAClDA,EAAMF,KAAOkE,EAAMC,OAAOnE,GACtB,CAAE,GAAGE,EAAOuE,KAAMP,EAAMC,OAAOM,IAAK,EACpCvE,CACN,EACF,CAEQ2C,sBAAuBqB,EAAiC,CACzD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAKxF,oBAAsB,KAAKA,oBAAoBoB,QAAQgH,EAAGC,IAAiBA,IAAiBX,EAAMC,OAAOlE,KAAK,EACrH,CAEQiD,mBAA8B,CACpC,MAAO1C,GACL,KAAKhE,oBAAoB0C,QACzB,KAAK/C,oBAAoBoE,KAAK,GAC9BtJ,EAAAA,uBAAuB,KAAKwF,iBAAiB,CAAC,CAACyC,QAC/C,KAAK8E,wBAAwB,CAAC,CAAC9E,OAEnC,CAEA,MAAc4F,0BAA8C,CAC1D,GAAI,CAAC,KAAKzD,UAAU,GAAK,KAAKW,wBAAwB,EACpD,MAAO,GAGT,IAAM+C,EAAW,KAAK5I,oBAAoBoE,KAAK,EAK/C,OAJKwE,EAIE,KAAKX,sBAAsBW,EAAU,KAAK3I,mBAAoB1E,IAAAA,GAAWqN,CAAQ,EAH/E,EAIX,CAEA,MAAczB,gCAAoD,CAChE,IAAM0B,EAAgB,KAAK7I,oBAAoBoE,KAAK,EAEpD,GAAI,CACF,OAAO,MAAM,KAAKuE,yBAAyB,CAC7C,OAAStH,EAAO,CAad,OAZI,KAAKrB,oBAAoBoE,KAAK,IAAMyE,GAKxC,KAAKnH,cAAc,CACjBJ,OAAQ,QACRtH,MAAO,gBACP0N,UAAW,KAAK1H,oBAAoBoE,KAAK,EACzC7C,QAAS,wEACX,CAAC,EACDtH,EAAAA,MAAY,yCAA0CoH,CAAK,EACpD,KAXLpH,EAAAA,MAAY,+CAAgDoH,CAAK,EAC1D,GAWX,CACF,CAEA,MAAc4G,sBACZa,EACAR,EAAmB,KAAKrI,mBACxB8I,EACAF,EACAX,EACkB,CAClB,IAAMc,EAAWH,GAAiB,KAAK7I,oBAAoBoE,KAAK,EAC1D6E,EAAS,MAAM,KAAKC,yBAAyBJ,EAAWR,EAAMS,EAAgBb,CAAU,EAE9F,GAAI,UAAWe,EAKb,OAJI,KAAKjJ,oBAAoBoE,KAAK,IAAM4E,GACtC,KAAKtH,cAAcuH,EAAO5H,KAAK,EAEjCpH,EAAAA,MAAY,8BAA+BgP,EAAO5H,MAAME,OAAO,EACxD,GAGT,IAAM4H,EAAS,CAAC,GAAG,KAAK9I,oBAAqB4I,EAAOT,KAAK,EAQzD,MAPA,MAAKnI,oBAAsB,KAAK+I,0BAA0BD,CAAM,EAE5D,KAAKnJ,oBAAoBoE,KAAK,IAAM4E,IACtC,KAAKpH,gBAAgB,EACrB,KAAK5B,oBAAsB,IAGtB,EACT,CAEA,MAAckJ,yBACZJ,EACAR,EAAmB,KAAKrI,mBACxB8I,EACAb,EAC2C,CAC3C,GAAI,CACF,IAAMmB,EAAsBP,EAAU1E,KAAK,EACrCkF,EAAiB,MAAMpO,EAAAA,oBAAoBmO,EAAqBN,CAAc,EAYpF,OAXKO,EAWE,CACLd,MAAO,CACLe,YAAaD,EAAeC,YAC5BC,aAAcF,EAAeE,aAC7BlB,OACAtO,MAAOsP,EAAetP,MACtBkO,WAAYA,GAAcoB,EAAepB,UAC3C,CACF,EAlBS,CACL7G,MAAO,CACLC,OAAQ,QACRtH,MAAO,gBACP0N,UAAW2B,EACX9H,QAAS,qCACX,CACF,CAYJ,OAASF,EAAO,CACd,MAAO,CACLA,MAAO,CACLC,OAAQ,QACRtH,MAAO,gBACP0N,UAAWoB,EACXvH,QAASF,aAAiB0D,OAAS1D,EAAME,QAAQ6C,KAAK,EAClD/C,EAAME,QACN,qCACN,CACF,CACF,CACF,CAEQ6H,0BAA2BK,EAAyD,CAC1F,IAAMC,EAAkB,IAAI9F,IAC5B,IAAK,IAAM+F,KAAcF,EACvBC,EAAgBE,IAAI,GAAGD,EAAWJ,YAAW,GAAII,EAAWH,eAAgBG,CAAU,EAExF,MAAO,CAAC,GAAGD,EAAgBG,OAAO,CAAC,CACrC,CACF,EAAC,CAAA5C,EAAA,CAAAzI,GAAAC,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAlB,IAAAuL,EAAA,CAAArO,EAAAsO,KAAAC,GAAA9L,EAAA,CAAA,CAAAnB,GAAA,EAAA,YAAA,EAAA,CAAAE,GAAA,EAAA,cAAA,EAAA,CAAAC,EAAA,EAAA,qBAAA,EAAA,CAAAC,EAAA,EAAA,oBAAA,EAAA,CAAAC,EAAA,EAAA,8BAAA,EAAA,CAAAC,EAAA,EAAA,uBAAA,EAAA,CAAAC,EAAA,EAAA,YAAA,EAAA,CAAAC,EAAA,EAAA,qBAAA,EAAA,CAAAC,EAAA,EAAA,mBAAA,EAAA,CAAAC,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,EAAA,4BAAA,EAAA,CAAAC,GAAA,EAAA,eAAA,EAAA,CAAAC,GAAA,EAAA,sBAAA,EAAA,CAAAC,GAAA,EAAA,oBAAA,EAAA,CAAAC,GAAA,EAAA,qBAAA,EAAA,CAAAC,GAAA,EAAA,gBAAA,EAAA,CAAAC,GAAA,EAAA,wBAAA,EAAA,CAAAC,GAAA,EAAA,iBAAA,CAAA,EAAAzC,GAAA,EAAA,IAAA,GAx2B+C5B,EAAAA,OAAe,EAAAsE,GAAA+L,EAAA,cAAAC,EAAA,CAAA9L,aAAA,CAAA,MAAA3C,CAAA,EAAAiE,EAAA,KAAA,SAC7ClF,EAAAA,OAAM,EAAAuP,GAAA,CAAA,CAAA,EAAArK,EAAAuK,EAAAvO,GAAA,IAAA,EAAA,EAAAuO,G"}
@@ -452,7 +452,7 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
452
452
  return this.hasMixedContainerPolicy() ? C`
453
453
  <div class="access-control-mixed-policy-warning" role="alert">
454
454
  <strong>This container has different access settings for the folder and its contents.</strong>
455
- <span>Changing this mixed policy is an advanced feature and will be available in the next release. Access changes are disabled for now.</span>
455
+ <span>Changing this mixed policy is an advanced feature. You can still change access for the folder or its contents separately below.</span>
456
456
  </div>
457
457
  ` : C``;
458
458
  }