solid-ui 5.0.2-2 → 5.0.2-4
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.
- package/dist/_virtual/~icons/lucide/arrow-left.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/arrow-left.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/arrow-left.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/arrow-left.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/ellipsis-vertical.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/file.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/file.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/file.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/file.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/lock-keyhole.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/pencil.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/pencil.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/pencil.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/pencil.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/share-2.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/share-2.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/share-2.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/share-2.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/user-round-cog.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/user-round-cog.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/user-round-cog.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/user-round-cog.esm.js.map +1 -0
- package/dist/chunks/DialogProvider-CdesAsw-.js +208 -0
- package/dist/chunks/DialogProvider-CdesAsw-.js.map +1 -0
- package/dist/chunks/ResourceActionsMenu-Bllpr4M5.js +378 -0
- package/dist/chunks/ResourceActionsMenu-Bllpr4M5.js.map +1 -0
- package/dist/chunks/{access-control-modal-Dcg6-f4V.js → access-control-modal-CwmY_Dod.js} +419 -432
- package/dist/chunks/access-control-modal-CwmY_Dod.js.map +1 -0
- package/dist/chunks/{account-D6JK-n7u.js → account-CoHPKKDu.js} +6 -6
- package/dist/chunks/{account-D6JK-n7u.js.map → account-CoHPKKDu.js.map} +1 -1
- package/dist/chunks/{auth-B_abPDvH.js → auth-CocCqS1p.js} +23 -22
- package/dist/chunks/{auth-B_abPDvH.js.map → auth-CocCqS1p.js.map} +1 -1
- package/dist/chunks/{avatar-BR3COVSQ.js → avatar-sNdKdWVO.js} +2 -2
- package/dist/chunks/{avatar-BR3COVSQ.js.map → avatar-sNdKdWVO.js.map} +1 -1
- package/dist/chunks/context-BDrfQ9bN.js +21 -0
- package/dist/chunks/context-BDrfQ9bN.js.map +1 -0
- package/dist/chunks/{dialogs-root-BcQo2XMF.js → dialogs-root-BNF3_SA8.js} +2 -2
- package/dist/chunks/{dialogs-root-BcQo2XMF.js.map → dialogs-root-BNF3_SA8.js.map} +1 -1
- package/dist/chunks/events-CXQHDCs2.js +8 -0
- package/dist/chunks/events-CXQHDCs2.js.map +1 -0
- package/dist/chunks/file-explorer-header-D0TebSYR.js +962 -0
- package/dist/chunks/file-explorer-header-D0TebSYR.js.map +1 -0
- package/dist/chunks/file-explorer-provider-DpjC7uds.js +295 -0
- package/dist/chunks/file-explorer-provider-DpjC7uds.js.map +1 -0
- package/dist/chunks/globe-CsCgZcy5.js +16 -0
- package/dist/chunks/globe-CsCgZcy5.js.map +1 -0
- package/dist/chunks/{guard-bTeM7wd7.js → guard-BOicu9dt.js} +2 -2
- package/dist/chunks/{guard-bTeM7wd7.js.map → guard-BOicu9dt.js.map} +1 -1
- package/dist/chunks/index.esm-C9oV3H3X.js +6 -0
- package/dist/chunks/index.esm-C9oV3H3X.js.map +1 -0
- package/dist/chunks/{jsonld-CnfzCyCn.js → jsonld-D-TE94B0.js} +2 -2
- package/dist/chunks/{jsonld-CnfzCyCn.js.map → jsonld-D-TE94B0.js.map} +1 -1
- package/dist/chunks/{login-button-Div4ZT4J.js → login-button-clTw_9tX.js} +2 -2
- package/dist/chunks/{login-button-Div4ZT4J.js.map → login-button-clTw_9tX.js.map} +1 -1
- package/dist/chunks/{logout-button-D3lqlnCX.js → logout-button-CP-Pz70O.js} +2 -2
- package/dist/chunks/{logout-button-D3lqlnCX.js.map → logout-button-CP-Pz70O.js.map} +1 -1
- package/dist/chunks/provide-z9U64q4m.js +111 -0
- package/dist/chunks/provide-z9U64q4m.js.map +1 -0
- package/dist/chunks/{provider-Dcd1NPYx.js → provider-Cuv3Kp6G.js} +4 -4
- package/dist/chunks/{provider-Dcd1NPYx.js.map → provider-Cuv3Kp6G.js.map} +1 -1
- package/dist/chunks/{rdf-form-CmPnHKR-.js → rdf-form-DVmTw3RG.js} +20 -20
- package/dist/chunks/{rdf-form-CmPnHKR-.js.map → rdf-form-DVmTw3RG.js.map} +1 -1
- package/dist/chunks/{rdf-input-3AgoeCkJ.js → rdf-input-CRYLK-27.js} +42 -42
- package/dist/chunks/{rdf-input-3AgoeCkJ.js.map → rdf-input-CRYLK-27.js.map} +1 -1
- package/dist/chunks/{signup-button-2fAoS0Nv.js → signup-button-CexdMWj6.js} +2 -2
- package/dist/chunks/{signup-button-2fAoS0Nv.js.map → signup-button-CexdMWj6.js.map} +1 -1
- package/dist/chunks/{index.esm-CECfD0e9.js → solidLogicSingleton.esm-BXyHD7mn.js} +1210 -1161
- package/dist/chunks/solidLogicSingleton.esm-BXyHD7mn.js.map +1 -0
- package/dist/chunks/{src-Dx7k_VIe.js → src-DQgHAH3d.js} +4579 -4542
- package/dist/chunks/src-DQgHAH3d.js.map +1 -0
- package/dist/chunks/{style-w0Fl0xnd.js → style-CXaw5EYi.js} +9 -8
- package/dist/chunks/{style-w0Fl0xnd.js.map → style-CXaw5EYi.js.map} +1 -1
- package/dist/chunks/{widgets-BWpm5CPx.js → widgets-BBEQu0CS.js} +722 -721
- package/dist/chunks/{widgets-BWpm5CPx.js.map → widgets-BBEQu0CS.js.map} +1 -1
- package/dist/components/access-control-modal/AccessControlModal.cjs.js +1 -1
- package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlModal.esm.js +1 -1
- package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
- package/dist/components/access-control-modal.js +1 -1
- package/dist/components/account.js +1 -1
- package/dist/components/all.cjs.js +1 -1
- package/dist/components/all.esm.js +3 -0
- package/dist/components/avatar.js +1 -1
- package/dist/components/dialog-provider.js +1 -1
- package/dist/components/dialogs-root.js +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js +15 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.d.ts +20 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.d.ts.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.esm.js +310 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js +2 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js +6 -0
- package/dist/components/file-explorer-header/FileExplorerHeader.styles.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +35 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts +23 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.d.ts.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +318 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js +2 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js +6 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.styles.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +35 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts +22 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.d.ts.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +356 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js +2 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js +6 -0
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.styles.esm.js.map +1 -0
- package/dist/components/file-explorer-header/index.cjs.js +2 -0
- package/dist/components/file-explorer-header/index.cjs.js.map +1 -0
- package/dist/components/file-explorer-header/index.d.ts +4 -0
- package/dist/components/file-explorer-header/index.d.ts.map +1 -0
- package/dist/components/file-explorer-header/index.esm.js +6 -0
- package/dist/components/file-explorer-header/index.esm.js.map +1 -0
- package/dist/components/file-explorer-header/types.d.ts +11 -0
- package/dist/components/file-explorer-header/types.d.ts.map +1 -0
- package/dist/components/file-explorer-header.js +1 -0
- package/dist/components/file-explorer-provider/FileExplorerProvider.cjs.js +2 -0
- package/dist/components/file-explorer-provider/FileExplorerProvider.cjs.js.map +1 -0
- package/dist/components/file-explorer-provider/FileExplorerProvider.d.ts +17 -0
- package/dist/components/file-explorer-provider/FileExplorerProvider.d.ts.map +1 -0
- package/dist/components/file-explorer-provider/FileExplorerProvider.esm.js +297 -0
- package/dist/components/file-explorer-provider/FileExplorerProvider.esm.js.map +1 -0
- package/dist/components/file-explorer-provider/index.cjs.js +2 -0
- package/dist/components/file-explorer-provider/index.cjs.js.map +1 -0
- package/dist/components/file-explorer-provider/index.d.ts +4 -0
- package/dist/components/file-explorer-provider/index.d.ts.map +1 -0
- package/dist/components/file-explorer-provider/index.esm.js +6 -0
- package/dist/components/file-explorer-provider/index.esm.js.map +1 -0
- package/dist/components/file-explorer-provider.js +1 -0
- package/dist/components/guard.js +1 -1
- package/dist/components/index.cjs.js +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -0
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/rdf-form.js +1 -1
- package/dist/components/rdf-input.js +1 -1
- package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts +8 -0
- package/dist/components/resource-actions-menu/DeleteResourceDialog.d.ts.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +27 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts +23 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.d.ts.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +344 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.cjs.js +2 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.cjs.js.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.esm.js +6 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.styles.esm.js.map +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.test.d.ts +1 -0
- package/dist/components/resource-actions-menu/ResourceActionsMenu.test.d.ts.map +1 -0
- package/dist/components/resource-actions-menu/index.cjs.js +1 -0
- package/dist/components/resource-actions-menu/index.d.ts +2 -0
- package/dist/components/resource-actions-menu/index.d.ts.map +1 -0
- package/dist/components/resource-actions-menu/index.esm.js +1 -0
- package/dist/components/resource-actions-menu.js +1 -0
- package/dist/components/signup-button.js +1 -1
- package/dist/components.js +15 -12
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +8 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +11 -9
- package/dist/lib/context/noopContext.cjs.js +2 -0
- package/dist/lib/context/noopContext.cjs.js.map +1 -0
- package/dist/lib/context/noopContext.d.ts +2 -0
- package/dist/lib/context/noopContext.d.ts.map +1 -0
- package/dist/lib/context/noopContext.esm.js +18 -0
- package/dist/lib/context/noopContext.esm.js.map +1 -0
- package/dist/lib/file-explorer/compose-explorer.cjs.js +2 -0
- package/dist/lib/file-explorer/compose-explorer.cjs.js.map +1 -0
- package/dist/lib/file-explorer/compose-explorer.d.ts +17 -0
- package/dist/lib/file-explorer/compose-explorer.d.ts.map +1 -0
- package/dist/lib/file-explorer/compose-explorer.esm.js +18 -0
- package/dist/lib/file-explorer/compose-explorer.esm.js.map +1 -0
- package/dist/lib/file-explorer/context.cjs.js +1 -1
- package/dist/lib/file-explorer/context.cjs.js.map +1 -1
- package/dist/lib/file-explorer/context.d.ts +12 -14
- package/dist/lib/file-explorer/context.d.ts.map +1 -1
- package/dist/lib/file-explorer/context.esm.js +4 -3
- package/dist/lib/file-explorer/context.esm.js.map +1 -1
- package/dist/lib/file-explorer/events.cjs.js +2 -0
- package/dist/lib/file-explorer/events.cjs.js.map +1 -0
- package/dist/lib/file-explorer/events.d.ts +16 -0
- package/dist/lib/file-explorer/events.d.ts.map +1 -0
- package/dist/lib/file-explorer/events.esm.js +8 -0
- package/dist/lib/file-explorer/events.esm.js.map +1 -0
- package/dist/lib/file-explorer/index.cjs.js +1 -0
- package/dist/lib/file-explorer/index.d.ts +5 -0
- package/dist/lib/file-explorer/index.d.ts.map +1 -0
- package/dist/lib/file-explorer/index.esm.js +5 -0
- package/dist/lib/file-explorer/relevant-panes.cjs.js +2 -0
- package/dist/lib/file-explorer/relevant-panes.cjs.js.map +1 -0
- package/dist/lib/file-explorer/relevant-panes.d.ts +22 -0
- package/dist/lib/file-explorer/relevant-panes.d.ts.map +1 -0
- package/dist/lib/file-explorer/relevant-panes.esm.js +23 -0
- package/dist/lib/file-explorer/relevant-panes.esm.js.map +1 -0
- package/dist/loader.js +11 -9
- package/dist/solid-ui.js +211 -107
- package/dist/solid-ui.min.js +211 -107
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/theme.css +1 -1
- package/dist/utils/podUtils.cjs.js +2 -0
- package/dist/utils/podUtils.cjs.js.map +1 -0
- package/dist/utils/podUtils.d.ts +6 -0
- package/dist/utils/podUtils.d.ts.map +1 -0
- package/dist/utils/podUtils.esm.js +22 -0
- package/dist/utils/podUtils.esm.js.map +1 -0
- package/dist/utils/webIdUtils.cjs.js +1 -0
- package/dist/utils/webIdUtils.d.ts +7 -0
- package/dist/utils/webIdUtils.d.ts.map +1 -0
- package/dist/utils/webIdUtils.esm.js +3 -0
- package/package.json +3 -3
- package/dist/chunks/DialogProvider-C89v7x0r.js +0 -314
- package/dist/chunks/DialogProvider-C89v7x0r.js.map +0 -1
- package/dist/chunks/access-control-modal-Dcg6-f4V.js.map +0 -1
- package/dist/chunks/index.esm-CECfD0e9.js.map +0 -1
- package/dist/chunks/src-Dx7k_VIe.js.map +0 -1
|
@@ -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
|
|
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":"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"}
|
|
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":"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"}
|
|
@@ -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
|
|
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
|
}
|