solid-ui 5.0.2-4 → 5.0.2-5
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/acl/access-controller.cjs.js +1 -1
- package/dist/acl/access-controller.cjs.js.map +1 -1
- package/dist/acl/access-controller.esm.js +37 -37
- package/dist/acl/access-groups.cjs.js +2 -2
- package/dist/acl/access-groups.cjs.js.map +1 -1
- package/dist/acl/access-groups.esm.js +78 -78
- package/dist/acl/acl-control.cjs.js +1 -1
- package/dist/acl/acl-control.cjs.js.map +1 -1
- package/dist/acl/acl-control.esm.js +19 -19
- package/dist/acl/add-agent-buttons.cjs.js +1 -1
- package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
- package/dist/acl/add-agent-buttons.esm.js +51 -51
- package/dist/chat/bookmarks.cjs.js +1 -1
- package/dist/chat/bookmarks.cjs.js.map +1 -1
- package/dist/chat/bookmarks.esm.js +44 -44
- package/dist/chat/bookmarks.esm.js.map +1 -1
- package/dist/chat/chatLogic.cjs.js +2 -2
- package/dist/chat/chatLogic.cjs.js.map +1 -1
- package/dist/chat/chatLogic.esm.js +54 -54
- package/dist/chat/dateFolder.cjs.js +1 -1
- package/dist/chat/dateFolder.cjs.js.map +1 -1
- package/dist/chat/dateFolder.esm.js +30 -30
- package/dist/chat/infinite.cjs.js +1 -1
- package/dist/chat/infinite.cjs.js.map +1 -1
- package/dist/chat/infinite.esm.js +49 -49
- package/dist/chat/keys.cjs.js +2 -2
- package/dist/chat/keys.cjs.js.map +1 -1
- package/dist/chat/keys.esm.js +17 -17
- package/dist/chat/message.cjs.js +4 -4
- package/dist/chat/message.cjs.js.map +1 -1
- package/dist/chat/message.esm.js +114 -114
- package/dist/chat/message.esm.js.map +1 -1
- package/dist/chat/messageTools.cjs.js +1 -1
- package/dist/chat/messageTools.cjs.js.map +1 -1
- package/dist/chat/messageTools.esm.js +51 -51
- package/dist/chunks/{ResourceActionsMenu-Bllpr4M5.js → ResourceActionsMenu-Bx7YWY3E.js} +29 -29
- package/dist/chunks/{ResourceActionsMenu-Bllpr4M5.js.map → ResourceActionsMenu-Bx7YWY3E.js.map} +1 -1
- package/dist/chunks/{access-control-modal-CwmY_Dod.js → access-control-modal-B1mFFIyz.js} +165 -165
- package/dist/chunks/{access-control-modal-CwmY_Dod.js.map → access-control-modal-B1mFFIyz.js.map} +1 -1
- package/dist/chunks/{account-CoHPKKDu.js → account-DWmMJre6.js} +22 -22
- package/dist/chunks/{account-CoHPKKDu.js.map → account-DWmMJre6.js.map} +1 -1
- package/dist/chunks/{auth-CocCqS1p.js → auth-EK-iYNYZ.js} +37 -37
- package/dist/chunks/{auth-CocCqS1p.js.map → auth-EK-iYNYZ.js.map} +1 -1
- package/dist/chunks/{avatar-sNdKdWVO.js → avatar-BBgvMlqv.js} +13 -13
- package/dist/chunks/{avatar-sNdKdWVO.js.map → avatar-BBgvMlqv.js.map} +1 -1
- package/dist/chunks/{combobox-fSTp9qoT.js → combobox-DS6byaf1.js} +3 -3
- package/dist/chunks/{combobox-fSTp9qoT.js.map → combobox-DS6byaf1.js.map} +1 -1
- package/dist/chunks/{error-state-BD4_Wrkz.js → error-state-jV9dlFX2.js} +2 -2
- package/dist/chunks/{error-state-BD4_Wrkz.js.map → error-state-jV9dlFX2.js.map} +1 -1
- package/dist/chunks/{file-explorer-header-D0TebSYR.js → file-explorer-header-Djp_eFuT.js} +50 -50
- package/dist/chunks/{file-explorer-header-D0TebSYR.js.map → file-explorer-header-Djp_eFuT.js.map} +1 -1
- package/dist/chunks/{guard-BOicu9dt.js → guard-SxVT1xr4.js} +13 -13
- package/dist/chunks/{guard-BOicu9dt.js.map → guard-SxVT1xr4.js.map} +1 -1
- package/dist/chunks/{index.esm-C9oV3H3X.js → index.esm-BQrkxchZ.js} +2 -2
- package/dist/chunks/{index.esm-C9oV3H3X.js.map → index.esm-BQrkxchZ.js.map} +1 -1
- package/dist/chunks/{jsonld-D-TE94B0.js → jsonld-C6IOQ1Tg.js} +2 -2
- package/dist/chunks/{jsonld-D-TE94B0.js.map → jsonld-C6IOQ1Tg.js.map} +1 -1
- package/dist/chunks/{login-button-clTw_9tX.js → login-button-Dd0rwZJk.js} +11 -11
- package/dist/chunks/{login-button-clTw_9tX.js.map → login-button-Dd0rwZJk.js.map} +1 -1
- package/dist/chunks/{logout-button-CP-Pz70O.js → logout-button-Da34Lrnq.js} +11 -11
- package/dist/chunks/{logout-button-CP-Pz70O.js.map → logout-button-Da34Lrnq.js.map} +1 -1
- package/dist/chunks/{menu-D0k2fkiE.js → menu-BNJU654v.js} +2 -2
- package/dist/chunks/{menu-D0k2fkiE.js.map → menu-BNJU654v.js.map} +1 -1
- package/dist/chunks/{provider-Cuv3Kp6G.js → provider-B3FoP2qW.js} +11 -11
- package/dist/chunks/{provider-Cuv3Kp6G.js.map → provider-B3FoP2qW.js.map} +1 -1
- package/dist/chunks/{rdf-form-DVmTw3RG.js → rdf-form-BkKDmFPD.js} +36 -36
- package/dist/chunks/{rdf-form-DVmTw3RG.js.map → rdf-form-BkKDmFPD.js.map} +1 -1
- package/dist/chunks/{rdf-input-CRYLK-27.js → rdf-input-BPePtqfS.js} +61 -61
- package/dist/chunks/{rdf-input-CRYLK-27.js.map → rdf-input-BPePtqfS.js.map} +1 -1
- package/dist/chunks/{signup-button-CexdMWj6.js → signup-button-DOInssOu.js} +11 -11
- package/dist/chunks/{signup-button-CexdMWj6.js.map → signup-button-DOInssOu.js.map} +1 -1
- package/dist/chunks/{solidLogicSingleton.esm-BXyHD7mn.js → solidLogicSingleton.esm-Bvt7E7Vl.js} +50 -29
- package/dist/chunks/solidLogicSingleton.esm-Bvt7E7Vl.js.map +1 -0
- package/dist/chunks/{src-DQgHAH3d.js → src-akaVfkuf.js} +1956 -1944
- package/dist/chunks/src-akaVfkuf.js.map +1 -0
- package/dist/chunks/{style-CXaw5EYi.js → style-Dlw9-wPn.js} +3 -3
- package/dist/chunks/{style-CXaw5EYi.js.map → style-Dlw9-wPn.js.map} +1 -1
- package/dist/chunks/{widgets-BBEQu0CS.js → widgets-B1hBVhRL.js} +309 -309
- package/dist/chunks/widgets-B1hBVhRL.js.map +1 -0
- package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js +1 -1
- package/dist/components/access-control-modal/AccessControlAddAccess.esm.js +5 -5
- package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js +2 -2
- package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js +12 -12
- package/dist/components/access-control-modal/AccessControlModal.cjs.js +2 -2
- package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlModal.esm.js +35 -35
- package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js +2 -2
- package/dist/components/access-control-modal/accessTargetResolver.cjs.js +1 -1
- package/dist/components/access-control-modal/accessTargetResolver.cjs.js.map +1 -1
- package/dist/components/access-control-modal/accessTargetResolver.esm.js +21 -21
- package/dist/components/access-control-modal.js +1 -1
- package/dist/components/account/Account.cjs.js +1 -1
- package/dist/components/account/Account.esm.js +3 -3
- package/dist/components/account.js +1 -1
- package/dist/components/all.cjs.js +1 -1
- package/dist/components/all.esm.js +16 -16
- package/dist/components/avatar.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +1 -1
- package/dist/components/combobox/Combobox.esm.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog/Dialog.cjs.js +2 -2
- package/dist/components/dialog/Dialog.cjs.js.map +1 -1
- package/dist/components/dialog/Dialog.esm.js +9 -9
- package/dist/components/dialog/Dialog.esm.js.map +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
- package/dist/components/dialog-provider/DialogProvider.esm.js +6 -6
- package/dist/components/dialogs-root/DialogsRoot.cjs.js +2 -2
- package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
- package/dist/components/dialogs-root/DialogsRoot.esm.js +7 -7
- package/dist/components/error-state/ErrorState.cjs.js +1 -1
- package/dist/components/error-state/ErrorState.esm.js +1 -1
- package/dist/components/error-state.js +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js +2 -2
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.cjs.js.map +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderControls.esm.js +10 -10
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.cjs.js +1 -1
- package/dist/components/file-explorer-header/FileExplorerHeaderSummary.esm.js +5 -5
- package/dist/components/file-explorer-header.js +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/login-button/LoginButton.cjs.js +1 -1
- package/dist/components/login-button/LoginButton.esm.js +1 -1
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal/LoginModal.cjs.js +1 -1
- package/dist/components/login-modal/LoginModal.esm.js +2 -2
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
- package/dist/components/logout-button/LogoutButton.esm.js +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/menu/Menu.cjs.js +1 -1
- package/dist/components/menu/Menu.cjs.js.map +1 -1
- package/dist/components/menu/Menu.esm.js +1 -1
- package/dist/components/menu/Menu.esm.js.map +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/rdf-form/RDFForm.cjs.js +3 -3
- package/dist/components/rdf-form/RDFForm.cjs.js.map +1 -1
- package/dist/components/rdf-form/RDFForm.esm.js +13 -13
- package/dist/components/rdf-form/RDFForm.esm.js.map +1 -1
- package/dist/components/rdf-form.js +1 -1
- package/dist/components/rdf-input/RDFInput.cjs.js +2 -2
- package/dist/components/rdf-input/RDFInput.cjs.js.map +1 -1
- package/dist/components/rdf-input/RDFInput.esm.js +4 -4
- package/dist/components/rdf-input/RDFInput.esm.js.map +1 -1
- package/dist/components/rdf-input.js +1 -1
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js +3 -3
- package/dist/components/resource-actions-menu/ResourceActionsMenu.cjs.js.map +1 -1
- package/dist/components/resource-actions-menu/ResourceActionsMenu.esm.js +7 -7
- package/dist/components/resource-actions-menu.js +1 -1
- package/dist/components/select/Select.cjs.js +1 -1
- package/dist/components/select/Select.cjs.js.map +1 -1
- package/dist/components/select/Select.esm.js +1 -1
- package/dist/components/signup-button/SignupButton.cjs.js +1 -1
- package/dist/components/signup-button/SignupButton.esm.js +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components.js +21 -21
- package/dist/create/create.cjs.js +1 -1
- package/dist/create/create.cjs.js.map +1 -1
- package/dist/create/create.esm.js +23 -23
- package/dist/header/index.cjs.js +1 -1
- package/dist/header/index.cjs.js.map +1 -1
- package/dist/header/index.esm.js +53 -53
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +20 -20
- package/dist/index.js +5 -5
- package/dist/lib/auth/SolidAuth.cjs.js +1 -1
- package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
- package/dist/lib/auth/SolidAuth.esm.js +8 -8
- package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
- package/dist/lib/code-editor/CodeEditor.cjs.js +1 -1
- package/dist/lib/code-editor/CodeEditor.cjs.js.map +1 -1
- package/dist/lib/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/lib/code-editor/CodeEditor.esm.js +34 -30
- package/dist/lib/code-editor/CodeEditor.esm.js.map +1 -1
- package/dist/lib/components/dialog-component/DialogComponent.cjs.js +1 -1
- package/dist/lib/components/dialog-component/DialogComponent.cjs.js.map +1 -1
- package/dist/lib/components/dialog-component/DialogComponent.esm.js +4 -4
- package/dist/lib/components/index.cjs.js +1 -1
- package/dist/lib/components/index.esm.js +3 -3
- package/dist/lib/dialogs/helpers.cjs.js +1 -1
- package/dist/lib/dialogs/helpers.cjs.js.map +1 -1
- package/dist/lib/dialogs/helpers.esm.js +4 -4
- package/dist/lib/file-explorer/relevant-panes.cjs.js +1 -1
- package/dist/lib/file-explorer/relevant-panes.cjs.js.map +1 -1
- package/dist/lib/file-explorer/relevant-panes.esm.js +8 -8
- package/dist/lib/messageArea.cjs.js +1 -1
- package/dist/lib/messageArea.cjs.js.map +1 -1
- package/dist/lib/messageArea.esm.js +27 -27
- package/dist/lib/pad.cjs.js +1 -1
- package/dist/lib/pad.cjs.js.map +1 -1
- package/dist/lib/pad.esm.js +15 -15
- package/dist/lib/participation.cjs.js +1 -1
- package/dist/lib/participation.cjs.js.map +1 -1
- package/dist/lib/participation.esm.js +59 -59
- package/dist/lib/preferences.cjs.js +1 -1
- package/dist/lib/preferences.cjs.js.map +1 -1
- package/dist/lib/preferences.esm.js +28 -28
- package/dist/lib/table.cjs.js +3 -3
- package/dist/lib/table.cjs.js.map +1 -1
- package/dist/lib/table.esm.js +123 -123
- package/dist/lib/table.esm.js.map +1 -1
- package/dist/lib/tabs.cjs.js +1 -1
- package/dist/lib/tabs.cjs.js.map +1 -1
- package/dist/lib/tabs.esm.js +16 -16
- package/dist/loader.js +11 -11
- package/dist/login/login.cjs.js +6 -6
- package/dist/login/login.cjs.js.map +1 -1
- package/dist/login/login.esm.js +142 -142
- package/dist/media/media-capture.cjs.js +1 -1
- package/dist/media/media-capture.cjs.js.map +1 -1
- package/dist/media/media-capture.esm.js +6 -6
- package/dist/solid-ui.js +18 -18
- package/dist/solid-ui.min.js +18 -18
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/utils/index.cjs.js +1 -1
- package/dist/utils/index.cjs.js.map +1 -1
- package/dist/utils/index.esm.js +4 -4
- package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js +15 -15
- package/dist/utils/label.cjs.js +1 -1
- package/dist/utils/label.cjs.js.map +1 -1
- package/dist/utils/label.esm.js +4 -4
- package/dist/widgets/buttons.cjs.js +12 -12
- package/dist/widgets/buttons.cjs.js.map +1 -1
- package/dist/widgets/buttons.esm.js +179 -179
- package/dist/widgets/error.cjs.js +1 -1
- package/dist/widgets/error.cjs.js.map +1 -1
- package/dist/widgets/error.esm.js +5 -5
- package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteBar.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +17 -17
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.esm.js +23 -23
- package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js +26 -26
- package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js +9 -9
- package/dist/widgets/forms/autocomplete/publicData.cjs.js +5 -5
- package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js +67 -67
- package/dist/widgets/forms/basic.cjs.js +1 -1
- package/dist/widgets/forms/basic.cjs.js.map +1 -1
- package/dist/widgets/forms/basic.esm.js +11 -11
- package/dist/widgets/forms.cjs.js +4 -4
- package/dist/widgets/forms.cjs.js.map +1 -1
- package/dist/widgets/forms.esm.js +561 -561
- package/dist/widgets/forms.esm.js.map +1 -1
- package/dist/widgets/index.cjs.js +1 -1
- package/dist/widgets/index.cjs.js.map +1 -1
- package/dist/widgets/index.esm.js +82 -82
- package/dist/widgets/peoplePicker.cjs.js +2 -2
- package/dist/widgets/peoplePicker.cjs.js.map +1 -1
- package/dist/widgets/peoplePicker.esm.js +82 -82
- package/package.json +3 -3
- package/dist/chunks/solidLogicSingleton.esm-BXyHD7mn.js.map +0 -1
- package/dist/chunks/src-DQgHAH3d.js.map +0 -1
- package/dist/chunks/widgets-BBEQu0CS.js.map +0 -1
|
@@ -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. 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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"}
|
|
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_decorators","require_DialogComponent","require_debug","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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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { label as e } from "../../utils/label.esm.js";
|
|
2
|
-
import { error as t } from "../../lib/debug.esm.js";
|
|
3
|
-
import { customElement as n } from "../../lib/components/decorators.esm.js";
|
|
4
|
-
import r from "../../lib/components/dialog-component/DialogComponent.esm.js";
|
|
5
1
|
import "../../lib/components/index.esm.js";
|
|
2
|
+
import { label as e } from "../../utils/label.esm.js";
|
|
3
|
+
import { customElement as t } from "../../lib/components/decorators.esm.js";
|
|
4
|
+
import n from "../../lib/components/dialog-component/DialogComponent.esm.js";
|
|
5
|
+
import { error as r } from "../../lib/debug.esm.js";
|
|
6
|
+
import "../../_virtual/~icons/lucide/circle-x.esm.js";
|
|
7
|
+
import "../../_virtual/~icons/lucide/folder.esm.js";
|
|
8
|
+
import "../../_virtual/~icons/lucide/folder-open.esm.js";
|
|
6
9
|
import "../../_virtual/~icons/lucide/x.esm.js";
|
|
7
|
-
import "../button/index.esm.js";
|
|
8
10
|
import "../dialog/index.esm.js";
|
|
9
11
|
import "../dialog-content/index.esm.js";
|
|
10
12
|
import "../dialog-footer/index.esm.js";
|
|
13
|
+
import "../button/index.esm.js";
|
|
11
14
|
import "../combobox/index.esm.js";
|
|
12
15
|
import "../combobox-option/index.esm.js";
|
|
13
|
-
import "../../_virtual/~icons/lucide/circle-x.esm.js";
|
|
14
|
-
import "../../_virtual/~icons/lucide/folder.esm.js";
|
|
15
|
-
import "../../_virtual/~icons/lucide/folder-open.esm.js";
|
|
16
16
|
import "./AccessControlSharedAccess.esm.js";
|
|
17
17
|
import "./AccessControlGeneralAccess.esm.js";
|
|
18
18
|
import "./AccessControlErrors.esm.js";
|
|
@@ -201,9 +201,9 @@ function Ge(e) {
|
|
|
201
201
|
function Ke(e) {
|
|
202
202
|
return e != null;
|
|
203
203
|
}
|
|
204
|
-
ne = [
|
|
204
|
+
ne = [t("solid-ui-access-control-modal")];
|
|
205
205
|
var $;
|
|
206
|
-
new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A = /*#__PURE__*/ new WeakMap(), j = /*#__PURE__*/ new WeakMap(), M = /*#__PURE__*/ new WeakMap(), N = /*#__PURE__*/ new WeakMap(), P = /*#__PURE__*/ new WeakMap(), F = /*#__PURE__*/ new WeakMap(), I = /*#__PURE__*/ new WeakMap(), L = /*#__PURE__*/ new WeakMap(), R = /*#__PURE__*/ new WeakMap(), z = /*#__PURE__*/ new WeakMap(), B = /*#__PURE__*/ new WeakMap(), V = /*#__PURE__*/ new WeakMap(), H = /*#__PURE__*/ new WeakMap(), U = /*#__PURE__*/ new WeakMap(), W = /*#__PURE__*/ new WeakMap(), G = /*#__PURE__*/ new WeakMap(), Le = (re = w({ attribute: !1 }), ae = w({ attribute: !1 }), K = T(), se = T(), le = T(), de = T(), pe = T(), he = T(), _e = T(), ye = T(), xe = T(), Ce = T(), Te = T(), De = T(), ke = T(), je = T(), Ne = T(), Fe = T(), "subjectUri"), D = class extends
|
|
206
|
+
new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A = /*#__PURE__*/ new WeakMap(), j = /*#__PURE__*/ new WeakMap(), M = /*#__PURE__*/ new WeakMap(), N = /*#__PURE__*/ new WeakMap(), P = /*#__PURE__*/ new WeakMap(), F = /*#__PURE__*/ new WeakMap(), I = /*#__PURE__*/ new WeakMap(), L = /*#__PURE__*/ new WeakMap(), R = /*#__PURE__*/ new WeakMap(), z = /*#__PURE__*/ new WeakMap(), B = /*#__PURE__*/ new WeakMap(), V = /*#__PURE__*/ new WeakMap(), H = /*#__PURE__*/ new WeakMap(), U = /*#__PURE__*/ new WeakMap(), W = /*#__PURE__*/ new WeakMap(), G = /*#__PURE__*/ new WeakMap(), Le = (re = w({ attribute: !1 }), ae = w({ attribute: !1 }), K = T(), se = T(), le = T(), de = T(), pe = T(), he = T(), _e = T(), ye = T(), xe = T(), Ce = T(), Te = T(), De = T(), ke = T(), je = T(), Ne = T(), Fe = T(), "subjectUri"), D = class extends n {
|
|
207
207
|
constructor(...e) {
|
|
208
208
|
super(...e), Y(this, O, (ee(this), ie(this, void 0))), Y(this, k, oe(this, void 0)), Y(this, A, q(this, "")), Y(this, j, ce(this, "Viewer")), Y(this, M, ue(this, "No Access")), Y(this, N, fe(this, "No Access")), Y(this, P, me(this, !1)), Y(this, F, ge(this, [])), Y(this, I, ve(this, [])), Y(this, L, be(this, [])), Y(this, R, Se(this, !0)), Y(this, z, we(this)), Y(this, B, Ee(this, !1)), Y(this, V, Oe(this, "")), Y(this, H, Ae(this, !1)), Y(this, U, Me(this, "folder+contents")), Y(this, W, Pe(this)), Y(this, G, J(this, !1)), Q(this, "accessGrantLabelRequestVersion", 0), Q(this, "accessContextRequestVersion", 0), Q(this, "accessContextSubjectUri", void 0);
|
|
209
209
|
}
|
|
@@ -338,9 +338,9 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
338
338
|
}
|
|
339
339
|
updated(e) {
|
|
340
340
|
super.updated(e), e.has("subjectUri") && this.loadAccessContext().catch((e) => {
|
|
341
|
-
|
|
341
|
+
r("Failed to load access control context", e);
|
|
342
342
|
}), e.has("accessGrants") && this.refreshAccessGrantLabels().catch((e) => {
|
|
343
|
-
|
|
343
|
+
r("Failed to refresh access grant labels", e);
|
|
344
344
|
}), e.has("accessContext") && !e.has("subjectUri") && this.refreshContainerScopeAnalysis();
|
|
345
345
|
}
|
|
346
346
|
refreshContainerScopeAnalysis() {
|
|
@@ -373,17 +373,17 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
373
373
|
return !!(this.subjectUri && new URL(this.subjectUri).pathname.endsWith("/"));
|
|
374
374
|
}
|
|
375
375
|
async loadAccessContext() {
|
|
376
|
-
let e = ++this.accessContextRequestVersion,
|
|
377
|
-
if (this.accessContext = void 0, this.accessContextSubjectUri = void 0, this.accessContextError = "", this.accessContextLoading = !!
|
|
376
|
+
let e = ++this.accessContextRequestVersion, t = this.subjectUri;
|
|
377
|
+
if (this.accessContext = void 0, this.accessContextSubjectUri = void 0, this.accessContextError = "", this.accessContextLoading = !!t, !t) this.accessContextLoading = !1;
|
|
378
378
|
else try {
|
|
379
|
-
let
|
|
380
|
-
if (e !== this.accessContextRequestVersion || this.subjectUri !==
|
|
381
|
-
this.accessContext =
|
|
382
|
-
} catch (
|
|
383
|
-
if (e !== this.accessContextRequestVersion || this.subjectUri !==
|
|
384
|
-
this.accessContextError =
|
|
379
|
+
let n = await S.acl.findEffectiveAcl(t);
|
|
380
|
+
if (e !== this.accessContextRequestVersion || this.subjectUri !== t) return;
|
|
381
|
+
this.accessContext = n, this.accessContextSubjectUri = t, this.accessContext?.inherited && !this.accessGrants?.length && (this.accessGrants = this.accessContext.authorizations), this.refreshContainerScopeAnalysis(), this.protectedTarget = S.acl.isProtectedResource(t), this.protectedTarget && this.refreshScopedAccessGrantDrafts();
|
|
382
|
+
} catch (n) {
|
|
383
|
+
if (e !== this.accessContextRequestVersion || this.subjectUri !== t) return;
|
|
384
|
+
this.accessContextError = n instanceof Error && n.message.trim() ? n.message : "Unable to load access settings for this resource.", r("Failed to load access control context", n);
|
|
385
385
|
} finally {
|
|
386
|
-
e === this.accessContextRequestVersion && this.subjectUri ===
|
|
386
|
+
e === this.accessContextRequestVersion && this.subjectUri === t && (this.accessContextLoading = !1);
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
389
|
async ensureAccessContext() {
|
|
@@ -600,7 +600,7 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
600
600
|
`;
|
|
601
601
|
}
|
|
602
602
|
async onSubmit(e) {
|
|
603
|
-
e.preventDefault(), this.submitting || this.hasMixedContainerPolicy() || this.isConnected
|
|
603
|
+
e.preventDefault(), this.submitting || this.hasMixedContainerPolicy() || (!this.isConnected || await this.ensureAccessContext()) && await this.commitPrincipalFromInputSafely();
|
|
604
604
|
}
|
|
605
605
|
async onSaveClick() {
|
|
606
606
|
if (this.submitting || this.hasMixedContainerPolicy() || this.isConnected && !await this.ensureAccessContext() || this.principalInputValue.trim() && !await this.commitPrincipalFromInputSafely()) return;
|
|
@@ -626,7 +626,7 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
626
626
|
targetUri: this.subjectUri,
|
|
627
627
|
label: "Custom sharing",
|
|
628
628
|
message: e instanceof Error ? e.message : "Unable to reset sharing."
|
|
629
|
-
}],
|
|
629
|
+
}], r("Failed to reset access control", e);
|
|
630
630
|
} finally {
|
|
631
631
|
this.submitting = !1;
|
|
632
632
|
}
|
|
@@ -634,14 +634,14 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
634
634
|
}
|
|
635
635
|
async saveAccessChanges(e = "file") {
|
|
636
636
|
if (this.submitting || !this.canMutate() || this.hasMixedContainerPolicy()) return;
|
|
637
|
-
let
|
|
638
|
-
if ((this.pendingAccessGrants.length ||
|
|
637
|
+
let t = u(this.accessGrantDrafts), n = this.getGeneralAccessChanges();
|
|
638
|
+
if ((this.pendingAccessGrants.length || t.length || n.length) && this.subjectUri) {
|
|
639
639
|
this.submitting = !0, this.errors = this.errors.filter((e) => e.action === "input"), this.successfulChangesRefreshed = !0;
|
|
640
640
|
try {
|
|
641
641
|
let i = g({
|
|
642
642
|
pendingAccessGrants: this.pendingAccessGrants,
|
|
643
|
-
generalAccessChanges:
|
|
644
|
-
changedAccessGrants:
|
|
643
|
+
generalAccessChanges: n,
|
|
644
|
+
changedAccessGrants: t
|
|
645
645
|
}), a = await h(this.subjectUri, i, { containerScope: e });
|
|
646
646
|
if (a.length) {
|
|
647
647
|
this.errors = [...this.errors, ...a], this.principalInputValue = "", this.pendingAccessGrants = [];
|
|
@@ -653,9 +653,9 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
653
653
|
targetUri: this.subjectUri,
|
|
654
654
|
label: "Shared with list",
|
|
655
655
|
message: e instanceof Error ? e.message : "Unable to refresh the access list."
|
|
656
|
-
}],
|
|
656
|
+
}], r("Failed to refresh access grants after save errors", e);
|
|
657
657
|
}
|
|
658
|
-
|
|
658
|
+
r("Failed to save some access changes", a);
|
|
659
659
|
return;
|
|
660
660
|
}
|
|
661
661
|
this.principalInputValue = "", this.pendingAccessGrants = [], this.close();
|
|
@@ -723,18 +723,18 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
723
723
|
let e = this.principalInputValue.trim();
|
|
724
724
|
try {
|
|
725
725
|
return await this.commitPrincipalFromInput();
|
|
726
|
-
} catch (
|
|
726
|
+
} catch (t) {
|
|
727
727
|
return this.principalInputValue.trim() === e ? (this.setInputError({
|
|
728
728
|
action: "input",
|
|
729
729
|
label: "Access target",
|
|
730
730
|
targetUri: this.principalInputValue.trim(),
|
|
731
731
|
message: "We could not verify this access target. Check the value and try again."
|
|
732
|
-
}),
|
|
732
|
+
}), r("Failed to commit pending access grants", t), !1) : (r("Ignored stale access-target validation error", t), !1);
|
|
733
733
|
}
|
|
734
734
|
}
|
|
735
|
-
async queuePendingPrincipal(e,
|
|
736
|
-
let o = i ?? this.principalInputValue.trim(), s = await this.createPendingAccessGrant(e,
|
|
737
|
-
if ("error" in s) return this.principalInputValue.trim() === o && this.setInputError(s.error),
|
|
735
|
+
async queuePendingPrincipal(e, t = this.addAccessRoleValue, n, i, a) {
|
|
736
|
+
let o = i ?? this.principalInputValue.trim(), s = await this.createPendingAccessGrant(e, t, n, a);
|
|
737
|
+
if ("error" in s) return this.principalInputValue.trim() === o && this.setInputError(s.error), r("Failed to add access grant:", s.error.message), !1;
|
|
738
738
|
let c = [...this.pendingAccessGrants, s.grant];
|
|
739
739
|
return this.pendingAccessGrants = this.dedupePendingAccessGrants(c), this.principalInputValue.trim() === o && (this.clearInputError(), this.principalInputValue = ""), !0;
|
|
740
740
|
}
|
|
@@ -858,7 +858,7 @@ new (Ie = (O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A =
|
|
|
858
858
|
1,
|
|
859
859
|
"protectedTarget"
|
|
860
860
|
]
|
|
861
|
-
], ne, 0, void 0,
|
|
861
|
+
], ne, 0, void 0, n), D), E = class extends Ge {
|
|
862
862
|
constructor() {
|
|
863
863
|
super($), Q(this, "styles", i), te();
|
|
864
864
|
}
|