solid-ui 5.0.2-0 → 5.0.2-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.esm.js +1 -2
- package/dist/_virtual/~icons/app/solid-emblem.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/book-user.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/circle-x.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/folder-open.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/folder-open.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/folder-open.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/folder-open.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/folder.cjs.js +2 -0
- package/dist/_virtual/~icons/lucide/folder.cjs.js.map +1 -0
- package/dist/_virtual/~icons/lucide/folder.esm.js +10 -0
- package/dist/_virtual/~icons/lucide/folder.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/globe.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/link.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/square-arrow-out-up-right.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/triangle-alert.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/user-round.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/user.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/users.esm.js +1 -2
- package/dist/_virtual/~icons/lucide/x.esm.js +1 -2
- package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -2
- package/dist/_virtual/~icons/svg-spinners/3-dots-fade.esm.js +1 -2
- package/dist/acl/access-controller.esm.js +1 -2
- package/dist/acl/access-groups.esm.js +1 -2
- package/dist/acl/acl-control.esm.js +1 -2
- package/dist/acl/acl.esm.js +1 -2
- package/dist/acl/add-agent-buttons.esm.js +1 -2
- package/dist/acl/index.esm.js +1 -2
- package/dist/chat/bookmarks.esm.js +1 -2
- package/dist/chat/chatLogic.esm.js +1 -2
- package/dist/chat/dateFolder.esm.js +1 -2
- package/dist/chat/infinite.cjs.js +1 -1
- package/dist/chat/infinite.cjs.js.map +1 -1
- package/dist/chat/infinite.esm.js +2 -3
- package/dist/chat/infinite.esm.js.map +1 -1
- package/dist/chat/keys.esm.js +1 -2
- package/dist/chat/message.esm.js +1 -2
- package/dist/chat/messageTools.esm.js +1 -2
- package/dist/chat/signature.esm.js +0 -1
- package/dist/chunks/{DialogProvider-B7oVYKJO.js → DialogProvider-C89v7x0r.js} +5 -8
- package/dist/chunks/{DialogProvider-B7oVYKJO.js.map → DialogProvider-C89v7x0r.js.map} +1 -1
- package/dist/chunks/{access-control-modal-eOv2-U27.js → access-control-modal-Dcg6-f4V.js} +924 -540
- package/dist/chunks/access-control-modal-Dcg6-f4V.js.map +1 -0
- package/dist/chunks/{account-DpmYJEd-.js → account-D6JK-n7u.js} +16 -21
- package/dist/chunks/{account-DpmYJEd-.js.map → account-D6JK-n7u.js.map} +1 -1
- package/dist/chunks/{auth-Hp8M6TQf.js → auth-B_abPDvH.js} +28 -31
- package/dist/chunks/auth-B_abPDvH.js.map +1 -0
- package/dist/chunks/{avatar-D5rcw6gN.js → avatar-BR3COVSQ.js} +6 -9
- package/dist/chunks/{avatar-D5rcw6gN.js.map → avatar-BR3COVSQ.js.map} +1 -1
- package/dist/chunks/{button-lol95DqR.js → button-D6qO2idW.js} +5 -8
- package/dist/chunks/{button-lol95DqR.js.map → button-D6qO2idW.js.map} +1 -1
- package/dist/chunks/{chevron-down-ujxRg3MD.js → chevron-down-CqUEolao.js} +2 -3
- package/dist/chunks/chevron-down-CqUEolao.js.map +1 -0
- package/dist/chunks/{chunk.UEBQI7VV-OBPERnuy.js → chunk.UEBQI7VV-lcP-fpUk.js} +14 -23
- package/dist/chunks/{chunk.UEBQI7VV-OBPERnuy.js.map → chunk.UEBQI7VV-lcP-fpUk.js.map} +1 -1
- package/dist/chunks/{combobox-Dmv-TZtI.js → combobox-fSTp9qoT.js} +11 -15
- package/dist/chunks/combobox-fSTp9qoT.js.map +1 -0
- package/dist/chunks/{combobox-option-B-Hksiq2.js → combobox-option-DOtGuKel.js} +4 -6
- package/dist/chunks/{combobox-option-B-Hksiq2.js.map → combobox-option-DOtGuKel.js.map} +1 -1
- package/dist/chunks/{components-Bdqizu8x.js → components-C8c2Ucm5.js} +17 -33
- package/dist/chunks/{components-Bdqizu8x.js.map → components-C8c2Ucm5.js.map} +1 -1
- package/dist/chunks/{dialog-DYgcCurb.js → dialog-CgYK767T.js} +8 -10
- package/dist/chunks/{dialog-DYgcCurb.js.map → dialog-CgYK767T.js.map} +1 -1
- package/dist/chunks/{dialog-content-jx08y2Oa.js → dialog-content-DjwRH1ci.js} +4 -6
- package/dist/chunks/{dialog-content-jx08y2Oa.js.map → dialog-content-DjwRH1ci.js.map} +1 -1
- package/dist/chunks/{dialog-footer-Bhl8k1PX.js → dialog-footer-GQWi8lfB.js} +4 -6
- package/dist/chunks/{dialog-footer-Bhl8k1PX.js.map → dialog-footer-GQWi8lfB.js.map} +1 -1
- package/dist/chunks/{dialog-header-Dn6PQzFB.js → dialog-header-c3qOMQfb.js} +4 -6
- package/dist/chunks/{dialog-header-Dn6PQzFB.js.map → dialog-header-c3qOMQfb.js.map} +1 -1
- package/dist/chunks/{dialogs-B6TfxrPt.js → dialogs-BmtLjMzg.js} +5 -7
- package/dist/chunks/{dialogs-B6TfxrPt.js.map → dialogs-BmtLjMzg.js.map} +1 -1
- package/dist/chunks/{dialogs-root-Qiucjj9u.js → dialogs-root-BcQo2XMF.js} +6 -8
- package/dist/chunks/{dialogs-root-Qiucjj9u.js.map → dialogs-root-BcQo2XMF.js.map} +1 -1
- package/dist/chunks/{error-state-DK1x-kNd.js → error-state-BD4_Wrkz.js} +6 -8
- package/dist/chunks/{error-state-DK1x-kNd.js.map → error-state-BD4_Wrkz.js.map} +1 -1
- package/dist/chunks/{guard-FbhNrJGh.js → guard-bTeM7wd7.js} +5 -7
- package/dist/chunks/{guard-FbhNrJGh.js.map → guard-bTeM7wd7.js.map} +1 -1
- package/dist/chunks/{index.esm-N8NHgFUj.js → index.esm-CECfD0e9.js} +3256 -3083
- package/dist/chunks/index.esm-CECfD0e9.js.map +1 -0
- package/dist/chunks/{input-lpqx_k53.js → input-Bz3l514j.js} +5 -7
- package/dist/chunks/{input-lpqx_k53.js.map → input-Bz3l514j.js.map} +1 -1
- package/dist/chunks/{jsonld-Djw57WRt.js → jsonld-CnfzCyCn.js} +4 -5
- package/dist/chunks/{jsonld-Djw57WRt.js.map → jsonld-CnfzCyCn.js.map} +1 -1
- package/dist/chunks/{login-button-DCq4Gi3_.js → login-button-Div4ZT4J.js} +6 -8
- package/dist/chunks/{login-button-DCq4Gi3_.js.map → login-button-Div4ZT4J.js.map} +1 -1
- package/dist/chunks/{logout-button-D3dJrsV4.js → logout-button-D3lqlnCX.js} +6 -8
- package/dist/chunks/{logout-button-D3dJrsV4.js.map → logout-button-D3lqlnCX.js.map} +1 -1
- package/dist/chunks/{menu-RJklqKQE.js → menu-D0k2fkiE.js} +22 -39
- package/dist/chunks/{menu-RJklqKQE.js.map → menu-D0k2fkiE.js.map} +1 -1
- package/dist/chunks/{menu-item-C2e0qj-v.js → menu-item-nfPpH4dN.js} +5 -7
- package/dist/chunks/{menu-item-C2e0qj-v.js.map → menu-item-nfPpH4dN.js.map} +1 -1
- package/dist/chunks/{photo-capture-DEMQNmzb.js → photo-capture-hJaJm4TM.js} +6 -8
- package/dist/chunks/{photo-capture-DEMQNmzb.js.map → photo-capture-hJaJm4TM.js.map} +1 -1
- package/dist/chunks/{photo-capture-modal-C7oESDQq.js → photo-capture-modal-BsHv6wmh.js} +9 -11
- package/dist/chunks/{photo-capture-modal-C7oESDQq.js.map → photo-capture-modal-BsHv6wmh.js.map} +1 -1
- package/dist/chunks/{provider-D9UgRI4G.js → provider-Dcd1NPYx.js} +7 -9
- package/dist/chunks/{provider-D9UgRI4G.js.map → provider-Dcd1NPYx.js.map} +1 -1
- package/dist/chunks/{query-BYu9q8lA.js → query-DjAOg-tk.js} +3 -5
- package/dist/chunks/{query-BYu9q8lA.js.map → query-DjAOg-tk.js.map} +1 -1
- package/dist/chunks/{rdf-form-BLgKdXP2.js → rdf-form-CmPnHKR-.js} +23 -25
- package/dist/chunks/{rdf-form-BLgKdXP2.js.map → rdf-form-CmPnHKR-.js.map} +1 -1
- package/dist/chunks/{rdf-input-DWnDpkXy.js → rdf-input-3AgoeCkJ.js} +48 -51
- package/dist/chunks/{rdf-input-DWnDpkXy.js.map → rdf-input-3AgoeCkJ.js.map} +1 -1
- package/dist/chunks/{select-CnkJMo_K.js → select-ClPkDkGl.js} +7 -10
- package/dist/chunks/{select-CnkJMo_K.js.map → select-ClPkDkGl.js.map} +1 -1
- package/dist/chunks/{select-option-B9HSZiTp.js → select-option-DQan7rcB.js} +4 -6
- package/dist/chunks/{select-option-B9HSZiTp.js.map → select-option-DQan7rcB.js.map} +1 -1
- package/dist/chunks/{show-dialog-eEW5yRBv.js → show-dialog-DAmFslrf.js} +2 -3
- package/dist/chunks/{show-dialog-eEW5yRBv.js.map → show-dialog-DAmFslrf.js.map} +1 -1
- package/dist/chunks/{signup-button-BQ4AWem2.js → signup-button-2fAoS0Nv.js} +6 -8
- package/dist/chunks/{signup-button-BQ4AWem2.js.map → signup-button-2fAoS0Nv.js.map} +1 -1
- package/dist/chunks/{solid-emblem-DNjQSX1z.js → solid-emblem-DwLdkGuO.js} +5 -8
- package/dist/chunks/{solid-emblem-DNjQSX1z.js.map → solid-emblem-DwLdkGuO.js.map} +1 -1
- package/dist/chunks/{src-DQMZZG1B.js → src-Dx7k_VIe.js} +2732 -2782
- package/dist/chunks/src-Dx7k_VIe.js.map +1 -0
- package/dist/chunks/{style-ChFDDB1c.js → style-w0Fl0xnd.js} +25 -29
- package/dist/chunks/{style-ChFDDB1c.js.map → style-w0Fl0xnd.js.map} +1 -1
- package/dist/chunks/{widgets-CVLwnfkU.js → widgets-BWpm5CPx.js} +694 -715
- package/dist/chunks/widgets-BWpm5CPx.js.map +1 -0
- package/dist/chunks/{x-BRRkraZN.js → x-D1JUUSOS.js} +2 -3
- package/dist/chunks/x-D1JUUSOS.js.map +1 -0
- package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js +11 -5
- package/dist/components/access-control-modal/AccessControlAddAccess.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlAddAccess.d.ts +1 -0
- package/dist/components/access-control-modal/AccessControlAddAccess.d.ts.map +1 -1
- package/dist/components/access-control-modal/AccessControlAddAccess.esm.js +75 -57
- package/dist/components/access-control-modal/AccessControlAddAccess.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlAddAccess.styles.cjs.js +1 -1
- package/dist/components/access-control-modal/AccessControlAddAccess.styles.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlAddAccess.styles.esm.js +2 -3
- package/dist/components/access-control-modal/AccessControlAddAccess.styles.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlErrors.cjs.js +3 -2
- package/dist/components/access-control-modal/AccessControlErrors.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlErrors.d.ts +1 -0
- package/dist/components/access-control-modal/AccessControlErrors.d.ts.map +1 -1
- package/dist/components/access-control-modal/AccessControlErrors.esm.js +6 -3
- package/dist/components/access-control-modal/AccessControlErrors.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlErrors.styles.esm.js +1 -2
- package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js +5 -3
- package/dist/components/access-control-modal/AccessControlGeneralAccess.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlGeneralAccess.d.ts +1 -0
- package/dist/components/access-control-modal/AccessControlGeneralAccess.d.ts.map +1 -1
- package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js +57 -45
- package/dist/components/access-control-modal/AccessControlGeneralAccess.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlGeneralAccess.styles.esm.js +1 -2
- package/dist/components/access-control-modal/AccessControlModal.cjs.js +112 -6
- package/dist/components/access-control-modal/AccessControlModal.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlModal.d.ts +27 -0
- package/dist/components/access-control-modal/AccessControlModal.d.ts.map +1 -1
- package/dist/components/access-control-modal/AccessControlModal.esm.js +411 -127
- package/dist/components/access-control-modal/AccessControlModal.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlModal.styles.cjs.js +1 -1
- package/dist/components/access-control-modal/AccessControlModal.styles.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlModal.styles.esm.js +2 -3
- package/dist/components/access-control-modal/AccessControlModal.styles.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js +6 -5
- package/dist/components/access-control-modal/AccessControlSharedAccess.cjs.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.d.ts +1 -0
- package/dist/components/access-control-modal/AccessControlSharedAccess.d.ts.map +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js +71 -55
- package/dist/components/access-control-modal/AccessControlSharedAccess.esm.js.map +1 -1
- package/dist/components/access-control-modal/AccessControlSharedAccess.styles.esm.js +1 -2
- package/dist/components/access-control-modal/accessGrantDrafts.cjs.js +1 -1
- package/dist/components/access-control-modal/accessGrantDrafts.cjs.js.map +1 -1
- package/dist/components/access-control-modal/accessGrantDrafts.d.ts.map +1 -1
- package/dist/components/access-control-modal/accessGrantDrafts.esm.js +6 -7
- package/dist/components/access-control-modal/accessGrantDrafts.esm.js.map +1 -1
- 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.d.ts +1 -0
- package/dist/components/access-control-modal/accessTargetResolver.d.ts.map +1 -1
- package/dist/components/access-control-modal/accessTargetResolver.esm.js +92 -46
- package/dist/components/access-control-modal/accessTargetResolver.esm.js.map +1 -1
- package/dist/components/access-control-modal/applyAccessChanges.cjs.js +1 -1
- package/dist/components/access-control-modal/applyAccessChanges.cjs.js.map +1 -1
- package/dist/components/access-control-modal/applyAccessChanges.d.ts +4 -2
- package/dist/components/access-control-modal/applyAccessChanges.d.ts.map +1 -1
- package/dist/components/access-control-modal/applyAccessChanges.esm.js +23 -15
- package/dist/components/access-control-modal/applyAccessChanges.esm.js.map +1 -1
- package/dist/components/access-control-modal/buildAccessChanges.esm.js +1 -2
- package/dist/components/access-control-modal/helpers.esm.js +1 -2
- package/dist/components/access-control-modal/index.esm.js +1 -2
- package/dist/components/access-control-modal/types.d.ts +6 -1
- package/dist/components/access-control-modal/types.d.ts.map +1 -1
- package/dist/components/access-control-modal.js +1 -1
- package/dist/components/account/Account.esm.js +1 -2
- package/dist/components/account/Account.styles.esm.js +1 -2
- package/dist/components/account/index.esm.js +1 -2
- package/dist/components/account.js +1 -1
- package/dist/components/avatar/Avatar.esm.js +1 -2
- package/dist/components/avatar/Avatar.styles.esm.js +1 -2
- package/dist/components/avatar/index.esm.js +1 -2
- package/dist/components/avatar.js +1 -1
- package/dist/components/button/Button.esm.js +1 -2
- package/dist/components/button/Button.styles.esm.js +1 -2
- package/dist/components/button/index.esm.js +1 -2
- package/dist/components/button.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +1 -0
- package/dist/components/combobox/Combobox.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.esm.js +2 -2
- package/dist/components/combobox/Combobox.esm.js.map +1 -1
- package/dist/components/combobox/Combobox.styles.esm.js +1 -2
- package/dist/components/combobox/index.esm.js +1 -2
- package/dist/components/combobox-option/ComboboxOption.esm.js +1 -2
- package/dist/components/combobox-option/index.esm.js +1 -2
- package/dist/components/combobox-option.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog/Dialog.esm.js +1 -2
- package/dist/components/dialog/Dialog.styles.esm.js +1 -2
- package/dist/components/dialog/index.esm.js +1 -2
- package/dist/components/dialog-content/DialogContent.esm.js +1 -2
- package/dist/components/dialog-content/DialogContent.styles.esm.js +1 -2
- package/dist/components/dialog-content/index.esm.js +1 -2
- package/dist/components/dialog-content.js +1 -1
- package/dist/components/dialog-footer/DialogFooter.esm.js +1 -2
- package/dist/components/dialog-footer/DialogFooter.styles.esm.js +1 -2
- package/dist/components/dialog-footer/index.esm.js +1 -2
- package/dist/components/dialog-footer.js +1 -1
- package/dist/components/dialog-header/DialogHeader.esm.js +1 -2
- package/dist/components/dialog-header/DialogHeader.styles.esm.js +1 -2
- package/dist/components/dialog-header/index.esm.js +1 -2
- package/dist/components/dialog-header.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.esm.js +1 -2
- package/dist/components/dialog-provider/index.esm.js +1 -2
- package/dist/components/dialog-provider.js +2 -3
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialogs-root/DialogsRoot.esm.js +1 -2
- package/dist/components/dialogs-root/index.esm.js +1 -2
- package/dist/components/dialogs-root.js +1 -1
- package/dist/components/error-state/ErrorState.esm.js +1 -2
- package/dist/components/error-state/ErrorState.styles.esm.js +1 -2
- package/dist/components/error-state.js +1 -1
- package/dist/components/guard/Guard.esm.js +1 -2
- package/dist/components/guard/index.esm.js +1 -2
- package/dist/components/guard.js +1 -1
- package/dist/components/input/Input.esm.js +1 -2
- package/dist/components/input/Input.styles.esm.js +1 -2
- package/dist/components/input/index.esm.js +1 -2
- package/dist/components/input.js +1 -1
- package/dist/components/login-button/LoginButton.esm.js +1 -2
- package/dist/components/login-button/index.esm.js +1 -2
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal/LoginModal.esm.js +1 -2
- package/dist/components/login-modal/LoginModal.styles.esm.js +1 -2
- package/dist/components/login-modal/index.esm.js +1 -2
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button/LogoutButton.esm.js +1 -2
- package/dist/components/logout-button/index.esm.js +1 -2
- package/dist/components/logout-button.js +1 -1
- package/dist/components/menu/Menu.esm.js +1 -2
- package/dist/components/menu/Menu.styles.esm.js +1 -2
- package/dist/components/menu/index.esm.js +1 -2
- package/dist/components/menu-item/MenuItem.esm.js +1 -2
- package/dist/components/menu-item/MenuItem.styles.esm.js +1 -2
- package/dist/components/menu-item/index.esm.js +1 -2
- package/dist/components/menu-item.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/photo-capture/PhotoCapture.esm.js +1 -2
- package/dist/components/photo-capture/index.esm.js +1 -2
- package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js +1 -1
- package/dist/components/photo-capture-modal/PhotoCaptureModal.cjs.js.map +1 -1
- package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js +2 -3
- package/dist/components/photo-capture-modal/PhotoCaptureModal.esm.js.map +1 -1
- package/dist/components/photo-capture-modal/PhotoCaptureModal.styles.esm.js +1 -2
- package/dist/components/photo-capture-modal/index.esm.js +1 -2
- package/dist/components/photo-capture-modal.js +1 -1
- package/dist/components/photo-capture.js +1 -1
- package/dist/components/provider/Provider.esm.js +1 -2
- package/dist/components/provider/index.esm.js +1 -2
- package/dist/components/provider.js +1 -1
- package/dist/components/rdf-form/RDFForm.esm.js +1 -2
- package/dist/components/rdf-form/index.esm.js +1 -2
- package/dist/components/rdf-form.js +1 -1
- package/dist/components/rdf-input/RDFInput.esm.js +1 -2
- package/dist/components/rdf-input/index.esm.js +1 -2
- package/dist/components/rdf-input.js +1 -1
- package/dist/components/select/Select.esm.js +1 -2
- package/dist/components/select/Select.styles.esm.js +1 -2
- package/dist/components/select/index.esm.js +1 -2
- package/dist/components/select-option/SelectOption.esm.js +1 -2
- package/dist/components/select-option/index.esm.js +1 -2
- package/dist/components/select-option.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/signup-button/SignupButton.esm.js +1 -2
- package/dist/components/signup-button/index.esm.js +1 -2
- package/dist/components/signup-button.js +1 -1
- package/dist/components/solid-emblem/SolidEmblem.esm.js +1 -2
- package/dist/components/solid-emblem/SolidEmblem.styles.esm.js +1 -2
- package/dist/components/solid-emblem/index.esm.js +1 -2
- package/dist/components/solid-emblem.js +1 -1
- package/dist/components.js +28 -28
- package/dist/create/create.esm.js +1 -2
- package/dist/create/index.esm.js +1 -2
- package/dist/create/types.esm.js +1 -2
- package/dist/footer/index.esm.js +1 -2
- package/dist/header/empty-profile.esm.js +1 -2
- package/dist/header/index.esm.js +1 -2
- package/dist/index.esm.js +1 -2
- package/dist/index.js +8 -8
- package/dist/lib/auth/Account.esm.js +1 -2
- package/dist/lib/auth/NoopAuth.esm.js +1 -2
- package/dist/lib/auth/SolidAuth.esm.js +1 -2
- package/dist/lib/auth/context.esm.js +1 -2
- package/dist/lib/code-editor/CodeEditor.esm.js +1 -2
- package/dist/lib/components/decorators.esm.js +1 -2
- package/dist/lib/components/dialog-component/DialogComponent.esm.js +1 -2
- package/dist/lib/components/form-control-component/FormControlComponent.esm.js +1 -2
- package/dist/lib/components/ids.esm.js +1 -2
- package/dist/lib/components/traits/DialogTrait.esm.js +1 -2
- package/dist/lib/components/traits/FormControlTrait.esm.js +1 -2
- package/dist/lib/components/web-component/WebComponent.esm.js +1 -2
- package/dist/lib/components/web-component/WebComponent.styles.esm.js +1 -2
- package/dist/lib/debug.esm.js +1 -2
- package/dist/lib/dialogs/Dialog.esm.js +1 -2
- package/dist/lib/dialogs/context.esm.js +1 -2
- package/dist/lib/dialogs/events/close-dialog.esm.js +1 -2
- package/dist/lib/dialogs/events/show-dialog.esm.js +1 -2
- package/dist/lib/dialogs/helpers.esm.js +1 -2
- package/dist/lib/file-explorer/context.esm.js +1 -2
- package/dist/lib/forms/fieldParams.esm.js +1 -2
- package/dist/lib/forms/rdfFormsHelper.esm.js +1 -2
- package/dist/lib/forms/store/NoopStore.esm.js +1 -2
- package/dist/lib/forms/store/StoreContext.esm.js +1 -2
- package/dist/lib/iconBase.esm.js +1 -2
- package/dist/lib/log.esm.js +1 -2
- package/dist/lib/messageArea.esm.js +1 -2
- package/dist/lib/newperson.esm.js +1 -2
- package/dist/lib/ns.esm.js +1 -2
- package/dist/lib/pad.esm.js +1 -2
- package/dist/lib/participation.esm.js +1 -2
- package/dist/lib/preferences.esm.js +1 -2
- package/dist/lib/style.esm.js +1 -2
- package/dist/lib/styleConstants.esm.js +1 -2
- package/dist/lib/style_multiSelect.esm.js +1 -2
- package/dist/lib/table.esm.js +1 -2
- package/dist/lib/tabs.esm.js +1 -2
- package/dist/lib/timing.esm.js +1 -2
- package/dist/lib/values.esm.js +1 -2
- package/dist/loader.js +8 -8
- package/dist/login/login.esm.js +1 -2
- package/dist/matrix/index.esm.js +1 -2
- package/dist/matrix/matrix.esm.js +1 -2
- package/dist/media/index.esm.js +1 -2
- package/dist/media/media-capture.esm.js +1 -2
- package/dist/signup/config-default.esm.js +1 -2
- package/dist/signup/signup.esm.js +1 -2
- package/dist/solid-ui.js +243 -126
- package/dist/solid-ui.min.js +243 -126
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/utils/headerFooterHelpers.esm.js +1 -2
- package/dist/utils/index.esm.js +1 -2
- package/dist/utils/keyHelpers/accessData.esm.js +1 -2
- package/dist/utils/keyHelpers/acl.esm.js +1 -2
- package/dist/utils/keyHelpers/otherHelpers.esm.js +1 -2
- package/dist/utils/label.esm.js +1 -2
- package/dist/widgets/buttons/iconLinks.esm.js +1 -2
- package/dist/widgets/buttons.esm.js +1 -2
- package/dist/widgets/dragAndDrop.esm.js +1 -2
- package/dist/widgets/error.esm.js +1 -2
- package/dist/widgets/forms/autocomplete/autocompleteBar.esm.js +1 -2
- package/dist/widgets/forms/autocomplete/autocompleteField.esm.js +1 -2
- 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 +2 -3
- package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js +1 -2
- package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -2
- package/dist/widgets/forms/basic.esm.js +1 -2
- package/dist/widgets/forms/fieldFunction.esm.js +1 -2
- package/dist/widgets/forms/fieldParams.esm.js +1 -2
- package/dist/widgets/forms/formStyle.esm.js +1 -2
- package/dist/widgets/forms.esm.js +1 -2
- package/dist/widgets/index.esm.js +1 -2
- package/dist/widgets/multiSelect.esm.js +1 -2
- package/dist/widgets/peoplePicker.esm.js +1 -2
- package/dist/widgets/widgetHelpers.esm.js +1 -2
- package/package.json +2 -2
- package/dist/chunks/access-control-modal-eOv2-U27.js.map +0 -1
- package/dist/chunks/auth-Hp8M6TQf.js.map +0 -1
- package/dist/chunks/chevron-down-ujxRg3MD.js.map +0 -1
- package/dist/chunks/combobox-Dmv-TZtI.js.map +0 -1
- package/dist/chunks/index.esm-N8NHgFUj.js.map +0 -1
- package/dist/chunks/src-DQMZZG1B.js.map +0 -1
- package/dist/chunks/widgets-CVLwnfkU.js.map +0 -1
- package/dist/chunks/x-BRRkraZN.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControlGeneralAccess.esm.js","names":["customElement","WebComponent","html","property","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","debug","styles","_classDecs","_AccessControlGeneral","_AccessControlGeneral2","_A","WeakMap","_B","_C","_ref","_subjectUriDecs","attribute","_authenticatedAccessRoleValueDecs","_publicAccessRoleValueDecs","_AccessControlGeneralAccess","AccessControlGeneralAccess","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_subjectUri","undefined","_init_authenticatedAccessRoleValue","_init_publicAccessRoleValue","_classPrivateFieldGet","subjectUri","v","_classPrivateFieldSet","authenticatedAccessRoleValue","publicAccessRoleValue","onAuthenticatedRoleChange","event","dispatchRoleChange","onPublicRoleChange","eventName","roles","value","detail","option","includes","role","dispatchEvent","CustomEvent","bubbles","composed","onCopyLinkClick","preventDefault","navigator","clipboard","writeText","error","renderAuthenticatedRoleOptions","map","renderPublicRoleOptions","renderAuthenticatedModeSelector","renderPublicModeSelector","renderGeneralAccessIcon","renderGeneralShareRow","options","title","description","variant","render","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","error","styles","WebComponent","AccessControlGeneralAccess_styles_default","_Class","_AccessControlGeneralAccess","_A","_B","_C","_initProto","_initClass","_classDecs","_subjectUriDecs","_init_subjectUri","_authenticatedAccessRoleValueDecs","_init_authenticatedAccessRoleValue","_publicAccessRoleValueDecs","_init_publicAccessRoleValue","_AccessControlGeneral2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","customElement","_AccessControlGeneral","property","args","event","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","value","roles","detail","eventName","error$1","role","options"],"sources":["../../../src/components/access-control-modal/AccessControlGeneralAccess.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { ACCESS_ROLES, PUBLIC_ACCESS_ROLES, type AccessRole } from 'solid-logic'\nimport * as debug from '@/lib/debug'\nimport type { ComboboxChangeEvent } from '@/components/combobox'\n\nimport '~icons/lucide/link'\nimport '~icons/lucide/globe'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\n\nimport styles from './AccessControlGeneralAccess.styles.css'\nimport type { RoleChangedDetail } from './types'\n\n@customElement('solid-ui-access-control-general-access')\nexport default class AccessControlGeneralAccess extends WebComponent {\n static styles = styles\n\n @property({ attribute: false })\n accessor subjectUri: string | undefined = undefined\n\n @property({ attribute: false })\n accessor authenticatedAccessRoleValue: AccessRole = 'No Access'\n\n @property({ attribute: false })\n accessor publicAccessRoleValue: AccessRole = 'No Access'\n\n private onAuthenticatedRoleChange (event: ComboboxChangeEvent) {\n this.dispatchRoleChange('authenticated-role-changed', event, ACCESS_ROLES)\n }\n\n private onPublicRoleChange (event: ComboboxChangeEvent) {\n this.dispatchRoleChange('public-role-changed', event, PUBLIC_ACCESS_ROLES)\n }\n\n private dispatchRoleChange (\n eventName: 'authenticated-role-changed' | 'public-role-changed',\n event: ComboboxChangeEvent,\n roles: readonly string[]\n ) {\n const value = event.detail.option.value\n if (typeof value !== 'string' || !roles.includes(value)) {\n return\n }\n\n const detail: RoleChangedDetail = { role: value as AccessRole }\n this.dispatchEvent(new CustomEvent<RoleChangedDetail>(eventName, {\n detail,\n bubbles: true,\n composed: true\n }))\n }\n\n private async onCopyLinkClick (event: Event) {\n event.preventDefault()\n\n if (!this.subjectUri) {\n return\n }\n\n try {\n await navigator.clipboard.writeText(this.subjectUri)\n } catch (error) {\n debug.error('Failed to copy resource link', error)\n }\n }\n\n private renderAuthenticatedRoleOptions () {\n return ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role}</solid-ui-combobox-option>\n `)\n }\n\n private renderPublicRoleOptions () {\n return PUBLIC_ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role}</solid-ui-combobox-option>\n `)\n }\n\n private renderAuthenticatedModeSelector () {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-role-select--general access-grants-role access-grants-role--editable access-role-select--authenticated\"\n .value=${this.authenticatedAccessRoleValue}\n @change=${this.onAuthenticatedRoleChange}\n >\n ${this.renderAuthenticatedRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderPublicModeSelector () {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-role-select--general access-grants-role access-grants-role--editable access-role-select--public\"\n .value=${this.publicAccessRoleValue}\n @change=${this.onPublicRoleChange}\n >\n ${this.renderPublicRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderGeneralAccessIcon () {\n return html`\n <div class=\"access-grants-general-share-icon\">\n <div class=\"access-grants-general-share-icon-inner\">\n <icon-lucide-globe class=\"access-grants-general-share-icon-image\"></icon-lucide-globe>\n </div>\n </div>\n `\n }\n\n private renderGeneralShareRow (options: {\n title: string\n description: string\n variant: 'authenticated' | 'public'\n }) {\n return html`\n <div class=\"access-grants-general-share\">\n <div class=\"access-grants-general-share-content\">\n ${this.renderGeneralAccessIcon()}\n <div class=\"access-grants-general-share-text\">\n <p class=\"access-grants-general-share-text-title\">${options.title}</p>\n <p class=\"access-grants-general-share-text-description\">${options.description}</p>\n </div>\n </div>\n ${options.variant === 'authenticated'\n ? this.renderAuthenticatedModeSelector()\n : this.renderPublicModeSelector()}\n </div>\n `\n }\n\n protected render () {\n return html`\n <section class=\"access-grants-general\" aria-labelledby=\"general-access-heading\">\n <div class=\"access-grants-general-header\">\n <h2 id=\"general-access-heading\">General Access</h2>\n <solid-ui-button\n class=\"access-grants-copy-link-button\"\n variant=\"tertiary\"\n @click=${this.onCopyLinkClick}\n >\n <icon-lucide-link slot=\"left-icon\"></icon-lucide-link>\n <span class=\"access-grants-copy-link-button-label\">Copy Link</span>\n </solid-ui-button>\n </div>\n ${this.renderGeneralShareRow({\n title: 'Share with Anyone Signed In',\n description: 'Users must sign in to SolidOS to access this shared item using the link.',\n variant: 'authenticated'\n })}\n ${this.renderGeneralShareRow({\n title: 'Anyone with the Link',\n description: 'Anyone on the internet with the link can view.',\n variant: 'public'\n })}\n </section>\n `\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccessControlGeneralAccess.esm.js","names":["customElement","WebComponent","html","property","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","debug","styles","_classDecs","_AccessControlGeneral","_AccessControlGeneral2","_A","WeakMap","_B","_C","_D","_ref","_subjectUriDecs","attribute","_authenticatedAccessRoleValueDecs","_publicAccessRoleValueDecs","_disabledDecs","type","Boolean","_AccessControlGeneralAccess","AccessControlGeneralAccess","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_subjectUri","undefined","_init_authenticatedAccessRoleValue","_init_publicAccessRoleValue","_init_disabled","_classPrivateFieldGet","subjectUri","v","_classPrivateFieldSet","authenticatedAccessRoleValue","publicAccessRoleValue","disabled","onAuthenticatedRoleChange","event","dispatchRoleChange","onPublicRoleChange","eventName","roles","value","detail","option","includes","role","dispatchEvent","CustomEvent","bubbles","composed","onCopyLinkClick","preventDefault","navigator","clipboard","writeText","error","renderAuthenticatedRoleOptions","map","renderPublicRoleOptions","renderAuthenticatedModeSelector","renderPublicModeSelector","renderGeneralAccessIcon","renderGeneralShareRow","options","title","description","variant","render","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","error","styles","WebComponent","AccessControlGeneralAccess_styles_default","_Class","_AccessControlGeneralAccess","_A","_B","_C","_D","_initProto","_initClass","_classDecs","_subjectUriDecs","_init_subjectUri","_authenticatedAccessRoleValueDecs","_init_authenticatedAccessRoleValue","_publicAccessRoleValueDecs","_init_publicAccessRoleValue","_disabledDecs","_init_disabled","_AccessControlGeneral2","_ref","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","p","_setFunctionName","P","j","D","I","F","l","f","N","_checkInRHS","_toPrimitive","e","_identity","customElement","_AccessControlGeneral","property","args","event","ACCESS_ROLES","PUBLIC_ACCESS_ROLES","value","roles","detail","eventName","error$1","role","options"],"sources":["../../../src/components/access-control-modal/AccessControlGeneralAccess.ts"],"sourcesContent":["import { customElement, WebComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { ACCESS_ROLES, PUBLIC_ACCESS_ROLES, type AccessRole } from 'solid-logic'\nimport * as debug from '@/lib/debug'\nimport type { ComboboxChangeEvent } from '@/components/combobox'\n\nimport '~icons/lucide/link'\nimport '~icons/lucide/globe'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\n\nimport styles from './AccessControlGeneralAccess.styles.css'\nimport type { RoleChangedDetail } from './types'\n\n@customElement('solid-ui-access-control-general-access')\nexport default class AccessControlGeneralAccess extends WebComponent {\n static styles = styles\n\n @property({ attribute: false })\n accessor subjectUri: string | undefined = undefined\n\n @property({ attribute: false })\n accessor authenticatedAccessRoleValue: AccessRole = 'No Access'\n\n @property({ attribute: false })\n accessor publicAccessRoleValue: AccessRole = 'No Access'\n\n @property({ type: Boolean })\n accessor disabled = false\n\n private onAuthenticatedRoleChange (event: ComboboxChangeEvent) {\n this.dispatchRoleChange('authenticated-role-changed', event, ACCESS_ROLES)\n }\n\n private onPublicRoleChange (event: ComboboxChangeEvent) {\n this.dispatchRoleChange('public-role-changed', event, PUBLIC_ACCESS_ROLES)\n }\n\n private dispatchRoleChange (\n eventName: 'authenticated-role-changed' | 'public-role-changed',\n event: ComboboxChangeEvent,\n roles: readonly string[]\n ) {\n const value = event.detail.option.value\n if (typeof value !== 'string' || !roles.includes(value)) {\n return\n }\n\n const detail: RoleChangedDetail = { role: value as AccessRole }\n this.dispatchEvent(new CustomEvent<RoleChangedDetail>(eventName, {\n detail,\n bubbles: true,\n composed: true\n }))\n }\n\n private async onCopyLinkClick (event: Event) {\n event.preventDefault()\n\n if (!this.subjectUri) {\n return\n }\n\n try {\n await navigator.clipboard.writeText(this.subjectUri)\n } catch (error) {\n debug.error('Failed to copy resource link', error)\n }\n }\n\n private renderAuthenticatedRoleOptions () {\n return ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role}</solid-ui-combobox-option>\n `)\n }\n\n private renderPublicRoleOptions () {\n return PUBLIC_ACCESS_ROLES.map(role => html`\n <solid-ui-combobox-option value=${role}>${role}</solid-ui-combobox-option>\n `)\n }\n\n private renderAuthenticatedModeSelector () {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-role-select--general access-grants-role access-grants-role--editable access-role-select--authenticated\"\n .disabled=${this.disabled}\n .value=${this.authenticatedAccessRoleValue}\n @change=${this.onAuthenticatedRoleChange}\n >\n ${this.renderAuthenticatedRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderPublicModeSelector () {\n return html`\n <solid-ui-combobox\n class=\"access-role-select access-role-select--compact access-role-select--general access-grants-role access-grants-role--editable access-role-select--public\"\n .disabled=${this.disabled}\n .value=${this.publicAccessRoleValue}\n @change=${this.onPublicRoleChange}\n >\n ${this.renderPublicRoleOptions()}\n </solid-ui-combobox>\n `\n }\n\n private renderGeneralAccessIcon () {\n return html`\n <div class=\"access-grants-general-share-icon\">\n <div class=\"access-grants-general-share-icon-inner\">\n <icon-lucide-globe class=\"access-grants-general-share-icon-image\"></icon-lucide-globe>\n </div>\n </div>\n `\n }\n\n private renderGeneralShareRow (options: {\n title: string\n description: string\n variant: 'authenticated' | 'public'\n }) {\n return html`\n <div class=\"access-grants-general-share\">\n <div class=\"access-grants-general-share-content\">\n ${this.renderGeneralAccessIcon()}\n <div class=\"access-grants-general-share-text\">\n <p class=\"access-grants-general-share-text-title\">${options.title}</p>\n <p class=\"access-grants-general-share-text-description\">${options.description}</p>\n </div>\n </div>\n ${options.variant === 'authenticated'\n ? this.renderAuthenticatedModeSelector()\n : this.renderPublicModeSelector()}\n </div>\n `\n }\n\n protected render () {\n return html`\n <section class=\"access-grants-general\" aria-labelledby=\"general-access-heading\">\n <div class=\"access-grants-general-header\">\n <h2 id=\"general-access-heading\">General Access</h2>\n <solid-ui-button\n class=\"access-grants-copy-link-button\"\n variant=\"tertiary\"\n @click=${this.onCopyLinkClick}\n >\n <icon-lucide-link slot=\"left-icon\"></icon-lucide-link>\n <span class=\"access-grants-copy-link-button-label\">Copy Link</span>\n </solid-ui-button>\n </div>\n ${this.renderGeneralShareRow({\n title: 'Only logged in users with the link',\n description: 'Users must sign in to SolidOS to access this shared item using the link.',\n variant: 'authenticated'\n })}\n ${this.renderGeneralShareRow({\n title: 'Anyone with the Link',\n description: 'Anyone on the internet with the link can view.',\n variant: 'public'\n })}\n </section>\n `\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { css as e } from "lit";
|
|
2
|
-
|
|
2
|
+
// src/components/access-control-modal/AccessControlGeneralAccess.styles.css
|
|
3
3
|
var t = e`:host h2{color:var(--solid-ui-color-gray-900,#101828);font-size:var(--solid-ui-font-size-md,1rem);font-weight:600}:host .access-grants-general{flex-direction:column;align-self:stretch;align-items:flex-start;gap:10px;padding:0 10px;display:flex}:host .access-grants-general solid-ui-combobox,:host .access-grants-general solid-ui-input{--solid-ui-input-border-color:var(--solid-ui-color-slate-200,#e2e8f0)}:host .access-grants-general .access-grants-general-header{flex-direction:row;justify-content:space-between;align-self:stretch;align-items:center;gap:15px;display:flex}:host .access-grants-general .access-grants-general-header .access-grants-copy-link-button-label{font-size:var(--solid-ui-font-size-xs,.75rem);font-weight:500}:host .access-grants-general .access-grants-general-header .access-grants-copy-link-button icon-lucide-link{aspect-ratio:1;width:12px;height:12px}:host .access-grants-general .access-grants-general-share{align-self:stretch;align-items:center;gap:10px;display:flex}:host .access-grants-general .access-grants-general-share .access-grants-general-share-content{flex-direction:row;flex:1 0 0;align-items:flex-start;gap:10px;display:flex}:host .access-grants-general .access-grants-general-share .access-grants-general-share-content .access-grants-general-share-icon{aspect-ratio:1;background:var(--solid-ui-color-violet-50,#f5f3ff);border-radius:50px;justify-content:center;align-items:center;width:30px;height:30px;padding:5px;display:flex}:host .access-grants-general .access-grants-general-share .access-grants-general-share-content .access-grants-general-share-icon-inner{aspect-ratio:1;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:1.25px;display:flex}:host .access-grants-general .access-grants-general-share .access-grants-general-share-content .access-grants-general-share-icon-inner icon-lucide-globe{aspect-ratio:1;flex-shrink:0;width:17.5px;height:17.5px}:host .access-grants-general .access-grants-general-share .access-grants-general-share-content .access-grants-general-share-text{flex:auto;min-width:0}:host .access-grants-general .access-grants-general-share .access-grants-general-share-content .access-grants-general-share-text .access-grants-general-share-text-title{color:var(--solid-ui-color-gray-900,#101828);font-size:var(--solid-ui-font-size-sm,.875rem);font-weight:600}:host .access-grants-general .access-grants-general-share .access-grants-general-share-content .access-grants-general-share-text .access-grants-general-share-text-description{color:var(--solid-ui-color-gray-700,#364153);font-size:var(--solid-ui-font-size-sm,.875rem)}:host .access-role-select--general{width:120px;min-width:120px;font-size:var(--solid-ui-font-size-xs,.75rem);flex:0 0 120px;font-weight:500}:host .access-role-select--compact{--solid-ui-input-border-color:transparent;max-width:100%;margin-top:0;display:block}`;
|
|
4
|
-
//#endregion
|
|
5
4
|
export { t as default };
|
|
6
5
|
|
|
7
6
|
//# sourceMappingURL=AccessControlGeneralAccess.styles.esm.js.map
|
|
@@ -1,23 +1,128 @@
|
|
|
1
|
-
const e=require("../../utils/label.cjs.js"),t=require("../../lib/debug.cjs.js"),n=require("../../lib/components/decorators.cjs.js"),r=require("../../lib/components/dialog-component/DialogComponent.cjs.js");require("../../lib/components/index.cjs.js"),require("../button/index.cjs.js"),require("../dialog/index.cjs.js"),require("../dialog-content/index.cjs.js"),require("../dialog-footer/index.cjs.js"),require("../combobox/index.cjs.js"),require("../combobox-option/index.cjs.js"),require("../../_virtual/~icons/lucide/circle-x.cjs.js"),require("./AccessControlSharedAccess.cjs.js"),require("./AccessControlGeneralAccess.cjs.js"),require("./AccessControlErrors.cjs.js");const i=require("./AccessControlModal.styles.cjs.js"),a=require("./helpers.cjs.js"),o=require("./accessGrantDrafts.cjs.js"),s=require("./accessTargetResolver.cjs.js"),c=require("./applyAccessChanges.cjs.js"),l=require("./buildAccessChanges.cjs.js");let u=require("rdflib"),d=require("solid-logic"),f=require("lit"),p=require("lit/decorators.js");var m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k,A,j,ee,te,ne,re,ie,ae,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q;function J(e,t,n){oe(e,t),t.set(e,n)}function oe(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Y(e,t,n){return e.set(se(e,t),n),n}function X(e,t){return e.get(se(e,t))}function se(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function Z(e,t,n){return(t=le(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ce(e,t,n,r,i,a){function o(e,t,n){return function(r,i){return n&&n(r),e[t].call(r,i)}}function s(e,t){for(var n=0;n<e.length;n++)e[n].call(t);return t}function c(e,t,n,r){if(typeof e!=`function`&&(r||e!==void 0))throw TypeError(t+` must `+(n||`be`)+` a function`+(r?``:` or undefined`));return e}function l(e,t,n,r,i,a,s,l,u,d,f,p,m){function h(e){if(!m(e))throw TypeError(`Attempted to access private element on non-instance`)}var g,_=t[0],v=t[3],y=!l;if(!y){n||Array.isArray(_)||(_=[_]);var b={},x=[],S=i===3?`get`:i===4||p?`set`:`value`;d?(f||p?b={get:Q(function(){return v(this)},r,`get`),set:function(e){t[4](this,e)}}:b[S]=v,f||Q(b[S],r,i===2?``:S)):f||(b=Object.getOwnPropertyDescriptor(e,r))}for(var C=e,w=_.length-1;w>=0;w-=n?2:1){var T=_[w],E=n?_[w-1]:void 0,D={},O={kind:[`field`,`accessor`,`method`,`getter`,`setter`,`class`][i],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw Error(`attempted to call addInitializer after decoration was finished`);c(t,`An initializer`,`be`,!0),s.push(t)}.bind(null,D)};try{if(y)(g=c(T.call(E,C,O),`class decorators`,`return`))&&(C=g);else{var k,A;O.static=u,O.private=d,d?i===2?k=function(e){return h(e),b.value}:(i<4&&(k=o(b,`get`,h)),i!==3&&(A=o(b,`set`,h))):(k=function(e){return e[r]},(i<2||i===4)&&(A=function(e,t){e[r]=t}));var j=O.access={has:d?m.bind():function(e){return r in e}};if(k&&(j.get=k),A&&(j.set=A),C=T.call(E,p?{get:b.get,set:b.set}:b[S],O),p){if(typeof C==`object`&&C)(g=c(C.get,`accessor.get`))&&(b.get=g),(g=c(C.set,`accessor.set`))&&(b.set=g),(g=c(C.init,`accessor.init`))&&x.push(g);else if(C!==void 0)throw TypeError(`accessor decorators must return an object with get, set, or init properties or void 0`)}else c(C,(f?`field`:`method`)+` decorators`,`return`)&&(f?x.push(C):b[S]=C)}}finally{D.v=!0}}return(f||p)&&l.push(function(e,t){for(var n=x.length-1;n>=0;n--)t=x[n].call(e,t);return t}),f||y||(d?p?l.push(o(b,`get`),o(b,`set`)):l.push(i===2?b[S]:o.call.bind(b[S])):Object.defineProperty(e,r,b)),C}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for(`Symbol.metadata`),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var d=a[Symbol.metadata||Symbol.for(`Symbol.metadata`)];var f=Object.create(d??null),p=function(e,t,n,r){var i,a,o=[],c=function(t){return de(t)===e},u=new Map;function d(e){e&&o.push(s.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var m=p[1],h=p[2],g=p.length>3,_=16&m,v=!!(8&m),y=(m&=7)==0,b=h+`/`+v;if(!y&&!g){var x=u.get(b);if(!0===x||x===3&&m!==4||x===4&&m!==3)throw Error(`Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: `+h);u.set(b,!(m>2)||m)}l(v?e:e.prototype,p,_,g?`#`+h:le(h),m,r,v?a||=[]:i||=[],o,v,g,y,m===1,v&&g?c:n)}}return d(i),d(a),o}(e,t,i,f);return n.length||u(e,f),{e:p,get c(){var t=[];return n.length&&[u(l(e,[n],r,e.name,5,f,t),f),s.bind(null,t,e)]}}}function le(e){var t=ue(e,`string`);return typeof t==`symbol`?t:t+``}function ue(e,t){if(typeof e!=`object`||!e)return e;var n;if(typeof Symbol<`u`&&(n=e[Symbol.toPrimitive])!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Q(e,t,n){typeof t==`symbol`&&(t=(t=t.description)?`[`+t+`]`:``);try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+` `+t:t})}catch{}return e}function de(e){if(Object(e)!==e)throw TypeError(`right-hand side of 'in' should be an object, got `+(e===null?`null`:typeof e));return e}function fe(e){return e}function pe(e){return e!=null}k=[n.customElement(`solid-ui-access-control-modal`)];var $;new(K=(g=new WeakMap,_=new WeakMap,v=new WeakMap,y=new WeakMap,b=new WeakMap,x=new WeakMap,S=new WeakMap,C=new WeakMap,w=new WeakMap,T=new WeakMap,E=new WeakMap,q=(A=(0,p.property)({attribute:!1}),ee=(0,p.property)({attribute:!1}),ne=(0,p.state)(),ie=(0,p.state)(),M=(0,p.state)(),P=(0,p.state)(),I=(0,p.state)(),R=(0,p.state)(),B=(0,p.state)(),H=(0,p.state)(),W=(0,p.state)(),`subjectUri`),h=class extends r.default{constructor(...e){super(...e),J(this,g,(D(this),j(this,void 0))),J(this,_,te(this,void 0)),J(this,v,re(this,``)),J(this,y,ae(this,`Viewer`)),J(this,b,N(this,`No Access`)),J(this,x,F(this,`No Access`)),J(this,S,L(this,!1)),J(this,C,z(this,[])),J(this,w,V(this,[])),J(this,T,U(this,[])),J(this,E,G(this,!0)),Z(this,`accessGrantLabelRequestVersion`,0)}get[q](){return X(g,this)}set subjectUri(e){Y(g,this,e)}get accessGrants(){return X(_,this)}set accessGrants(e){Y(_,this,e)}get principalInputValue(){return X(v,this)}set principalInputValue(e){Y(v,this,e)}get addAccessRoleValue(){return X(y,this)}set addAccessRoleValue(e){Y(y,this,e)}get authenticatedAccessRoleValue(){return X(b,this)}set authenticatedAccessRoleValue(e){Y(b,this,e)}get publicAccessRoleValue(){return X(x,this)}set publicAccessRoleValue(e){Y(x,this,e)}get submitting(){return X(S,this)}set submitting(e){Y(S,this,e)}get pendingAccessGrants(){return X(C,this)}set pendingAccessGrants(e){Y(C,this,e)}get accessGrantDrafts(){return X(w,this)}set accessGrantDrafts(e){Y(w,this,e)}get errors(){return X(T,this)}set errors(e){Y(T,this,e)}get successfulChangesRefreshed(){return X(E,this)}set successfulChangesRefreshed(e){Y(E,this,e)}disconnectedCallback(){this.accessGrantLabelRequestVersion++,this.errors=[],super.disconnectedCallback()}get inputError(){return this.errors.find(e=>e.action===`input`)?.message??``}get saveErrors(){return this.errors.filter(e=>e.action!==`input`)}setInputError(e){this.errors=[...this.errors.filter(e=>e.action!==`input`),e]}clearInputError(){this.errors=this.errors.filter(e=>e.action!==`input`)}willUpdate(e){if(super.willUpdate(e),e.has(`accessGrants`)){let e=this.accessGrants??[];this.accessGrantDrafts=o.createAccessGrantDrafts(e),this.authenticatedAccessRoleValue=o.getAuthenticatedAccessRole(e),this.publicAccessRoleValue=o.getPublicAccessRole(e)}}updated(e){super.updated(e),e.has(`accessGrants`)&&this.refreshAccessGrantLabels().catch(e=>{t.error(`Failed to refresh access grant labels`,e)})}async refreshAccessGrantLabels(){let e=++this.accessGrantLabelRequestVersion,t=this.accessGrants??[];if(!t.length){this.accessGrantDrafts=[];return}let n=await Promise.all(t.map(async e=>(await Promise.all(e.agentGroup.map(async e=>{try{await d.solidLogicSingleton.store.fetcher.load((0,u.sym)(e).doc())}catch{}})),o.getAuthorizationSubjectLabel(o.getSharedAuthorization(e)))));if(e===this.accessGrantLabelRequestVersion&&this.accessGrants===t){let e=new Map(o.getAccessGrantIds(t).map((e,t)=>[e,n[t]]));this.accessGrantDrafts=this.accessGrantDrafts.map(t=>({...t,subjectLabel:e.get(t.id)??t.subjectLabel}))}}getDialogTitle(){let t=this.subjectUri?(0,u.sym)(this.subjectUri):void 0,n=t?e.label(t).trim():``;return!n||n===`this resource`?`Share this resource`:`Share "${n}"`}render(){let e=this.getDialogTitle();return f.html`
|
|
1
|
+
const e=require("../../utils/label.cjs.js"),t=require("../../lib/debug.cjs.js"),n=require("../../lib/components/decorators.cjs.js"),r=require("../../lib/components/dialog-component/DialogComponent.cjs.js");require("../../lib/components/index.cjs.js"),require("../../_virtual/~icons/lucide/x.cjs.js"),require("../button/index.cjs.js"),require("../dialog/index.cjs.js"),require("../dialog-content/index.cjs.js"),require("../dialog-footer/index.cjs.js"),require("../combobox/index.cjs.js"),require("../combobox-option/index.cjs.js"),require("../../_virtual/~icons/lucide/circle-x.cjs.js"),require("../../_virtual/~icons/lucide/folder.cjs.js"),require("../../_virtual/~icons/lucide/folder-open.cjs.js"),require("./AccessControlSharedAccess.cjs.js"),require("./AccessControlGeneralAccess.cjs.js"),require("./AccessControlErrors.cjs.js");const i=require("./AccessControlModal.styles.cjs.js"),a=require("./accessGrantDrafts.cjs.js"),o=require("./accessTargetResolver.cjs.js"),s=require("./applyAccessChanges.cjs.js"),c=require("./buildAccessChanges.cjs.js");let l=require("rdflib"),u=require("solid-logic"),d=require("lit"),f=require("lit/decorators.js");var p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k,A,j,M,ee,te,ne,re,ie,ae,oe,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,se,ce,le,ue,de,fe,pe,me,he,ge,_e,ve,ye,be,xe,Se,Ce,we,Te;function J(e,t,n){Ee(e,t),t.set(e,n)}function Ee(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Y(e,t,n){return e.set(De(e,t),n),n}function X(e,t){return e.get(De(e,t))}function De(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function Z(e,t,n){return(t=Q(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Oe(e,t,n,r,i,a){function o(e,t,n){return function(r,i){return n&&n(r),e[t].call(r,i)}}function s(e,t){for(var n=0;n<e.length;n++)e[n].call(t);return t}function c(e,t,n,r){if(typeof e!=`function`&&(r||e!==void 0))throw TypeError(t+` must `+(n||`be`)+` a function`+(r?``:` or undefined`));return e}function l(e,t,n,r,i,a,s,l,u,d,f,p,m){function h(e){if(!m(e))throw TypeError(`Attempted to access private element on non-instance`)}var g,_=t[0],v=t[3],y=!l;if(!y){n||Array.isArray(_)||(_=[_]);var b={},x=[],S=i===3?`get`:i===4||p?`set`:`value`;d?(f||p?b={get:Ae(function(){return v(this)},r,`get`),set:function(e){t[4](this,e)}}:b[S]=v,f||Ae(b[S],r,i===2?``:S)):f||(b=Object.getOwnPropertyDescriptor(e,r))}for(var C=e,w=_.length-1;w>=0;w-=n?2:1){var T=_[w],E=n?_[w-1]:void 0,D={},O={kind:[`field`,`accessor`,`method`,`getter`,`setter`,`class`][i],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw Error(`attempted to call addInitializer after decoration was finished`);c(t,`An initializer`,`be`,!0),s.push(t)}.bind(null,D)};try{if(y)(g=c(T.call(E,C,O),`class decorators`,`return`))&&(C=g);else{var k,A;O.static=u,O.private=d,d?i===2?k=function(e){return h(e),b.value}:(i<4&&(k=o(b,`get`,h)),i!==3&&(A=o(b,`set`,h))):(k=function(e){return e[r]},(i<2||i===4)&&(A=function(e,t){e[r]=t}));var j=O.access={has:d?m.bind():function(e){return r in e}};if(k&&(j.get=k),A&&(j.set=A),C=T.call(E,p?{get:b.get,set:b.set}:b[S],O),p){if(typeof C==`object`&&C)(g=c(C.get,`accessor.get`))&&(b.get=g),(g=c(C.set,`accessor.set`))&&(b.set=g),(g=c(C.init,`accessor.init`))&&x.push(g);else if(C!==void 0)throw TypeError(`accessor decorators must return an object with get, set, or init properties or void 0`)}else c(C,(f?`field`:`method`)+` decorators`,`return`)&&(f?x.push(C):b[S]=C)}}finally{D.v=!0}}return(f||p)&&l.push(function(e,t){for(var n=x.length-1;n>=0;n--)t=x[n].call(e,t);return t}),f||y||(d?p?l.push(o(b,`get`),o(b,`set`)):l.push(i===2?b[S]:o.call.bind(b[S])):Object.defineProperty(e,r,b)),C}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for(`Symbol.metadata`),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var d=a[Symbol.metadata||Symbol.for(`Symbol.metadata`)];var f=Object.create(d??null),p=function(e,t,n,r){var i,a,o=[],c=function(t){return je(t)===e},u=new Map;function d(e){e&&o.push(s.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var m=p[1],h=p[2],g=p.length>3,_=16&m,v=!!(8&m),y=(m&=7)==0,b=h+`/`+v;if(!y&&!g){var x=u.get(b);if(!0===x||x===3&&m!==4||x===4&&m!==3)throw Error(`Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: `+h);u.set(b,!(m>2)||m)}l(v?e:e.prototype,p,_,g?`#`+h:Q(h),m,r,v?a||=[]:i||=[],o,v,g,y,m===1,v&&g?c:n)}}return d(i),d(a),o}(e,t,i,f);return n.length||u(e,f),{e:p,get c(){var t=[];return n.length&&[u(l(e,[n],r,e.name,5,f,t),f),s.bind(null,t,e)]}}}function Q(e){var t=ke(e,`string`);return typeof t==`symbol`?t:t+``}function ke(e,t){if(typeof e!=`object`||!e)return e;var n;if(typeof Symbol<`u`&&(n=e[Symbol.toPrimitive])!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Ae(e,t,n){typeof t==`symbol`&&(t=(t=t.description)?`[`+t+`]`:``);try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+` `+t:t})}catch{}return e}function je(e){if(Object(e)!==e)throw TypeError(`right-hand side of 'in' should be an object, got `+(e===null?`null`:typeof e));return e}function Me(e){return e}function Ne(e){return e!=null}ne=[n.customElement(`solid-ui-access-control-modal`)];var $;new(we=(h=new WeakMap,g=new WeakMap,_=new WeakMap,v=new WeakMap,y=new WeakMap,b=new WeakMap,x=new WeakMap,S=new WeakMap,C=new WeakMap,w=new WeakMap,T=new WeakMap,E=new WeakMap,D=new WeakMap,O=new WeakMap,k=new WeakMap,A=new WeakMap,j=new WeakMap,M=new WeakMap,Te=(re=(0,f.property)({attribute:!1}),ae=(0,f.property)({attribute:!1}),N=(0,f.state)(),F=(0,f.state)(),L=(0,f.state)(),z=(0,f.state)(),V=(0,f.state)(),U=(0,f.state)(),G=(0,f.state)(),q=(0,f.state)(),ce=(0,f.state)(),ue=(0,f.state)(),fe=(0,f.state)(),me=(0,f.state)(),ge=(0,f.state)(),ve=(0,f.state)(),be=(0,f.state)(),Se=(0,f.state)(),`subjectUri`),m=class extends r.default{constructor(...e){super(...e),J(this,h,(ee(this),ie(this,void 0))),J(this,g,oe(this,void 0)),J(this,_,P(this,``)),J(this,v,I(this,`Viewer`)),J(this,y,R(this,`No Access`)),J(this,b,B(this,`No Access`)),J(this,x,H(this,!1)),J(this,S,W(this,[])),J(this,C,K(this,[])),J(this,w,se(this,[])),J(this,T,le(this,!0)),J(this,E,de(this)),J(this,D,pe(this,!1)),J(this,O,he(this,``)),J(this,k,_e(this,!1)),J(this,A,ye(this,`folder+contents`)),J(this,j,xe(this)),J(this,M,Ce(this,!1)),Z(this,`accessGrantLabelRequestVersion`,0),Z(this,`accessContextRequestVersion`,0),Z(this,`accessContextSubjectUri`,void 0)}get[Te](){return X(h,this)}set subjectUri(e){Y(h,this,e)}get accessGrants(){return X(g,this)}set accessGrants(e){Y(g,this,e)}get principalInputValue(){return X(_,this)}set principalInputValue(e){Y(_,this,e)}get addAccessRoleValue(){return X(v,this)}set addAccessRoleValue(e){Y(v,this,e)}get authenticatedAccessRoleValue(){return X(y,this)}set authenticatedAccessRoleValue(e){Y(y,this,e)}get publicAccessRoleValue(){return X(b,this)}set publicAccessRoleValue(e){Y(b,this,e)}get submitting(){return X(x,this)}set submitting(e){Y(x,this,e)}get pendingAccessGrants(){return X(S,this)}set pendingAccessGrants(e){Y(S,this,e)}get accessGrantDrafts(){return X(C,this)}set accessGrantDrafts(e){Y(C,this,e)}get errors(){return X(w,this)}set errors(e){Y(w,this,e)}get successfulChangesRefreshed(){return X(T,this)}set successfulChangesRefreshed(e){Y(T,this,e)}get accessContext(){return X(E,this)}set accessContext(e){Y(E,this,e)}get accessContextLoading(){return X(D,this)}set accessContextLoading(e){Y(D,this,e)}get accessContextError(){return X(O,this)}set accessContextError(e){Y(O,this,e)}get advancedSharingOpen(){return X(k,this)}set advancedSharingOpen(e){Y(k,this,e)}get containerScope(){return X(A,this)}set containerScope(e){Y(A,this,e)}get containerScopeAnalysis(){return X(j,this)}set containerScopeAnalysis(e){Y(j,this,e)}get protectedTarget(){return X(M,this)}set protectedTarget(e){Y(M,this,e)}disconnectedCallback(){this.accessGrantLabelRequestVersion++,this.accessContextRequestVersion++,this.errors=[],super.disconnectedCallback()}get inputError(){return this.errors.find(e=>e.action===`input`)?.message??``}get saveErrors(){return this.errors.filter(e=>e.action!==`input`)}setInputError(e){this.errors=[...this.errors.filter(e=>e.action!==`input`),e]}clearInputError(){this.errors=this.errors.filter(e=>e.action!==`input`)}willUpdate(e){if(super.willUpdate(e),e.has(`accessGrants`)){let e=this.getScopedAccessGrants();this.accessGrantDrafts=a.createAccessGrantDrafts(e),this.authenticatedAccessRoleValue=a.getAuthenticatedAccessRole(e),this.publicAccessRoleValue=a.getPublicAccessRole(e)}}updated(e){super.updated(e),e.has(`subjectUri`)&&this.loadAccessContext().catch(e=>{t.error(`Failed to load access control context`,e)}),e.has(`accessGrants`)&&this.refreshAccessGrantLabels().catch(e=>{t.error(`Failed to refresh access grant labels`,e)}),e.has(`accessContext`)&&!e.has(`subjectUri`)&&this.refreshContainerScopeAnalysis()}refreshContainerScopeAnalysis(){this.isContainer()&&this.accessContext?(this.containerScopeAnalysis=(0,u.analyzeContainerAccessScope)(this.accessContext),this.containerScope=this.containerScopeAnalysis.primaryScope,this.refreshScopedAccessGrantDrafts()):this.containerScopeAnalysis=void 0}async refreshAccessGrantLabels(){let e=++this.accessGrantLabelRequestVersion,t=this.accessGrants,n=this.subjectUri,r=this.getSelectedContainerScope(),i=this.getScopedAccessGrants(r);if(!i.length){this.accessGrantDrafts=[];return}let o=await Promise.all(i.map(async e=>(await Promise.all(e.agentGroup.map(async e=>{try{await u.solidLogicSingleton.store.fetcher.load((0,l.sym)(e).doc())}catch{}})),a.getAuthorizationSubjectLabel(a.getSharedAuthorization(e)))));if(e===this.accessGrantLabelRequestVersion&&this.accessGrants===t&&this.subjectUri===n&&this.getSelectedContainerScope()===r){let e=new Map(a.getAccessGrantIds(i).map((e,t)=>[e,o[t]]));this.accessGrantDrafts=this.accessGrantDrafts.map(t=>({...t,subjectLabel:e.get(t.id)??t.subjectLabel}))}}getDialogTitle(){let t=this.subjectUri?(0,l.sym)(this.subjectUri):void 0,n=t?e.label(t).trim():``;return!n||n===`this resource`?`Manage Access of "this resource"`:`Manage Access of "${n}"`}isContainer(){return!!(this.subjectUri&&new URL(this.subjectUri).pathname.endsWith(`/`))}async loadAccessContext(){let e=++this.accessContextRequestVersion,n=this.subjectUri;if(this.accessContext=void 0,this.accessContextSubjectUri=void 0,this.accessContextError=``,this.accessContextLoading=!!n,!n)this.accessContextLoading=!1;else try{let t=await u.solidLogicSingleton.acl.findEffectiveAcl(n);if(e!==this.accessContextRequestVersion||this.subjectUri!==n)return;this.accessContext=t,this.accessContextSubjectUri=n,this.accessContext?.inherited&&!this.accessGrants?.length&&(this.accessGrants=this.accessContext.authorizations),this.refreshContainerScopeAnalysis(),this.protectedTarget=u.solidLogicSingleton.acl.isProtectedResource(n),this.protectedTarget&&this.refreshScopedAccessGrantDrafts()}catch(r){if(e!==this.accessContextRequestVersion||this.subjectUri!==n)return;this.accessContextError=r instanceof Error&&r.message.trim()?r.message:`Unable to load access settings for this resource.`,t.error(`Failed to load access control context`,r)}finally{e===this.accessContextRequestVersion&&this.subjectUri===n&&(this.accessContextLoading=!1)}}async ensureAccessContext(){return this.subjectUri?!this.isConnected||this.accessContextSubjectUri===this.subjectUri&&this.accessContext&&!this.accessContextError?!0:(await this.loadAccessContext(),this.accessContextSubjectUri===this.subjectUri&&!!this.accessContext&&!this.accessContextError):!1}canMutate(){return!this.isConnected||!this.subjectUri||!(!this.subjectUri||this.accessContextSubjectUri!==this.subjectUri||!this.accessContext||this.accessContextLoading||this.accessContextError)}async retryAccessContext(){await this.loadAccessContext()}renderSharingInformation(){if(!this.accessContext)return d.html``;let t=!this.accessContext.inherited,n=this.accessContext?.effectiveContainer,r=n?e.label((0,l.sym)(n)).trim():``,i=r&&r!==n?d.html`<strong>${r}</strong> (${n})`:d.html`<strong>${n??`the parent container`}</strong>`;return d.html`
|
|
2
|
+
<div class="access-control-sharing-state-panel">
|
|
3
|
+
${t?d.html`
|
|
4
|
+
<div class="access-control-sharing-state-custom-row">
|
|
5
|
+
<p>This resource has its own sharing settings.</p>
|
|
6
|
+
${this.protectedTarget?d.html``:d.html`
|
|
7
|
+
<solid-ui-button
|
|
8
|
+
type="button"
|
|
9
|
+
variant="tertiary"
|
|
10
|
+
aria-label="Reset custom sharing to default"
|
|
11
|
+
@click=${this.onResetToDefault}
|
|
12
|
+
>
|
|
13
|
+
Reset to default
|
|
14
|
+
</solid-ui-button>
|
|
15
|
+
`}
|
|
16
|
+
</div>
|
|
17
|
+
`:n?d.html`<p>This resource inherits sharing settings from ${i}.</p>`:d.html`<p>This resource inherits sharing settings, but no inherited default is available.</p>`}
|
|
18
|
+
${this.protectedTarget?d.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>`:d.html``}
|
|
19
|
+
</div>
|
|
20
|
+
`}renderSharingState(){return!this.accessContext||!this.advancedSharingOpen?d.html``:d.html`
|
|
21
|
+
<section
|
|
22
|
+
class="access-control-sharing-state"
|
|
23
|
+
aria-labelledby="access-control-advanced-sharing-heading"
|
|
24
|
+
>
|
|
25
|
+
${this.renderSharingInformation()}
|
|
26
|
+
${this.renderAdvancedSharing()}
|
|
27
|
+
</section>
|
|
28
|
+
`}getSelectedContainerScope(){return this.containerScope}hasMixedContainerPolicy(){return this.isContainer()&&this.containerScopeAnalysis?.mixed===!0}renderAccessContextState(){return this.accessContextLoading?d.html`<p role="status">Loading access settings...</p>`:this.accessContextError?d.html`
|
|
29
|
+
<solid-ui-error-state
|
|
30
|
+
title="Could not load access settings"
|
|
31
|
+
message=${this.accessContextError}
|
|
32
|
+
>
|
|
33
|
+
<solid-ui-button type="button" variant="secondary" @click=${this.retryAccessContext}>
|
|
34
|
+
Retry
|
|
35
|
+
</solid-ui-button>
|
|
36
|
+
</solid-ui-error-state>
|
|
37
|
+
`:this.accessContext?d.html``:d.html`<p role="status">Access settings are not ready yet.</p>`}renderMixedContainerWarning(){return this.hasMixedContainerPolicy()?d.html`
|
|
38
|
+
<div class="access-control-mixed-policy-warning" role="alert">
|
|
39
|
+
<strong>This container has different access settings for the folder and its contents.</strong>
|
|
40
|
+
<span>Changing this mixed policy is an advanced feature and will be available in the next release. Access changes are disabled for now.</span>
|
|
41
|
+
</div>
|
|
42
|
+
`:d.html``}getScopedAccessGrants(e=this.getSelectedContainerScope()){let t=this.accessGrants??[];return!this.isContainer()||!this.subjectUri||this.protectedTarget?t:(0,u.filterAuthorizationsByContainerScope)(this.subjectUri,t,e,this.accessContext?.inherited??!1)}refreshScopedAccessGrantDrafts(){let e=this.getScopedAccessGrants();this.accessGrantDrafts=a.createAccessGrantDrafts(e),this.authenticatedAccessRoleValue=a.getAuthenticatedAccessRole(e),this.publicAccessRoleValue=a.getPublicAccessRole(e)}selectContainerScope(e){this.containerScope=e,this.refreshScopedAccessGrantDrafts()}renderAdvancedSharing(){return this.advancedSharingOpen?d.html`
|
|
43
|
+
<section
|
|
44
|
+
id="access-control-advanced-sharing"
|
|
45
|
+
class="access-control-advanced-sharing"
|
|
46
|
+
role="group"
|
|
47
|
+
aria-labelledby="access-control-advanced-sharing-heading"
|
|
48
|
+
aria-describedby="access-control-advanced-sharing-description"
|
|
49
|
+
>
|
|
50
|
+
<h2 id="access-control-advanced-sharing-heading">Advanced sharing</h2>
|
|
51
|
+
<p id="access-control-advanced-sharing-description">
|
|
52
|
+
<span class="access-control-advanced-sharing-description-line">Use this option when the folder and its contents have different access requirements.</span>
|
|
53
|
+
<span class="access-control-advanced-sharing-description-line">Choose which access settings to edit.</span>
|
|
54
|
+
<span class="access-control-advanced-sharing-description-line">Save Changes applies your current edits only to that scope.</span>
|
|
55
|
+
</p>
|
|
56
|
+
${this.isContainer()?d.html`
|
|
57
|
+
<button
|
|
58
|
+
type="button"
|
|
59
|
+
class="access-control-same-access-toggle"
|
|
60
|
+
role="switch"
|
|
61
|
+
aria-checked=${this.containerScope===`folder+contents`?`true`:`false`}
|
|
62
|
+
@click=${()=>{let e=this.containerScope!==`folder+contents`;this.selectContainerScope(e?`folder+contents`:this.containerScope===`contents`?`contents`:`folder`)}}
|
|
63
|
+
>
|
|
64
|
+
<span class="access-control-switch-track" aria-hidden="true">
|
|
65
|
+
<span class="access-control-switch-thumb"></span>
|
|
66
|
+
</span>
|
|
67
|
+
<span>Use the same access for this folder and its contents</span>
|
|
68
|
+
</button>
|
|
69
|
+
<div class="access-control-advanced-sharing-options">
|
|
70
|
+
<solid-ui-button
|
|
71
|
+
type="button"
|
|
72
|
+
variant=${this.containerScope===`folder`?`primary`:`secondary`}
|
|
73
|
+
aria-pressed=${this.containerScope===`folder`?`true`:`false`}
|
|
74
|
+
@click=${()=>{this.selectContainerScope(`folder`)}}
|
|
75
|
+
>
|
|
76
|
+
Folder Only
|
|
77
|
+
</solid-ui-button>
|
|
78
|
+
<solid-ui-button
|
|
79
|
+
type="button"
|
|
80
|
+
variant=${this.containerScope===`contents`?`primary`:`secondary`}
|
|
81
|
+
aria-pressed=${this.containerScope===`contents`?`true`:`false`}
|
|
82
|
+
@click=${()=>{this.selectContainerScope(`contents`)}}
|
|
83
|
+
>
|
|
84
|
+
Contents Only
|
|
85
|
+
</solid-ui-button>
|
|
86
|
+
</div>
|
|
87
|
+
`:d.html``}
|
|
88
|
+
<div class="access-control-advanced-sharing-actions">
|
|
89
|
+
<solid-ui-button
|
|
90
|
+
type="button"
|
|
91
|
+
variant="ghost"
|
|
92
|
+
aria-label="Close advanced sharing"
|
|
93
|
+
title="Close advanced sharing"
|
|
94
|
+
@click=${this.closeAdvancedSharing}
|
|
95
|
+
>
|
|
96
|
+
<icon-lucide-x slot="icon" aria-hidden="true"></icon-lucide-x>
|
|
97
|
+
<span class="sr-only">Close</span>
|
|
98
|
+
</solid-ui-button>
|
|
99
|
+
</div>
|
|
100
|
+
</section>
|
|
101
|
+
`:d.html``}render(){let e=this.getDialogTitle();return d.html`
|
|
2
102
|
<solid-ui-dialog title=${e}>
|
|
3
103
|
<form @submit=${this.onSubmit}>
|
|
4
104
|
<solid-ui-dialog-content>
|
|
5
|
-
|
|
105
|
+
${this.renderAccessContextState()}
|
|
106
|
+
${this.renderMixedContainerWarning()}
|
|
107
|
+
<solid-ui-access-control-add-access
|
|
108
|
+
.disabled=${!this.canMutate()||this.hasMixedContainerPolicy()}
|
|
6
109
|
.principalInputValue=${this.principalInputValue}
|
|
7
110
|
.addAccessRoleValue=${this.addAccessRoleValue}
|
|
8
111
|
.pendingAccessGrants=${this.pendingAccessGrants}
|
|
9
112
|
.inputError=${this.inputError}
|
|
10
|
-
.asyncOptionsProvider=${
|
|
113
|
+
.asyncOptionsProvider=${o.accessPrincipalOptionsProvider}
|
|
11
114
|
@target-input=${this.onPrincipalInput}
|
|
12
115
|
@target-selected=${this.onPrincipalSelect}
|
|
13
116
|
@role-changed=${this.onAddAccessRoleInput}
|
|
14
117
|
@pending-grant-removed=${this.onPendingGrantRemoved}
|
|
15
118
|
></solid-ui-access-control-add-access>
|
|
16
119
|
<solid-ui-access-control-shared-access
|
|
17
|
-
.
|
|
120
|
+
.disabled=${!this.canMutate()||this.hasMixedContainerPolicy()}
|
|
121
|
+
.accessGrantViewModels=${a.getAccessGrantViewModels(this.accessGrantDrafts)}
|
|
18
122
|
@access-grant-role-changed=${this.onAccessGrantRoleInput}
|
|
19
123
|
></solid-ui-access-control-shared-access>
|
|
20
124
|
<solid-ui-access-control-general-access
|
|
125
|
+
.disabled=${!this.canMutate()||this.hasMixedContainerPolicy()}
|
|
21
126
|
.subjectUri=${this.subjectUri}
|
|
22
127
|
.authenticatedAccessRoleValue=${this.authenticatedAccessRoleValue}
|
|
23
128
|
.publicAccessRoleValue=${this.publicAccessRoleValue}
|
|
@@ -29,6 +134,7 @@ const e=require("../../utils/label.cjs.js"),t=require("../../lib/debug.cjs.js"),
|
|
|
29
134
|
.successfulChangesRefreshed=${this.successfulChangesRefreshed}
|
|
30
135
|
@close=${this.onCancelClick}
|
|
31
136
|
></solid-ui-access-control-errors>
|
|
137
|
+
${this.renderSharingState()}
|
|
32
138
|
</solid-ui-dialog-content>
|
|
33
139
|
|
|
34
140
|
<solid-ui-dialog-footer>
|
|
@@ -40,7 +146,7 @@ const e=require("../../utils/label.cjs.js"),t=require("../../lib/debug.cjs.js"),
|
|
|
40
146
|
Cancel
|
|
41
147
|
</solid-ui-button>
|
|
42
148
|
<solid-ui-button
|
|
43
|
-
?disabled=${!this.hasUnsavedChanges()||this.submitting||this.saveErrors.length>0}
|
|
149
|
+
?disabled=${!this.canMutate()||!this.hasUnsavedChanges()||this.submitting||this.saveErrors.length>0||this.hasMixedContainerPolicy()}
|
|
44
150
|
?loading=${this.submitting}
|
|
45
151
|
type="button"
|
|
46
152
|
@click=${this.onSaveClick}
|
|
@@ -51,5 +157,5 @@ const e=require("../../utils/label.cjs.js"),t=require("../../lib/debug.cjs.js"),
|
|
|
51
157
|
</solid-ui-dialog-footer>
|
|
52
158
|
</form>
|
|
53
159
|
</solid-ui-dialog>
|
|
54
|
-
`}async onSubmit(e){e.preventDefault()
|
|
160
|
+
`}async onSubmit(e){e.preventDefault(),this.submitting||this.hasMixedContainerPolicy()||this.isConnected&&!await this.ensureAccessContext()||await this.commitPrincipalFromInputSafely()}async onSaveClick(){if(this.submitting||this.hasMixedContainerPolicy()||this.isConnected&&!await this.ensureAccessContext()||this.principalInputValue.trim()&&!await this.commitPrincipalFromInputSafely())return;let e=this.isContainer()&&!this.protectedTarget?this.getSelectedContainerScope():`file`;await this.saveAccessChanges(e===`folder`?`container`:e)}onCancelClick(){this.close()}closeAdvancedSharing(){this.advancedSharingOpen=!1}async onResetToDefault(){if(this.subjectUri&&this.canMutate()&&this.accessContext&&!this.accessContext.inherited&&!this.submitting&&!this.hasMixedContainerPolicy()){this.submitting=!0,this.errors=this.errors.filter(e=>e.action===`input`);try{await u.solidLogicSingleton.acl.resetToDefault(this.subjectUri),await this.loadAccessContext();let e=await u.solidLogicSingleton.acl.findAccessGrants(this.subjectUri);this.accessGrants=this.accessContext?.inherited?this.accessContext.authorizations:e}catch(e){this.errors=[...this.errors,{action:`reset`,targetUri:this.subjectUri,label:`Custom sharing`,message:e instanceof Error?e.message:`Unable to reset sharing.`}],t.error(`Failed to reset access control`,e)}finally{this.submitting=!1}}}async saveAccessChanges(e=`file`){if(this.submitting||!this.canMutate()||this.hasMixedContainerPolicy())return;let n=a.getChangedAccessGrants(this.accessGrantDrafts),r=this.getGeneralAccessChanges();if((this.pendingAccessGrants.length||n.length||r.length)&&this.subjectUri){this.submitting=!0,this.errors=this.errors.filter(e=>e.action===`input`),this.successfulChangesRefreshed=!0;try{let i=c.buildAccessChanges({pendingAccessGrants:this.pendingAccessGrants,generalAccessChanges:r,changedAccessGrants:n}),a=await s.applyAccessChanges(this.subjectUri,i,{containerScope:e});if(a.length){this.errors=[...this.errors,...a],this.principalInputValue=``,this.pendingAccessGrants=[];try{this.accessGrants=await u.solidLogicSingleton.acl.findAccessGrants(this.subjectUri)}catch(e){this.successfulChangesRefreshed=!1,this.errors=[...this.errors,{action:`save`,targetUri:this.subjectUri,label:`Shared with list`,message:e instanceof Error?e.message:`Unable to refresh the access list.`}],t.error(`Failed to refresh access grants after save errors`,e)}t.error(`Failed to save some access changes`,a);return}this.principalInputValue=``,this.pendingAccessGrants=[],this.close()}catch(e){this.errors=[...this.errors,{action:`save`,targetUri:this.subjectUri??``,label:`Access changes`,message:e instanceof Error?e.message:`Unexpected error while saving access changes.`}]}finally{this.submitting=!1}}}onPrincipalInput(e){this.canMutate()&&!this.hasMixedContainerPolicy()&&(this.principalInputValue=e.detail.value,this.clearInputError())}onPrincipalSelect(e){this.canMutate()&&!this.hasMixedContainerPolicy()&&this.queuePendingPrincipal(e.detail.value,this.addAccessRoleValue,e.detail.label,void 0,e.detail.targetKind)}getGeneralAccessChanges(){if(!this.subjectUri)return[];let e=this.getScopedAccessGrants(),t=a.getAuthenticatedAccessRole(e),n=a.getPublicAccessRole(e);return[this.authenticatedAccessRoleValue===t?void 0:{subject:u.Authenticated,role:this.authenticatedAccessRoleValue,label:`Authenticated users`},this.publicAccessRoleValue===n?void 0:{subject:u.Public,role:this.publicAccessRoleValue,label:`Public`}].filter(Ne)}onAddAccessRoleInput(e){this.canMutate()&&!this.hasMixedContainerPolicy()&&(this.addAccessRoleValue=e.detail.role,this.pendingAccessGrants=this.pendingAccessGrants.map(t=>({...t,role:e.detail.role})))}onAuthenticatedAccessRoleInput(e){this.canMutate()&&!this.hasMixedContainerPolicy()&&(this.authenticatedAccessRoleValue=e.detail.role)}onPublicAccessRoleInput(e){this.canMutate()&&!this.hasMixedContainerPolicy()&&(this.publicAccessRoleValue=e.detail.role)}onAccessGrantRoleInput(e){this.canMutate()&&!this.hasMixedContainerPolicy()&&(this.accessGrantDrafts=this.accessGrantDrafts.map(t=>t.id===e.detail.id?{...t,role:e.detail.role}:t))}onPendingGrantRemoved(e){this.canMutate()&&!this.hasMixedContainerPolicy()&&(this.pendingAccessGrants=this.pendingAccessGrants.filter((t,n)=>n!==e.detail.index))}hasUnsavedChanges(){return!!(this.pendingAccessGrants.length||this.principalInputValue.trim()||a.getChangedAccessGrants(this.accessGrantDrafts).length||this.getGeneralAccessChanges().length)}async commitPrincipalFromInput(){if(!this.canMutate()||this.hasMixedContainerPolicy())return!1;let e=this.principalInputValue.trim();return e?this.queuePendingPrincipal(e,this.addAccessRoleValue,void 0,e):!1}async commitPrincipalFromInputSafely(){let e=this.principalInputValue.trim();try{return await this.commitPrincipalFromInput()}catch(n){return this.principalInputValue.trim()===e?(this.setInputError({action:`input`,label:`Access target`,targetUri:this.principalInputValue.trim(),message:`We could not verify this access target. Check the value and try again.`}),t.error(`Failed to commit pending access grants`,n),!1):(t.error(`Ignored stale access-target validation error`,n),!1)}}async queuePendingPrincipal(e,n=this.addAccessRoleValue,r,i,a){let o=i??this.principalInputValue.trim(),s=await this.createPendingAccessGrant(e,n,r,a);if(`error`in s)return this.principalInputValue.trim()===o&&this.setInputError(s.error),t.error(`Failed to add access grant:`,s.error.message),!1;let c=[...this.pendingAccessGrants,s.grant];return this.pendingAccessGrants=this.dedupePendingAccessGrants(c),this.principalInputValue.trim()===o&&(this.clearInputError(),this.principalInputValue=``),!0}async createPendingAccessGrant(e,t=this.addAccessRoleValue,n,r){try{let i=e.trim(),a=await o.resolveAccessTarget(i,n);return a?{grant:{subjectType:a.subjectType,subjectValue:a.subjectValue,role:t,label:a.label,targetKind:r??a.targetKind}}:{error:{action:`input`,label:`Access target`,targetUri:i,message:`Could not verify this access target`}}}catch(t){return{error:{action:`input`,label:`Access target`,targetUri:e,message:t instanceof Error&&t.message.trim()?t.message:`Could not verify this access target`}}}}dedupePendingAccessGrants(e){let t=new Map;for(let n of e)t.set(`${n.subjectType}:${n.subjectValue}`,n);return[...t.values()]}},{e:[ie,oe,P,I,R,B,H,W,K,se,le,de,pe,he,_e,ye,xe,Ce,ee],c:[$,te]}=Oe(m,[[re,1,`subjectUri`],[ae,1,`accessGrants`],[N,1,`principalInputValue`],[F,1,`addAccessRoleValue`],[L,1,`authenticatedAccessRoleValue`],[z,1,`publicAccessRoleValue`],[V,1,`submitting`],[U,1,`pendingAccessGrants`],[G,1,`accessGrantDrafts`],[q,1,`errors`],[ce,1,`successfulChangesRefreshed`],[ue,1,`accessContext`],[fe,1,`accessContextLoading`],[me,1,`accessContextError`],[ge,1,`advancedSharingOpen`],[ve,1,`containerScope`],[be,1,`containerScopeAnalysis`],[Se,1,`protectedTarget`]],ne,0,void 0,r.default),m),p=class extends Me{constructor(){super($),Z(this,`styles`,i.default),te()}},Z(p,we,void 0),p),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return $}});
|
|
55
161
|
//# sourceMappingURL=AccessControlModal.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControlModal.cjs.js","names":["customElement","DialogComponent","html","property","state","label","debug","Authenticated","Public","solidLogicSingleton","sym","styles","dedupeByKey","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","_ref","_subjectUriDecs","attribute","_accessGrantsDecs","_principalInputValueDecs","_addAccessRoleValueDecs","_authenticatedAccessRoleValueDecs","_publicAccessRoleValueDecs","_submittingDecs","_pendingAccessGrantsDecs","_accessGrantDraftsDecs","_errorsDecs","_successfulChangesRefreshedDecs","_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","_defineProperty","_classPrivateFieldGet","subjectUri","v","_classPrivateFieldSet","accessGrants","principalInputValue","addAccessRoleValue","authenticatedAccessRoleValue","publicAccessRoleValue","submitting","pendingAccessGrants","accessGrantDrafts","errors","successfulChangesRefreshed","disconnectedCallback","accessGrantLabelRequestVersion","inputError","find","error","action","message","saveErrors","filter","setInputError","item","clearInputError","willUpdate","changedProperties","has","updated","refreshAccessGrantLabels","catch","requestVersion","grants","length","labels","Promise","all","map","authorization","agentGroup","groupUri","store","fetcher","load","doc","labelsById","Map","id","index","draft","subjectLabel","get","getDialogTitle","subject","trim","render","dialogTitle","onSubmit","onPrincipalInput","onPrincipalSelect","onAddAccessRoleInput","onPendingGrantRemoved","onAccessGrantRoleInput","onAuthenticatedAccessRoleInput","onPublicAccessRoleInput","onCancelClick","hasUnsavedChanges","onSaveClick","e","preventDefault","commitPrincipalFromInputSafely","committed","saveAccessChanges","close","changedAccessGrants","generalAccessChanges","getGeneralAccessChanges","accessChanges","acl","findAccessGrants","targetUri","Error","event","detail","queuePendingPrincipal","currentAuthenticatedRole","currentPublicRole","authenticatedChange","role","publicChange","grant","_","pendingIndex","Boolean","commitPrincipalFromInput","rawValue","inputSnapshot","principal","preferredLabel","snapshot","result","createPendingAccessGrant","merged","dedupePendingAccessGrants","normalizedPrincipal","resolvedTarget","subjectType","subjectValue","draftGrants","draftGrant","c","_initClass","_applyDecs","_Class","_identity","default","customElement","property","state","DialogComponent","createAccessGrantDrafts","getAuthenticatedAccessRole","getPublicAccessRole","error","solidLogicSingleton","sym","getAuthorizationSubjectLabel","getSharedAuthorization","getAccessGrantIds","label","accessPrincipalOptionsProvider","getAccessGrantViewModels","getChangedAccessGrants","buildAccessChanges","applyAccessChanges","Authenticated","Public","resolveAccessTarget","dedupeByKey","styles","require_label","require_debug","require_decorators","require_DialogComponent","require_AccessControlModal_styles","require_helpers","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","_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","_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","accessGrants","error$3","requestVersion","grants","labels","authorization","groupUri","labelsById","id","index","draft","subject","subjectLabel","dialogTitle","changedAccessGrants","generalAccessChanges","accessChanges","saveErrors","error$2","event","currentAuthenticatedRole","currentPublicRole","grant","pendingIndex","rawValue","inputSnapshot","error$1","snapshot","result","principal","role","preferredLabel","merged","normalizedPrincipal","resolvedTarget","draftGrants","draftGrant"],"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, solidLogicSingleton, type AccessRole, type Authorization } from 'solid-logic'\nimport { sym } from 'rdflib'\n\nimport '~icons/lucide/circle-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, InputAccessControlError, PendingAccessGrant, PendingGrantRemovedEvent, RoleChangedEvent, TargetInputEvent, TargetSelectedEvent } from './types'\nimport { dedupeByKey } from './helpers'\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 private accessGrantLabelRequestVersion = 0\n\n disconnectedCallback (): void {\n this.accessGrantLabelRequestVersion++\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 accessGrants = this.accessGrants ?? []\n this.accessGrantDrafts = createAccessGrantDrafts(accessGrants)\n this.authenticatedAccessRoleValue = getAuthenticatedAccessRole(accessGrants)\n this.publicAccessRoleValue = getPublicAccessRole(accessGrants)\n }\n }\n\n protected updated (changedProperties: PropertyValues<this>) {\n super.updated(changedProperties)\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\n private async refreshAccessGrantLabels () {\n const requestVersion = ++this.accessGrantLabelRequestVersion\n const grants = this.accessGrants ?? []\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 (requestVersion === this.accessGrantLabelRequestVersion && this.accessGrants === grants) {\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 'Share this resource'\n }\n\n return `Share \"${subjectLabel}\"`\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 <solid-ui-access-control-add-access\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 .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 .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 </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.hasUnsavedChanges() || this.submitting || this.saveErrors.length > 0}\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) {\n return\n }\n\n await this.commitPrincipalFromInputSafely()\n }\n\n private async onSaveClick () {\n if (this.submitting) {\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 await this.saveAccessChanges()\n }\n\n private onCancelClick () {\n this.close()\n }\n\n private async saveAccessChanges () {\n if (this.submitting) {\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 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 this.principalInputValue = event.detail.value\n this.clearInputError()\n }\n\n private onPrincipalSelect (event: TargetSelectedEvent) {\n this.queuePendingPrincipal(event.detail.value, this.addAccessRoleValue, event.detail.label)\n }\n\n private getGeneralAccessChanges (): AccessChange[] {\n if (!this.subjectUri) {\n return []\n }\n\n const accessGrants = this.accessGrants ?? []\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 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 this.authenticatedAccessRoleValue = event.detail.role\n }\n\n private onPublicAccessRoleInput (event: RoleChangedEvent) {\n this.publicAccessRoleValue = event.detail.role\n }\n\n private onAccessGrantRoleInput (event: AccessGrantRoleChangedEvent) {\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 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 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 ): Promise<boolean> {\n const snapshot = inputSnapshot ?? this.principalInputValue.trim()\n const result = await this.createPendingAccessGrant(principal, role, preferredLabel)\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 ): 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 }\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 return dedupeByKey(draftGrants, draftGrant => `${draftGrant.subjectType}:${draftGrant.subjectValue}`)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccessControlModal.cjs.js","names":["customElement","DialogComponent","html","property","state","label","debug","Authenticated","Public","analyzeContainerAccessScope","filterAuthorizationsByContainerScope","solidLogicSingleton","sym","styles","createAccessGrantDrafts","getAccessGrantIds","getAccessGrantViewModels","getAuthenticatedAccessRole","getAuthorizationSubjectLabel","getChangedAccessGrants","getPublicAccessRole","getSharedAuthorization","accessPrincipalOptionsProvider","resolveAccessTarget","applyAccessChanges","buildAccessChanges","isDefined","value","undefined","_classDecs","_AccessControlModal","_AccessControlModal2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_ref","_subjectUriDecs","attribute","_accessGrantsDecs","_principalInputValueDecs","_addAccessRoleValueDecs","_authenticatedAccessRoleValueDecs","_publicAccessRoleValueDecs","_submittingDecs","_pendingAccessGrantsDecs","_accessGrantDraftsDecs","_errorsDecs","_successfulChangesRefreshedDecs","_accessContextDecs","_accessContextLoadingDecs","_accessContextErrorDecs","_advancedSharingOpenDecs","_containerScopeDecs","_containerScopeAnalysisDecs","_protectedTargetDecs","_AccessControlModal3","AccessControlModal","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_subjectUri","_init_accessGrants","_init_principalInputValue","_init_addAccessRoleValue","_init_authenticatedAccessRoleValue","_init_publicAccessRoleValue","_init_submitting","_init_pendingAccessGrants","_init_accessGrantDrafts","_init_errors","_init_successfulChangesRefreshed","_init_accessContext","_init_accessContextLoading","_init_accessContextError","_init_advancedSharingOpen","_init_containerScope","_init_containerScopeAnalysis","_init_protectedTarget","_defineProperty","_classPrivateFieldGet","subjectUri","v","_classPrivateFieldSet","accessGrants","principalInputValue","addAccessRoleValue","authenticatedAccessRoleValue","publicAccessRoleValue","submitting","pendingAccessGrants","accessGrantDrafts","errors","successfulChangesRefreshed","accessContext","accessContextLoading","accessContextError","advancedSharingOpen","containerScope","containerScopeAnalysis","protectedTarget","disconnectedCallback","accessGrantLabelRequestVersion","accessContextRequestVersion","inputError","find","error","action","message","saveErrors","filter","setInputError","item","clearInputError","willUpdate","changedProperties","has","scopedAccessGrants","getScopedAccessGrants","updated","loadAccessContext","catch","refreshAccessGrantLabels","refreshContainerScopeAnalysis","isContainer","primaryScope","refreshScopedAccessGrantDrafts","requestVersion","sourceAccessGrants","scope","getSelectedContainerScope","grants","length","labels","Promise","all","map","authorization","agentGroup","groupUri","store","fetcher","load","doc","labelsById","Map","id","index","draft","subjectLabel","get","getDialogTitle","subject","trim","Boolean","URL","pathname","endsWith","accessContextSubjectUri","acl","findEffectiveAcl","inherited","authorizations","isProtectedResource","Error","ensureAccessContext","isConnected","canMutate","retryAccessContext","renderSharingInformation","isCustomSharing","inheritedContainer","effectiveContainer","inheritedContainerLabel","defaultContainer","onResetToDefault","renderSharingState","renderAdvancedSharing","hasMixedContainerPolicy","mixed","renderAccessContextState","renderMixedContainerWarning","selectContainerScope","checked","closeAdvancedSharing","render","dialogTitle","onSubmit","onPrincipalInput","onPrincipalSelect","onAddAccessRoleInput","onPendingGrantRemoved","onAccessGrantRoleInput","onAuthenticatedAccessRoleInput","onPublicAccessRoleInput","onCancelClick","hasUnsavedChanges","onSaveClick","e","preventDefault","commitPrincipalFromInputSafely","committed","saveAccessChanges","close","resetToDefault","directAccessGrants","findAccessGrants","targetUri","changedAccessGrants","generalAccessChanges","getGeneralAccessChanges","accessChanges","event","detail","queuePendingPrincipal","targetKind","currentAuthenticatedRole","currentPublicRole","authenticatedChange","role","publicChange","grant","_","pendingIndex","commitPrincipalFromInput","rawValue","inputSnapshot","principal","preferredLabel","snapshot","result","createPendingAccessGrant","merged","dedupePendingAccessGrants","normalizedPrincipal","resolvedTarget","subjectType","subjectValue","draftGrants","grantsBySubject","draftGrant","set","values","c","_initClass","_applyDecs","_Class","_identity","default","customElement","property","state","DialogComponent","createAccessGrantDrafts","getAuthenticatedAccessRole","getPublicAccessRole","error","analyzeContainerAccessScope","solidLogicSingleton","sym","getAuthorizationSubjectLabel","getSharedAuthorization","getAccessGrantIds","label","filterAuthorizationsByContainerScope","accessPrincipalOptionsProvider","getAccessGrantViewModels","getChangedAccessGrants","buildAccessChanges","applyAccessChanges","Authenticated","Public","resolveAccessTarget","styles","require_label","require_debug","require_decorators","require_DialogComponent","require_AccessControlModal_styles","require_accessGrantDrafts","require_accessTargetResolver","require_applyAccessChanges","require_buildAccessChanges","rdflib","solid_logic","lit","lit_decorators_js","_Class","_AccessControlModal3","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_initProto","_initClass","_classDecs","_subjectUriDecs","_init_subjectUri","_accessGrantsDecs","_init_accessGrants","_principalInputValueDecs","_init_principalInputValue","_addAccessRoleValueDecs","_init_addAccessRoleValue","_authenticatedAccessRoleValueDecs","_init_authenticatedAccessRoleValue","_publicAccessRoleValueDecs","_init_publicAccessRoleValue","_submittingDecs","_init_submitting","_pendingAccessGrantsDecs","_init_pendingAccessGrants","_accessGrantDraftsDecs","_init_accessGrantDrafts","_errorsDecs","_init_errors","_successfulChangesRefreshedDecs","_init_successfulChangesRefreshed","_accessContextDecs","_init_accessContext","_accessContextLoadingDecs","_init_accessContextLoading","_accessContextErrorDecs","_init_accessContextError","_advancedSharingOpenDecs","_init_advancedSharingOpen","_containerScopeDecs","_init_containerScope","_containerScopeAnalysisDecs","_init_containerScopeAnalysis","_protectedTargetDecs","_init_protectedTarget","_AccessControlModal2","_ref","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","a","_classPrivateFieldSet","s","_assertClassBrand","r","_classPrivateFieldGet","_defineProperty","_toPropertyKey","t","_applyDecs","i","n","o","c","applyDec","m","h","y","v","g","b","u","w","S","A","d","f","p","_setFunctionName","P","j","D","I","F","l","N","_checkInRHS","_toPrimitive","e","_identity","isDefined","value","_AccessControlModal","args","error","item","changedProperties","scopedAccessGrants","error$2","error$3","requestVersion","sourceAccessGrants","subjectUri","scope","grants","labels","authorization","groupUri","labelsById","id","index","draft","subject","subjectLabel","accessContext","error$6","isCustomSharing","inheritedContainer","inheritedContainerLabel","defaultContainer","checked","dialogTitle","directAccessGrants","error$1","changedAccessGrants","generalAccessChanges","accessChanges","saveErrors","error$5","event","accessGrants","currentAuthenticatedRole","currentPublicRole","grant","pendingIndex","rawValue","inputSnapshot","error$4","snapshot","result","principal","role","preferredLabel","targetKind","merged","normalizedPrincipal","resolvedTarget","grantsBySubject","draftGrant","draftGrants"],"sources":["../../../src/components/access-control-modal/AccessControlModal.ts"],"sourcesContent":["import { customElement, DialogComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport type { PropertyValues } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { label } from '@/utils/label'\nimport * as debug from '@/lib/debug'\nimport { Authenticated, Public, analyzeContainerAccessScope, filterAuthorizationsByContainerScope, solidLogicSingleton, type ACLContext, type AccessRole, type Authorization, type ContainerAccessScope, type ContainerAccessScopeResult } from 'solid-logic'\nimport { sym } from 'rdflib'\n\nimport '~icons/lucide/circle-x'\nimport '~icons/lucide/folder'\nimport '~icons/lucide/folder-open'\nimport '~icons/lucide/x'\nimport '@/components/dialog'\nimport '@/components/dialog-content'\nimport '@/components/dialog-footer'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\nimport './AccessControlSharedAccess'\nimport './AccessControlGeneralAccess'\nimport './AccessControlErrors'\n\nimport styles from './AccessControlModal.styles.css'\nimport type { AccessChange, AccessControlError, AccessGrantDraft, AccessGrantRoleChangedEvent, AccessSaveError, AccessSaveScope, InputAccessControlError, PendingAccessGrant, PendingGrantRemovedEvent, RoleChangedEvent, TargetInputEvent, TargetSelectedEvent } from './types'\nimport { createAccessGrantDrafts, getAccessGrantIds, getAccessGrantViewModels, getAuthenticatedAccessRole, getAuthorizationSubjectLabel, getChangedAccessGrants, getPublicAccessRole, getSharedAuthorization } from './accessGrantDrafts'\nimport { accessPrincipalOptionsProvider, resolveAccessTarget } from './accessTargetResolver'\nimport { applyAccessChanges } from './applyAccessChanges'\nimport { buildAccessChanges } from './buildAccessChanges'\n\nfunction isDefined<T> (value: T | undefined | null): value is T {\n return value !== undefined && value !== null\n}\n\ntype PendingAccessGrantCreationResult =\n | { grant: PendingAccessGrant }\n | { error: InputAccessControlError }\n\n@customElement('solid-ui-access-control-modal')\nexport default class AccessControlModal extends DialogComponent<void> {\n static styles = styles\n\n @property({ attribute: false })\n accessor subjectUri: string | undefined = undefined\n\n @property({ attribute: false })\n accessor accessGrants: Authorization[] | undefined = undefined\n\n @state()\n private accessor principalInputValue: string = ''\n\n @state()\n private accessor addAccessRoleValue: AccessRole = 'Viewer'\n\n @state()\n private accessor authenticatedAccessRoleValue: AccessRole = 'No Access'\n\n @state()\n private accessor publicAccessRoleValue: AccessRole = 'No Access'\n\n @state()\n private accessor submitting: boolean = false\n\n @state()\n private accessor pendingAccessGrants: PendingAccessGrant[] = []\n\n @state()\n private accessor accessGrantDrafts: AccessGrantDraft[] = []\n\n @state()\n private accessor errors: AccessControlError[] = []\n\n @state()\n private accessor successfulChangesRefreshed = true\n\n @state()\n private accessor accessContext: ACLContext | undefined\n\n @state()\n private accessor accessContextLoading = false\n\n @state()\n private accessor accessContextError = ''\n\n // Intentionally has no opener this release: scope selectors and reset are deferred.\n @state()\n private accessor advancedSharingOpen = false\n\n @state()\n private accessor containerScope: ContainerAccessScope = 'folder+contents'\n\n @state()\n private accessor containerScopeAnalysis: ContainerAccessScopeResult | undefined\n\n @state()\n private accessor protectedTarget = false\n\n private accessGrantLabelRequestVersion = 0\n private accessContextRequestVersion = 0\n private accessContextSubjectUri: string | undefined\n\n disconnectedCallback (): void {\n this.accessGrantLabelRequestVersion++\n this.accessContextRequestVersion++\n this.errors = []\n super.disconnectedCallback()\n }\n\n private get inputError (): string {\n return this.errors.find(error => error.action === 'input')?.message ?? ''\n }\n\n private get saveErrors (): AccessSaveError[] {\n return this.errors.filter((error): error is AccessSaveError => error.action !== 'input')\n }\n\n private setInputError (error: InputAccessControlError) {\n this.errors = [\n ...this.errors.filter(item => item.action !== 'input'),\n error\n ]\n }\n\n private clearInputError () {\n this.errors = this.errors.filter(error => error.action !== 'input')\n }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('accessGrants')) {\n const scopedAccessGrants = this.getScopedAccessGrants()\n this.accessGrantDrafts = createAccessGrantDrafts(scopedAccessGrants)\n this.authenticatedAccessRoleValue = getAuthenticatedAccessRole(scopedAccessGrants)\n this.publicAccessRoleValue = getPublicAccessRole(scopedAccessGrants)\n }\n }\n\n protected updated (changedProperties: PropertyValues<this>) {\n super.updated(changedProperties)\n\n if (changedProperties.has('subjectUri')) {\n this.loadAccessContext().catch(error => {\n debug.error('Failed to load access control context', error)\n })\n }\n\n if (changedProperties.has('accessGrants')) {\n this.refreshAccessGrantLabels().catch((error: unknown) => {\n debug.error('Failed to refresh access grant labels', error)\n })\n }\n\n if (changedProperties.has('accessContext' as keyof AccessControlModal) && !changedProperties.has('subjectUri')) {\n this.refreshContainerScopeAnalysis()\n }\n }\n\n private refreshContainerScopeAnalysis () {\n if (this.isContainer() && this.accessContext) {\n this.containerScopeAnalysis = analyzeContainerAccessScope(this.accessContext)\n this.containerScope = this.containerScopeAnalysis.primaryScope\n this.refreshScopedAccessGrantDrafts()\n } else {\n this.containerScopeAnalysis = undefined\n }\n }\n\n private async refreshAccessGrantLabels () {\n const requestVersion = ++this.accessGrantLabelRequestVersion\n const sourceAccessGrants = this.accessGrants\n const subjectUri = this.subjectUri\n const scope = this.getSelectedContainerScope()\n const grants = this.getScopedAccessGrants(scope)\n if (!grants.length) {\n this.accessGrantDrafts = []\n return\n }\n\n const labels = await Promise.all(grants.map(async authorization => {\n await Promise.all(authorization.agentGroup.map(async groupUri => {\n try {\n await solidLogicSingleton.store.fetcher.load(sym(groupUri).doc())\n } catch {\n // Keep the fallback label if the group document cannot be loaded.\n }\n }))\n\n return getAuthorizationSubjectLabel(getSharedAuthorization(authorization))\n }))\n\n if (\n requestVersion === this.accessGrantLabelRequestVersion &&\n this.accessGrants === sourceAccessGrants &&\n this.subjectUri === subjectUri &&\n this.getSelectedContainerScope() === scope\n ) {\n const labelsById = new Map(getAccessGrantIds(grants).map((id, index) => [id, labels[index]]))\n this.accessGrantDrafts = this.accessGrantDrafts.map(draft => ({\n ...draft,\n subjectLabel: labelsById.get(draft.id) ?? draft.subjectLabel\n }))\n }\n }\n\n private getDialogTitle (): string {\n const subject = this.subjectUri ? sym(this.subjectUri) : undefined\n const subjectLabel = subject ? label(subject).trim() : ''\n\n if (!subjectLabel || subjectLabel === 'this resource') {\n return 'Manage Access of \"this resource\"'\n }\n return `Manage Access of \"${subjectLabel}\"`\n }\n\n private isContainer (): boolean {\n return Boolean(this.subjectUri && new URL(this.subjectUri).pathname.endsWith('/'))\n }\n\n private async loadAccessContext (): Promise<void> {\n const requestVersion = ++this.accessContextRequestVersion\n const subjectUri = this.subjectUri\n this.accessContext = undefined\n this.accessContextSubjectUri = undefined\n this.accessContextError = ''\n this.accessContextLoading = Boolean(subjectUri)\n\n if (!subjectUri) {\n this.accessContextLoading = false\n return\n }\n\n try {\n const accessContext = await solidLogicSingleton.acl.findEffectiveAcl(subjectUri)\n if (requestVersion !== this.accessContextRequestVersion || this.subjectUri !== subjectUri) {\n return\n }\n\n this.accessContext = accessContext\n this.accessContextSubjectUri = subjectUri\n if (this.accessContext?.inherited && !(this.accessGrants?.length)) {\n // findAccessGrants only reports ACLs attached directly to the resource.\n // Inherited permissions are the effective grants users need to review.\n this.accessGrants = this.accessContext.authorizations\n }\n this.refreshContainerScopeAnalysis()\n this.protectedTarget = solidLogicSingleton.acl.isProtectedResource(subjectUri)\n if (this.protectedTarget) {\n this.refreshScopedAccessGrantDrafts()\n }\n } catch (error) {\n if (requestVersion !== this.accessContextRequestVersion || this.subjectUri !== subjectUri) {\n return\n }\n\n this.accessContextError = error instanceof Error && error.message.trim()\n ? error.message\n : 'Unable to load access settings for this resource.'\n debug.error('Failed to load access control context', error)\n } finally {\n if (requestVersion === this.accessContextRequestVersion && this.subjectUri === subjectUri) {\n this.accessContextLoading = false\n }\n }\n }\n\n private async ensureAccessContext (): Promise<boolean> {\n if (!this.subjectUri) {\n return false\n }\n\n // Direct method calls are used by consumers and unit tests before the\n // element is connected; the rendered controls are always guarded below.\n if (!this.isConnected) {\n return true\n }\n\n if (this.accessContextSubjectUri === this.subjectUri && this.accessContext && !this.accessContextError) {\n return true\n }\n\n await this.loadAccessContext()\n return this.accessContextSubjectUri === this.subjectUri && Boolean(this.accessContext) && !this.accessContextError\n }\n\n private canMutate (): boolean {\n if (!this.isConnected) {\n return true\n }\n\n if (!this.subjectUri) {\n return true\n }\n\n return Boolean(\n this.subjectUri &&\n this.accessContextSubjectUri === this.subjectUri &&\n this.accessContext &&\n !this.accessContextLoading &&\n !this.accessContextError\n )\n }\n\n private async retryAccessContext () {\n await this.loadAccessContext()\n }\n\n private renderSharingInformation () {\n if (!this.accessContext) {\n return html``\n }\n\n const isCustomSharing = !this.accessContext.inherited\n const inheritedContainer = this.accessContext?.effectiveContainer\n const inheritedContainerLabel = inheritedContainer\n ? label(sym(inheritedContainer)).trim()\n : ''\n const defaultContainer = inheritedContainerLabel && inheritedContainerLabel !== inheritedContainer\n ? html`<strong>${inheritedContainerLabel}</strong> (${inheritedContainer})`\n : html`<strong>${inheritedContainer ?? 'the parent container'}</strong>`\n return html`\n <div class=\"access-control-sharing-state-panel\">\n ${isCustomSharing\n ? html`\n <div class=\"access-control-sharing-state-custom-row\">\n <p>This resource has its own sharing settings.</p>\n ${!this.protectedTarget\n ? html`\n <solid-ui-button\n type=\"button\"\n variant=\"tertiary\"\n aria-label=\"Reset custom sharing to default\"\n @click=${this.onResetToDefault}\n >\n Reset to default\n </solid-ui-button>\n `\n : html``}\n </div>\n `\n : inheritedContainer\n ? html`<p>This resource inherits sharing settings from ${defaultContainer}.</p>`\n : html`<p>This resource inherits sharing settings, but no inherited default is available.</p>`}\n ${this.protectedTarget\n ? html`<p class=\"access-control-sharing-state-protected-message\">This is a protected storage resource. Its primary access-control settings cannot be reset here.</p>`\n : html``}\n </div>\n `\n }\n\n private renderSharingState () {\n if (!this.accessContext || !this.advancedSharingOpen) {\n return html``\n }\n\n return html`\n <section\n class=\"access-control-sharing-state\"\n aria-labelledby=\"access-control-advanced-sharing-heading\"\n >\n ${this.renderSharingInformation()}\n ${this.renderAdvancedSharing()}\n </section>\n `\n }\n\n private getSelectedContainerScope (): ContainerAccessScope {\n return this.containerScope\n }\n\n private hasMixedContainerPolicy (): boolean {\n return this.isContainer() && this.containerScopeAnalysis?.mixed === true\n }\n\n private renderAccessContextState () {\n if (this.accessContextLoading) {\n return html`<p role=\"status\">Loading access settings...</p>`\n }\n\n if (this.accessContextError) {\n return html`\n <solid-ui-error-state\n title=\"Could not load access settings\"\n message=${this.accessContextError}\n >\n <solid-ui-button type=\"button\" variant=\"secondary\" @click=${this.retryAccessContext}>\n Retry\n </solid-ui-button>\n </solid-ui-error-state>\n `\n }\n\n if (!this.accessContext) {\n return html`<p role=\"status\">Access settings are not ready yet.</p>`\n }\n\n return html``\n }\n\n private renderMixedContainerWarning () {\n if (!this.hasMixedContainerPolicy()) {\n return html``\n }\n\n return html`\n <div class=\"access-control-mixed-policy-warning\" role=\"alert\">\n <strong>This container has different access settings for the folder and its contents.</strong>\n <span>Changing this mixed policy is an advanced feature and will be available in the next release. Access changes are disabled for now.</span>\n </div>\n `\n }\n\n private getScopedAccessGrants (scope = this.getSelectedContainerScope()): Authorization[] {\n const grants = this.accessGrants ?? []\n if (!this.isContainer() || !this.subjectUri || this.protectedTarget) {\n return grants\n }\n return filterAuthorizationsByContainerScope(this.subjectUri, grants, scope, this.accessContext?.inherited ?? false)\n }\n\n private refreshScopedAccessGrantDrafts () {\n const scopedAccessGrants = this.getScopedAccessGrants()\n this.accessGrantDrafts = createAccessGrantDrafts(scopedAccessGrants)\n this.authenticatedAccessRoleValue = getAuthenticatedAccessRole(scopedAccessGrants)\n this.publicAccessRoleValue = getPublicAccessRole(scopedAccessGrants)\n }\n\n private selectContainerScope (scope: 'folder+contents' | 'contents' | 'folder') {\n this.containerScope = scope\n this.refreshScopedAccessGrantDrafts()\n }\n\n private renderAdvancedSharing () {\n if (!this.advancedSharingOpen) return html``\n\n return html`\n <section\n id=\"access-control-advanced-sharing\"\n class=\"access-control-advanced-sharing\"\n role=\"group\"\n aria-labelledby=\"access-control-advanced-sharing-heading\"\n aria-describedby=\"access-control-advanced-sharing-description\"\n >\n <h2 id=\"access-control-advanced-sharing-heading\">Advanced sharing</h2>\n <p id=\"access-control-advanced-sharing-description\">\n <span class=\"access-control-advanced-sharing-description-line\">Use this option when the folder and its contents have different access requirements.</span>\n <span class=\"access-control-advanced-sharing-description-line\">Choose which access settings to edit.</span>\n <span class=\"access-control-advanced-sharing-description-line\">Save Changes applies your current edits only to that scope.</span>\n </p>\n ${this.isContainer()\n ? html`\n <button\n type=\"button\"\n class=\"access-control-same-access-toggle\"\n role=\"switch\"\n aria-checked=${this.containerScope === 'folder+contents' ? 'true' : 'false'}\n @click=${() => {\n const checked = this.containerScope !== 'folder+contents'\n this.selectContainerScope(checked\n ? 'folder+contents'\n : this.containerScope === 'contents' ? 'contents' : 'folder')\n }}\n >\n <span class=\"access-control-switch-track\" aria-hidden=\"true\">\n <span class=\"access-control-switch-thumb\"></span>\n </span>\n <span>Use the same access for this folder and its contents</span>\n </button>\n <div class=\"access-control-advanced-sharing-options\">\n <solid-ui-button\n type=\"button\"\n variant=${this.containerScope === 'folder' ? 'primary' : 'secondary'}\n aria-pressed=${this.containerScope === 'folder' ? 'true' : 'false'}\n @click=${() => { this.selectContainerScope('folder') }}\n >\n Folder Only\n </solid-ui-button>\n <solid-ui-button\n type=\"button\"\n variant=${this.containerScope === 'contents' ? 'primary' : 'secondary'}\n aria-pressed=${this.containerScope === 'contents' ? 'true' : 'false'}\n @click=${() => { this.selectContainerScope('contents') }}\n >\n Contents Only\n </solid-ui-button>\n </div>\n `\n : html``}\n <div class=\"access-control-advanced-sharing-actions\">\n <solid-ui-button\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Close advanced sharing\"\n title=\"Close advanced sharing\"\n @click=${this.closeAdvancedSharing}\n >\n <icon-lucide-x slot=\"icon\" aria-hidden=\"true\"></icon-lucide-x>\n <span class=\"sr-only\">Close</span>\n </solid-ui-button>\n </div>\n </section>\n `\n }\n\n protected render () {\n const dialogTitle = this.getDialogTitle()\n\n return html`\n <solid-ui-dialog title=${dialogTitle}>\n <form @submit=${this.onSubmit}>\n <solid-ui-dialog-content>\n ${this.renderAccessContextState()}\n ${this.renderMixedContainerWarning()}\n <solid-ui-access-control-add-access\n .disabled=${!this.canMutate() || this.hasMixedContainerPolicy()}\n .principalInputValue=${this.principalInputValue}\n .addAccessRoleValue=${this.addAccessRoleValue}\n .pendingAccessGrants=${this.pendingAccessGrants}\n .inputError=${this.inputError}\n .asyncOptionsProvider=${accessPrincipalOptionsProvider}\n @target-input=${this.onPrincipalInput}\n @target-selected=${this.onPrincipalSelect}\n @role-changed=${this.onAddAccessRoleInput}\n @pending-grant-removed=${this.onPendingGrantRemoved}\n ></solid-ui-access-control-add-access>\n <solid-ui-access-control-shared-access\n .disabled=${!this.canMutate() || this.hasMixedContainerPolicy()}\n .accessGrantViewModels=${getAccessGrantViewModels(this.accessGrantDrafts)}\n @access-grant-role-changed=${this.onAccessGrantRoleInput}\n ></solid-ui-access-control-shared-access>\n <solid-ui-access-control-general-access\n .disabled=${!this.canMutate() || this.hasMixedContainerPolicy()}\n .subjectUri=${this.subjectUri}\n .authenticatedAccessRoleValue=${this.authenticatedAccessRoleValue}\n .publicAccessRoleValue=${this.publicAccessRoleValue}\n @authenticated-role-changed=${this.onAuthenticatedAccessRoleInput}\n @public-role-changed=${this.onPublicAccessRoleInput}\n ></solid-ui-access-control-general-access>\n <solid-ui-access-control-errors\n .errors=${this.saveErrors}\n .successfulChangesRefreshed=${this.successfulChangesRefreshed}\n @close=${this.onCancelClick}\n ></solid-ui-access-control-errors>\n ${this.renderSharingState()}\n </solid-ui-dialog-content>\n\n <solid-ui-dialog-footer>\n <div class=\"access-control-footer-actions\">\n <solid-ui-button\n variant=\"secondary\"\n @click=${this.onCancelClick}\n >\n Cancel\n </solid-ui-button>\n <solid-ui-button\n ?disabled=${!this.canMutate() || !this.hasUnsavedChanges() || this.submitting || this.saveErrors.length > 0 || this.hasMixedContainerPolicy()}\n ?loading=${this.submitting}\n type=\"button\"\n @click=${this.onSaveClick}\n >\n Save Changes\n </solid-ui-button>\n </div>\n </solid-ui-dialog-footer>\n </form>\n </solid-ui-dialog>\n `\n }\n\n private async onSubmit (e: Event) {\n e.preventDefault()\n\n if (this.submitting || this.hasMixedContainerPolicy()) {\n return\n }\n\n if (this.isConnected && !await this.ensureAccessContext()) {\n return\n }\n\n await this.commitPrincipalFromInputSafely()\n }\n\n private async onSaveClick () {\n if (this.submitting || this.hasMixedContainerPolicy()) {\n return\n }\n\n if (this.isConnected && !await this.ensureAccessContext()) {\n return\n }\n\n if (this.principalInputValue.trim()) {\n const committed = await this.commitPrincipalFromInputSafely()\n\n if (!committed) {\n return\n }\n }\n\n const scope = this.isContainer() && !this.protectedTarget\n ? this.getSelectedContainerScope()\n : 'file'\n await this.saveAccessChanges(scope === 'folder' ? 'container' : scope)\n }\n\n private onCancelClick () {\n this.close()\n }\n\n private closeAdvancedSharing () {\n this.advancedSharingOpen = false\n }\n\n private async onResetToDefault () {\n if (!this.subjectUri || !this.canMutate() || !this.accessContext || this.accessContext.inherited || this.submitting || this.hasMixedContainerPolicy()) return\n\n this.submitting = true\n this.errors = this.errors.filter(error => error.action === 'input')\n try {\n await solidLogicSingleton.acl.resetToDefault(this.subjectUri)\n await this.loadAccessContext()\n const directAccessGrants = await solidLogicSingleton.acl.findAccessGrants(this.subjectUri)\n this.accessGrants = this.accessContext?.inherited\n ? this.accessContext.authorizations\n : directAccessGrants\n } catch (error) {\n this.errors = [...this.errors, {\n action: 'reset',\n targetUri: this.subjectUri,\n label: 'Custom sharing',\n message: error instanceof Error ? error.message : 'Unable to reset sharing.'\n }]\n debug.error('Failed to reset access control', error)\n } finally {\n this.submitting = false\n }\n }\n\n private async saveAccessChanges (scope: AccessSaveScope = 'file') {\n if (this.submitting || !this.canMutate() || this.hasMixedContainerPolicy()) {\n return\n }\n\n const changedAccessGrants = getChangedAccessGrants(this.accessGrantDrafts)\n const generalAccessChanges = this.getGeneralAccessChanges()\n\n if (!this.pendingAccessGrants.length && !changedAccessGrants.length && !generalAccessChanges.length) {\n return\n }\n\n if (!this.subjectUri) {\n return\n }\n\n this.submitting = true\n this.errors = this.errors.filter(error => error.action === 'input')\n this.successfulChangesRefreshed = true\n\n try {\n const accessChanges = buildAccessChanges({\n pendingAccessGrants: this.pendingAccessGrants,\n generalAccessChanges,\n changedAccessGrants\n })\n\n const saveErrors = await applyAccessChanges(this.subjectUri, accessChanges, {\n containerScope: scope\n })\n if (saveErrors.length) {\n this.errors = [...this.errors, ...saveErrors]\n this.principalInputValue = ''\n this.pendingAccessGrants = []\n\n try {\n this.accessGrants = await solidLogicSingleton.acl.findAccessGrants(this.subjectUri)\n } catch (error) {\n this.successfulChangesRefreshed = false\n this.errors = [\n ...this.errors,\n {\n action: 'save',\n targetUri: this.subjectUri,\n label: 'Shared with list',\n message: error instanceof Error\n ? error.message\n : 'Unable to refresh the access list.'\n }\n ]\n debug.error('Failed to refresh access grants after save errors', error)\n }\n\n debug.error('Failed to save some access changes', saveErrors)\n return\n }\n\n this.principalInputValue = ''\n this.pendingAccessGrants = []\n this.close()\n } catch (error) {\n this.errors = [\n ...this.errors,\n {\n action: 'save',\n targetUri: this.subjectUri ?? '',\n label: 'Access changes',\n message: error instanceof Error\n ? error.message\n : 'Unexpected error while saving access changes.'\n }\n ]\n } finally {\n this.submitting = false\n }\n }\n\n private onPrincipalInput (event: TargetInputEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.principalInputValue = event.detail.value\n this.clearInputError()\n }\n\n private onPrincipalSelect (event: TargetSelectedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.queuePendingPrincipal(event.detail.value, this.addAccessRoleValue, event.detail.label, undefined, event.detail.targetKind)\n }\n\n private getGeneralAccessChanges (): AccessChange[] {\n if (!this.subjectUri) {\n return []\n }\n\n const accessGrants = this.getScopedAccessGrants()\n const currentAuthenticatedRole = getAuthenticatedAccessRole(accessGrants)\n const currentPublicRole = getPublicAccessRole(accessGrants)\n\n const authenticatedChange = this.authenticatedAccessRoleValue === currentAuthenticatedRole\n ? undefined\n : {\n subject: Authenticated,\n role: this.authenticatedAccessRoleValue,\n label: 'Authenticated users'\n }\n\n const publicChange = this.publicAccessRoleValue === currentPublicRole\n ? undefined\n : {\n subject: Public,\n role: this.publicAccessRoleValue,\n label: 'Public'\n }\n\n return [authenticatedChange, publicChange].filter(isDefined)\n }\n\n private onAddAccessRoleInput (event: RoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.addAccessRoleValue = event.detail.role\n this.pendingAccessGrants = this.pendingAccessGrants.map(grant => ({\n ...grant,\n role: event.detail.role\n }))\n }\n\n private onAuthenticatedAccessRoleInput (event: RoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.authenticatedAccessRoleValue = event.detail.role\n }\n\n private onPublicAccessRoleInput (event: RoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.publicAccessRoleValue = event.detail.role\n }\n\n private onAccessGrantRoleInput (event: AccessGrantRoleChangedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.accessGrantDrafts = this.accessGrantDrafts.map(draft =>\n draft.id === event.detail.id\n ? { ...draft, role: event.detail.role }\n : draft\n )\n }\n\n private onPendingGrantRemoved (event: PendingGrantRemovedEvent) {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) return\n this.pendingAccessGrants = this.pendingAccessGrants.filter((_, pendingIndex) => pendingIndex !== event.detail.index)\n }\n\n private hasUnsavedChanges (): boolean {\n return Boolean(\n this.pendingAccessGrants.length ||\n this.principalInputValue.trim() ||\n getChangedAccessGrants(this.accessGrantDrafts).length ||\n this.getGeneralAccessChanges().length\n )\n }\n\n private async commitPrincipalFromInput (): Promise<boolean> {\n if (!this.canMutate() || this.hasMixedContainerPolicy()) {\n return false\n }\n\n const rawValue = this.principalInputValue.trim()\n if (!rawValue) {\n return false\n }\n\n return this.queuePendingPrincipal(rawValue, this.addAccessRoleValue, undefined, rawValue)\n }\n\n private async commitPrincipalFromInputSafely (): Promise<boolean> {\n const inputSnapshot = this.principalInputValue.trim()\n\n try {\n return await this.commitPrincipalFromInput()\n } catch (error) {\n if (this.principalInputValue.trim() !== inputSnapshot) {\n debug.error('Ignored stale access-target validation error', error)\n return false\n }\n\n this.setInputError({\n action: 'input',\n label: 'Access target',\n targetUri: this.principalInputValue.trim(),\n message: 'We could not verify this access target. Check the value and try again.'\n })\n debug.error('Failed to commit pending access grants', error)\n return false\n }\n }\n\n private async queuePendingPrincipal (\n principal: string,\n role: AccessRole = this.addAccessRoleValue,\n preferredLabel?: string,\n inputSnapshot?: string,\n targetKind?: 'origin' | 'trustedApp'\n ): Promise<boolean> {\n const snapshot = inputSnapshot ?? this.principalInputValue.trim()\n const result = await this.createPendingAccessGrant(principal, role, preferredLabel, targetKind)\n\n if ('error' in result) {\n if (this.principalInputValue.trim() === snapshot) {\n this.setInputError(result.error)\n }\n debug.error('Failed to add access grant:', result.error.message)\n return false\n }\n\n const merged = [...this.pendingAccessGrants, result.grant]\n this.pendingAccessGrants = this.dedupePendingAccessGrants(merged)\n\n if (this.principalInputValue.trim() === snapshot) {\n this.clearInputError()\n this.principalInputValue = ''\n }\n\n return true\n }\n\n private async createPendingAccessGrant (\n principal: string,\n role: AccessRole = this.addAccessRoleValue,\n preferredLabel?: string,\n targetKind?: 'origin' | 'trustedApp'\n ): Promise<PendingAccessGrantCreationResult> {\n try {\n const normalizedPrincipal = principal.trim()\n const resolvedTarget = await resolveAccessTarget(normalizedPrincipal, preferredLabel)\n if (!resolvedTarget) {\n return {\n error: {\n action: 'input',\n label: 'Access target',\n targetUri: normalizedPrincipal,\n message: 'Could not verify this access target'\n }\n }\n }\n\n return {\n grant: {\n subjectType: resolvedTarget.subjectType,\n subjectValue: resolvedTarget.subjectValue,\n role,\n label: resolvedTarget.label,\n targetKind: targetKind ?? resolvedTarget.targetKind\n }\n }\n } catch (error) {\n return {\n error: {\n action: 'input',\n label: 'Access target',\n targetUri: principal,\n message: error instanceof Error && error.message.trim()\n ? error.message\n : 'Could not verify this access target'\n }\n }\n }\n }\n\n private dedupePendingAccessGrants (draftGrants: PendingAccessGrant[]): PendingAccessGrant[] {\n const grantsBySubject = new Map<string, PendingAccessGrant>()\n for (const draftGrant of draftGrants) {\n grantsBySubject.set(`${draftGrant.subjectType}:${draftGrant.subjectValue}`, draftGrant)\n }\n return [...grantsBySubject.values()]\n }\n}\n"],"mappings":"A,22KA8BA,SAAS0B,GAAcC,EAAyC,CAC9D,OAAOA,GAAiC,IAC1C,CAACE,GAAA,CAMA7B,EAAAA,cAAc,+BAA+B,CAAC,EAAA,IAAA8B,EAAA,IAAAC,IAAAC,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAAAG,EAAA,IAAAH,QAAAI,EAAA,IAAAJ,QAAAK,EAAA,IAAAL,QAAAM,EAAA,IAAAN,QAAAO,EAAA,IAAAP,QAAAQ,EAAA,IAAAR,QAAAS,EAAA,IAAAT,QAAAU,EAAA,IAAAV,QAAAW,EAAA,IAAAX,QAAAY,EAAA,IAAAZ,QAAAa,EAAA,IAAAb,QAAAc,EAAA,IAAAd,QAAAe,EAAA,IAAAf,QAAAgB,EAAA,IAAAhB,QAAAiB,EAAA,IAAAjB,QAAAkB,IAAAC,IAAAA,EAI5CjD,EAAAA,SAAAA,CAAS,CAAEkD,UAAW,EAAM,CAAC,EAACC,IAAAA,EAG9BnD,EAAAA,SAAAA,CAAS,CAAEkD,UAAW,EAAM,CAAC,EAACE,GAAAA,EAG9BnD,EAAAA,MAAAA,CAAM,EAACoD,GAAAA,EAGPpD,EAAAA,MAAAA,CAAM,EAACqD,GAAAA,EAGPrD,EAAAA,MAAAA,CAAM,EAACsD,GAAAA,EAGPtD,EAAAA,MAAAA,CAAM,EAACuD,GAAAA,EAGPvD,EAAAA,MAAAA,CAAM,EAACwD,GAAAA,EAGPxD,EAAAA,MAAAA,CAAM,EAACyD,GAAAA,EAGPzD,EAAAA,MAAAA,CAAM,EAAC0D,GAAAA,EAGP1D,EAAAA,MAAAA,CAAM,EAAC2D,IAAAA,EAGP3D,EAAAA,MAAAA,CAAM,EAAC4D,IAAAA,EAGP5D,EAAAA,MAAAA,CAAM,EAAC6D,IAAAA,EAGP7D,EAAAA,MAAAA,CAAM,EAAC8D,IAAAA,EAGP9D,EAAAA,MAAAA,CAAM,EAAC+D,IAAAA,EAIP/D,EAAAA,MAAAA,CAAM,EAACgE,IAAAA,EAGPhE,EAAAA,MAAAA,CAAM,EAACiE,IAAAA,EAGPjE,EAAAA,MAAAA,CAAM,EAACkE,IAAAA,EAGPlE,EAAAA,MAAAA,CAAM,EAAC,cAAAmE,EAxDV,cACgDtE,EAAAA,OAAsB,CAAAwE,YAAA,GAAAC,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAAC,EAAA,KAAA3C,GAAA4C,GAAA,IAAA,EAAAC,GAAA,KAI1BjD,IAAAA,EAAS,EAAA,EAAA+C,EAAA,KAAAzC,EAAA4C,GAAA,KAGElD,IAAAA,EAAS,CAAA,EAAA+C,EAAA,KAAAxC,EAAA4C,EAAA,KAGf,EAAE,CAAA,EAAAJ,EAAA,KAAAvC,EAAA4C,EAAA,KAGC,QAAQ,CAAA,EAAAL,EAAA,KAAAtC,EAAA4C,EAAA,KAGE,WAAW,CAAA,EAAAN,EAAA,KAAArC,EAAA4C,EAAA,KAGlB,WAAW,CAAA,EAAAP,EAAA,KAAApC,EAAA4C,EAAA,KAGzB,EAAK,CAAA,EAAAR,EAAA,KAAAnC,EAAA4C,EAAA,KAGiB,CAAA,CAAE,CAAA,EAAAT,EAAA,KAAAlC,EAAA4C,EAAA,KAGN,CAAA,CAAE,CAAA,EAAAV,EAAA,KAAAjC,EAAA4C,GAAA,KAGX,CAAA,CAAE,CAAA,EAAAX,EAAA,KAAAhC,EAAA4C,GAAA,KAGJ,EAAI,CAAA,EAAAZ,EAAA,KAAA/B,EAAA4C,GAAA,IAAA,CAAA,EAAAb,EAAA,KAAA9B,EAAA4C,GAAA,KAMV,EAAK,CAAA,EAAAd,EAAA,KAAA7B,EAAA4C,GAAA,KAGP,EAAE,CAAA,EAExCf,EAAA,KAAA5B,EAAA4C,GAAA,KAEuC,EAAK,CAAA,EAAAhB,EAAA,KAAA3B,EAAA4C,GAAA,KAGY,iBAAiB,CAAA,EAAAjB,EAAA,KAAA1B,EAAA4C,GAAA,IAAA,CAAA,EAAAlB,EAAA,KAAAzB,EAAA4C,GAAA,KAMtC,EAAK,CAAA,EAAAC,EAAA,KAAA,iCAEC,CAAC,EAAAA,EAAA,KAAA,8BACJ,CAAC,EAAAA,EAAA,KAAA,0BAAA,IAAA,EAAA,CAAA,CAAA,IAAA5C,KAAA,CAAA,OAAA6C,EAAAhE,EAAA,IAAA,CAAA,CAAA,IAvD9BiE,WAAUC,EAAA,CAAAC,EAAAnE,EAAA,KAAAkE,CAAA,CAAA,CAAA,IAGVE,cAAY,CAAA,OAAAJ,EAAA9D,EAAA,IAAA,CAAA,CAAA,IAAZkE,aAAYF,EAAA,CAAAC,EAAAjE,EAAA,KAAAgE,CAAA,CAAA,CAAA,IAGJG,qBAAmB,CAAA,OAAAL,EAAA7D,EAAA,IAAA,CAAA,CAAA,IAAnBkE,oBAAmBH,EAAA,CAAAC,EAAAhE,EAAA,KAAA+D,CAAA,CAAA,CAAA,IAGnBI,oBAAkB,CAAA,OAAAN,EAAA5D,EAAA,IAAA,CAAA,CAAA,IAAlBkE,mBAAkBJ,EAAA,CAAAC,EAAA/D,EAAA,KAAA8D,CAAA,CAAA,CAAA,IAGlBK,8BAA4B,CAAA,OAAAP,EAAA3D,EAAA,IAAA,CAAA,CAAA,IAA5BkE,6BAA4BL,EAAA,CAAAC,EAAA9D,EAAA,KAAA6D,CAAA,CAAA,CAAA,IAG5BM,uBAAqB,CAAA,OAAAR,EAAA1D,EAAA,IAAA,CAAA,CAAA,IAArBkE,sBAAqBN,EAAA,CAAAC,EAAA7D,EAAA,KAAA4D,CAAA,CAAA,CAAA,IAGrBO,YAAU,CAAA,OAAAT,EAAAzD,EAAA,IAAA,CAAA,CAAA,IAAVkE,WAAUP,EAAA,CAAAC,EAAA5D,EAAA,KAAA2D,CAAA,CAAA,CAAA,IAGVQ,qBAAmB,CAAA,OAAAV,EAAAxD,EAAA,IAAA,CAAA,CAAA,IAAnBkE,oBAAmBR,EAAA,CAAAC,EAAA3D,EAAA,KAAA0D,CAAA,CAAA,CAAA,IAGnBS,mBAAiB,CAAA,OAAAX,EAAAvD,EAAA,IAAA,CAAA,CAAA,IAAjBkE,kBAAiBT,EAAA,CAAAC,EAAA1D,EAAA,KAAAyD,CAAA,CAAA,CAAA,IAGjBU,QAAM,CAAA,OAAAZ,EAAAtD,EAAA,IAAA,CAAA,CAAA,IAANkE,OAAMV,EAAA,CAAAC,EAAAzD,EAAA,KAAAwD,CAAA,CAAA,CAAA,IAGNW,4BAA0B,CAAA,OAAAb,EAAArD,EAAA,IAAA,CAAA,CAAA,IAA1BkE,2BAA0BX,EAAA,CAAAC,EAAAxD,EAAA,KAAAuD,CAAA,CAAA,CAAA,IAG1BY,eAAa,CAAA,OAAAd,EAAApD,EAAA,IAAA,CAAA,CAAA,IAAbkE,cAAaZ,EAAA,CAAAC,EAAAvD,EAAA,KAAAsD,CAAA,CAAA,CAAA,IAGba,sBAAoB,CAAA,OAAAf,EAAAnD,EAAA,IAAA,CAAA,CAAA,IAApBkE,qBAAoBb,EAAA,CAAAC,EAAAtD,EAAA,KAAAqD,CAAA,CAAA,CAAA,IAGpBc,oBAAkB,CAAA,OAAAhB,EAAAlD,EAAA,IAAA,CAAA,CAAA,IAAlBkE,mBAAkBd,EAAA,CAAAC,EAAArD,EAAA,KAAAoD,CAAA,CAAA,CAAA,IAIlBe,qBAAmB,CAAA,OAAAjB,EAAAjD,EAAA,IAAA,CAAA,CAAA,IAAnBkE,oBAAmBf,EAAA,CAAAC,EAAApD,EAAA,KAAAmD,CAAA,CAAA,CAAA,IAGnBgB,gBAAc,CAAA,OAAAlB,EAAAhD,EAAA,IAAA,CAAA,CAAA,IAAdkE,eAAchB,EAAA,CAAAC,EAAAnD,EAAA,KAAAkD,CAAA,CAAA,CAAA,IAGdiB,wBAAsB,CAAA,OAAAnB,EAAA/C,EAAA,IAAA,CAAA,CAAA,IAAtBkE,uBAAsBjB,EAAA,CAAAC,EAAAlD,EAAA,KAAAiD,CAAA,CAAA,CAAA,IAGtBkB,iBAAe,CAAA,OAAApB,EAAA9C,EAAA,IAAA,CAAA,CAAA,IAAfkE,gBAAelB,EAAA,CAAAC,EAAAjD,EAAA,KAAAgD,CAAA,CAAA,CAMhCmB,sBAA8B,CAC5B,KAAKC,iCACL,KAAKC,8BACL,KAAKX,OAAS,CAAA,EACd,MAAMS,qBAAqB,CAC7B,CAEA,IAAYG,YAAsB,CAChC,OAAO,KAAKZ,OAAOa,KAAKC,GAASA,EAAMC,SAAW,OAAO,CAAC,EAAEC,SAAW,EACzE,CAEA,IAAYC,YAAiC,CAC3C,OAAO,KAAKjB,OAAOkB,OAAQJ,GAAoCA,EAAMC,SAAW,OAAO,CACzF,CAEQI,cAAeL,EAAgC,CACrD,KAAKd,OAAS,CACZ,GAAG,KAAKA,OAAOkB,OAAOE,GAAQA,EAAKL,SAAW,OAAO,EACrDD,CAAK,CAET,CAEQO,iBAAmB,CACzB,KAAKrB,OAAS,KAAKA,OAAOkB,OAAOJ,GAASA,EAAMC,SAAW,OAAO,CACpE,CAEUO,WAAYC,EAAyC,CAG7D,GAFA,MAAMD,WAAWC,CAAiB,EAE9BA,EAAkBC,IAAI,cAAc,EAAG,CACzC,IAAMC,EAAqB,KAAKC,sBAAsB,EACtD,KAAK3B,kBAAoB7F,EAAAA,wBAAwBuH,CAAkB,EACnE,KAAK9B,6BAA+BtF,EAAAA,2BAA2BoH,CAAkB,EACjF,KAAK7B,sBAAwBpF,EAAAA,oBAAoBiH,CAAkB,CACrE,CACF,CAEUE,QAASJ,EAAyC,CAC1D,MAAMI,QAAQJ,CAAiB,EAE3BA,EAAkBC,IAAI,YAAY,GACpC,KAAKI,kBAAkB,CAAC,CAACC,MAAMf,GAAS,CACtCpH,EAAAA,MAAY,wCAAyCoH,CAAK,CAC5D,CAAC,EAGCS,EAAkBC,IAAI,cAAc,GACtC,KAAKM,yBAAyB,CAAC,CAACD,MAAOf,GAAmB,CACxDpH,EAAAA,MAAY,wCAAyCoH,CAAK,CAC5D,CAAC,EAGCS,EAAkBC,IAAI,eAA2C,GAAK,CAACD,EAAkBC,IAAI,YAAY,GAC3G,KAAKO,8BAA8B,CAEvC,CAEQA,+BAAiC,CACnC,KAAKC,YAAY,GAAK,KAAK9B,eAC7B,KAAKK,wBAAAA,EAAyB1G,EAAAA,4BAAAA,CAA4B,KAAKqG,aAAa,EAC5E,KAAKI,eAAiB,KAAKC,uBAAuB0B,aAClD,KAAKC,+BAA+B,GAEpC,KAAK3B,uBAAyBvF,IAAAA,EAElC,CAEA,MAAc8G,0BAA4B,CACxC,IAAMK,EAAiB,EAAE,KAAKzB,+BACxB0B,EAAqB,KAAK5C,aAC1BH,EAAa,KAAKA,WAClBgD,EAAQ,KAAKC,0BAA0B,EACvCC,EAAS,KAAKb,sBAAsBW,CAAK,EAC/C,GAAI,CAACE,EAAOC,OAAQ,CAClB,KAAKzC,kBAAoB,CAAA,EACzB,MACF,CAEA,IAAM0C,EAAS,MAAMC,QAAQC,IAAIJ,EAAOK,IAAI,KAAMC,KAChD,MAAMH,QAAQC,IAAIE,EAAcC,WAAWF,IAAI,KAAMG,IAAY,CAC/D,GAAI,CACF,MAAMhJ,EAAAA,oBAAoBiJ,MAAMC,QAAQC,MAAAA,EAAKlJ,EAAAA,IAAAA,CAAI+I,CAAQ,CAAC,CAACI,IAAI,CAAC,CAClE,MAAQ,CACN,CAEJ,CAAC,CAAC,EAEK7I,EAAAA,6BAA6BG,EAAAA,uBAAuBoI,CAAa,CAAC,EAC1E,CAAC,EAEF,GACEV,IAAmB,KAAKzB,gCACxB,KAAKlB,eAAiB4C,GACtB,KAAK/C,aAAeA,GACpB,KAAKiD,0BAA0B,IAAMD,EACrC,CACA,IAAMe,EAAa,IAAIC,IAAIlJ,EAAAA,kBAAkBoI,CAAM,CAAC,CAACK,KAAKU,EAAIC,IAAU,CAACD,EAAIb,EAAOc,EAAM,CAAC,CAAC,EAC5F,KAAKxD,kBAAoB,KAAKA,kBAAkB6C,IAAIY,IAAU,CAC5D,GAAGA,EACHC,aAAcL,EAAWM,IAAIF,EAAMF,EAAE,GAAKE,EAAMC,YAClD,EAAE,CACJ,CACF,CAEQE,gBAA0B,CAChC,IAAMC,EAAU,KAAKvE,YAAAA,EAAarF,EAAAA,IAAAA,CAAI,KAAKqF,UAAU,EAAIrE,IAAAA,GACnDyI,EAAeG,EAAUnK,EAAAA,MAAMmK,CAAO,CAAC,CAACC,KAAK,EAAI,GAKvD,MAHI,CAACJ,GAAgBA,IAAiB,gBAC7B,mCAEF,qBAAqBA,EAAY,EAC1C,CAEQzB,aAAwB,CAC9B,MAAO8B,GAAQ,KAAKzE,YAAc,IAAI0E,IAAI,KAAK1E,UAAU,CAAC,CAAC2E,SAASC,SAAS,GAAG,EAClF,CAEA,MAAcrC,mBAAoC,CAChD,IAAMO,EAAiB,EAAE,KAAKxB,4BACxBtB,EAAa,KAAKA,WAMxB,GALA,KAAKa,cAAgBlF,IAAAA,GACrB,KAAKkJ,wBAA0BlJ,IAAAA,GAC/B,KAAKoF,mBAAqB,GAC1B,KAAKD,qBAAuB2D,EAAQzE,EAEhC,CAACA,EACH,KAAKc,qBAAuB,QAI9B,GAAI,CACF,IAAMD,EAAgB,MAAMnG,EAAAA,oBAAoBoK,IAAIC,iBAAiB/E,CAAU,EAC/E,GAAI8C,IAAmB,KAAKxB,6BAA+B,KAAKtB,aAAeA,EAC7E,OAGF,KAAKa,cAAgBA,EACrB,KAAKgE,wBAA0B7E,EAC3B,KAAKa,eAAemE,WAAa,CAAE,KAAK7E,cAAcgD,SAGxD,KAAKhD,aAAe,KAAKU,cAAcoE,gBAEzC,KAAKvC,8BAA8B,EACnC,KAAKvB,gBAAkBzG,EAAAA,oBAAoBoK,IAAII,oBAAoBlF,CAAU,EACzE,KAAKmB,iBACP,KAAK0B,+BAA+B,CAExC,OAASpB,EAAO,CACd,GAAIqB,IAAmB,KAAKxB,6BAA+B,KAAKtB,aAAeA,EAC7E,OAGF,KAAKe,mBAAqBU,aAAiB0D,OAAS1D,EAAME,QAAQ6C,KAAK,EACnE/C,EAAME,QACN,oDACJtH,EAAAA,MAAY,wCAAyCoH,CAAK,CAC5D,QAAU,CACJqB,IAAmB,KAAKxB,6BAA+B,KAAKtB,aAAeA,IAC7E,KAAKc,qBAAuB,GAEhC,CACF,CAEA,MAAcsE,qBAAyC,CAgBrD,OAfK,KAAKpF,WAMN,CAAC,KAAKqF,aAIN,KAAKR,0BAA4B,KAAK7E,YAAc,KAAKa,eAAiB,CAAC,KAAKE,mBAC3E,IAGT,MAAM,KAAKwB,kBAAkB,EACtB,KAAKsC,0BAA4B,KAAK7E,YAAcyE,EAAQ,KAAK5D,eAAkB,CAAC,KAAKE,oBAdvF,EAeX,CAEQuE,WAAsB,CAS5B,MARI,CAAC,KAAKD,aAIN,CAAC,KAAKrF,YAIHyE,EACL,MAAKzE,YACL,KAAK6E,0BAA4B,KAAK7E,YACtC,MAAKa,eACJ,KAAKC,sBACL,KAAKC,mBAEV,CAEA,MAAcwE,oBAAsB,CAClC,MAAM,KAAKhD,kBAAkB,CAC/B,CAEQiD,0BAA4B,CAClC,GAAI,CAAC,KAAK3E,cACR,MAAO5G,GAAAA,IAAI,GAGb,IAAMwL,EAAkB,CAAC,KAAK5E,cAAcmE,UACtCU,EAAqB,KAAK7E,eAAe8E,mBACzCC,EAA0BF,EAC5BtL,EAAAA,OAAAA,EAAMO,EAAAA,IAAAA,CAAI+K,CAAkB,CAAC,CAAC,CAAClB,KAAK,EACpC,GACEqB,EAAmBD,GAA2BA,IAA4BF,EAC5EzL,EAAAA,IAAI,WAAW2L,EAAuB,aAAcF,EAAkB,GACtEzL,EAAAA,IAAI,WAAWyL,GAAsB,uBAAsB,WAC/D,MAAOzL,GAAAA,IAAI;;UAELwL,EACExL,EAAAA,IAAI;;;gBAGC,KAAKkH,gBAWJlH,EAAAA,IAAI,GAVJA,EAAAA,IAAI;;;;;6BAKO,KAAK6L,iBAAgB;;;;kBAK1B;;YAGZJ,EACEzL,EAAAA,IAAI,mDAAmD4L,EAAgB,OACvE5L,EAAAA,IAAI,yFAAwF;UAChG,KAAKkH,gBACHlH,EAAAA,IAAI,gKACJA,EAAAA,IAAI,GAAE;;KAGhB,CAEQ8L,oBAAsB,CAK5B,MAJI,CAAC,KAAKlF,eAAiB,CAAC,KAAKG,oBACxB/G,EAAAA,IAAI,GAGNA,EAAAA,IAAI;;;;;UAKL,KAAKuL,yBAAyB,EAAC;UAC/B,KAAKQ,sBAAsB,EAAC;;KAGpC,CAEQ/C,2BAAmD,CACzD,OAAO,KAAKhC,cACd,CAEQgF,yBAAoC,CAC1C,OAAO,KAAKtD,YAAY,GAAK,KAAKzB,wBAAwBgF,QAAU,EACtE,CAEQC,0BAA4B,CAsBlC,OArBI,KAAKrF,qBACA7G,EAAAA,IAAI,kDAGT,KAAK8G,mBACA9G,EAAAA,IAAI;;;oBAGG,KAAK8G,mBAAkB;;sEAE2B,KAAKwE,mBAAkB;;;;QAOpF,KAAK1E,cAIH5G,EAAAA,IAAI,GAHFA,EAAAA,IAAI,yDAIf,CAEQmM,6BAA+B,CAKrC,OAJK,KAAKH,wBAAwB,EAI3BhM,EAAAA,IAAI;;;;;MAHFA,EAAAA,IAAI,EASf,CAEQoI,sBAAuBW,EAAQ,KAAKC,0BAA0B,EAAoB,CACxF,IAAMC,EAAS,KAAK/C,cAAgB,CAAA,EAIpC,MAHI,CAAC,KAAKwC,YAAY,GAAK,CAAC,KAAK3C,YAAc,KAAKmB,gBAC3C+B,GAET,EAAOzI,EAAAA,qCAAAA,CAAqC,KAAKuF,WAAYkD,EAAQF,EAAO,KAAKnC,eAAemE,WAAa,EAAK,CACpH,CAEQnC,gCAAkC,CACxC,IAAMT,EAAqB,KAAKC,sBAAsB,EACtD,KAAK3B,kBAAoB7F,EAAAA,wBAAwBuH,CAAkB,EACnE,KAAK9B,6BAA+BtF,EAAAA,2BAA2BoH,CAAkB,EACjF,KAAK7B,sBAAwBpF,EAAAA,oBAAoBiH,CAAkB,CACrE,CAEQiE,qBAAsBrD,EAAkD,CAC9E,KAAK/B,eAAiB+B,EACtB,KAAKH,+BAA+B,CACtC,CAEQmD,uBAAyB,CAG/B,OAFK,KAAKhF,oBAEH/G,EAAAA,IAAI;;;;;;;;;;;;;;UAcL,KAAK0I,YAAY,EACf1I,EAAAA,IAAI;;;;;6BAKa,KAAKgH,iBAAmB,kBAAoB,OAAS,QAAO;2BAC5D,CACb,IAAMqF,EAAU,KAAKrF,iBAAmB,kBACxC,KAAKoF,qBAAqBC,EACtB,kBACA,KAAKrF,iBAAmB,WAAa,WAAa,QAAQ,CAChE,EAAC;;;;;;;;;;0BAUW,KAAKA,iBAAmB,SAAW,UAAY,YAAW;+BACrD,KAAKA,iBAAmB,SAAW,OAAS,QAAO;6BACnD,CAAE,KAAKoF,qBAAqB,QAAQ,CAAE,EAAC;;;;;;0BAM5C,KAAKpF,iBAAmB,WAAa,UAAY,YAAW;+BACvD,KAAKA,iBAAmB,WAAa,OAAS,QAAO;6BACrD,CAAE,KAAKoF,qBAAqB,UAAU,CAAE,EAAC;;;;;YAM5DpM,EAAAA,IAAI,GAAE;;;;;;;qBAOG,KAAKsM,qBAAoB;;;;;;;MA7DJtM,EAAAA,IAAI,EAqE5C,CAEUuM,QAAU,CAClB,IAAMC,EAAc,KAAKnC,eAAe,EAExC,MAAOrK,GAAAA,IAAI;+BACgBwM,EAAW;wBAClB,KAAKC,SAAQ;;cAEvB,KAAKP,yBAAyB,EAAC;cAC/B,KAAKC,4BAA4B,EAAC;;0BAEtB,CAAC,KAAKd,UAAU,GAAK,KAAKW,wBAAwB,EAAC;qCACxC,KAAK7F,oBAAmB;oCACzB,KAAKC,mBAAkB;qCACtB,KAAKI,oBAAmB;4BACjC,KAAKc,WAAU;sCACLlG,EAAAA,+BAA8B;8BACtC,KAAKsL,iBAAgB;iCAClB,KAAKC,kBAAiB;8BACzB,KAAKC,qBAAoB;uCAChB,KAAKC,sBAAqB;;;0BAGvC,CAAC,KAAKxB,UAAU,GAAK,KAAKW,wBAAwB,EAAC;uCACtClL,EAAAA,yBAAyB,KAAK2F,iBAAiB,EAAC;2CAC5C,KAAKqG,uBAAsB;;;0BAG5C,CAAC,KAAKzB,UAAU,GAAK,KAAKW,wBAAwB,EAAC;4BACjD,KAAKjG,WAAU;8CACG,KAAKM,6BAA4B;uCACxC,KAAKC,sBAAqB;4CACrB,KAAKyG,+BAA8B;qCAC1C,KAAKC,wBAAuB;;;wBAGzC,KAAKrF,WAAU;4CACK,KAAKhB,2BAA0B;uBACpD,KAAKsG,cAAa;;cAE3B,KAAKnB,mBAAmB,EAAC;;;;;;;yBAOd,KAAKmB,cAAa;;;;;4BAKf,CAAC,KAAK5B,UAAU,GAAK,CAAC,KAAK6B,kBAAkB,GAAK,KAAK3G,YAAc,KAAKoB,WAAWuB,OAAS,GAAK,KAAK8C,wBAAwB,EAAC;2BAClI,KAAKzF,WAAU;;yBAEjB,KAAK4G,YAAW;;;;;;;;KASvC,CAEA,MAAcV,SAAUW,EAAU,CAChCA,EAAEC,eAAe,EAEb,KAAK9G,YAAc,KAAKyF,wBAAwB,GAIhD,KAAKZ,aAAgB,OAAM,KAAKD,oBAAoB,GAIxD,MAAM,KAAKmC,+BAA+B,CAC5C,CAEA,MAAcH,aAAe,CAS3B,GARI,KAAK5G,YAAc,KAAKyF,wBAAwB,GAIhD,KAAKZ,aAAe,CAAC,MAAM,KAAKD,oBAAoB,GAIpD,KAAKhF,oBAAoBoE,KAAK,GAG5B,CAACgD,MAFmB,KAAKD,+BAA+B,EAG1D,OAIJ,IAAMvE,EAAQ,KAAKL,YAAY,GAAK,CAAC,KAAKxB,gBACtC,KAAK8B,0BAA0B,EAC/B,OACJ,MAAM,KAAKwE,kBAAkBzE,IAAU,SAAW,YAAcA,CAAK,CACvE,CAEQkE,eAAiB,CACvB,KAAKQ,MAAM,CACb,CAEQnB,sBAAwB,CAC9B,KAAKvF,oBAAsB,EAC7B,CAEA,MAAc8E,kBAAoB,CAChC,GAAK,KAAK9F,YAAe,KAAKsF,UAAU,GAAM,KAAKzE,eAAiB,MAAKA,cAAcmE,WAAa,MAAKxE,YAAc,MAAKyF,wBAAwB,EAEpJ,MAAKzF,WAAa,GAClB,KAAKG,OAAS,KAAKA,OAAOkB,OAAOJ,GAASA,EAAMC,SAAW,OAAO,EAClE,GAAI,CACF,MAAMhH,EAAAA,oBAAoBoK,IAAI6C,eAAe,KAAK3H,UAAU,EAC5D,MAAM,KAAKuC,kBAAkB,EAC7B,IAAMqF,EAAqB,MAAMlN,EAAAA,oBAAoBoK,IAAI+C,iBAAiB,KAAK7H,UAAU,EACzF,KAAKG,aAAe,KAAKU,eAAemE,UACpC,KAAKnE,cAAcoE,eACnB2C,CACN,OAASnG,EAAO,CACd,KAAKd,OAAS,CAAC,GAAG,KAAKA,OAAQ,CAC7Be,OAAQ,QACRoG,UAAW,KAAK9H,WAChB5F,MAAO,iBACPuH,QAASF,aAAiB0D,MAAQ1D,EAAME,QAAU,0BACpD,CAAC,EACDtH,EAAAA,MAAY,iCAAkCoH,CAAK,CACrD,QAAU,CACR,KAAKjB,WAAa,EACpB,CAnBkB,CAoBpB,CAEA,MAAciH,kBAAmBzE,EAAyB,OAAQ,CAChE,GAAI,KAAKxC,YAAc,CAAC,KAAK8E,UAAU,GAAK,KAAKW,wBAAwB,EACvE,OAGF,IAAM8B,EAAsB7M,EAAAA,uBAAuB,KAAKwF,iBAAiB,EACnEsH,EAAuB,KAAKC,wBAAwB,EAE1D,IAAK,KAAKxH,oBAAoB0C,QAAW4E,EAAoB5E,QAAW6E,EAAqB7E,SAIxF,KAAKnD,WAIV,MAAKQ,WAAa,GAClB,KAAKG,OAAS,KAAKA,OAAOkB,OAAOJ,GAASA,EAAMC,SAAW,OAAO,EAClE,KAAKd,2BAA6B,GAElC,GAAI,CACF,IAAMsH,EAAgB1M,EAAAA,mBAAmB,CACvCiF,oBAAqB,KAAKA,oBAC1BuH,uBACAD,qBACF,CAAC,EAEKnG,EAAa,MAAMrG,EAAAA,mBAAmB,KAAKyE,WAAYkI,EAAe,CAC1EjH,eAAgB+B,CAClB,CAAC,EACD,GAAIpB,EAAWuB,OAAQ,CACrB,KAAKxC,OAAS,CAAC,GAAG,KAAKA,OAAQ,GAAGiB,CAAU,EAC5C,KAAKxB,oBAAsB,GAC3B,KAAKK,oBAAsB,CAAA,EAE3B,GAAI,CACF,KAAKN,aAAe,MAAMzF,EAAAA,oBAAoBoK,IAAI+C,iBAAiB,KAAK7H,UAAU,CACpF,OAASyB,EAAO,CACd,KAAKb,2BAA6B,GAClC,KAAKD,OAAS,CACZ,GAAG,KAAKA,OACR,CACEe,OAAQ,OACRoG,UAAW,KAAK9H,WAChB5F,MAAO,mBACPuH,QAASF,aAAiB0D,MACtB1D,EAAME,QACN,oCACN,CAAC,EAEHtH,EAAAA,MAAY,oDAAqDoH,CAAK,CACxE,CAEApH,EAAAA,MAAY,qCAAsCuH,CAAU,EAC5D,MACF,CAEA,KAAKxB,oBAAsB,GAC3B,KAAKK,oBAAsB,CAAA,EAC3B,KAAKiH,MAAM,CACb,OAASjG,EAAO,CACd,KAAKd,OAAS,CACZ,GAAG,KAAKA,OACR,CACEe,OAAQ,OACRoG,UAAW,KAAK9H,YAAc,GAC9B5F,MAAO,iBACPuH,QAASF,aAAiB0D,MACtB1D,EAAME,QACN,+CACN,CAAC,CAEL,QAAU,CACR,KAAKnB,WAAa,EACpB,CA1DkB,CA2DpB,CAEQmG,iBAAkBwB,EAAyB,CAC5C,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK7F,oBAAsB+H,EAAMC,OAAO1M,MACxC,KAAKsG,gBAAgB,EACvB,CAEQ4E,kBAAmBuB,EAA4B,CAChD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,GACtD,KAAKoC,sBAAsBF,EAAMC,OAAO1M,MAAO,KAAK2E,mBAAoB8H,EAAMC,OAAOhO,MAAOuB,IAAAA,GAAWwM,EAAMC,OAAOE,UAAU,CAChI,CAEQL,yBAA2C,CACjD,GAAI,CAAC,KAAKjI,WACR,MAAO,CAAA,EAGT,IAAMG,EAAe,KAAKkC,sBAAsB,EAC1CkG,EAA2BvN,EAAAA,2BAA2BmF,CAAY,EAClEqI,EAAoBrN,EAAAA,oBAAoBgF,CAAY,EAkB1D,MAAO,CAhBqB,KAAKG,+BAAiCiI,EAC9D5M,IAAAA,GACA,CACE4I,QAASjK,EAAAA,cACToO,KAAM,KAAKpI,6BACXlG,MAAO,qBACT,EAEiB,KAAKmG,wBAA0BiI,EAChD7M,IAAAA,GACA,CACE4I,QAAShK,EAAAA,OACTmO,KAAM,KAAKnI,sBACXnG,MAAO,QACT,CAEqC,CAAC,CAACyH,OAAOpG,EAAS,CAC7D,CAEQoL,qBAAsBsB,EAAyB,CAChD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK5F,mBAAqB8H,EAAMC,OAAOM,KACvC,KAAKjI,oBAAsB,KAAKA,oBAAoB8C,IAAIqF,IAAU,CAChE,GAAGA,EACHF,KAAMP,EAAMC,OAAOM,IACrB,EAAE,EACJ,CAEQ1B,+BAAgCmB,EAAyB,CAC1D,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK3F,6BAA+B6H,EAAMC,OAAOM,KACnD,CAEQzB,wBAAyBkB,EAAyB,CACnD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAK1F,sBAAwB4H,EAAMC,OAAOM,KAC5C,CAEQ3B,uBAAwBoB,EAAoC,CAC7D,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAKvF,kBAAoB,KAAKA,kBAAkB6C,IAAIY,GAClDA,EAAMF,KAAOkE,EAAMC,OAAOnE,GACtB,CAAE,GAAGE,EAAOuE,KAAMP,EAAMC,OAAOM,IAAK,EACpCvE,CACN,EACF,CAEQ2C,sBAAuBqB,EAAiC,CACzD,KAAK7C,UAAU,GAAK,MAAKW,wBAAwB,IACtD,KAAKxF,oBAAsB,KAAKA,oBAAoBoB,QAAQgH,EAAGC,IAAiBA,IAAiBX,EAAMC,OAAOlE,KAAK,EACrH,CAEQiD,mBAA8B,CACpC,MAAO1C,GACL,KAAKhE,oBAAoB0C,QACzB,KAAK/C,oBAAoBoE,KAAK,GAC9BtJ,EAAAA,uBAAuB,KAAKwF,iBAAiB,CAAC,CAACyC,QAC/C,KAAK8E,wBAAwB,CAAC,CAAC9E,OAEnC,CAEA,MAAc4F,0BAA8C,CAC1D,GAAI,CAAC,KAAKzD,UAAU,GAAK,KAAKW,wBAAwB,EACpD,MAAO,GAGT,IAAM+C,EAAW,KAAK5I,oBAAoBoE,KAAK,EAK/C,OAJKwE,EAIE,KAAKX,sBAAsBW,EAAU,KAAK3I,mBAAoB1E,IAAAA,GAAWqN,CAAQ,EAH/E,EAIX,CAEA,MAAczB,gCAAoD,CAChE,IAAM0B,EAAgB,KAAK7I,oBAAoBoE,KAAK,EAEpD,GAAI,CACF,OAAO,MAAM,KAAKuE,yBAAyB,CAC7C,OAAStH,EAAO,CAad,OAZI,KAAKrB,oBAAoBoE,KAAK,IAAMyE,GAKxC,KAAKnH,cAAc,CACjBJ,OAAQ,QACRtH,MAAO,gBACP0N,UAAW,KAAK1H,oBAAoBoE,KAAK,EACzC7C,QAAS,wEACX,CAAC,EACDtH,EAAAA,MAAY,yCAA0CoH,CAAK,EACpD,KAXLpH,EAAAA,MAAY,+CAAgDoH,CAAK,EAC1D,GAWX,CACF,CAEA,MAAc4G,sBACZa,EACAR,EAAmB,KAAKrI,mBACxB8I,EACAF,EACAX,EACkB,CAClB,IAAMc,EAAWH,GAAiB,KAAK7I,oBAAoBoE,KAAK,EAC1D6E,EAAS,MAAM,KAAKC,yBAAyBJ,EAAWR,EAAMS,EAAgBb,CAAU,EAE9F,GAAI,UAAWe,EAKb,OAJI,KAAKjJ,oBAAoBoE,KAAK,IAAM4E,GACtC,KAAKtH,cAAcuH,EAAO5H,KAAK,EAEjCpH,EAAAA,MAAY,8BAA+BgP,EAAO5H,MAAME,OAAO,EACxD,GAGT,IAAM4H,EAAS,CAAC,GAAG,KAAK9I,oBAAqB4I,EAAOT,KAAK,EAQzD,MAPA,MAAKnI,oBAAsB,KAAK+I,0BAA0BD,CAAM,EAE5D,KAAKnJ,oBAAoBoE,KAAK,IAAM4E,IACtC,KAAKpH,gBAAgB,EACrB,KAAK5B,oBAAsB,IAGtB,EACT,CAEA,MAAckJ,yBACZJ,EACAR,EAAmB,KAAKrI,mBACxB8I,EACAb,EAC2C,CAC3C,GAAI,CACF,IAAMmB,EAAsBP,EAAU1E,KAAK,EACrCkF,EAAiB,MAAMpO,EAAAA,oBAAoBmO,EAAqBN,CAAc,EAYpF,OAXKO,EAWE,CACLd,MAAO,CACLe,YAAaD,EAAeC,YAC5BC,aAAcF,EAAeE,aAC7BlB,OACAtO,MAAOsP,EAAetP,MACtBkO,WAAYA,GAAcoB,EAAepB,UAC3C,CACF,EAlBS,CACL7G,MAAO,CACLC,OAAQ,QACRtH,MAAO,gBACP0N,UAAW2B,EACX9H,QAAS,qCACX,CACF,CAYJ,OAASF,EAAO,CACd,MAAO,CACLA,MAAO,CACLC,OAAQ,QACRtH,MAAO,gBACP0N,UAAWoB,EACXvH,QAASF,aAAiB0D,OAAS1D,EAAME,QAAQ6C,KAAK,EAClD/C,EAAME,QACN,qCACN,CACF,CACF,CACF,CAEQ6H,0BAA2BK,EAAyD,CAC1F,IAAMC,EAAkB,IAAI9F,IAC5B,IAAK,IAAM+F,KAAcF,EACvBC,EAAgBE,IAAI,GAAGD,EAAWJ,YAAW,GAAII,EAAWH,eAAgBG,CAAU,EAExF,MAAO,CAAC,GAAGD,EAAgBG,OAAO,CAAC,CACrC,CACF,EAAC,CAAA5C,EAAA,CAAAzI,GAAAC,GAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAlB,IAAAuL,EAAA,CAAArO,EAAAsO,KAAAC,GAAA9L,EAAA,CAAA,CAAAnB,GAAA,EAAA,YAAA,EAAA,CAAAE,GAAA,EAAA,cAAA,EAAA,CAAAC,EAAA,EAAA,qBAAA,EAAA,CAAAC,EAAA,EAAA,oBAAA,EAAA,CAAAC,EAAA,EAAA,8BAAA,EAAA,CAAAC,EAAA,EAAA,uBAAA,EAAA,CAAAC,EAAA,EAAA,YAAA,EAAA,CAAAC,EAAA,EAAA,qBAAA,EAAA,CAAAC,EAAA,EAAA,mBAAA,EAAA,CAAAC,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,EAAA,4BAAA,EAAA,CAAAC,GAAA,EAAA,eAAA,EAAA,CAAAC,GAAA,EAAA,sBAAA,EAAA,CAAAC,GAAA,EAAA,oBAAA,EAAA,CAAAC,GAAA,EAAA,qBAAA,EAAA,CAAAC,GAAA,EAAA,gBAAA,EAAA,CAAAC,GAAA,EAAA,wBAAA,EAAA,CAAAC,GAAA,EAAA,iBAAA,CAAA,EAAAzC,GAAA,EAAA,IAAA,GAx2B+C5B,EAAAA,OAAe,EAAAsE,GAAA+L,EAAA,cAAAC,EAAA,CAAA9L,aAAA,CAAA,MAAA3C,CAAA,EAAAiE,EAAA,KAAA,SAC7ClF,EAAAA,OAAM,EAAAuP,GAAA,CAAA,CAAA,EAAArK,EAAAuK,EAAAvO,GAAA,IAAA,EAAA,EAAAuO,G"}
|
|
@@ -14,7 +14,16 @@ export default class AccessControlModal extends DialogComponent<void> {
|
|
|
14
14
|
private accessor accessGrantDrafts;
|
|
15
15
|
private accessor errors;
|
|
16
16
|
private accessor successfulChangesRefreshed;
|
|
17
|
+
private accessor accessContext;
|
|
18
|
+
private accessor accessContextLoading;
|
|
19
|
+
private accessor accessContextError;
|
|
20
|
+
private accessor advancedSharingOpen;
|
|
21
|
+
private accessor containerScope;
|
|
22
|
+
private accessor containerScopeAnalysis;
|
|
23
|
+
private accessor protectedTarget;
|
|
17
24
|
private accessGrantLabelRequestVersion;
|
|
25
|
+
private accessContextRequestVersion;
|
|
26
|
+
private accessContextSubjectUri;
|
|
18
27
|
disconnectedCallback(): void;
|
|
19
28
|
private get inputError();
|
|
20
29
|
private get saveErrors();
|
|
@@ -22,12 +31,30 @@ export default class AccessControlModal extends DialogComponent<void> {
|
|
|
22
31
|
private clearInputError;
|
|
23
32
|
protected willUpdate(changedProperties: PropertyValues<this>): void;
|
|
24
33
|
protected updated(changedProperties: PropertyValues<this>): void;
|
|
34
|
+
private refreshContainerScopeAnalysis;
|
|
25
35
|
private refreshAccessGrantLabels;
|
|
26
36
|
private getDialogTitle;
|
|
37
|
+
private isContainer;
|
|
38
|
+
private loadAccessContext;
|
|
39
|
+
private ensureAccessContext;
|
|
40
|
+
private canMutate;
|
|
41
|
+
private retryAccessContext;
|
|
42
|
+
private renderSharingInformation;
|
|
43
|
+
private renderSharingState;
|
|
44
|
+
private getSelectedContainerScope;
|
|
45
|
+
private hasMixedContainerPolicy;
|
|
46
|
+
private renderAccessContextState;
|
|
47
|
+
private renderMixedContainerWarning;
|
|
48
|
+
private getScopedAccessGrants;
|
|
49
|
+
private refreshScopedAccessGrantDrafts;
|
|
50
|
+
private selectContainerScope;
|
|
51
|
+
private renderAdvancedSharing;
|
|
27
52
|
protected render(): import('lit-html').TemplateResult<1>;
|
|
28
53
|
private onSubmit;
|
|
29
54
|
private onSaveClick;
|
|
30
55
|
private onCancelClick;
|
|
56
|
+
private closeAdvancedSharing;
|
|
57
|
+
private onResetToDefault;
|
|
31
58
|
private saveAccessChanges;
|
|
32
59
|
private onPrincipalInput;
|
|
33
60
|
private onPrincipalSelect;
|